#include "param.h" #include "route_init.h" #include "route_eval.h" #include "order_xover.h" #include "edge_xover.h" #include "partial_mapped_xover.h" #include "city_swap.h" #include "part_route_eval.h" #include "merge_route_eval.h" #include "two_opt_init.h" #include "two_opt_next.h" #include "two_opt_incr_eval.h" #include #define POP_SIZE 10 #define NUM_GEN 200 #define CROSS_RATE 1.0 #define MUT_RATE 0.1 int main (int __argc, char * * __argv) { peo :: init (__argc, __argv); loadParameters (__argc, __argv); RouteInit route_init; RouteEval full_eval; OrderXover order_cross; PartialMappedXover pm_cross; EdgeXover edge_cross; CitySwap city_swap_mut; // Local search TwoOptInit pmx_two_opt_init; TwoOptNext pmx_two_opt_next; TwoOptIncrEval pmx_two_opt_incr_eval; moBestImprSelect pmx_two_opt_move_select; moHC hc (pmx_two_opt_init, pmx_two_opt_next, pmx_two_opt_incr_eval, pmx_two_opt_move_select, full_eval); eoPop pop (POP_SIZE, route_init); peoSynchronousMultiStart initParallelHC (hc); peoParallelAlgorithmWrapper parallelHC (initParallelHC, pop); initParallelHC.setOwner(parallelHC); peo :: run( ); peo :: finalize( ); if (getNodeRank()==1) { std :: cout << "\nResult before the EA\n"; for(unsigned i=0;i cont (NUM_GEN); eoCheckPoint checkpoint (cont); peoSeqPopEval eval (full_eval); eoStochTournamentSelect select_one; eoSelectNumber select (select_one, POP_SIZE); eoSGATransform transform (order_cross, CROSS_RATE, city_swap_mut, MUT_RATE); peoSeqTransform para_transform (transform); eoEPReplacement replace (2); eoEasyEA< Route > eaAlg( checkpoint, eval, select, para_transform, replace ); peoParallelAlgorithmWrapper parallelEA( eaAlg, pop); peo :: run (); peo :: finalize (); if (getNodeRank()==1) { std :: cout << "\nResult after the EA\n"; for(unsigned i=0;i