00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef MOEONSGAII_H_
00039 #define MOEONSGAII_H_
00040
00041 #include <eoBreed.h>
00042 #include <eoContinue.h>
00043 #include <eoEvalFunc.h>
00044 #include <eoGenContinue.h>
00045 #include <eoGeneralBreeder.h>
00046 #include <eoGenOp.h>
00047 #include <eoPopEvalFunc.h>
00048 #include <eoSGAGenOp.h>
00049 #include <algo/moeoEA.h>
00050 #include <diversity/moeoFrontByFrontCrowdingDiversityAssignment.h>
00051 #include <fitness/moeoFastNonDominatedSortingFitnessAssignment.h>
00052 #include <replacement/moeoElitistReplacement.h>
00053 #include <selection/moeoDetTournamentSelect.h>
00054
00055
00056 #include <eoCloneOps.h>
00057
00064 template < class MOEOT >
00065 class moeoNSGAII: public moeoEA < MOEOT >
00066 {
00067 public:
00068
00075 moeoNSGAII (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op) :
00076 defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2),
00077 replace(fitnessAssignment, diversityAssignment), defaultSGAGenOp(defaultQuadOp, 0.0, defaultMonOp, 0.0),
00078 genBreed(select, _op), breed(genBreed)
00079 {}
00080
00081
00088 moeoNSGAII (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op) :
00089 defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2),
00090 replace(fitnessAssignment, diversityAssignment), defaultSGAGenOp(defaultQuadOp, 0.0, defaultMonOp, 0.0),
00091 genBreed(select, _op), breed(genBreed)
00092 {}
00093
00094
00104 moeoNSGAII (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoQuadOp < MOEOT > & _crossover, double _pCross, eoMonOp < MOEOT > & _mutation, double _pMut) :
00105 defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select (2),
00106 replace (fitnessAssignment, diversityAssignment), defaultSGAGenOp(_crossover, _pCross, _mutation, _pMut),
00107 genBreed (select, defaultSGAGenOp), breed (genBreed)
00108 {}
00109
00110
00117 moeoNSGAII (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op) :
00118 defaultGenContinuator(0), continuator(_continuator), popEval(_eval), select(2),
00119 replace(fitnessAssignment, diversityAssignment), defaultSGAGenOp(defaultQuadOp, 1.0, defaultMonOp, 1.0),
00120 genBreed(select, _op), breed(genBreed)
00121 {}
00122
00123
00130 moeoNSGAII (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op) :
00131 continuator(_continuator), popEval(_eval), select(2),
00132 replace(fitnessAssignment, diversityAssignment), defaultSGAGenOp(defaultQuadOp, 0.0, defaultMonOp, 0.0),
00133 genBreed(select, _op), breed(genBreed)
00134 {}
00135
00136
00141 virtual void operator () (eoPop < MOEOT > &_pop)
00142 {
00143 eoPop < MOEOT > offspring, empty_pop;
00144 popEval (empty_pop, _pop);
00145
00146 fitnessAssignment(_pop);
00147 diversityAssignment(_pop);
00148 do
00149 {
00150
00151 breed (_pop, offspring);
00152
00153 popEval (_pop, offspring);
00154
00155 replace (_pop, offspring);
00156 } while (continuator (_pop));
00157 }
00158
00159
00160 protected:
00161
00163 eoGenContinue < MOEOT > defaultGenContinuator;
00165 eoContinue < MOEOT > & continuator;
00167 eoPopLoopEval < MOEOT > popEval;
00169 moeoDetTournamentSelect < MOEOT > select;
00171 moeoFastNonDominatedSortingFitnessAssignment < MOEOT > fitnessAssignment;
00173 moeoFrontByFrontCrowdingDiversityAssignment < MOEOT > diversityAssignment;
00175 moeoElitistReplacement < MOEOT > replace;
00177 eoQuadCloneOp < MOEOT > defaultQuadOp;
00179 eoMonCloneOp < MOEOT > defaultMonOp;
00181 eoSGAGenOp < MOEOT > defaultSGAGenOp;
00183 eoGeneralBreeder < MOEOT > genBreed;
00185 eoBreed < MOEOT > & breed;
00186
00187 };
00188
00189 #endif