#include #include #include #include using namespace std; double X; #include"individual.h" int select(); int selectworse(); indiv pop[100]; int main(){ srand(time(NULL)); double avg = 0; double best = 1000000; for(int i = 0; i < 100; i++){ pop[i].generate(5); pop[i].evaluate_print(); pop[i].calc_size(); avg = avg + pop[i].get_fitness(); if(pop[i].get_fitness() < best){ best = pop[i].get_fitness(); } cout << "Size = " << pop[i].get_size() << endl; } cout << "Average fit: " << avg/100.0; cout << " Best fit:" << best << endl; int p,o; cout << "-----------------------\n"; for(int i = 0; i < 100; i++){ p = select(); o = selectworse(); cout << p << " " << o << endl; pop[o].erase(); pop[o].copy(pop[p]); pop[o].mutate(); pop[o].evaluate_print(); } } int select(){ double best; int best_num, temp; best_num = rand()%100; best = pop[best_num].get_fitness(); for(int i = 0; i < 3; i++){ temp = rand()%100; if(pop[temp].get_fitness() < best){ best = pop[temp].get_fitness(); best_num = temp; } } return best_num; } int selectworse(){ double best; int best_num, temp; best_num = rand()%100; best = pop[best_num].get_fitness(); for(int i = 0; i < 3; i++){ temp = rand()%100; if(pop[temp].get_fitness() > best){ best = pop[temp].get_fitness(); best_num = temp; } } return best_num; }