Esempio n. 1
0
File: ga.cpp Progetto: srgkoval/GA
template <int N, int N_obj> void GA<N, N_obj>::crossover_scattered
	(const Individual &parent1, const Individual &parent2, Individual &child)
{
    for(int i = 0; i < N; ++i)
    {
        if(dist01(rnd_generator) >= 0.5)
        {
            child[i] = parent1[i];
        }
        else
        {
            child[i] = parent2[i];
        }
    }
    
    if( !feasible(child) )
        crossover_arithmetic(parent1, parent2, child);
}
Esempio n. 2
0
char *init_crossover(char *p1, char *p2)
{

	/* see http://www.obitko.com/tutorials/genetic-algorithms/crossover-mutation.php
	 * for the definition of the crossover modes */

	switch (BINARY_ENCODING_CROSSOVER_MODE) {
		case SINGLE_POINT_CROSSOVER:
			return crossover_single_point(p1, p2);
			break;
		case TWO_POINT_CROSSOVER:
			return crossover_two_point(p1, p2);
			break;
		case UNIFORM_CROSSOVER:
			return crossover_uniform(p1, p2);
			break;
		case ARITHMETIC_CROSSOVER:
			return crossover_arithmetic(p1, p2);
			break;
		default:
			die("Programmed error in switch/case statement");
			break;
	}
}