00001
00002
00003
00004
00005
00006
00007
00008
00009
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);
00120
00121 fitnessAssignment(_pop);
00122 diversityAssignment(_pop);
00123 do
00124 {
00125
00126 breed (_pop, offspring);
00127
00128 popEval (_pop, offspring);
00129
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