Differential Evolution

Differential Evolution #

File position: /EMOC/src/operator/de.h and /EMOC/src/operator/de.cpp

void DE(Individual *parent1, Individual *parent2, Individual *parent3, Individual *offspring, std::vector<double>& lower_bound, std::vector<double>& upper_bound, CrossoverParameter& cross_para)

Do the differential evolution on parent1 , parent2 and parent3, the results are stored in offspring.

Parameter:
parent1: Individual*, default=None
    The pointer to the first parent individual to do differential evolution.

parent2: Individual*, default=None
    The pointer to the second parent individual to do differential evolution.

parent3: Individual*, default=None
    The pointer to the third parent individual to do differential evolution.

offspring: Individual*, default=None
    The pointer to the offspring individual of differential evolution results. The memory of the offspring need to be allocated outside the function.

lower_bound: std::vector<double>, default=None
    The lower boundary of decision variables.

upper_bound: std::vector<double>, default=None
    The upper boundary of decision variables.

cross_para: CrossoverParameter, default=None
    The parameter of this crossover. The type CrossoverParameter is just a simple structure which has three member variables (i.e., the crossover probability, the distribution index1 and the distribution index2).
Returns:
void