#include #include #include #include #define MIN_RANGE -3 #define MAX_RANGE 5 double function(double value){ return pow((double)value,2.0); // x^2 } #define rand_int(num) (rand()%(num)) #define rand_real() ((double)rand()/(double)RAND_MAX) #define randomize() srand((unsigned)time(NULL)) #define POPULATION_SIZE 15 #define LENGTH 10 #define MAX_GEN 100 #define PMUT 0.2 // < 0.0 , 1.0 > struct individual{ unsigned char body[LENGTH]; double fitness; }; struct individual population[POPULATION_SIZE]; struct individual new_population[POPULATION_SIZE]; double decode(struct individual* group,int index){ int i; double value; value = 0.0; for( i=0; i population[i2].fitness){ for( j=0; j= MAX_GEN ) || ( avg_fitness/old_avg_fitness < 1.005)) return 0; old_avg_fitness = avg_fitness; return 1; } void statistics(int generation) { int i, j; double avg_fitness; avg_fitness = 0.0; for( i=0; i