moeoNSGAII.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
00002 
00003 //-----------------------------------------------------------------------------
00004 // moeoNSGAII.h
00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
00006 /*
00007     This library...
00008 
00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
00010  */
00011 //-----------------------------------------------------------------------------
00012 
00013 #ifndef MOEONSGAII_H_
00014 #define MOEONSGAII_H_
00015 
00016 #include <eoBreed.h>
00017 #include <eoContinue.h>
00018 #include <eoEvalFunc.h>
00019 #include <eoGenContinue.h>
00020 #include <eoGeneralBreeder.h>
00021 #include <eoGenOp.h>
00022 #include <eoPopEvalFunc.h>
00023 #include <eoSGAGenOp.h>
00024 #include <algo/moeoEA.h>
00025 #include <diversity/moeoFrontByFrontCrowdingDiversityAssignment.h>
00026 #include <fitness/moeoFastNonDominatedSortingFitnessAssignment.h>
00027 #include <replacement/moeoElitistReplacement.h>
00028 #include <selection/moeoDetTournamentSelect.h>
00029 
00030 
00031 #include <eoCloneOps.h>
00032 
00039 template < class MOEOT >
00040 class moeoNSGAII: public moeoEA < MOEOT >
00041 {
00042 public:
00043 
00050     moeoNSGAII (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op) :
00051             defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2),
00052             replace(fitnessAssignment, diversityAssignment), defaultSGAGenOp(defaultQuadOp, 0.0, defaultMonOp, 0.0),
00053             genBreed(select, _op), breed(genBreed)
00054     {}
00055 
00056 
00063     moeoNSGAII (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op) :
00064             defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2),
00065             replace(fitnessAssignment, diversityAssignment), defaultSGAGenOp(defaultQuadOp, 0.0, defaultMonOp, 0.0),
00066             genBreed(select, _op), breed(genBreed)
00067     {}
00068 
00069 
00079     moeoNSGAII (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoQuadOp < MOEOT > & _crossover, double _pCross, eoMonOp < MOEOT > & _mutation, double _pMut) :
00080             defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select (2),
00081             replace (fitnessAssignment, diversityAssignment), defaultSGAGenOp(_crossover, _pCross, _mutation, _pMut),
00082             genBreed (select, defaultSGAGenOp), breed (genBreed)
00083     {}
00084 
00085 
00092     moeoNSGAII (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op) :
00093             defaultGenContinuator(0), continuator(_continuator), popEval(_eval), select(2),
00094             replace(fitnessAssignment, diversityAssignment), defaultSGAGenOp(defaultQuadOp, 1.0, defaultMonOp, 1.0),
00095             genBreed(select, _op), breed(genBreed)
00096     {}
00097 
00098 
00105     moeoNSGAII (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op) :
00106             continuator(_continuator), popEval(_eval), select(2),
00107             replace(fitnessAssignment, diversityAssignment), defaultSGAGenOp(defaultQuadOp, 0.0, defaultMonOp, 0.0),
00108             genBreed(select, _op), breed(genBreed)
00109     {}
00110 
00111 
00116     virtual void operator () (eoPop < MOEOT > &_pop)
00117     {
00118         eoPop < MOEOT > offspring, empty_pop;
00119         popEval (empty_pop, _pop);      // a first eval of _pop
00120         // evaluate fitness and diversity
00121         fitnessAssignment(_pop);
00122         diversityAssignment(_pop);
00123         do
00124         {
00125             // generate offspring, worths are recalculated if necessary
00126             breed (_pop, offspring);
00127             // eval of offspring
00128             popEval (_pop, offspring);
00129             // after replace, the new pop is in _pop. Worths are recalculated if necessary
00130             replace (_pop, offspring);
00131         } while (continuator (_pop));
00132     }
00133 
00134 
00135 protected:
00136 
00138     eoGenContinue < MOEOT > defaultGenContinuator;
00140     eoContinue < MOEOT > & continuator;
00142     eoPopLoopEval < MOEOT > popEval;
00144     moeoDetTournamentSelect < MOEOT > select;
00146     moeoFastNonDominatedSortingFitnessAssignment < MOEOT > fitnessAssignment;
00148     moeoFrontByFrontCrowdingDiversityAssignment  < MOEOT > diversityAssignment;
00150     moeoElitistReplacement < MOEOT > replace;
00152     eoQuadCloneOp < MOEOT > defaultQuadOp;
00154     eoMonCloneOp < MOEOT > defaultMonOp;
00156     eoSGAGenOp < MOEOT > defaultSGAGenOp;
00158     eoGeneralBreeder < MOEOT > genBreed;
00160     eoBreed < MOEOT > & breed;
00161 
00162 };
00163 
00164 #endif /*MOEONSGAII_H_*/

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  doxygen 1.4.7