#include #include #include #include #include #include #include using namespace std; // Třída pro logování výpočtů class Logovani { ofstream ofs; public: void open(int x) { stringstream name; name << "beh" << x << ".log"; ofs.open(name.str().c_str()); } void close() { ofs.close(); } void write(vector fitness, int it) { double mini = 99999999; double total = 0; for (int i=0; i &p) { int n = p.size(); for (int i=1; i > populace; vector fitness; // Dárci vector > darci; // Noví jedinci a jejich fitness vector > novi; vector novi_fitness; // Nejlepší jedinec a jeho fitness vector best; double best_fitness; // Fitness nejlepšího zalogovaného double best_log = 999999999; /* Ohodnocující funkce jedince */ /* Momentálně nastavená pro vývoj jedince, kde v[i] = i * Změňte v závislosti na vámi řešeném problému */ double ohodnot_jedince(vector v) { double res = 0; for (int i=0; i generuj_jedince(int d) { vector v(d); for (int i=0; i(N); best_fitness = 9999999; int index = -1; for (int i=0; i(D); for (int i=0; i vytvor_darce(vector &p, vector &q, vector &r) { vector d(D); for (int i=0; i krizeni(vector &x, vector &d) { vector y(D); int j = rand()%D; // Náhodný gen, který se určitě vezme z dárce double pst = randdouble(); for (int i=0; i p(N); vector q(N); vector r(N); for (int i=0; i y = krizeni(populace[i], darci[i]); novi.push_back(y); novi_fitness.push_back(ohodnot_jedince(y)); } // Selekce -- vybere lepšího z původního a nového jedince int index = -1; for (int i=0; i best) { ofstream ofs("best.log"); ofs << "Fitness: " << best_fitness << endl; ofs << "Geny:" << endl; for (int i=0; i best_fitness) { zaloguj_nejlepsiho(best); } } return 0; }