Exemplo n.º 1
0
			/**
			   @param sequence sequence to copy genes from
			   @return a mutated copy of the specified sequence

			   Creates a copy of a sequence & mutates it.
			 */
			sequence_type create_child(const sequence_type& sequence)
			{
				static TGenomeBase base;

				sequence_type m = base.copy(sequence);
				mutate(m);

				return m;
			}
Exemplo n.º 2
0
			void mutate(sequence_type& sequence)
			{
				static TGenomeBase base;
				int32_t offsets[2];

				assert(base.len(sequence) > 1);

				_rnd->get_unique_int32_seq(0, base.len(sequence) - 1, offsets, 2);

				auto seq = base.get(sequence, offsets[0]);
				base.set(sequence, offsets[0], base.get(sequence, offsets[1]));
				base.set(sequence, offsets[1], seq);
			}
Exemplo n.º 3
0
    sequence_type create_child(const sequence_type& a, const sequence_type& b , const sequence_len_t offset1, const sequence_len_t offset2) const
    {
        sequence_len_t i;
        sequence_type individual;

        individual = _base.create(_base.len(a));

        for(i = 0; i < offset1; ++i)
        {
            _base.set(individual, i, _base.get(a, i));
        }

        for(i = offset1; i < offset2; ++i)
        {
            _base.set(individual, i, _base.get(b, i));
        }

        for(i = offset2; i < _base.len(a); ++i)
        {
            _base.set(individual, i, _base.get(a, i));
        }

        return individual;
    }
Exemplo n.º 4
0
			sequence_type create_child(const sequence_type& a, const sequence_type& b , const sequence_len_t separator)
			{
				sequence_len_t i;
				sequence_type individual;

				individual = _base.create(_base.len(a));

				for(i = 0; i < separator; ++i)
				{
					_base.set(individual, i, _base.get(a, i));
				}

				for(i = separator; i < _base.len(b); ++i)
				{
					_base.set(individual, i, _base.get(b, i));
				}

				return individual;
			}