#include #include #include "smpTestClass.h" using namespace paradiseo::smp; using namespace std; int main(void) { typedef struct { unsigned popSize = 10; unsigned tSize = 2; double pCross = 0.8; double pMut = 0.7; unsigned maxGen = 10; } Param; Param param; rng.reseed(42); loadInstances("t-data.dat", n, bkv, a, b); // Evaluation function IndiEvalFunc plainEval; // Init a solution IndiInit chromInit; // Define selection eoDetTournamentSelect selectOne(param.tSize); eoSelectPerc select(selectOne);// by default rate==1 // Define operators for crossover and mutation IndiXover Xover; // CROSSOVER IndiSwapMutation mutationSwap; // MUTATION // Encapsule in a tranform operator eoSGATransform transform(Xover, param.pCross, mutationSwap, param.pMut); // Define replace operator eoPlusReplacement replace; eoGenContinue genCont(param.maxGen+100); // generation continuation eoGenContinue genCont_2(param.maxGen); // generation continuation eoGenContinue genCont_3(param.maxGen); // generation continuation // Define population eoPop pop(param.popSize, chromInit); try { // Island 1 // // Emigration policy // // // Element 1 eoPeriodicContinue criteria(5); eoDetTournamentSelect selectOne(20); eoSelectNumber who(selectOne, 3); MigPolicy migPolicy; migPolicy.push_back(PolicyElement(who, criteria)); // // Integration policy eoPlusReplacement intPolicy; eoPop pop(param.popSize, chromInit); Island test(pop, intPolicy, migPolicy, genCont, plainEval, select, transform, replace); // Island 2 // // Emigration policy // // // Element 1 eoPeriodicContinue criteria_2(5); eoDetTournamentSelect selectOne_2(25); eoSelectNumber who_2(selectOne_2, 5); MigPolicy migPolicy_2; migPolicy_2.push_back(PolicyElement(who_2, criteria_2)); // // Integration policy eoPlusReplacement intPolicy_2; eoPop pop2(30, chromInit); Island test2(pop2, intPolicy_2, migPolicy_2, genCont_2, plainEval, select, transform, replace); // Island 3 // // Emigration policy // // // Element 1 eoPeriodicContinue criteria_3(10); eoDetTournamentSelect selectOne_3(15); eoSelectNumber who_3(selectOne_3, 1); MigPolicy migPolicy_3; migPolicy.push_back(PolicyElement(who_3, criteria_3)); // // Integration policy eoPlusReplacement intPolicy_3; eoPop pop3(30, chromInit); Island test3(pop3, intPolicy_3, migPolicy_3, genCont_3, plainEval, select, transform, replace); // Topology Topology topo; IslandModel model(topo); model.add(test); model.add(test2); model.add(test3); model(); cout << test.getPop() << endl; cout << test2.getPop() << endl; cout << test3.getPop() << endl; } catch(exception& e) { cout << "Exception: " << e.what() << '\n'; } return 0; }