ParadisEO - PEO Lesson 6: Hybridization

Note: All the components are not presented in this lesson (binary, topology, asynchronous or synchronous... ). To know the completeness of components refer to API documentation of ParadisEO-EO and ParadisEO-PEO.

Introduction

In this lesson, you can execute an algorithm with an hybridization (a local search after an EA). This is naïve hybridization. The user could think of more elaborated ways for hybridizing.

Requirements

This is a quite easy lesson. If you have already read Lesson1? and Lesson2? then the understanding of this lesson would be straightforward.

Implementation

Initialization of the local search

  MoveInit move_init;
  ProblemEval problem_eval;  
  MoveNext move_next;
  MoveIncrEval move_incr_eval;
  moBestImprSelect<Move> move_select;
  moSimpleMoveTabuList <Move> tabulist (param.tabuListSize);
  moImprBestFitAspirCrit <Move> aspiration_criterion;
  moGenSolContinue <Problem> continu (param.TSmaxIter);
  moTS <Move> tabu_search (move_init, move_next, move_incr_eval, 
			   tabulist, aspiration_criterion, continu, problem_eval );

Initialization of the EA

  eoPop <Problem> pop (param.popSize, chromInit);
  eoDetTournamentSelect<Problem> selectOne(param.tSize);
  eoSelectPerc<Problem> select(selectOne);
  ProblemXover Xover;
  ProblemSwapMutation  mutationSwap;
  eoSGATransform<Problem> transform(Xover, param.pCross, mutationSwap, param.pMut);
  eoPlusReplacement<Problem> replace;
  eoGenContinue<Problem> genCont(param.maxGen);
  eoEasyEA<Problem> gga(genCont, problem_eval, select, transform, replace);

Launching the parallel EA

  peoWrapper parallelEA( gga, pop);
  peo :: run ();
  peo :: finalize ();

Launching the parallel local search

  peo :: init (argc, argv);
  peoMultiStart <Problem> initParallelTS (tabu_search);
  peoWrapper parallelTS (initParallelTS, pop);
  initParallelTS.setOwner(parallelTS);
  peo :: run( );
  peo :: finalize( );

Launching the program

You are ready now to run this tutorial.