#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 = 100; } 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); // generation continuation // Define population eoPop pop(param.popSize, chromInit); try { // Emigration policy eoPeriodicContinue criteria(25); // We mig each gen eoDetTournamentSelect selectOne(2); eoSelectNumber who(selectOne, 5); MigPolicy migPolicy; migPolicy.push_back(PolicyElement(who, criteria)); IntPolicy intPolicy(plainEval,replace); Island test(param.popSize, chromInit, intPolicy, migPolicy, genCont, plainEval, select, transform, replace); test(); cout << test.getPop() << endl; } catch(exception& e) { cout << "Exception: " << e.what() << '\n'; } return 0; }