From 3214c4506761cbfe4352d80ac9d44cc31cdf22f3 Mon Sep 17 00:00:00 2001 From: liefooga Date: Tue, 11 Mar 2008 16:19:50 +0000 Subject: [PATCH] MOEO 1.1 tagged git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@1112 331e1502-861f-0410-8da2-ba01fb791d7f --- .../paradiseo-ix86-1.1/paradiseo-moeo/AUTHORS | 4 + .../paradiseo-moeo/CMakeLists.txt | 40 ++ .../paradiseo-moeo/DartConfig.cmake | 10 + tags/paradiseo-ix86-1.1/paradiseo-moeo/README | 82 +++ .../paradiseo-moeo/doc/CMakeLists.txt | 26 + .../FlowShopBenchmarkParser_8cpp-source.html | 129 ++++ .../FlowShopBenchmarkParser_8h-source.html | 82 +++ .../doc/html/FlowShopEA_8cpp-source.html | 135 ++++ .../doc/html/FlowShopEval_8cpp-source.html | 92 +++ .../doc/html/FlowShopEval_8h-source.html | 76 +++ .../doc/html/FlowShopInit_8cpp-source.html | 67 ++ .../doc/html/FlowShopInit_8h-source.html | 63 ++ ...ShopObjectiveVectorTraits_8cpp-source.html | 60 ++ ...owShopObjectiveVectorTraits_8h-source.html | 60 ++ .../FlowShopObjectiveVector_8h-source.html | 49 ++ .../FlowShopOpCrossoverQuad_8cpp-source.html | 112 ++++ .../FlowShopOpCrossoverQuad_8h-source.html | 63 ++ ...lowShopOpMutationExchange_8cpp-source.html | 78 +++ .../FlowShopOpMutationExchange_8h-source.html | 58 ++ .../FlowShopOpMutationShift_8cpp-source.html | 88 +++ .../FlowShopOpMutationShift_8h-source.html | 58 ++ .../doc/html/FlowShop_8cpp-source.html | 46 ++ .../doc/html/FlowShop_8h-source.html | 55 ++ .../doc/html/README-source.html | 108 ++++ .../doc/html/Sch1_8cpp-source.html | 135 ++++ .../doc/html/classFlowShop-members.html | 86 +++ .../doc/html/classFlowShop.html | 65 ++ .../paradiseo-moeo/doc/html/classFlowShop.png | Bin 0 -> 2568 bytes .../classFlowShopBenchmarkParser-members.html | 47 ++ .../html/classFlowShopBenchmarkParser.html | 189 ++++++ .../doc/html/classFlowShopEval-members.html | 51 ++ .../doc/html/classFlowShopEval.html | 279 ++++++++ .../doc/html/classFlowShopEval.png | Bin 0 -> 921 bytes .../doc/html/classFlowShopInit-members.html | 44 ++ .../doc/html/classFlowShopInit.html | 131 ++++ .../doc/html/classFlowShopInit.png | Bin 0 -> 680 bytes ...FlowShopObjectiveVectorTraits-members.html | 43 ++ .../classFlowShopObjectiveVectorTraits.html | 125 ++++ .../classFlowShopObjectiveVectorTraits.png | Bin 0 -> 628 bytes .../classFlowShopOpCrossoverQuad-members.html | 48 ++ .../html/classFlowShopOpCrossoverQuad.html | 169 +++++ .../doc/html/classFlowShopOpCrossoverQuad.png | Bin 0 -> 1530 bytes ...assFlowShopOpMutationExchange-members.html | 47 ++ .../html/classFlowShopOpMutationExchange.html | 100 +++ .../html/classFlowShopOpMutationExchange.png | Bin 0 -> 1335 bytes .../classFlowShopOpMutationShift-members.html | 47 ++ .../html/classFlowShopOpMutationShift.html | 100 +++ .../doc/html/classFlowShopOpMutationShift.png | Bin 0 -> 1240 bytes .../doc/html/classSch1-members.html | 88 +++ .../paradiseo-moeo/doc/html/classSch1.html | 60 ++ .../paradiseo-moeo/doc/html/classSch1.png | Bin 0 -> 2779 bytes .../doc/html/classSch1Eval-members.html | 43 ++ .../doc/html/classSch1Eval.html | 57 ++ .../paradiseo-moeo/doc/html/classSch1Eval.png | Bin 0 -> 841 bytes ...lassSch1ObjectiveVectorTraits-members.html | 43 ++ .../html/classSch1ObjectiveVectorTraits.html | 61 ++ .../html/classSch1ObjectiveVectorTraits.png | Bin 0 -> 591 bytes .../doc/html/classmoeoIBMOLS-members.html | 50 ++ .../doc/html/classmoeoIBMOLS.html | 295 +++++++++ .../doc/html/classmoeoIBMOLS.png | Bin 0 -> 1838 bytes ...OLS_1_1OneObjectiveComparator-members.html | 43 ++ ...smoeoIBMOLS_1_1OneObjectiveComparator.html | 68 ++ ...ssmoeoIBMOLS_1_1OneObjectiveComparator.png | Bin 0 -> 1285 bytes .../html/classmoeoIteratedIBMOLS-members.html | 49 ++ .../doc/html/classmoeoIteratedIBMOLS.html | 286 +++++++++ .../doc/html/classmoeoIteratedIBMOLS.png | Bin 0 -> 1889 bytes .../html/classmoeoMoveIncrEval-members.html | 40 ++ .../doc/html/classmoeoMoveIncrEval.html | 54 ++ .../doc/html/classmoeoMoveIncrEval.png | Bin 0 -> 684 bytes .../html/classmoeoObjectiveVectorTraits.png | Bin 0 -> 974 bytes ...dicatorBasedFitnessAssignment-members.html | 48 ++ ...ePointIndicatorBasedFitnessAssignment.html | 283 ++++++++ ...cePointIndicatorBasedFitnessAssignment.png | Bin 0 -> 1490 bytes .../doc/html/classpeoEA-members.html | 45 ++ .../paradiseo-moeo/doc/html/classpeoEA.html | 228 +++++++ .../doc/html/functions_0x62.html | 78 +++ .../doc/html/functions_0x63.html | 95 +++ .../doc/html/functions_0x64.html | 96 +++ .../doc/html/functions_0x65.html | 80 +++ .../doc/html/functions_0x66.html | 86 +++ .../doc/html/functions_0x67.html | 82 +++ .../doc/html/functions_0x68.html | 77 +++ .../doc/html/functions_0x69.html | 90 +++ .../doc/html/functions_0x6b.html | 76 +++ .../doc/html/functions_0x6c.html | 78 +++ .../doc/html/functions_0x6d.html | 124 ++++ .../doc/html/functions_0x6e.html | 83 +++ .../doc/html/functions_0x6f.html | 91 +++ .../doc/html/functions_0x70.html | 84 +++ .../doc/html/functions_0x72.html | 86 +++ .../doc/html/functions_0x73.html | 85 +++ .../doc/html/functions_0x74.html | 85 +++ .../doc/html/functions_0x75.html | 78 +++ .../doc/html/functions_0x76.html | 79 +++ .../doc/html/functions_0x77.html | 77 +++ .../doc/html/functions_0x7e.html | 76 +++ .../html/make__eval__FlowShop_8h-source.html | 83 +++ .../make__genotype__FlowShop_8h-source.html | 76 +++ .../doc/html/make__ls__moeo_8h-source.html | 136 ++++ .../html/make__op__FlowShop_8h-source.html | 130 ++++ .../doc/html/moeoIBMOLS_8h-source.html | 469 ++++++++++++++ .../html/moeoIteratedIBMOLS_8h-source.html | 206 ++++++ .../doc/html/moeoMoveIncrEval_8h-source.html | 39 ++ ...catorBasedFitnessAssignment_8h-source.html | 109 ++++ .../doc/html/pmoeoEA_8h-source.html | 127 ++++ .../doc/html/t-moeo_8cpp-source.html | 47 ++ ...ples_2flowshop_2benchs_2README-source.html | 29 + .../paradiseo-moeo/doc/index.h | 72 +++ .../doc/latex/classFlowShop.eps | 227 +++++++ .../doc/latex/classFlowShop.tex | 32 + .../latex/classFlowShopBenchmarkParser.tex | 110 ++++ .../doc/latex/classFlowShopEval.eps | 215 +++++++ .../doc/latex/classFlowShopEval.tex | 147 +++++ .../doc/latex/classFlowShopInit.eps | 209 ++++++ .../doc/latex/classFlowShopInit.tex | 75 +++ .../classFlowShopObjectiveVectorTraits.eps | 197 ++++++ .../classFlowShopObjectiveVectorTraits.tex | 67 ++ .../latex/classFlowShopOpCrossoverQuad.eps | 215 +++++++ .../latex/classFlowShopOpCrossoverQuad.tex | 76 +++ .../latex/classFlowShopOpMutationExchange.eps | 215 +++++++ .../latex/classFlowShopOpMutationExchange.tex | 55 ++ .../latex/classFlowShopOpMutationShift.eps | 215 +++++++ .../latex/classFlowShopOpMutationShift.tex | 55 ++ .../paradiseo-moeo/doc/latex/classSch1.eps | 233 +++++++ .../paradiseo-moeo/doc/latex/classSch1.tex | 26 + .../doc/latex/classSch1Eval.eps | 215 +++++++ .../doc/latex/classSch1Eval.tex | 26 + .../latex/classSch1ObjectiveVectorTraits.eps | 197 ++++++ .../latex/classSch1ObjectiveVectorTraits.tex | 32 + .../doc/latex/classmoeoIBMOLS.eps | 215 +++++++ .../doc/latex/classmoeoIBMOLS.tex | 147 +++++ ...ssmoeoIBMOLS_1_1OneObjectiveComparator.eps | 209 ++++++ ...ssmoeoIBMOLS_1_1OneObjectiveComparator.tex | 37 ++ .../doc/latex/classmoeoIteratedIBMOLS.eps | 215 +++++++ .../doc/latex/classmoeoIteratedIBMOLS.tex | 124 ++++ .../doc/latex/classmoeoMoveIncrEval.eps | 203 ++++++ .../doc/latex/classmoeoMoveIncrEval.tex | 22 + .../latex/classmoeoObjectiveVectorTraits.eps | 203 ++++++ ...cePointIndicatorBasedFitnessAssignment.eps | 209 ++++++ ...cePointIndicatorBasedFitnessAssignment.tex | 148 +++++ .../paradiseo-moeo/doc/latex/classpeoEA.tex | 119 ++++ .../paradiseo-moeo/doc/man/man3/FlowShop.3 | 31 + .../doc/man/man3/FlowShopBenchmarkParser.3 | 120 ++++ .../doc/man/man3/FlowShopEval.3 | 155 +++++ .../doc/man/man3/FlowShopInit.3 | 73 +++ .../man/man3/FlowShopObjectiveVectorTraits.3 | 65 ++ .../doc/man/man3/FlowShopOpCrossoverQuad.3 | 85 +++ .../doc/man/man3/FlowShopOpMutationExchange.3 | 53 ++ .../doc/man/man3/FlowShopOpMutationShift.3 | 53 ++ .../paradiseo-moeo/doc/man/man3/Sch1.3 | 24 + .../paradiseo-moeo/doc/man/man3/Sch1Eval.3 | 24 + .../doc/man/man3/Sch1ObjectiveVectorTraits.3 | 31 + .../paradiseo-moeo/doc/man/man3/moeoIBMOLS.3 | 168 +++++ .../man3/moeoIBMOLS_OneObjectiveComparator.3 | 38 ++ .../doc/man/man3/moeoIteratedIBMOLS.3 | 151 +++++ .../doc/man/man3/moeoMoveIncrEval.3 | 21 + ...encePointIndicatorBasedFitnessAssignment.3 | 155 +++++ .../paradiseo-moeo/doc/man/man3/peoEA.3 | 107 ++++ .../paradiseo-moeo/doc/moeo.doxyfile.cmake | 237 +++++++ .../paradiseo-moeo/moeo-conf.cmake | 25 + .../paradiseo-moeo/src/CMakeLists.txt | 33 + .../paradiseo-moeo/src/algo/moeoAlgo.h | 47 ++ .../paradiseo-moeo/src/algo/moeoCombinedLS.h | 92 +++ .../paradiseo-moeo/src/algo/moeoEA.h | 51 ++ .../paradiseo-moeo/src/algo/moeoEasyEA.h | 256 ++++++++ .../paradiseo-moeo/src/algo/moeoHybridLS.h | 101 +++ .../paradiseo-moeo/src/algo/moeoIBEA.h | 194 ++++++ .../paradiseo-moeo/src/algo/moeoLS.h | 53 ++ .../paradiseo-moeo/src/algo/moeoNSGA.h | 184 ++++++ .../paradiseo-moeo/src/algo/moeoNSGAII.h | 190 ++++++ .../paradiseo-moeo/src/archive/moeoArchive.h | 206 ++++++ .../comparator/moeoAggregativeComparator.h | 80 +++ .../src/comparator/moeoComparator.h | 50 ++ .../moeoDiversityThenFitnessComparator.h | 70 ++ .../moeoFitnessThenDiversityComparator.h | 70 ++ .../moeoGDominanceObjectiveVectorComparator.h | 127 ++++ .../moeoObjectiveObjectiveVectorComparator.h | 77 +++ .../moeoObjectiveVectorComparator.h | 52 ++ .../comparator/moeoOneObjectiveComparator.h | 82 +++ .../moeoParetoObjectiveVectorComparator.h | 95 +++ .../paradiseo-moeo/src/core/MOEO.h | 355 +++++++++++ .../paradiseo-moeo/src/core/moeoBitVector.h | 108 ++++ .../paradiseo-moeo/src/core/moeoEvalFunc.h | 50 ++ .../src/core/moeoObjectiveVector.h | 116 ++++ .../src/core/moeoObjectiveVectorTraits.cpp | 42 ++ .../src/core/moeoObjectiveVectorTraits.h | 130 ++++ .../src/core/moeoRealObjectiveVector.h | 191 ++++++ .../paradiseo-moeo/src/core/moeoRealVector.h | 70 ++ .../paradiseo-moeo/src/core/moeoVector.h | 168 +++++ .../src/distance/moeoDistance.h | 79 +++ .../src/distance/moeoDistanceMatrix.h | 101 +++ .../src/distance/moeoEuclideanDistance.h | 83 +++ .../src/distance/moeoManhattanDistance.h | 83 +++ .../src/distance/moeoNormalizedDistance.h | 137 ++++ .../moeoCrowdingDiversityAssignment.h | 147 +++++ .../src/diversity/moeoDiversityAssignment.h | 76 +++ .../diversity/moeoDummyDiversityAssignment.h | 84 +++ ...oFrontByFrontCrowdingDiversityAssignment.h | 158 +++++ ...eoFrontByFrontSharingDiversityAssignment.h | 130 ++++ .../moeoSharingDiversityAssignment.h | 167 +++++ .../src/do/make_checkpoint_moeo.h | 201 ++++++ .../src/do/make_continue_moeo.h | 131 ++++ .../paradiseo-moeo/src/do/make_ea_moeo.h | 297 +++++++++ .../moeoAchievementFitnessAssignment.h | 170 +++++ ...oeoBinaryIndicatorBasedFitnessAssignment.h | 65 ++ .../moeoCriterionBasedFitnessAssignment.h | 50 ++ .../src/fitness/moeoDummyFitnessAssignment.h | 84 +++ ...ExpBinaryIndicatorBasedFitnessAssignment.h | 227 +++++++ ...FastNonDominatedSortingFitnessAssignment.h | 265 ++++++++ .../src/fitness/moeoFitnessAssignment.h | 76 +++ .../moeoIndicatorBasedFitnessAssignment.h | 50 ++ .../moeoParetoBasedFitnessAssignment.h | 50 ++ .../src/fitness/moeoScalarFitnessAssignment.h | 50 ++ ...moeoUnaryIndicatorBasedFitnessAssignment.h | 50 ++ .../metric/moeoAdditiveEpsilonBinaryMetric.h | 109 ++++ .../src/metric/moeoContributionMetric.h | 138 ++++ .../src/metric/moeoEntropyMetric.h | 223 +++++++ .../src/metric/moeoHypervolumeBinaryMetric.h | 166 +++++ .../paradiseo-moeo/src/metric/moeoMetric.h | 99 +++ ...NormalizedSolutionVsSolutionBinaryMetric.h | 113 ++++ .../paradiseo-moeo/src/moeo | 126 ++++ .../src/replacement/moeoElitistReplacement.h | 156 +++++ .../moeoEnvironmentalReplacement.h | 172 +++++ .../replacement/moeoGenerationalReplacement.h | 64 ++ .../src/replacement/moeoReplacement.h | 50 ++ .../src/selection/moeoDetTournamentSelect.h | 108 ++++ .../src/selection/moeoRandomSelect.h | 69 ++ .../src/selection/moeoRouletteSelect.h | 87 +++ .../src/selection/moeoSelectFromPopAndArch.h | 117 ++++ .../src/selection/moeoSelectOne.h | 50 ++ .../src/selection/moeoSelectors.h | 183 ++++++ .../src/selection/moeoStochTournamentSelect.h | 116 ++++ .../moeoArchiveObjectiveVectorSavingUpdater.h | 120 ++++ .../src/utils/moeoArchiveUpdater.h | 80 +++ .../src/utils/moeoBinaryMetricSavingUpdater.h | 119 ++++ .../utils/moeoConvertPopToObjectiveVectors.h | 69 ++ .../paradiseo-moeo/test/CMakeLists.txt | 75 +++ .../paradiseo-moeo/test/t-moeo.cpp | 81 +++ .../t-moeoAchievementFitnessAssignment.cpp | 147 +++++ .../test/t-moeoAggregativeComparator.cpp | 81 +++ .../paradiseo-moeo/test/t-moeoArchive.cpp | 148 +++++ .../paradiseo-moeo/test/t-moeoBitVector.cpp | 81 +++ .../t-moeoCrowdingDiversityAssignment.cpp | 124 ++++ .../t-moeoDiversityThenFitnessComparator.cpp | 81 +++ .../paradiseo-moeo/test/t-moeoEasyEA.cpp | 121 ++++ ...pBinaryIndicatorBasedFitnessAssignment.cpp | 145 +++++ ...stNonDominatedSortingFitnessAssignment.cpp | 142 +++++ .../t-moeoFitnessThenDiversityComparator.cpp | 81 +++ .../paradiseo-moeo/test/t-moeoIBEA.cpp | 115 ++++ .../paradiseo-moeo/test/t-moeoMax3Obj.cpp | 113 ++++ .../paradiseo-moeo/test/t-moeoNSGA.cpp | 112 ++++ .../paradiseo-moeo/test/t-moeoNSGAII.cpp | 112 ++++ .../t-moeoParetoObjectiveVectorComparator.cpp | 95 +++ .../paradiseo-moeo/test/t-moeoRealVector.cpp | 81 +++ .../test/t-moeoSharingDiversityAssignment.cpp | 126 ++++ .../paradiseo-moeo/tutorial/CMakeLists.txt | 18 + .../tutorial/Lesson1/CMakeLists.txt | 66 ++ .../paradiseo-moeo/tutorial/Lesson1/Sch1.cpp | 140 ++++ .../tutorial/Lesson1/Sch1.param | 14 + .../tutorial/Lesson2/CMakeLists.txt | 67 ++ .../tutorial/Lesson2/FlowShopEA.cpp | 147 +++++ .../tutorial/Lesson2/FlowShopEA.param | 21 + .../tutorial/Lesson3/CMakeLists.txt | 67 ++ .../tutorial/Lesson3/FlowShopEA.cpp | 132 ++++ .../tutorial/Lesson3/FlowShopEA.param | 49 ++ .../tutorial/examples/CMakeLists.txt | 9 + .../tutorial/examples/flowshop/CMakeLists.txt | 72 +++ .../tutorial/examples/flowshop/FlowShop.cpp | 43 ++ .../tutorial/examples/flowshop/FlowShop.h | 58 ++ .../flowshop/FlowShopBenchmarkParser.cpp | 131 ++++ .../flowshop/FlowShopBenchmarkParser.h | 109 ++++ .../examples/flowshop/FlowShopEval.cpp | 90 +++ .../tutorial/examples/flowshop/FlowShopEval.h | 104 +++ .../examples/flowshop/FlowShopInit.cpp | 64 ++ .../tutorial/examples/flowshop/FlowShopInit.h | 49 ++ .../flowshop/FlowShopObjectiveVector.h | 49 ++ .../FlowShopObjectiveVectorTraits.cpp | 57 ++ .../flowshop/FlowShopObjectiveVectorTraits.h | 71 +++ .../flowshop/FlowShopOpCrossoverQuad.cpp | 110 ++++ .../flowshop/FlowShopOpCrossoverQuad.h | 78 +++ .../flowshop/FlowShopOpMutationExchange.h | 49 ++ .../flowshop/FlowShopOpMutationShift.h | 49 ++ .../examples/flowshop/benchs/020_05_01.txt | 63 ++ .../examples/flowshop/benchs/020_05_02.txt | 63 ++ .../examples/flowshop/benchs/020_10_01.txt | 63 ++ .../examples/flowshop/benchs/020_10_02.txt | 63 ++ .../examples/flowshop/benchs/020_20_01.txt | 63 ++ .../examples/flowshop/benchs/050_05_01.txt | 153 +++++ .../examples/flowshop/benchs/050_10_01.txt | 153 +++++ .../examples/flowshop/benchs/050_20_01.txt | 153 +++++ .../examples/flowshop/benchs/100_05_01.txt | 303 +++++++++ .../examples/flowshop/benchs/100_10_01.txt | 303 +++++++++ .../examples/flowshop/benchs/100_20_01.txt | 303 +++++++++ .../examples/flowshop/benchs/200_10_01.txt | 603 ++++++++++++++++++ .../tutorial/examples/flowshop/benchs/README | 1 + .../examples/flowshop/make_eval_FlowShop.h | 81 +++ .../flowshop/make_genotype_FlowShop.h | 74 +++ .../examples/flowshop/make_op_FlowShop.h | 132 ++++ 298 files changed, 30236 insertions(+) create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/AUTHORS create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/CMakeLists.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/DartConfig.cmake create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/README create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/CMakeLists.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopBenchmarkParser_8cpp-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopBenchmarkParser_8h-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopEA_8cpp-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopEval_8cpp-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopEval_8h-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopInit_8cpp-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopInit_8h-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopObjectiveVectorTraits_8cpp-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopObjectiveVectorTraits_8h-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopObjectiveVector_8h-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpCrossoverQuad_8cpp-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpCrossoverQuad_8h-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpMutationExchange_8cpp-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpMutationExchange_8h-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpMutationShift_8cpp-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpMutationShift_8h-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShop_8cpp-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShop_8h-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/README-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/Sch1_8cpp-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShop-members.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShop.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShop.png create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopBenchmarkParser-members.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopBenchmarkParser.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopEval-members.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopEval.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopEval.png create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopInit-members.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopInit.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopInit.png create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopObjectiveVectorTraits-members.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopObjectiveVectorTraits.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopObjectiveVectorTraits.png create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpCrossoverQuad-members.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpCrossoverQuad.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpCrossoverQuad.png create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpMutationExchange-members.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpMutationExchange.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpMutationExchange.png create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpMutationShift-members.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpMutationShift.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpMutationShift.png create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1-members.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1.png create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1Eval-members.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1Eval.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1Eval.png create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1ObjectiveVectorTraits-members.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1ObjectiveVectorTraits.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1ObjectiveVectorTraits.png create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIBMOLS-members.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIBMOLS.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIBMOLS.png create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIBMOLS_1_1OneObjectiveComparator-members.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIBMOLS_1_1OneObjectiveComparator.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIBMOLS_1_1OneObjectiveComparator.png create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIteratedIBMOLS-members.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIteratedIBMOLS.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIteratedIBMOLS.png create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoMoveIncrEval-members.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoMoveIncrEval.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoMoveIncrEval.png create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoObjectiveVectorTraits.png create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoReferencePointIndicatorBasedFitnessAssignment-members.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoReferencePointIndicatorBasedFitnessAssignment.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoReferencePointIndicatorBasedFitnessAssignment.png create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classpeoEA-members.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classpeoEA.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x62.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x63.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x64.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x65.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x66.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x67.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x68.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x69.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x6b.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x6c.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x6d.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x6e.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x6f.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x70.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x72.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x73.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x74.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x75.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x76.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x77.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x7e.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/make__eval__FlowShop_8h-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/make__genotype__FlowShop_8h-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/make__ls__moeo_8h-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/make__op__FlowShop_8h-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/moeoIBMOLS_8h-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/moeoIteratedIBMOLS_8h-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/moeoMoveIncrEval_8h-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/moeoReferencePointIndicatorBasedFitnessAssignment_8h-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/pmoeoEA_8h-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/t-moeo_8cpp-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/tutorial_2examples_2flowshop_2benchs_2README-source.html create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/index.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShop.eps create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShop.tex create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopBenchmarkParser.tex create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopEval.eps create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopEval.tex create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopInit.eps create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopInit.tex create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopObjectiveVectorTraits.eps create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopObjectiveVectorTraits.tex create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpCrossoverQuad.eps create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpCrossoverQuad.tex create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpMutationExchange.eps create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpMutationExchange.tex create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpMutationShift.eps create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpMutationShift.tex create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1.eps create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1.tex create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1Eval.eps create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1Eval.tex create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1ObjectiveVectorTraits.eps create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1ObjectiveVectorTraits.tex create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIBMOLS.eps create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIBMOLS.tex create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIBMOLS_1_1OneObjectiveComparator.eps create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIBMOLS_1_1OneObjectiveComparator.tex create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIteratedIBMOLS.eps create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIteratedIBMOLS.tex create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoMoveIncrEval.eps create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoMoveIncrEval.tex create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoObjectiveVectorTraits.eps create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoReferencePointIndicatorBasedFitnessAssignment.eps create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoReferencePointIndicatorBasedFitnessAssignment.tex create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classpeoEA.tex create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShop.3 create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopBenchmarkParser.3 create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopEval.3 create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopInit.3 create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopObjectiveVectorTraits.3 create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopOpCrossoverQuad.3 create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopOpMutationExchange.3 create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopOpMutationShift.3 create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/Sch1.3 create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/Sch1Eval.3 create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/Sch1ObjectiveVectorTraits.3 create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/moeoIBMOLS.3 create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/moeoIBMOLS_OneObjectiveComparator.3 create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/moeoIteratedIBMOLS.3 create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/moeoMoveIncrEval.3 create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/moeoReferencePointIndicatorBasedFitnessAssignment.3 create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/peoEA.3 create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/moeo.doxyfile.cmake create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/moeo-conf.cmake create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/CMakeLists.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoAlgo.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoCombinedLS.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoEA.h create mode 100755 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoEasyEA.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoHybridLS.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoIBEA.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoLS.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoNSGA.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoNSGAII.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/archive/moeoArchive.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoAggregativeComparator.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoComparator.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoDiversityThenFitnessComparator.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoFitnessThenDiversityComparator.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoGDominanceObjectiveVectorComparator.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoObjectiveObjectiveVectorComparator.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoObjectiveVectorComparator.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoOneObjectiveComparator.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoParetoObjectiveVectorComparator.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/MOEO.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoBitVector.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoEvalFunc.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoObjectiveVector.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoObjectiveVectorTraits.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoObjectiveVectorTraits.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoRealObjectiveVector.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoRealVector.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoVector.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/distance/moeoDistance.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/distance/moeoDistanceMatrix.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/distance/moeoEuclideanDistance.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/distance/moeoManhattanDistance.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/distance/moeoNormalizedDistance.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoCrowdingDiversityAssignment.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoDiversityAssignment.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoDummyDiversityAssignment.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoFrontByFrontCrowdingDiversityAssignment.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoFrontByFrontSharingDiversityAssignment.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoSharingDiversityAssignment.h create mode 100755 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/do/make_checkpoint_moeo.h create mode 100755 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/do/make_continue_moeo.h create mode 100755 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/do/make_ea_moeo.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoAchievementFitnessAssignment.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoBinaryIndicatorBasedFitnessAssignment.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoCriterionBasedFitnessAssignment.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoDummyFitnessAssignment.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoExpBinaryIndicatorBasedFitnessAssignment.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoFastNonDominatedSortingFitnessAssignment.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoFitnessAssignment.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoIndicatorBasedFitnessAssignment.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoParetoBasedFitnessAssignment.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoScalarFitnessAssignment.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoUnaryIndicatorBasedFitnessAssignment.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoAdditiveEpsilonBinaryMetric.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoContributionMetric.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoEntropyMetric.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoHypervolumeBinaryMetric.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoMetric.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoNormalizedSolutionVsSolutionBinaryMetric.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/moeo create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/replacement/moeoElitistReplacement.h create mode 100755 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/replacement/moeoEnvironmentalReplacement.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/replacement/moeoGenerationalReplacement.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/replacement/moeoReplacement.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoDetTournamentSelect.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoRandomSelect.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoRouletteSelect.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoSelectFromPopAndArch.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoSelectOne.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoSelectors.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoStochTournamentSelect.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/utils/moeoArchiveObjectiveVectorSavingUpdater.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/utils/moeoArchiveUpdater.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/utils/moeoBinaryMetricSavingUpdater.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/src/utils/moeoConvertPopToObjectiveVectors.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/test/CMakeLists.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeo.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoAchievementFitnessAssignment.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoAggregativeComparator.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoArchive.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoBitVector.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoCrowdingDiversityAssignment.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoDiversityThenFitnessComparator.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoEasyEA.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoExpBinaryIndicatorBasedFitnessAssignment.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoFastNonDominatedSortingFitnessAssignment.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoFitnessThenDiversityComparator.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoIBEA.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoMax3Obj.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoNSGA.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoNSGAII.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoParetoObjectiveVectorComparator.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoRealVector.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoSharingDiversityAssignment.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/CMakeLists.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson1/CMakeLists.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson1/Sch1.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson1/Sch1.param create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson2/CMakeLists.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson2/FlowShopEA.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson2/FlowShopEA.param create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson3/CMakeLists.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson3/FlowShopEA.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson3/FlowShopEA.param create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/CMakeLists.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/CMakeLists.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShop.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShop.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopBenchmarkParser.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopBenchmarkParser.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopEval.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopEval.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopInit.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopInit.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVector.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVectorTraits.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVectorTraits.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpCrossoverQuad.cpp create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpCrossoverQuad.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpMutationExchange.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpMutationShift.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_05_01.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_05_02.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_10_01.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_10_02.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_20_01.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_05_01.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_10_01.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_20_01.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_05_01.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_10_01.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_20_01.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/200_10_01.txt create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/README create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/make_eval_FlowShop.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/make_genotype_FlowShop.h create mode 100644 tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/make_op_FlowShop.h diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/AUTHORS b/tags/paradiseo-ix86-1.1/paradiseo-moeo/AUTHORS new file mode 100644 index 000000000..50787a3ef --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/AUTHORS @@ -0,0 +1,4 @@ +Sébastien Cahon +Arnaud Liefooghe +Thomas Legrand +Abdelhakim Deneche diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/CMakeLists.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/CMakeLists.txt new file mode 100644 index 000000000..8728e0a0c --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/CMakeLists.txt @@ -0,0 +1,40 @@ + +########################################################################################################################################## +### 0) If you want to set your own variables in moeo-conf.cmake and avoid the cmd line +########################################################################################################################################## + +INCLUDE(moeo-conf.cmake OPTIONAL) + +########################################################################################################################################## + + +########################################################################################################################################## +### 1) Project properties +########################################################################################################################################## + +# set the project name +PROJECT(ParadisEO-MOEO) + +SET(PACKAGE_BUGREPORT "paradiseo-help@lists.gforge.inria.fr" CACHE STRING "Package bug report" FORCE) +SET(PACKAGE_NAME "ParadisEO-MOEO - Multi Objective Evolving Objects" CACHE STRING "Package name" FORCE) +SET(PACKAGE_STRING "ParadisEO-MOEO 1.1" CACHE STRING "MOEO Package string full name" FORCE) +SET(PACKAGE_VERSION "1.1" CACHE STRING "Package version" FORCE) +SET(GLOBAL_VERSION "1.1" CACHE STRING "Global version" FORCE) +SET(VERSION "1.1" CACHE STRING "Version" FORCE) +########################################################################################################################################## + + +########################################################################################################################################## +### 2) Include the common CMake configuration +########################################################################################################################################## + +# The "config" variable must be provided on the command line +IF(NOT DEFINED config OR NOT config) + MESSAGE(FATAL_ERROR "The \"config\" variable must be set on the command line to + give the path of the install configuration file. ") +ENDIF(NOT DEFINED config OR NOT config) + +# Need the config file whose full path is given thanks to the "config" variable +INCLUDE(${config}) +########################################################################################################################################## + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/DartConfig.cmake b/tags/paradiseo-ix86-1.1/paradiseo-moeo/DartConfig.cmake new file mode 100644 index 000000000..9c15a5362 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/DartConfig.cmake @@ -0,0 +1,10 @@ + +############################################################################# +# Dart config for report submission +############################################################################# + +SET (DROP_METHOD "xmlrpc") +SET (DROP_SITE "http://dart-test.irisa.fr") +SET (DROP_LOCATION "ParadisEO") +SET (NIGHTLY_START_TIME "23:00:00 WEST") +############################################################################# \ No newline at end of file diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/README b/tags/paradiseo-ix86-1.1/paradiseo-moeo/README new file mode 100644 index 000000000..8ca8258f3 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/README @@ -0,0 +1,82 @@ + PARADISEO-MOEO README FILE +======================================================================= + check latest news at http://paradiseo.gforge.inria.fr/ +======================================================================= + +Welcome to ParadisEO-MOEO, the Multi-Objective Evolving Objects library. +The latest news about ParadisEO-MOEO can be found on the gforge repository at +http://paradiseo.gforge.inria.fr/ +In case of any problem, please e-mail us at +paradiseo-help@lists.gforge.inria.fr + + +======================================================================= + BUILDING PARADISEO-MOEO +======================================================================= +The basic installation procedure goes the following. + +To compile paradiseo-moeo in the default directory, +go to paradiseo-moeo/build/ and run: + > cmake ../ -Dconfig= + > make + // for an easy-use of the provided lessons + > make install + // optional (if the documentation is not already available) + > make doc + +To compile paradiseo-moeo anywhere else, simply run: + > cmake $(MOEO) -Dconfig= + > make + // for an easy-use of the provided lessons + > make install + // optional (if the documentation is not already available) + > make doc + +where $(MOEO) is the top-level directory of PARADISEO-MOEO. + +To clean everything, simply run + > make clean + +======================================================================= + DIRECTORY STRUCTURE +======================================================================= +After unpacking the archive file, you should end up with the following +structure: + +.../ The main PARADISEO-MOEO directory, created when unpacking. + | + | + +-- build BUILD directory that contains libraries and executable files. + | + | + +-- src SOURCE directory that contains PARADISEO-MOEO source files. + | + | + +-- doc DOCUMENTATION directory (generated by Doxygen). + | | + | +-- html HTML files - start at index.html. + | | + | +-- latex latex files - use to generate Postcript doc. + | | + | +-- man Unix man format documentation. + | + | + +-- tutorial TUTORIAL directory that contains with lessons. + | + +-- examples APPLICATIONS - one directory per separate application. + | | + | +-- flowshop Flow-shop scheduling problem example source files. + | | + | +-- benchs Benchmark suites for the flow-shop. + | + +-- Lesson1 NSGA-II to solve the SCH1 problem. + | + +-- Lesson2 A bi-objective flow-shop scheduling problem solved using main MOEAs. + | + +-- Lesson3 A bi-objective flow-shop scheduling problem solved using main MOEAs thanks to a parameter file. + +======================================================================= + NOTES +======================================================================= + +Mailing list : paradiseo-help@lists.gforge.inria.fr diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/CMakeLists.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/CMakeLists.txt new file mode 100644 index 000000000..c94b73700 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/CMakeLists.txt @@ -0,0 +1,26 @@ + +########################################################################################## +### MOEO Doc generation using Doxygen +########################################################################################## + +IF (DOXYGEN_FOUND) + + SET(DOC_DIR ${CMAKE_BINARY_DIR}/doc CACHE PATH "MOEO documentation directory") + SET(MOEO_DOC_CONFIG_FILE "moeo.doxyfile" CACHE PATH "MOEO documentation configuration file") + # define the doc target + IF (DOXYGEN_EXECUTABLE) + ADD_CUSTOM_TARGET(doc + COMMAND ${DOXYGEN_EXECUTABLE} ${MOEO_DOC_CONFIG_FILE} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + ENDIF (DOXYGEN_EXECUTABLE) + + # configure doxyfile file + CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/doc/${MOEO_DOC_CONFIG_FILE}.cmake" + "${CMAKE_BINARY_DIR}/doc/${MOEO_DOC_CONFIG_FILE}") + +ELSE (DOXYGEN_FOUND) + MESSAGE(STATUS "Unable to generate the documentation, Doxygen package not found") +ENDIF (DOXYGEN_FOUND) + +########################################################################################## diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopBenchmarkParser_8cpp-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopBenchmarkParser_8cpp-source.html new file mode 100644 index 000000000..bae6d394f --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopBenchmarkParser_8cpp-source.html @@ -0,0 +1,129 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopBenchmarkParser.cpp Source File + + + + +
+
+

FlowShopBenchmarkParser.cpp

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopBenchmarkParser.cpp
+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 #include <stdexcept>
+00014 #include <FlowShopBenchmarkParser.h>
+00015 
+00016 FlowShopBenchmarkParser::FlowShopBenchmarkParser(const std::string _benchmarkFileName)
+00017 {
+00018     init(_benchmarkFileName);
+00019 }
+00020 
+00021 
+00022 const unsigned int FlowShopBenchmarkParser::getM()
+00023 {
+00024     return M;
+00025 }
+00026 
+00027 
+00028 const unsigned int FlowShopBenchmarkParser::getN()
+00029 {
+00030     return N;
+00031 }
+00032 
+00033 
+00034 const std::vector< std::vector<unsigned int> > FlowShopBenchmarkParser::getP()
+00035 {
+00036     return p;
+00037 }
+00038 
+00039 
+00040 const std::vector<unsigned int> FlowShopBenchmarkParser::getD()
+00041 {
+00042     return d;
+00043 }
+00044 
+00045 
+00046 void FlowShopBenchmarkParser::printOn(std::ostream & _os) const
+00047 {
+00048     _os << "M=" << M << " N=" << N << std::endl;
+00049     _os << "*** processing times" << std::endl;
+00050     for (unsigned int i=0; i<M; i++) {
+00051         for (unsigned int j=0; j<N; j++) {
+00052             _os << p[i][j] << " ";
+00053         }
+00054         _os << std::endl;
+00055     }
+00056     _os << "*** due-dates" << std::endl;
+00057     for (unsigned int j=0; j<N; j++) {
+00058         _os << d[j] << " ";
+00059     }
+00060     _os << std::endl << std::endl;
+00061 }
+00062 
+00063 
+00064 void FlowShopBenchmarkParser::init(const std::string _benchmarkFileName)
+00065 {
+00066     std::string buffer;
+00067     std::string::size_type start, end;
+00068     std::ifstream inputFile(_benchmarkFileName.data(), std::ios::in);
+00069     // opening of the benchmark file
+00070     if (! inputFile)
+00071         throw std::runtime_error("*** ERROR : Unable to open the benchmark file");
+00072     // number of jobs (N)
+00073     getline(inputFile, buffer, '\n');
+00074     N = atoi(buffer.data());
+00075     // number of machines M
+00076     getline(inputFile, buffer, '\n');
+00077     M = atoi(buffer.data());
+00078     // initial and current seeds (not used)
+00079     getline(inputFile, buffer, '\n');
+00080     // processing times and due-dates
+00081     p = std::vector< std::vector<unsigned int> > (M,N);
+00082     d = std::vector<unsigned int> (N);
+00083     // for each job...
+00084     for (unsigned int j=0 ; j<N ; j++) {
+00085         // index of the job (<=> j)
+00086         getline(inputFile, buffer, '\n');
+00087         // due-date of the job j
+00088         getline(inputFile, buffer, '\n');
+00089         d[j] = atoi(buffer.data());
+00090         // processing times of the job j on each machine
+00091         getline(inputFile, buffer, '\n');
+00092         start = buffer.find_first_not_of(" ");
+00093         for (unsigned int i=0 ; i<M ; i++) {
+00094             end = buffer.find_first_of(" ", start);
+00095             p[i][j] = atoi(buffer.substr(start, end-start).data());
+00096             start = buffer.find_first_not_of(" ", end);
+00097         }
+00098     }
+00099     // closing of the input file
+00100     inputFile.close();
+00101 }
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopBenchmarkParser_8h-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopBenchmarkParser_8h-source.html new file mode 100644 index 000000000..0919ff0eb --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopBenchmarkParser_8h-source.html @@ -0,0 +1,82 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopBenchmarkParser.h Source File + + + + +
+
+

FlowShopBenchmarkParser.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopBenchmarkParser.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 FLOWSHOPBENCHMARKPARSER_H_
+00014 #define FLOWSHOPBENCHMARKPARSER_H_
+00015 
+00016 #include <fstream>
+00017 #include <string>
+00018 #include <vector>
+00019 
+00023 class FlowShopBenchmarkParser
+00024 {
+00025 public:
+00026 
+00031     FlowShopBenchmarkParser(const std::string _benchmarkFileName);
+00032 
+00033 
+00037     const unsigned int getM();
+00038 
+00039 
+00043     const unsigned int getN();
+00044 
+00045 
+00049     const std::vector < std::vector < unsigned int > > getP();
+00050 
+00051 
+00055     const std::vector < unsigned int > getD();
+00056 
+00057 
+00061     void printOn(std::ostream & _os) const;
+00062 
+00063 
+00064 private:
+00065 
+00067     unsigned int M;
+00069     unsigned int N;
+00071     std::vector < std::vector < unsigned int > > p;
+00073     std::vector < unsigned int > d;
+00074 
+00075 
+00080     void init(const std::string _benchmarkFileName);
+00081 
+00082 };
+00083 
+00084 #endif /*FLOWSHOPBENCHMARKPARSER_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopEA_8cpp-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopEA_8cpp-source.html new file mode 100644 index 000000000..168f09873 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopEA_8cpp-source.html @@ -0,0 +1,135 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopEA.cpp Source File + + + + +
+
+

FlowShopEA.cpp

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopEA.cpp
+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 
+00014 // moeo general include
+00015 #include <moeo>
+00016 // for the creation of an evaluator
+00017 #include <make_eval_FlowShop.h>
+00018 // for the creation of an initializer
+00019 #include <make_genotype_FlowShop.h>
+00020 // for the creation of the variation operators
+00021 #include <make_op_FlowShop.h>
+00022 // how to initialize the population
+00023 #include <do/make_pop.h>
+00024 // the stopping criterion
+00025 #include <do/make_continue_moeo.h>
+00026 // outputs (stats, population dumps, ...)
+00027 #include <do/make_checkpoint_moeo.h>
+00028 // evolution engine (selection and replacement)
+00029 #include <do/make_ea_moeo.h>
+00030 // simple call to the algo
+00031 #include <do/make_run.h>
+00032 // checks for help demand, and writes the status file and make_help; in libutils
+00033 void make_help(eoParser & _parser);
+00034 // definition of the representation
+00035 #include <FlowShop.h>
+00036 
+00037 
+00038 using namespace std;
+00039 
+00040 
+00041 int main(int argc, char* argv[])
+00042 {
+00043     try
+00044     {
+00045     
+00046         eoParser parser(argc, argv);  // for user-parameter reading
+00047         eoState state;                // to keep all things allocated
+00048 
+00049 
+00050         /*** the representation-dependent things ***/
+00051 
+00052         // The fitness evaluation
+00053         eoEvalFuncCounter<FlowShop>& eval = do_make_eval(parser, state);
+00054         // the genotype (through a genotype initializer)
+00055         eoInit<FlowShop>& init = do_make_genotype(parser, state);
+00056         // the variation operators
+00057         eoGenOp<FlowShop>& op = do_make_op(parser, state);
+00058 
+00059 
+00060         /*** the representation-independent things ***/
+00061 
+00062         // initialization of the population
+00063         eoPop<FlowShop>& pop = do_make_pop(parser, state, init);
+00064         // definition of the archive
+00065         moeoArchive<FlowShop> arch;
+00066         // stopping criteria
+00067         eoContinue<FlowShop>& term = do_make_continue_moeo(parser, state, eval);
+00068         // output
+00069         eoCheckPoint<FlowShop>& checkpoint = do_make_checkpoint_moeo(parser, state, eval, term, pop, arch);
+00070         // algorithm
+00071         eoAlgo<FlowShop>& algo = do_make_ea_moeo(parser, state, eval, checkpoint, op, arch);
+00072 
+00073 
+00074         /*** Go ! ***/
+00075 
+00076         // help ?
+00077         make_help(parser);
+00078 
+00079         // first evalution
+00080         apply<FlowShop>(eval, pop);
+00081 
+00082         // printing of the initial population
+00083         cout << "Initial Population\n";
+00084         pop.sortedPrintOn(cout);
+00085         cout << endl;
+00086 
+00087         // run the algo
+00088         do_run(algo, pop);
+00089 
+00090         // printing of the final population
+00091         cout << "Final Population\n";
+00092         pop.sortedPrintOn(cout);
+00093         cout << endl;
+00094 
+00095         // printing of the final archive
+00096         cout << "Final Archive\n";
+00097         arch.sortedPrintOn(cout);
+00098         cout << endl;
+00099 
+00100 
+00101     }
+00102     catch (exception& e)
+00103     {
+00104         cout << e.what() << endl;
+00105     }
+00106     return EXIT_SUCCESS;
+00107 }
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopEval_8cpp-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopEval_8cpp-source.html new file mode 100644 index 000000000..57ea467ec --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopEval_8cpp-source.html @@ -0,0 +1,92 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopEval.cpp Source File + + + + +
+
+

FlowShopEval.cpp

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopEval.cpp
+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 #include <FlowShopEval.h>
+00014 
+00015 
+00016 FlowShopEval::FlowShopEval(unsigned int _M, unsigned int _N, const std::vector< std::vector<unsigned int> > & _p, const std::vector<unsigned int> & _d) :
+00017         M(_M), N (_N), p(_p), d(_d)
+00018 {}
+00019 
+00020 
+00021 void FlowShopEval::operator()(FlowShop & _flowshop)
+00022 {
+00023     FlowShopObjectiveVector objVector;
+00024     objVector[0] = makespan(_flowshop);
+00025     objVector[1] = tardiness(_flowshop);
+00026     _flowshop.objectiveVector(objVector);
+00027 }
+00028 
+00029 
+00030 
+00031 double FlowShopEval::makespan(const FlowShop & _flowshop)
+00032 {
+00033     // completion times computation for each job on each machine
+00034     // C[i][j] = completion of the jth job of the scheduling on the ith machine
+00035     std::vector< std::vector<unsigned int> > C = completionTime(_flowshop);
+00036     return C[M-1][_flowshop[N-1]];
+00037 }
+00038 
+00039 
+00040 double FlowShopEval::tardiness(const FlowShop & _flowshop)
+00041 {
+00042     // completion times computation for each job on each machine
+00043     // C[i][j] = completion of the jth job of the scheduling on the ith machine
+00044     std::vector< std::vector<unsigned int> > C = completionTime(_flowshop);
+00045     // tardiness computation
+00046     unsigned int long sum = 0;
+00047     for (unsigned int j=0 ; j<N ; j++)
+00048         sum += (unsigned int) std::max (0, (int) (C[M-1][_flowshop[j]] - d[_flowshop[j]]));
+00049     return sum;
+00050 }
+00051 
+00052 
+00053 std::vector< std::vector<unsigned int> > FlowShopEval::completionTime(const FlowShop & _flowshop) {
+00054     std::vector< std::vector<unsigned int> > C(M,N);
+00055     C[0][_flowshop[0]] = p[0][_flowshop[0]];
+00056     for (unsigned int j=1; j<N; j++)
+00057         C[0][_flowshop[j]] = C[0][_flowshop[j-1]] + p[0][_flowshop[j]];
+00058     for (unsigned int i=1; i<M; i++)
+00059         C[i][_flowshop[0]] = C[i-1][_flowshop[0]] + p[i][_flowshop[0]];
+00060     for (unsigned int i=1; i<M; i++)
+00061         for (unsigned int j=1; j<N; j++)
+00062             C[i][_flowshop[j]] = std::max(C[i][_flowshop[j-1]], C[i-1][_flowshop[j]]) + p[i][_flowshop[j]];
+00063     return C;
+00064 }
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopEval_8h-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopEval_8h-source.html new file mode 100644 index 000000000..89f92434f --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopEval_8h-source.html @@ -0,0 +1,76 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopEval.h Source File + + + + +
+
+

FlowShopEval.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopEval.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 FLOWSHOPEVAL_H_
+00014 #define FLOWSHOPEVAL_H_
+00015 
+00016 #include <vector>
+00017 #include <core/moeoEvalFunc.h>
+00018 #include <FlowShop.h>
+00019 
+00023 class FlowShopEval : public moeoEvalFunc<FlowShop>
+00024 {
+00025 public:
+00026 
+00034     FlowShopEval(unsigned int _M, unsigned int _N, const std::vector< std::vector<unsigned int> > & _p, const std::vector<unsigned int> & _d);
+00035 
+00036 
+00041     void operator()(FlowShop & _flowshop);
+00042 
+00043 
+00044 private:
+00045 
+00047     unsigned int M;
+00049     unsigned int N;
+00051     std::vector< std::vector < unsigned int > > p;
+00053     std::vector < unsigned int > d;
+00054 
+00055 
+00060     double makespan(const FlowShop & _flowshop);
+00061 
+00062 
+00067     double tardiness(const FlowShop & _flowshop);
+00068 
+00069 
+00075     std::vector< std::vector<unsigned int> > completionTime (const FlowShop & _flowshop);
+00076 
+00077 };
+00078 
+00079 #endif /*FLOWSHOPEVAL_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopInit_8cpp-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopInit_8cpp-source.html new file mode 100644 index 000000000..517100d66 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopInit_8cpp-source.html @@ -0,0 +1,67 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopInit.cpp Source File + + + + +
+
+

FlowShopInit.cpp

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopInit.cpp
+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 #include <FlowShopInit.h>
+00014 
+00015 
+00016 FlowShopInit::FlowShopInit(unsigned int _N) : N(_N)
+00017 {}
+00018 
+00019 
+00020 void FlowShopInit::operator()(FlowShop & _flowshop)
+00021 {
+00022     // scheduling vector
+00023     std::vector<unsigned int> scheduling(N);
+00024     // initialisation of possible values
+00025     std::vector<unsigned int> possibles(N);
+00026     for (unsigned int i=0 ; i<N ; i++)
+00027         possibles[i] = i;
+00028     // random initialization
+00029     unsigned int rInd;     // random index
+00030     for (unsigned int i=0; i<N; i++)
+00031     {
+00032         rInd = (unsigned int) rng.uniform(N-i);
+00033         scheduling[i] = possibles[rInd];
+00034         possibles[rInd] = possibles[N-i-1];
+00035     }
+00036     _flowshop.resize(N);
+00037     _flowshop.value(scheduling);
+00038     _flowshop.invalidate();        // IMPORTANT in case the _genotype is old
+00039 }
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopInit_8h-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopInit_8h-source.html new file mode 100644 index 000000000..a2f0e2d18 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopInit_8h-source.html @@ -0,0 +1,63 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopInit.h Source File + + + + +
+
+

FlowShopInit.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopInit.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 FLOWSHOPINIT_H_
+00014 #define FLOWSHOPINIT_H_
+00015 
+00016 #include <eoInit.h>
+00017 #include <FlowShop.h>
+00018 
+00022 class FlowShopInit : public eoInit<FlowShop>
+00023 {
+00024 public:
+00025 
+00030     FlowShopInit(unsigned int _N);
+00031 
+00032 
+00037     void operator()(FlowShop & _flowshop);
+00038 
+00039 
+00040 private:
+00041 
+00043     unsigned int N;
+00044 
+00045 };
+00046 
+00047 #endif /*FLOWSHOPINIT_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopObjectiveVectorTraits_8cpp-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopObjectiveVectorTraits_8cpp-source.html new file mode 100644 index 000000000..e2151de10 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopObjectiveVectorTraits_8cpp-source.html @@ -0,0 +1,60 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopObjectiveVectorTraits.cpp Source File + + + + +
+
+

FlowShopObjectiveVectorTraits.cpp

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopObjectiveVectorTraits.cpp
+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 #include <FlowShopObjectiveVectorTraits.h>
+00014 
+00015 
+00016 bool FlowShopObjectiveVectorTraits::minimizing (int _i)
+00017 {
+00018     // minimizing both
+00019     return true;
+00020 }
+00021 
+00022 bool FlowShopObjectiveVectorTraits::maximizing (int _i)
+00023 {
+00024     // minimizing both
+00025     return false;
+00026 }
+00027 
+00028 unsigned int FlowShopObjectiveVectorTraits::nObjectives ()
+00029 {
+00030     // 2 objectives
+00031     return 2;
+00032 }
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopObjectiveVectorTraits_8h-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopObjectiveVectorTraits_8h-source.html new file mode 100644 index 000000000..019fc5f7c --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopObjectiveVectorTraits_8h-source.html @@ -0,0 +1,60 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopObjectiveVectorTraits.h Source File + + + + +
+
+

FlowShopObjectiveVectorTraits.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopObjectiveVectorTraits.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 FLOWSHOPOBJECTIVEVECTORTRAITS_H_
+00014 #define FLOWSHOPOBJECTIVEVECTORTRAITS_H_
+00015 
+00016 #include <core/moeoObjectiveVectorTraits.h>
+00017 
+00021 class FlowShopObjectiveVectorTraits : public moeoObjectiveVectorTraits
+00022 {
+00023 public:
+00024 
+00029     static bool minimizing (int _i);
+00030 
+00031 
+00036     static bool maximizing (int _i);
+00037 
+00038 
+00042     static unsigned int nObjectives ();
+00043 
+00044 };
+00045 
+00046 #endif /*FLOWSHOPOBJECTIVEVECTORTRAITS_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopObjectiveVector_8h-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopObjectiveVector_8h-source.html new file mode 100644 index 000000000..72287fcf6 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopObjectiveVector_8h-source.html @@ -0,0 +1,49 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopObjectiveVector.h Source File + + + + +
+
+

FlowShopObjectiveVector.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopObjectiveVector.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 FLOWSHOPOBJECTIVEVECTOR_H_
+00014 #define FLOWSHOPOBJECTIVEVECTOR_H_
+00015 
+00016 #include <core/moeoRealObjectiveVector.h>
+00017 #include <FlowShopObjectiveVectorTraits.h>
+00018 
+00022 typedef moeoRealObjectiveVector < FlowShopObjectiveVectorTraits > FlowShopObjectiveVector;
+00023 
+00024 #endif /*FLOWSHOPOBJECTIVEVECTOR_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpCrossoverQuad_8cpp-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpCrossoverQuad_8cpp-source.html new file mode 100644 index 000000000..d043498ed --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpCrossoverQuad_8cpp-source.html @@ -0,0 +1,112 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopOpCrossoverQuad.cpp Source File + + + + +
+
+

FlowShopOpCrossoverQuad.cpp

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopOpCrossoverQuad.cpp
+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 #include <FlowShopOpCrossoverQuad.h>
+00014 
+00015 
+00016 std::string FlowShopOpCrossoverQuad::className() const
+00017 {
+00018     return "FlowShopOpCrossoverQuad";
+00019 }
+00020 
+00021 
+00022 bool FlowShopOpCrossoverQuad::operator()(FlowShop & _flowshop1, FlowShop & _flowshop2)
+00023 {
+00024     bool oneAtLeastIsModified;
+00025     // computation of the 2 random points
+00026     unsigned int point1, point2;
+00027     do
+00028     {
+00029         point1 =  rng.random(std::min(_flowshop1.size(), _flowshop2.size()));
+00030         point2 =  rng.random(std::min(_flowshop1.size(), _flowshop2.size()));
+00031     } while (fabs((double) point1-point2) <= 2);
+00032     // computation of the offspring
+00033     FlowShop offspring1 = generateOffspring(_flowshop1, _flowshop2, point1, point2);
+00034     FlowShop offspring2 = generateOffspring(_flowshop2, _flowshop1, point1, point2);
+00035     // does at least one genotype has been modified ?
+00036     if ((_flowshop1 != offspring1) || (_flowshop2 != offspring2))
+00037     {
+00038         // update
+00039         _flowshop1.value(offspring1);
+00040         _flowshop2.value(offspring2);
+00041         // at least one genotype has been modified
+00042         oneAtLeastIsModified = true;
+00043     }
+00044     else
+00045     {
+00046         // no genotype has been modified
+00047         oneAtLeastIsModified = false;
+00048     }
+00049     // return 'true' if at least one genotype has been modified
+00050     return oneAtLeastIsModified;
+00051 }
+00052 
+00053 
+00054 FlowShop FlowShopOpCrossoverQuad::generateOffspring(const FlowShop & _parent1, const FlowShop & _parent2, unsigned int _point1, unsigned int _point2)
+00055 {
+00056     FlowShop result = _parent1;
+00057     std::vector<bool> taken_values(result.size(), false);
+00058     if (_point1 > _point2)
+00059         std::swap(_point1, _point2);
+00060     /* first parent */
+00061     for (unsigned int i=0 ; i<=_point1 ; i++)
+00062     {
+00063         // result[i] == _parent1[i]
+00064         taken_values[_parent1[i]] = true;
+00065     }
+00066     for (unsigned int i=_point2 ; i<result.size() ; i++)
+00067     {
+00068         // result[i] == _parent1[i]
+00069         taken_values[_parent1[i]] = true;
+00070     }
+00071     /* second parent */
+00072     unsigned int i = _point1+1;
+00073     unsigned int j = 0;
+00074     while (i<_point2 && j<_parent2.size())
+00075     {
+00076         if (! taken_values[_parent2[j]])
+00077         {
+00078             result[i] = _parent2[j];
+00079             i++;
+00080         }
+00081         j++;
+00082     }
+00083     return result;
+00084 }
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpCrossoverQuad_8h-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpCrossoverQuad_8h-source.html new file mode 100644 index 000000000..3e74236d7 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpCrossoverQuad_8h-source.html @@ -0,0 +1,63 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopOpCrossoverQuad.h Source File + + + + +
+
+

FlowShopOpCrossoverQuad.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopOpCrossoverQuad.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 FLOWSHOPOPCROSSOVERQUAD_H_
+00014 #define FLOWSHOPOPCROSSOVERQUAD_H_
+00015 
+00016 #include <eoOp.h>
+00017 #include <FlowShop.h>
+00018 
+00022 class FlowShopOpCrossoverQuad : public eoQuadOp < FlowShop >
+00023 {
+00024 public:
+00025 
+00029     std::string className() const;
+00030 
+00031 
+00037     bool operator()(FlowShop & _flowshop1, FlowShop & _flowshop2);
+00038 
+00039 
+00040 private:
+00041 
+00049     FlowShop generateOffspring(const FlowShop & _parent1, const FlowShop & _parent2, unsigned int _point1, unsigned int _point2);
+00050 
+00051 };
+00052 
+00053 #endif /*FLOWSHOPOPCROSSOVERQUAD_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpMutationExchange_8cpp-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpMutationExchange_8cpp-source.html new file mode 100644 index 000000000..b1bb51814 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpMutationExchange_8cpp-source.html @@ -0,0 +1,78 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopOpMutationExchange.cpp Source File + + + + +
+
+

FlowShopOpMutationExchange.cpp

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopOpCrossoverQuad.cpp
+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 #include <FlowShopOpMutationExchange.h>
+00014 
+00015 
+00016 std::string FlowShopOpMutationExchange::className() const
+00017 {
+00018     return "FlowShopOpMutationExchange";
+00019 }
+00020 
+00021 
+00022 bool FlowShopOpMutationExchange::operator()(FlowShop & _flowshop)
+00023 {
+00024     bool isModified;
+00025     FlowShop result = _flowshop;
+00026     // computation of the 2 random points
+00027     unsigned int point1, point2;
+00028     do
+00029     {
+00030         point1 = rng.random(result.size());
+00031         point2 = rng.random(result.size());
+00032     } while (point1 == point2);
+00033     // swap
+00034     std::swap (result[point1], result[point2]);
+00035     // update (if necessary)
+00036     if (result != _flowshop)
+00037     {
+00038         // update
+00039         _flowshop.value(result);
+00040         // the genotype has been modified
+00041         isModified = true;
+00042     }
+00043     else
+00044     {
+00045         // the genotype has not been modified
+00046         isModified = false;
+00047     }
+00048     // return 'true' if the genotype has been modified
+00049     return isModified;
+00050 }
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpMutationExchange_8h-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpMutationExchange_8h-source.html new file mode 100644 index 000000000..36e594109 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpMutationExchange_8h-source.html @@ -0,0 +1,58 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopOpMutationExchange.h Source File + + + + +
+
+

FlowShopOpMutationExchange.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopOpCrossoverQuad.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 FLOWSHOPOPMUTATIONEXCHANGE_H_
+00014 #define FLOWSHOPOPMUTATIONEXCHANGE_H_
+00015 
+00016 #include <eoOp.h>
+00017 #include <FlowShop.h>
+00018 
+00022 class FlowShopOpMutationExchange : public eoMonOp<FlowShop>
+00023 {
+00024 public:
+00025 
+00029     std::string className() const;
+00030 
+00031 
+00036     bool operator()(FlowShop & _flowshop);
+00037 
+00038 };
+00039 
+00040 #endif /*FLOWSHOPOPMUTATIONEXCHANGE_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpMutationShift_8cpp-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpMutationShift_8cpp-source.html new file mode 100644 index 000000000..4d8cc7198 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpMutationShift_8cpp-source.html @@ -0,0 +1,88 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopOpMutationShift.cpp Source File + + + + +
+
+

FlowShopOpMutationShift.cpp

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopOpMutationShift.cpp
+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 #include <FlowShopOpMutationShift.h>
+00014 
+00015 
+00016 std::string FlowShopOpMutationShift::className() const
+00017 {
+00018     return "FlowShopOpMutationShift";
+00019 }
+00020 
+00021 
+00022 bool FlowShopOpMutationShift::operator()(FlowShop & _flowshop)
+00023 {
+00024     bool isModified;
+00025     int direction;
+00026     unsigned int tmp;
+00027     FlowShop result = _flowshop;
+00028     // computation of the 2 random points
+00029     unsigned int point1, point2;
+00030     do
+00031     {
+00032         point1 = rng.random(result.size());
+00033         point2 = rng.random(result.size());
+00034     } while (point1 == point2);
+00035     // direction
+00036     if (point1 < point2)
+00037         direction = 1;
+00038     else
+00039         direction = -1;
+00040     // mutation
+00041     tmp = result[point1];
+00042     for (unsigned int i=point1 ; i!=point2 ; i+=direction)
+00043         result[i] = result[i+direction];
+00044     result[point2] = tmp;
+00045     // update (if necessary)
+00046     if (result != _flowshop)
+00047     {
+00048         // update
+00049         _flowshop.value(result);
+00050         // the genotype has been modified
+00051         isModified = true;
+00052     }
+00053     else
+00054     {
+00055         // the genotype has not been modified
+00056         isModified = false;
+00057     }
+00058     // return 'true' if the genotype has been modified
+00059     return isModified;
+00060 }
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpMutationShift_8h-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpMutationShift_8h-source.html new file mode 100644 index 000000000..da9808f6f --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShopOpMutationShift_8h-source.html @@ -0,0 +1,58 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopOpMutationShift.h Source File + + + + +
+
+

FlowShopOpMutationShift.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopOpMutationShift.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 FLOWSHOPOPMUTATIONSHIFT_H_
+00014 #define FLOWSHOPOPMUTATIONSHIFT_H_
+00015 
+00016 #include <eoOp.h>
+00017 #include <FlowShop.h>
+00018 
+00022 class FlowShopOpMutationShift : public eoMonOp < FlowShop >
+00023 {
+00024 public:
+00025 
+00029     std::string className() const;
+00030 
+00031 
+00036     bool operator()(FlowShop & _flowshop);
+00037 
+00038 };
+00039 
+00040 #endif /*FLOWSHOPOPMUTATIONSHIFT_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShop_8cpp-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShop_8cpp-source.html new file mode 100644 index 000000000..30cfded2e --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShop_8cpp-source.html @@ -0,0 +1,46 @@ + + +ParadisEO-MOEOMovingObjects: FlowShop.cpp Source File + + + + +
+
+

FlowShop.cpp

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShop.cpp
+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 #include <FlowShop.h>
+00014 
+00015 std::string FlowShop::className() const
+00016 {
+00017     return "FlowShop";
+00018 }
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShop_8h-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShop_8h-source.html new file mode 100644 index 000000000..10873c602 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/FlowShop_8h-source.html @@ -0,0 +1,55 @@ + + +ParadisEO-MOEOMovingObjects: FlowShop.h Source File + + + + +
+
+

FlowShop.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShop.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 FLOWSHOP_H_
+00014 #define FLOWSHOP_H_
+00015 
+00016 #include <core/moeoVector.h>
+00017 #include <FlowShopObjectiveVector.h>
+00018 
+00022 class FlowShop: public moeoVector < FlowShopObjectiveVector , double , double , unsigned int >
+00023 {
+00024 public:
+00025 
+00029     std::string className() const;
+00030 
+00031 };
+00032 
+00033 #endif /*FLOWSHOP_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/README-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/README-source.html new file mode 100644 index 000000000..fbf74993d --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/README-source.html @@ -0,0 +1,108 @@ + + +ParadisEO-MOEOMovingObjects: README Source File + + + + +
+
+

README

00001                 PARADISEO-MOEO README FILE
+00002 =======================================================================
+00003          check latest news at http://paradiseo.gforge.inria.fr/
+00004 =======================================================================
+00005 
+00006 Welcome to ParadisEO-MOEO, the Multi-Objective Evolving Objects library.
+00007 The latest news about ParadisEO-MOEO can be found on the gforge repository at
+00008 http://paradiseo.gforge.inria.fr/
+00009 In case of any problem, please e-mail us at
+00010 paradiseo-help@lists.gforge.inria.fr
+00011 
+00012 
+00013 =======================================================================
+00014                         BUILDING PARADISEO-MOEO
+00015 =======================================================================
+00016 The basic installation procedure goes the following.
+00017 
+00018 To compile paradiseo-moeo in the default directory,
+00019 go to paradiseo-moeo/build/ and run:
+00020     > cmake ../ -Dconfig=<path to the install.cmake file>
+00021     > make
+00022     // for an easy-use of the provided lessons
+00023     > make install
+00024     // optional (if the documentation is not already available)
+00025     > make doc
+00026 
+00027 To compile paradiseo-moeo anywhere else, simply run:
+00028     > cmake $(MOEO) -Dconfig=<path to the install.cmake file>
+00029     > make
+00030     // for an easy-use of the provided lessons
+00031     > make install
+00032     // optional (if the documentation is not already available)
+00033     > make doc
+00034 
+00035 where $(MOEO) is the top-level directory of PARADISEO-MOEO.
+00036 
+00037 To clean everything, simply run
+00038     > make clean
+00039 
+00040 =======================================================================
+00041                           DIRECTORY STRUCTURE
+00042 =======================================================================
+00043 After unpacking the archive file, you should end up with the following
+00044 structure:
+00045 
+00046 .../                       The main PARADISEO-MOEO directory, created when unpacking.
+00047    |
+00048    |
+00049    +-- build               BUILD directory that contains libraries and executable files.
+00050    |
+00051    |
+00052    +-- src                 SOURCE directory that contains PARADISEO-MOEO source files.
+00053    |
+00054    |
+00055    +-- doc                 DOCUMENTATION directory (generated by Doxygen).
+00056    |   |
+00057    |   +-- html            HTML files - start at index.html.
+00058    |   |
+00059    |   +-- latex           latex files - use to generate Postcript doc.
+00060    |   |
+00061    |   +-- man             Unix man format documentation.
+00062    |
+00063    |
+00064    +-- tutorial            TUTORIAL directory that contains with lessons.
+00065        |
+00066        +-- examples        APPLICATIONS - one directory per separate application.
+00067        |   |
+00068        |   +-- flowshop    Flow-shop scheduling problem example source files.
+00069        |       |
+00070        |       +-- benchs  Benchmark suites for the flow-shop.
+00071        |
+00072        +-- Lesson1         A bi-objective flow-shop problem example solved using main MOEAs.
+00073        |
+00074        +-- Lesson2         NSGA-II to solve the SCH1 problem.
+00075 
+00076 =======================================================================
+00077                                  NOTES
+00078 =======================================================================
+00079 
+00080 Mailing list : paradiseo-help@lists.gforge.inria.fr
+

Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/Sch1_8cpp-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/Sch1_8cpp-source.html new file mode 100644 index 000000000..95e3646b8 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/Sch1_8cpp-source.html @@ -0,0 +1,135 @@ + + +ParadisEO-MOEOMovingObjects: Sch1.cpp Source File + + + + +
+
+

Sch1.cpp

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // Sch1.cpp
+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 #include <stdio.h>
+00014 #include <moeo>
+00015 #include <es/eoRealInitBounded.h>
+00016 #include <es/eoRealOp.h>
+00017 
+00018 using namespace std;
+00019 
+00020 // the moeoObjectiveVectorTraits : minimizing 2 objectives
+00021 class Sch1ObjectiveVectorTraits : public moeoObjectiveVectorTraits
+00022 {
+00023 public:
+00024     static bool minimizing (int i)
+00025     {
+00026         return true;
+00027     }
+00028     static bool maximizing (int i)
+00029     {
+00030         return false;
+00031     }
+00032     static unsigned int nObjectives ()
+00033     {
+00034         return 2;
+00035     }
+00036 };
+00037 
+00038 
+00039 // objective vector of real values
+00040 typedef moeoRealObjectiveVector < Sch1ObjectiveVectorTraits > Sch1ObjectiveVector;
+00041 
+00042 
+00043 // multi-objective evolving object for the Sch1 problem
+00044 class Sch1 : public moeoRealVector < Sch1ObjectiveVector, double, double >
+00045 {
+00046 public:
+00047     Sch1() : moeoRealVector < Sch1ObjectiveVector, double, double > (1) {}
+00048 };
+00049 
+00050 
+00051 // evaluation of objective functions
+00052 class Sch1Eval : public moeoEvalFunc < Sch1 >
+00053 {
+00054 public:
+00055     void operator () (Sch1 & _sch1)
+00056     {
+00057         if (_sch1.invalidObjectiveVector())
+00058         {
+00059             Sch1ObjectiveVector objVec;
+00060             double x = _sch1[0];
+00061             objVec[0] = x * x;
+00062             objVec[1] = (x - 2.0) * (x - 2.0);
+00063             _sch1.objectiveVector(objVec);
+00064         }
+00065     }
+00066 };
+00067 
+00068 
+00069 // main
+00070 int main (int argc, char *argv[])
+00071 {
+00072     // parameters
+00073     unsigned int POP_SIZE = 20;
+00074     unsigned int MAX_GEN = 100;
+00075     double M_EPSILON = 0.01;
+00076     double P_CROSS = 0.25;
+00077     double P_MUT = 0.35;
+00078 
+00079     // objective functions evaluation
+00080     Sch1Eval eval;
+00081 
+00082     // crossover and mutation
+00083     eoQuadCloneOp < Sch1 > xover;
+00084     eoUniformMutation < Sch1 > mutation (M_EPSILON);
+00085 
+00086     // generate initial population
+00087     eoRealVectorBounds bounds (1, 0.0, 2.0);    // [0, 2]
+00088     eoRealInitBounded < Sch1 > init (bounds);
+00089     eoPop < Sch1 > pop (POP_SIZE, init);
+00090 
+00091     // build NSGA-II
+00092     moeoNSGAII < Sch1 > nsgaII (MAX_GEN, eval, xover, P_CROSS, mutation, P_MUT);
+00093 
+00094     // run the algo
+00095     nsgaII (pop);
+00096 
+00097     // extract first front of the final population using an moeoArchive (this is the output of nsgaII)
+00098     moeoArchive < Sch1 > arch;
+00099     arch.update (pop);
+00100 
+00101     // printing of the final archive
+00102     cout << "Final Archive" << endl;
+00103     arch.sortedPrintOn (cout);
+00104     cout << endl;
+00105 
+00106     return EXIT_SUCCESS;
+00107 }
+

Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShop-members.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShop-members.html new file mode 100644 index 000000000..5a213f39c --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShop-members.html @@ -0,0 +1,86 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

FlowShop Member List

This is the complete list of members for FlowShop, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AtomType typedefmoeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >
className() const FlowShop [virtual]
ContainerType typedefmoeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >
Diversity typedefMOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >
diversity() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
diversity(const Diversity &_diversityValue)MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
EO()EO< MOEOObjectiveVector >
EO()EO< MOEOObjectiveVector >
Fitness typedefMOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >
fitness() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
fitness(const Fitness &_fitnessValue)MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
EO< MOEOObjectiveVector >::fitness(const Fitness &_fitness)EO< MOEOObjectiveVector >
EO< MOEOObjectiveVector >::fitness(performance_type perf)EO< MOEOObjectiveVector >
fitness_traits typedefEO< MOEOObjectiveVector >
fitnessReference()EO< MOEOObjectiveVector >
invalid() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidate()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidate_worth(void)EO< MOEOObjectiveVector >
invalidateDiversity()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidateFitness()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidateObjectiveVector()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidDiversity() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidFitness() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidObjectiveVector() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
MOEO()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
moeoVector(unsigned int _size=0, GeneType _value=GeneType())moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType > [inline]
ObjectiveVector typedefMOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >
objectiveVector() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
objectiveVector(const ObjectiveVector &_objectiveVectorValue)MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
operator<(const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType > &_moeo) const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType > [inline]
MOEO::operator<(const MOEO &_other) const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
EO< MOEOObjectiveVector >::operator<(const EO &_eo2) const EO< MOEOObjectiveVector >
EO< MOEOObjectiveVector >::operator<(const EO< Fitness, Traits > &other) const EO< MOEOObjectiveVector >
operator>(const EO &_eo2) const EO< MOEOObjectiveVector >
operator>(const EO< Fitness, Traits > &other) const EO< MOEOObjectiveVector >
performance(performance_type perf)EO< MOEOObjectiveVector >
performance(void) const EO< MOEOObjectiveVector >
performance_type typedefEO< MOEOObjectiveVector >
printOn(std::ostream &_os) const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType > [inline, virtual]
readFrom(std::istream &_is)moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType > [inline, virtual]
storage_type typedefEO< MOEOObjectiveVector >
value(const std::vector< GeneType > &_v)moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType > [inline]
worth(worth_type worth)EO< MOEOObjectiveVector >
worth(void) const EO< MOEOObjectiveVector >
worth_type typedefEO< MOEOObjectiveVector >
~EO()EO< MOEOObjectiveVector > [virtual]
~eoObject()eoObject [virtual]
~eoPersistent()eoPersistent [virtual]
~eoPrintable()eoPrintable [virtual]
~MOEO()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline, virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShop.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShop.html new file mode 100644 index 000000000..095edf912 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShop.html @@ -0,0 +1,65 @@ + + +ParadisEO-MOEOMovingObjects: FlowShop Class Reference + + + + +
+
+ +

FlowShop Class Reference

Structure of the genotype for the flow-shop scheduling problem: a vector of unsigned int int. +More... +

+#include <FlowShop.h> +

+

Inheritance diagram for FlowShop: +

+ +moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType > +MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > +EO< MOEOObjectiveVector > +eoObject +eoPersistent +eoPrintable + +List of all members. + + + + + +

Public Member Functions

+std::string className () const
 class name
+

Detailed Description

+Structure of the genotype for the flow-shop scheduling problem: a vector of unsigned int int. +

+ +

+Definition at line 22 of file FlowShop.h.


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShop.png b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShop.png new file mode 100644 index 0000000000000000000000000000000000000000..e2566fff876f2d0713579b01dc1971c3856b54c6 GIT binary patch literal 2568 zcmb_ec{J2(AD=0btXYyPH{2Rp?4?B`CS0->H`|QClv|nMYM5!5vD`!nMRpmvqU$BH z^c%|^jBWA`HQqyvpE21YH4S2-vD~S9>eV^#Iq!1bKYr)=JkRre&hz^{pXK@8bannw zZrgX;AP|V0y`A-02xRjR1OhdZ*eo7tAgR=go1LzX?l$Y|>teXR-cnHDcSnpqKP@dS zk*(_!;x07otg{=$^3`A<1R_nfx3+S>dXJy)lQwo##kwp&=VRjoO}m=dn>li?%Y@Bw zRlY#d_1KH}nj#YguF4jFv`EWG@#V^r-{eUI8{EZgPEBd<1$QN2O|?PCr)J94J#qE? zm&mnoW|^ONEEe3JJCTIdz+42Ei!mPHh)8k8V`S&K=xWXc-NvK_l`^)7X+*PboD({F#*@VUn%# zoWL=Wd7*=1;8QbIX;h5Sox0OjTMA+^Opb;Rq+mD;l!ED&KpJ z41!)u_=D%<-S!c8!b+|2;4zfe!{{gXp@KJwh94%K&a^U;i~#r^EVjxMex*$o0|q&| z%55*bq*HhyQG%tV{(!H4eClUGS7f@~Yu@5nGpn7g4D4foz87;CoJ=XeMfMKopBu-y zeBb$_qmcld147zb9pprWx6YJ;a&F|+c8PB4A1R*GDPWbLi#aY-0J!ll7gvQwFa;IN zd;}i6n`KOrmNMP6;+0!Ep-Rb&w*s6PLjW9E`Il0@h^8IrMMv1Qh~zN4r0cMH(kRHU zaRv|@gc>BqOz-BEj(r}-Pt}jrTG^)`aIXJ{`ZHCR=}oR;qPB|3RQYFhj8>tHWhz@z z%kICM4mqb3!K#^)5lg`O8{urw&^Iu04Y3}f*>Z9^S$^Dbp>!W)0>H>oQRdZyy`A3BZs)~nx~^H&G|yHS2`f?(Z1&Q}+Pbpoq^6jT|y- z4_626MnmJXu{;`_(!APej2?Z4{2PuZHMGdf2l%T5lr4C-Q8#{~nxgq!@+4hJVbME1 z9a{jYUOj!HFX+r!m)cA|tEGdiN+nfweU9xftbH=$2g#Nojf5z8ipiN`#(dl2>r&i&@}XuB))jZxQe37zC=~nF`RpVO*KA2bd)g9b4b?Dxu-xJ z5eob2F)`Wrw#^Ja?1D%YtRX)RpP5aH1a$Gz3APV$3UWjlF8nyW$b`mMl69|vI*&D$ zEc-3)Unq}RN&0Sd+;%PP|W zg9c=4mMUJ*TyP4{FB&@+a^EN7c=>REE_v;`1?(amE~K2!@%>;l1Kx#`?zI#9#|gw} za~N+o4Rf169~wRU4k3@{a7Hv~4{@tNQuqTlE;FDLPU6T+*P&hm3C5%ooy24+Oh6OE z-_7G!YUlS~;`oL3yvyw=9wJcgqt>}WAd!t5-aV6AB9Nb-9qxbFZ%pzk@0`devv7zs z*gyS<;Yy_bLcV4IHnZGMAHev&`4#nRT+xZ*gk9%VU|vhHhvU3dlzSPEU7ZGEz`` zqU&_%+zU6bd2A7(h8xTR)U`mFf@++6CxMOy!iNE<39PaL1rH8#3})`0^U4j~UM*(> uB#U2tZ7bOM#Rg(WD1x@pTs26aaJ?JqGhc}Czb^i5gV@_RTUQ|be*F_14ef6L literal 0 HcmV?d00001 diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopBenchmarkParser-members.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopBenchmarkParser-members.html new file mode 100644 index 000000000..938204793 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopBenchmarkParser-members.html @@ -0,0 +1,47 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

FlowShopBenchmarkParser Member List

This is the complete list of members for FlowShopBenchmarkParser, including all inherited members.

+ + + + + + + + + + + +
dFlowShopBenchmarkParser [private]
FlowShopBenchmarkParser(const std::string _benchmarkFileName)FlowShopBenchmarkParser
getD()FlowShopBenchmarkParser
getM()FlowShopBenchmarkParser
getN()FlowShopBenchmarkParser
getP()FlowShopBenchmarkParser
init(const std::string _benchmarkFileName)FlowShopBenchmarkParser [private]
MFlowShopBenchmarkParser [private]
NFlowShopBenchmarkParser [private]
pFlowShopBenchmarkParser [private]
printOn(std::ostream &_os) const FlowShopBenchmarkParser


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopBenchmarkParser.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopBenchmarkParser.html new file mode 100644 index 000000000..0ff249e64 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopBenchmarkParser.html @@ -0,0 +1,189 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopBenchmarkParser Class Reference + + + + +
+
+ +

FlowShopBenchmarkParser Class Reference

Class to handle parameters of a flow-shop instance from a benchmark file. +More... +

+#include <FlowShopBenchmarkParser.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 FlowShopBenchmarkParser (const std::string _benchmarkFileName)
 Ctor.
+const unsigned int getM ()
 the number of machines
+const unsigned int getN ()
 the number of jobs
+const std::vector< std::vector<
+ unsigned int > > 
getP ()
 the processing times
+const std::vector< unsigned
+int > 
getD ()
 the due-dates
void printOn (std::ostream &_os) const
 printing.

Private Member Functions

void init (const std::string _benchmarkFileName)
 Initialisation of the parameters with the data contained in the benchmark file.

Private Attributes

+unsigned int M
 number of machines
+unsigned int N
 number of jobs
+std::vector< std::vector<
+ unsigned int > > 
p
 p[i][j] = processing time of job j on machine i
+std::vector< unsigned int > d
 d[j] = due-date of the job j
+


Detailed Description

+Class to handle parameters of a flow-shop instance from a benchmark file. +

+ +

+Definition at line 23 of file FlowShopBenchmarkParser.h.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + +
FlowShopBenchmarkParser::FlowShopBenchmarkParser (const std::string  _benchmarkFileName  ) 
+
+
+ +

+Ctor. +

+

Parameters:
+ + +
_benchmarkFileName the name of the benchmark file
+
+ +

+Definition at line 16 of file FlowShopBenchmarkParser.cpp. +

+References init(). +

+

+


Member Function Documentation

+ +
+
+ + + + + + + + + +
void FlowShopBenchmarkParser::printOn (std::ostream &  _os  )  const
+
+
+ +

+printing. +

+.. +

+Definition at line 46 of file FlowShopBenchmarkParser.cpp. +

+References d, M, N, and p. +

+

+ +

+
+ + + + + + + + + +
void FlowShopBenchmarkParser::init (const std::string  _benchmarkFileName  )  [private]
+
+
+ +

+Initialisation of the parameters with the data contained in the benchmark file. +

+

Parameters:
+ + +
_benchmarkFileName the name of the benchmark file
+
+ +

+Definition at line 64 of file FlowShopBenchmarkParser.cpp. +

+References d, M, N, and p. +

+Referenced by FlowShopBenchmarkParser(). +

+

+


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopEval-members.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopEval-members.html new file mode 100644 index 000000000..c02e9596b --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopEval-members.html @@ -0,0 +1,51 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

FlowShopEval Member List

This is the complete list of members for FlowShopEval, including all inherited members.

+ + + + + + + + + + + + + + + +
completionTime(const FlowShop &_flowshop)FlowShopEval [private]
dFlowShopEval [private]
EOFitT typedefeoEvalFunc< FlowShop >
EOType typedefeoEvalFunc< FlowShop >
FlowShopEval(unsigned int _M, unsigned int _N, const std::vector< std::vector< unsigned int > > &_p, const std::vector< unsigned int > &_d)FlowShopEval
functor_category()eoUF< A1, R > [static]
MFlowShopEval [private]
makespan(const FlowShop &_flowshop)FlowShopEval [private]
NFlowShopEval [private]
operator()(FlowShop &_flowshop)FlowShopEval
moeoEvalFunc< FlowShop >::operator()(A1)=0eoUF< A1, R > [pure virtual]
pFlowShopEval [private]
tardiness(const FlowShop &_flowshop)FlowShopEval [private]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< A1, R > [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopEval.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopEval.html new file mode 100644 index 000000000..4776c3feb --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopEval.html @@ -0,0 +1,279 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopEval Class Reference + + + + +
+
+ +

FlowShopEval Class Reference

Evaluation of the objective vector a (multi-objective) FlowShop object. +More... +

+#include <FlowShopEval.h> +

+

Inheritance diagram for FlowShopEval: +

+ +moeoEvalFunc< FlowShop > +eoEvalFunc< FlowShop > +eoUF< A1, R > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 FlowShopEval (unsigned int _M, unsigned int _N, const std::vector< std::vector< unsigned int > > &_p, const std::vector< unsigned int > &_d)
 Ctor.
void operator() (FlowShop &_flowshop)
 computation of the multi-objective evaluation of a FlowShop object

Private Member Functions

double makespan (const FlowShop &_flowshop)
 computation of the makespan
double tardiness (const FlowShop &_flowshop)
 computation of the tardiness
std::vector< std::vector<
+ unsigned int > > 
completionTime (const FlowShop &_flowshop)
 computation of the completion times of a scheduling (for each job on each machine) C[i][j] = completion of the jth job of the scheduling on the ith machine

Private Attributes

+unsigned int M
 number of machines
+unsigned int N
 number of jobs
+std::vector< std::vector<
+ unsigned int > > 
p
 p[i][j] = processing time of job j on machine i
+std::vector< unsigned int > d
 d[j] = due-date of the job j
+

Detailed Description

+Evaluation of the objective vector a (multi-objective) FlowShop object. +

+ +

+Definition at line 23 of file FlowShopEval.h.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FlowShopEval::FlowShopEval (unsigned int  _M,
unsigned int  _N,
const std::vector< std::vector< unsigned int > > &  _p,
const std::vector< unsigned int > &  _d 
)
+
+
+ +

+Ctor. +

+

Parameters:
+ + + + + +
_M the number of machines
_N the number of jobs to schedule
_p the processing times
_d the due dates
+
+ +

+Definition at line 16 of file FlowShopEval.cpp. +

+

+


Member Function Documentation

+ +
+
+ + + + + + + + + +
void FlowShopEval::operator() (FlowShop _flowshop  ) 
+
+
+ +

+computation of the multi-objective evaluation of a FlowShop object +

+

Parameters:
+ + +
_flowshop the FlowShop object to evaluate
+
+ +

+Definition at line 21 of file FlowShopEval.cpp. +

+References makespan(), MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >::objectiveVector(), and tardiness(). +

+

+ +

+
+ + + + + + + + + +
double FlowShopEval::makespan (const FlowShop _flowshop  )  [private]
+
+
+ +

+computation of the makespan +

+

Parameters:
+ + +
_flowshop the genotype to evaluate
+
+ +

+Definition at line 31 of file FlowShopEval.cpp. +

+References completionTime(), M, and N. +

+Referenced by operator()(). +

+

+ +

+
+ + + + + + + + + +
double FlowShopEval::tardiness (const FlowShop _flowshop  )  [private]
+
+
+ +

+computation of the tardiness +

+

Parameters:
+ + +
_flowshop the genotype to evaluate
+
+ +

+Definition at line 40 of file FlowShopEval.cpp. +

+References completionTime(), d, M, and N. +

+Referenced by operator()(). +

+

+ +

+
+ + + + + + + + + +
std::vector< std::vector< unsigned int > > FlowShopEval::completionTime (const FlowShop _flowshop  )  [private]
+
+
+ +

+computation of the completion times of a scheduling (for each job on each machine) C[i][j] = completion of the jth job of the scheduling on the ith machine +

+

Parameters:
+ + +
_flowshop the genotype to evaluate
+
+ +

+Definition at line 53 of file FlowShopEval.cpp. +

+References M, N, and p. +

+Referenced by makespan(), and tardiness(). +

+

+


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopEval.png b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopEval.png new file mode 100644 index 0000000000000000000000000000000000000000..3dbdc85d2ca7b68e06c026335bc29a360c854e29 GIT binary patch literal 921 zcmV;K17`e*P)e}ret#>fPlUuQz4m8t}c{Y5lNLAuoaG>Y!qHi<8Q{~Sz2 zYLC;XISbAKoJRS1>P9fTOkG|^FoxOq5i)+*7!Q^SGG`yy)7~bmh zH84rm<97tGi5k06yC3Y<>Wp)6kizHA*~Q(Kv8{tee^b1On>6OQX=dO<8mp>cBkSD= zhpG^bnfOpuoDF~hekr)w?SD`F?wb7u;D3+1fgg|Gn}P3F6#xSaFu(u<3^2geX!hWJ zzyBZrZv(TpL6pm8Y;w$2ytgf2wab(9vEsdz%_cG07Qpr#IGI2rm;%hqz+BQ}3z#T! zGjP;C;XUAOIJ@%4FkN zv)eR5IT&OL9>Wt@Z!Rt2Y?3L=(%@vY*|Cjj*6gOiOrdp3X2c#SS_V%hkX4OWy4fxH zLg8>|SCi4uz$VkF2#)P&Vlw5;ZqdmiQXO92Y)Ugk6M6zCqs{mB`KvPTNh2ji0*~7X zJd#z$R)aGsvWyeV#nhix$#~K@cwi%#r)8POdE;AIlt@rh6?QWy*!m4?iR3%ei3|3iUba?2^`PBy`2F2>n>Od8po=T vI`+c5li3X}MZZ4fQ^1?QAK>=jR=5BElF7Y=h<1mn00000NkvXXu0mjf8bY=2 literal 0 HcmV?d00001 diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopInit-members.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopInit-members.html new file mode 100644 index 000000000..0abb84936 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopInit-members.html @@ -0,0 +1,44 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

FlowShopInit Member List

This is the complete list of members for FlowShopInit, including all inherited members.

+ + + + + + + + +
className(void) const eoInit< FlowShop > [virtual]
FlowShopInit(unsigned int _N)FlowShopInit
functor_category()eoUF< A1, R > [static]
NFlowShopInit [private]
operator()(FlowShop &_flowshop)FlowShopInit
eoInit< FlowShop >::operator()(A1)=0eoUF< A1, R > [pure virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< A1, R > [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopInit.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopInit.html new file mode 100644 index 000000000..279433d08 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopInit.html @@ -0,0 +1,131 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopInit Class Reference + + + + +
+
+ +

FlowShopInit Class Reference

Initialization of a random genotype built by the default constructor of the FlowShop class. +More... +

+#include <FlowShopInit.h> +

+

Inheritance diagram for FlowShopInit: +

+ +eoInit< FlowShop > +eoUF< A1, R > +eoFunctorBase + +List of all members. + + + + + + + + + + + + +

Public Member Functions

 FlowShopInit (unsigned int _N)
 Ctor.
void operator() (FlowShop &_flowshop)
 builds a random genotype

Private Attributes

+unsigned int N
 the number of jobs (size of a scheduling vector)
+

Detailed Description

+Initialization of a random genotype built by the default constructor of the FlowShop class. +

+ +

+Definition at line 22 of file FlowShopInit.h.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + +
FlowShopInit::FlowShopInit (unsigned int  _N  ) 
+
+
+ +

+Ctor. +

+

Parameters:
+ + +
_N the number of jobs to schedule
+
+ +

+Definition at line 16 of file FlowShopInit.cpp. +

+

+


Member Function Documentation

+ +
+
+ + + + + + + + + +
void FlowShopInit::operator() (FlowShop _flowshop  ) 
+
+
+ +

+builds a random genotype +

+

Parameters:
+ + +
_flowshop a genotype that has been default-constructed
+
+ +

+Definition at line 20 of file FlowShopInit.cpp. +

+References MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >::invalidate(), N, eoRng::uniform(), and moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >::value(). +

+

+


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopInit.png b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopInit.png new file mode 100644 index 0000000000000000000000000000000000000000..8b39a251958fe6f5757a3f492b4ccd0397705441 GIT binary patch literal 680 zcmV;Z0$2TsP)w8p^DwnbaIF%ud3R__S-bguCCrJ?{o~;)6=}GntR|)!NWD@ya91q^9M}n_oI*f zBX8SfXZ=6v>+fmw<$67hKDFjbE3LHBO1}%OdhC2U-o~M*FXu&Mtu@)0uEYbD>-<`i zHL8Z>!J3xXTXYs8nRe(|taLQ&(ZH&&r&HcTT@sKgHp5Iv?DPNw8ndY4lQWK7#wPD! z>|x#mdYpHvxr0is3GMt&%{R>ry|>Z>>3#=2Hl-h3>^o!G~$Ihf3 zPo*P<~QW;6Gb-F}4M8JI@4?+_d*T{>h zapsdcY3VdU%3IuyG>*s~QASMX&KOTnom}YrTzXU>vHc*n5V0$WD;j1eZ}Uz==sxdK zb1q$5b7lc^$E>gUeKzjwy#rm@=hCXjo=&SCQ(9@Il~(%2X*gnwJ#aFkbhNgN;l-3S z@>^4H?`WHM@mjOlX6FtK0SY5-G{!Cl=*Q9oc84Y~4hZWu?y&U3(`Me5=!KvK=p)6o zL+99uPS5w#!OX)nk3!p<=}>cKf%BG{6TMOMnVFgU<>~21Kb1c8kNgJ=g= + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

FlowShopObjectiveVectorTraits Member List

This is the complete list of members for FlowShopObjectiveVectorTraits, including all inherited members.

+ + + + + + + +
maximizing(int _i)FlowShopObjectiveVectorTraits [static]
moeoObjectiveVectorTraits::maximizing(unsigned int _i)moeoObjectiveVectorTraits [inline, static]
minimizing(int _i)FlowShopObjectiveVectorTraits [static]
moeoObjectiveVectorTraits::minimizing(unsigned int _i)moeoObjectiveVectorTraits [inline, static]
nObjectives()FlowShopObjectiveVectorTraits [static]
setup(unsigned int _nObjectives, std::vector< bool > &_bObjectives)moeoObjectiveVectorTraits [inline, static]
tolerance()moeoObjectiveVectorTraits [inline, static]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopObjectiveVectorTraits.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopObjectiveVectorTraits.html new file mode 100644 index 000000000..28e7b22fc --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopObjectiveVectorTraits.html @@ -0,0 +1,125 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopObjectiveVectorTraits Class Reference + + + + +
+
+ +

FlowShopObjectiveVectorTraits Class Reference

Definition of the objective vector traits for multi-objective flow-shop problems. +More... +

+#include <FlowShopObjectiveVectorTraits.h> +

+

Inheritance diagram for FlowShopObjectiveVectorTraits: +

+ +moeoObjectiveVectorTraits + +List of all members. + + + + + + + + + + + +

Static Public Member Functions

static bool minimizing (int _i)
 Returns true if the _ith objective have to be minimzed.
static bool maximizing (int _i)
 Returns true if the _ith objective have to be maximzed.
+static unsigned int nObjectives ()
 Returns the number of objectives.
+

Detailed Description

+Definition of the objective vector traits for multi-objective flow-shop problems. +

+ +

+Definition at line 21 of file FlowShopObjectiveVectorTraits.h.


Member Function Documentation

+ +
+
+ + + + + + + + + +
bool FlowShopObjectiveVectorTraits::minimizing (int  _i  )  [static]
+
+
+ +

+Returns true if the _ith objective have to be minimzed. +

+

Parameters:
+ + +
_i index of the objective
+
+ +

+Definition at line 16 of file FlowShopObjectiveVectorTraits.cpp. +

+

+ +

+
+ + + + + + + + + +
bool FlowShopObjectiveVectorTraits::maximizing (int  _i  )  [static]
+
+
+ +

+Returns true if the _ith objective have to be maximzed. +

+

Parameters:
+ + +
_i index of the objective
+
+ +

+Definition at line 22 of file FlowShopObjectiveVectorTraits.cpp. +

+

+


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopObjectiveVectorTraits.png b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopObjectiveVectorTraits.png new file mode 100644 index 0000000000000000000000000000000000000000..dfd860d7cb8bea8584ccc80ca47b1c593cbbb3f9 GIT binary patch literal 628 zcmV-)0*n2LP)KAG6ClX5ak?m zPIVrak=!DtOT^Zyh}p>vK;m7zarC1BFsyC^A|H`rIgPyJ@R77vpE zT1pE@Et7UpOHty+*h$fjq?s6v8k}HJWo+9ZSF>Z%RVB~HmX1m z0A~up?P1ep(Hm|6`qcq|B(uP_fy!wDzvS?UyuzVSc?MK#F-Nf!J)j(=JjFF&=mD~K zxmZsiyO2g&RHzDGZlik1RG^YftP1tD8aQXb#jOIMZ3|lfGr^WN1;8o-qvAGz$N(HF zX-dHQqX&>?V4Wf?VnyDH033jw8DQ=mpqk?fU{?c>O@|r)nxovV20b9)s*9{I6r)|F z-+}8Q3|dOEfVAJVi&~08;Kpbv+Lf>~en8FxzfYV^_;x` O0000 + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

FlowShopOpCrossoverQuad Member List

This is the complete list of members for FlowShopOpCrossoverQuad, including all inherited members.

+ + + + + + + + + + + + +
className() const FlowShopOpCrossoverQuad [virtual]
eoOp(OpType _type)eoOp< EOType >
eoOp(const eoOp &_eop)eoOp< EOType >
eoQuadOp()eoQuadOp< FlowShop >
functor_category()eoBF< FlowShop &, FlowShop &, bool > [static]
generateOffspring(const FlowShop &_parent1, const FlowShop &_parent2, unsigned int _point1, unsigned int _point2)FlowShopOpCrossoverQuad [private]
getType() const eoOp< EOType >
operator()(FlowShop &_flowshop1, FlowShop &_flowshop2)FlowShopOpCrossoverQuad [virtual]
OpType enum nameeoOp< EOType >
~eoBF()eoBF< FlowShop &, FlowShop &, bool > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoOp()eoOp< EOType > [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpCrossoverQuad.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpCrossoverQuad.html new file mode 100644 index 000000000..a58f6fed2 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpCrossoverQuad.html @@ -0,0 +1,169 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopOpCrossoverQuad Class Reference + + + + +
+
+ +

FlowShopOpCrossoverQuad Class Reference

Quadratic crossover operator for flow-shop (modify the both genotypes). +More... +

+#include <FlowShopOpCrossoverQuad.h> +

+

Inheritance diagram for FlowShopOpCrossoverQuad: +

+ +eoQuadOp< FlowShop > +eoOp< EOType > +eoBF< FlowShop &, FlowShop &, bool > +eoFunctorBase + +List of all members. + + + + + + + + + + + + +

Public Member Functions

+std::string className () const
 the class name (used to display statistics)
bool operator() (FlowShop &_flowshop1, FlowShop &_flowshop2)
 eoQuad crossover - _flowshop1 and _flowshop2 are the (future) offspring, i.e.

Private Member Functions

FlowShop generateOffspring (const FlowShop &_parent1, const FlowShop &_parent2, unsigned int _point1, unsigned int _point2)
 generation of an offspring by a 2 points crossover
+

Detailed Description

+Quadratic crossover operator for flow-shop (modify the both genotypes). +

+ +

+Definition at line 22 of file FlowShopOpCrossoverQuad.h.


Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool FlowShopOpCrossoverQuad::operator() (FlowShop _flowshop1,
FlowShop _flowshop2 
) [virtual]
+
+
+ +

+eoQuad crossover - _flowshop1 and _flowshop2 are the (future) offspring, i.e. +

+_copies_ of the parents

Parameters:
+ + + +
_flowshop1 the first parent
_flowshop2 the second parent
+
+ +

+Implements eoBF< FlowShop &, FlowShop &, bool >. +

+Definition at line 22 of file FlowShopOpCrossoverQuad.cpp. +

+References generateOffspring(), eoRng::random(), and moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >::value(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FlowShop FlowShopOpCrossoverQuad::generateOffspring (const FlowShop _parent1,
const FlowShop _parent2,
unsigned int  _point1,
unsigned int  _point2 
) [private]
+
+
+ +

+generation of an offspring by a 2 points crossover +

+

Parameters:
+ + + + + +
_parent1 the first parent
_parent2 the second parent
_point1 the first point
_point2 the second point
+
+ +

+Definition at line 54 of file FlowShopOpCrossoverQuad.cpp. +

+Referenced by operator()(). +

+

+


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpCrossoverQuad.png b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpCrossoverQuad.png new file mode 100644 index 0000000000000000000000000000000000000000..cc942ed8966c97f75578894bdac93a0e9238d865 GIT binary patch literal 1530 zcmbVMeLT~79RKZwu8Wz=>&inW-BP0SuyCH0i7gu;ijWk&6r&=>rc_oQqTy&BMllIv z9wRr*OddM>2^)61yY9dH>t3(-=lgztU+>R9pZDwY{oZ%OIYD=5>;M1& zigrf10{}!U(;Rs@*$J^sg#g1X)3c0^k55l={c zjrcUz{$BHTVTkM&!XtV6O{}`+O;fdGTuSxLC9xddvQbLxTH!%=EiXd z^Esf2sLi0r@zjPIL4WEO*LSABlAeg`90OhzPI|;SNt-^go~>U{=i+tB*IzDn_6i0! zhE52x{l7w*Dc*9FQ1^@ip2}fBd9~&!#GTkb5w08tdCC$>7zE4&^Q(D?YzAaIXx@BN z47KO?ZY#QaNzTop7V`9e+Cv|e*)c#UK;mtGf0Ns0Da(eezUC$9I+%Y}RhyBPpsUnC zhdtW)reh!OaTf8*k10P_-ih}gQB`JMIxdX3=n=kYL+~l#IX^&&kSBi!C?miq>B%lqx zW256UQVI0*#W{=X6c!Hhhc(g{G)8#n^3RC#nP~qmo_anEUXMXw=gV;Ccc$gqUcsVm zEW8TW_1I4Bld2$PE3d1y8`RqswJX69f4iws8b%Xd78z&h`js-%!6s;FokJd2oYNmK;^kEDZRY6^=QdDM+l1>6BAyTeBMV$DYAS2t(CZX z&p8368Z?q4_B$lFB}pF>v5S)uL&Z>F)M6B{R@r9SYi{!o5hqT$3Ym!-H=~u!frUNc zvW_vJ_F5z4k|08^_bqQ*Q9&DYtT&MxFtA&;k(i0wjkv z>`k7ocPBP8o0B?h1wyXnOcWcpqV?P2sNX7chOCZvU<%j)POIgtb))DTPgm)7y;HCi zRc(nZk)A#_N=7mOVn#wAi#{kdpQ4KCc!^I}#T<3(Q_=(Ez5#QhKo*K@vQ_=kCGYe2oG2yTyvI^k*Zv z(O4(dkh7dRXS{VS`>yWP>=~$?3lHm&uS_bVL7t4Y)f-zY^&_g*_L2f_gG%slcu0P( zBRnS4h5XR97qNQOUw&GruWPY>wr#bhn;)PY)J|zyTZmMhKyGIF^2yK^eWHfMnZ}Hs zy*MKZqaY7JV>EJ;ge|Yg;MH`{9Z9db@@%ALNYM*6`-2~yHqGBFNBts*GPLT-WOhc; zLRmF=XS*GG1g^`SuLZUncTvX2@-JK|7`W9Jh81TNYVDgXcg literal 0 HcmV?d00001 diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpMutationExchange-members.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpMutationExchange-members.html new file mode 100644 index 000000000..38c5ff14d --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpMutationExchange-members.html @@ -0,0 +1,47 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

FlowShopOpMutationExchange Member List

This is the complete list of members for FlowShopOpMutationExchange, including all inherited members.

+ + + + + + + + + + + +
className() const FlowShopOpMutationExchange [virtual]
eoMonOp()eoMonOp< FlowShop >
eoOp(OpType _type)eoOp< EOType >
eoOp(const eoOp &_eop)eoOp< EOType >
functor_category()eoUF< FlowShop &, bool > [static]
getType() const eoOp< EOType >
operator()(FlowShop &_flowshop)FlowShopOpMutationExchange [virtual]
OpType enum nameeoOp< EOType >
~eoFunctorBase()eoFunctorBase [virtual]
~eoOp()eoOp< EOType > [virtual]
~eoUF()eoUF< FlowShop &, bool > [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpMutationExchange.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpMutationExchange.html new file mode 100644 index 000000000..2ce7a1fa9 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpMutationExchange.html @@ -0,0 +1,100 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopOpMutationExchange Class Reference + + + + +
+
+ +

FlowShopOpMutationExchange Class Reference

Exchange mutation operator for the flow-shop. +More... +

+#include <FlowShopOpMutationExchange.h> +

+

Inheritance diagram for FlowShopOpMutationExchange: +

+ +eoMonOp< FlowShop > +eoOp< EOType > +eoUF< FlowShop &, bool > +eoFunctorBase + +List of all members. + + + + + + + + +

Public Member Functions

+std::string className () const
 the class name (used to display statistics)
bool operator() (FlowShop &_flowshop)
 modifies the parent with an exchange mutation
+

Detailed Description

+Exchange mutation operator for the flow-shop. +

+ +

+Definition at line 22 of file FlowShopOpMutationExchange.h.


Member Function Documentation

+ +
+
+ + + + + + + + + +
bool FlowShopOpMutationExchange::operator() (FlowShop _flowshop  )  [virtual]
+
+
+ +

+modifies the parent with an exchange mutation +

+

Parameters:
+ + +
_flowshop the parent genotype (will be modified)
+
+ +

+Implements eoUF< FlowShop &, bool >. +

+Definition at line 22 of file FlowShopOpMutationExchange.cpp. +

+References eoRng::random(), and moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >::value(). +

+

+


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpMutationExchange.png b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpMutationExchange.png new file mode 100644 index 0000000000000000000000000000000000000000..f582b7836617eaf367e81c8a823a968b300e234e GIT binary patch literal 1335 zcmeAS@N?(olHy`uVBq!ia0y~yU~B=h53n!;$#1%xdO%7dz$e7@|Ns9$=Kuc(=Fd-< z0AzvjfddDs5B+}v2H{rA`P5Lu44_+;J(b zT@k^|mJ31Cg_MFKxD$BZcYNXGY*OF=qC-yw*8LZFwqW16yaT^?F&_F{SjK(t+E>AS z^UiOc{b5~RLqYpf9S#{4La0Py;oH~U_WQc7t@rq6R@*HiFe~h1w7@qN4%1(Z9A%F* zm`gYs%eg`$J;DX{+|-!Pkdb#f^o-7YvuL}|UzdIpIJ3mTcvAJ2V-Byjb|rKzUbN!@ z%j}eGFMTRquW31L%a-((b=-RM0@tUh*OYHe_%F)DVlEwZr-@f5Y_`B6OP*(H+f7?K zZ=TQBDGloss9jpQrCi`dwL8bofSg(lA=y=GVbMNIW=O3+E4-77v3I?lso!lIu9gj_ zHgqu@Wb0|2b;!-)(3+IV*AB5L8n01GVb=UMq0?8x{on-evgX7thJZe&$PBjyVV8ci zo!si;!Si~t!9Iyrp@Zf9Cyloji5x3Z5^YV|G&xr3h?u-Q>#Niv|K*vpl_nX^kL3=| z*ILW^YVYH0MK_f_`cFDszPFl)-S74&6AIN(Vr_VF@0=j#is^lBOM=QwEC0XyaP02Q zeRpDC@wTjzzLPFs_WGw?(_L+;uaYgke;ejkzV{NyQsLPBs_DWvM$hT(2JBxgsty)z zt()~dBj(=)nTM;JzpmeS@-rL9`EPbNuBn}uR=AU3$?Y_iB{97J*i-(dfQ9alKe0Qm zxUjhJXR|`ci<^$Uf_$&lZwdbJ6tM6>MIFjao5khsJ7xU2A8Ya8a>$@p>`o`izlpE{Pf(RJG&k_+t%xsyK^3V`t@f<-}O}$ zQ_N1q-8pUqd?usg)6&JNl0u_;bm*3 zxAUq6KfdnTtJk#4?vR7Mm7n{AxT@)1ERD{pO#zXd+uIHPGv>s}CQa6!^$b|bF?hQA KxvX + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

FlowShopOpMutationShift Member List

This is the complete list of members for FlowShopOpMutationShift, including all inherited members.

+ + + + + + + + + + + +
className() const FlowShopOpMutationShift [virtual]
eoMonOp()eoMonOp< FlowShop >
eoOp(OpType _type)eoOp< EOType >
eoOp(const eoOp &_eop)eoOp< EOType >
functor_category()eoUF< FlowShop &, bool > [static]
getType() const eoOp< EOType >
operator()(FlowShop &_flowshop)FlowShopOpMutationShift [virtual]
OpType enum nameeoOp< EOType >
~eoFunctorBase()eoFunctorBase [virtual]
~eoOp()eoOp< EOType > [virtual]
~eoUF()eoUF< FlowShop &, bool > [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpMutationShift.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpMutationShift.html new file mode 100644 index 000000000..11bcd0bcd --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpMutationShift.html @@ -0,0 +1,100 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopOpMutationShift Class Reference + + + + +
+
+ +

FlowShopOpMutationShift Class Reference

Shift mutation operator for flow-shop. +More... +

+#include <FlowShopOpMutationShift.h> +

+

Inheritance diagram for FlowShopOpMutationShift: +

+ +eoMonOp< FlowShop > +eoOp< EOType > +eoUF< FlowShop &, bool > +eoFunctorBase + +List of all members. + + + + + + + + +

Public Member Functions

+std::string className () const
 the class name (used to display statistics)
bool operator() (FlowShop &_flowshop)
 modifies the parent with a shift mutation
+

Detailed Description

+Shift mutation operator for flow-shop. +

+ +

+Definition at line 22 of file FlowShopOpMutationShift.h.


Member Function Documentation

+ +
+
+ + + + + + + + + +
bool FlowShopOpMutationShift::operator() (FlowShop _flowshop  )  [virtual]
+
+
+ +

+modifies the parent with a shift mutation +

+

Parameters:
+ + +
_flowshop the parent genotype (will be modified)
+
+ +

+Implements eoUF< FlowShop &, bool >. +

+Definition at line 22 of file FlowShopOpMutationShift.cpp. +

+References eoRng::random(), and moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >::value(). +

+

+


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpMutationShift.png b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classFlowShopOpMutationShift.png new file mode 100644 index 0000000000000000000000000000000000000000..f06d41f84fcd78cc916ef4fb1ed55852823941fc GIT binary patch literal 1240 zcmeAS@N?(olHy`uVBq!ia0y~yV2lB>53n!;$z89HO$JgD0X`wF|Ns97GXMWSFn@l+ z1Rx8H4;(m9edzxaAeXTu$S;_|;n|He1_qWqPZ!6KiaBrRMCUy=;Bi$Id9i(k?1{Sv z64IRizWO)aK_*Hj2))TbQ}*Ta1gQX6+y02@-36Nz}#1A7Irh=zn0P zbbHM$qpILLA6MxvF0=X`6f-~6z326x!$A@snG|k09SGS(sPJ>zD zZ)@hQKct#9N-x;TOH#!;i_#froY`y03r_Iq;PxaQ`os#jrqk8_W zT&u$l6HoOYIVX@kea&9~^ol@`-HqILMDOg=yYv0^=d6b0S3KXJ|ITW1e#QO$^YiCf zEy}NWwr>yS-7$%2-I4}v%?DmwSedUl)*bPEY_GWC%-a|HnZ7?!Ugz*Y{{fTv>)L|5 zC*qynm@ar=dBdpMx3D>KVV-+V!OBMYoTzoTw!HdwdqQL`dEaiO+>z??OjanHaC6J%WfGS%ZcY34V3TZbupIZgH1o&jKAw9RwB>%G z#_fm}wyKWwx6JOpR%~gAUK=-u`L@i#p6t!#x%0L^5ZZb(*E#f#&y@Z!oe7$G59XeI zXE6D$n7PV3l;@h)%=is-$}cmCcj z-?@#y^WO68d_PS_{w2>k+uh#j9UD&aMp`pJwR!WJ=dq7I@A|U)&-Y!u^X8Gq`Gm%J=7o{Zr^ z2d0V?sIr2Y+Yjvh#rHWdX5#Pfpj2R9a9nJ4=lh(aI%S-CThk`41T*#WiV9usBs`D! zFjsfh(Q`-7%1Qpu>Rz4m$~xMl+w@HMgL6O6g`G`0H?MQ{-^6pg{X2G_N#cEPc~f>; zLHW$1e&_N&mT%=2zJIeT^39!Fy8qUFX-?v?{xmmt#?f?R{DKaGB1ArO(2;LCi9m|!JLic0~F>J-2zii4}tBIXEZHr)RvUm@%X|% z`x(20ecdEYqj-&8##de9zr6L*u{kZ)w>m$b=3VER|MTAx={qmK{898jboEH}6B$W< z@l9@j=3SJVQutTL{;WLrqo0X3zTY3uI(H;B=s$<$l7cOzHJm&CsqQ)1{PX0Ik4As@ zyb*GZITm0Q^jvZ3H12h)cC4CNS7ay>voyW1)NhSaR^jPo&mX@!u%&gi`%Tm950|++ zF5I$8xcB1DRqK!Qs+(O7Z0VcZ7@o}j;2?v~u_fmY%$|D7cBQe7R{3>jmIHSscNyQg peME$ZH|FGp1G)?K_ZR% + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

Sch1 Member List

This is the complete list of members for Sch1, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AtomType typedefmoeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double >
className() const moeoRealVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline, virtual]
ContainerType typedefmoeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double >
Diversity typedefMOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >
diversity() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
diversity(const Diversity &_diversityValue)MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
EO()EO< MOEOObjectiveVector >
EO()EO< MOEOObjectiveVector >
Fitness typedefMOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >
fitness() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
fitness(const Fitness &_fitnessValue)MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
EO< MOEOObjectiveVector >::fitness(const Fitness &_fitness)EO< MOEOObjectiveVector >
EO< MOEOObjectiveVector >::fitness(performance_type perf)EO< MOEOObjectiveVector >
fitness_traits typedefEO< MOEOObjectiveVector >
fitnessReference()EO< MOEOObjectiveVector >
invalid() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidate()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidate_worth(void)EO< MOEOObjectiveVector >
invalidateDiversity()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidateFitness()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidateObjectiveVector()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidDiversity() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidFitness() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidObjectiveVector() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
MOEO()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
moeoRealVector(unsigned int _size=0, double _value=0.0)moeoRealVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
moeoVector(unsigned int _size=0, double_value=double())moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double > [inline]
objectiveVector() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
objectiveVector(const ObjectiveVector &_objectiveVectorValue)MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
ObjectiveVector typedefMOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >
operator<(const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double > &_moeo) const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double > [inline]
MOEO::operator<(const MOEO &_other) const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
EO< MOEOObjectiveVector >::operator<(const EO &_eo2) const EO< MOEOObjectiveVector >
EO< MOEOObjectiveVector >::operator<(const EO< Fitness, Traits > &other) const EO< MOEOObjectiveVector >
operator>(const EO &_eo2) const EO< MOEOObjectiveVector >
operator>(const EO< Fitness, Traits > &other) const EO< MOEOObjectiveVector >
performance(performance_type perf)EO< MOEOObjectiveVector >
performance(void) const EO< MOEOObjectiveVector >
performance_type typedefEO< MOEOObjectiveVector >
printOn(std::ostream &_os) const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double > [inline, virtual]
readFrom(std::istream &_is)moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double > [inline, virtual]
Sch1()Sch1 [inline]
storage_type typedefEO< MOEOObjectiveVector >
value(const std::vector< double > &_v)moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double > [inline]
worth(worth_type worth)EO< MOEOObjectiveVector >
worth(void) const EO< MOEOObjectiveVector >
worth_type typedefEO< MOEOObjectiveVector >
~EO()EO< MOEOObjectiveVector > [virtual]
~eoObject()eoObject [virtual]
~eoPersistent()eoPersistent [virtual]
~eoPrintable()eoPrintable [virtual]
~MOEO()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline, virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1.html new file mode 100644 index 000000000..ad0100b39 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1.html @@ -0,0 +1,60 @@ + + +ParadisEO-MOEOMovingObjects: Sch1 Class Reference + + + + +
+
+ +

Sch1 Class Reference

Inheritance diagram for Sch1: +

+ +moeoRealVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity > +moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double > +MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > +EO< MOEOObjectiveVector > +eoObject +eoPersistent +eoPrintable + +List of all members. + + + + +

Public Member Functions

Sch1 ()
+

Detailed Description

+ +

+ +

+Definition at line 44 of file Sch1.cpp.


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1.png b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1.png new file mode 100644 index 0000000000000000000000000000000000000000..3b4958d4e1c9ccc5c25405a3dc962d711c00bdc6 GIT binary patch literal 2779 zcmcImdpMMN8=ff=DO<{EicgX#Wx`k=hJ=y~n@U3x!#iY#ta9F=gKU{mn=lBSG=(UW zL*z6xVrGoR%4;-EF<*H#Y1$Ek*WlsZA7fZv2E5ReGmK|}ug*V-u}oFVl_BBAH00@pCy#Dm7oNu+F)6w-RemQjTKHD?C12jopezdB zk(@8&Z?MxbDQc6%iFd-Q6S3F@_hrZjc4l*&IxP3k$p5>mvv5iwdP0L3p&*Ht+T~bv z-1k4K`g`KMEHmz$)kKT|6KQZMCysiQRF~CfRr|yOk*Qe|b%w)~5IxLmxLr01z3iV9 zS<6u|ifIL4OwXicE)8R+jRX66IMJG8jJO#bz9P#zLFF;lfLGbj4yjFjXTSVFtX-kz zves=|7_E@@rQ6Y{6L*(qj8w!MBl5C8UPhkDsvkOFA;nl<_^1VP`9+8lzv5psr$dum)x&Bc>ui zxQwl_V=UknXH$>|ennq@qd!LWK8HFB+~aWg^1atFk%a z?HNbvEHV>{r0$_R2KuJCIK<;lOUspX-@vtH_z||L->xBKxU20INo{&Bp8*vd52;X` zFalmZlT;!q!)}iW*iS6Y!wQ)8k6QQW`v}U~l&Et?6mYsZr*l@=Ob9agI1u{C_X+xF zPk4b3o0R_4q2S<=10kr39oqC9?%QrC<0R6jNKJO16|lD!G4d8!^WeCze9HX#Hqc_C zG_l;O&fOTOZzG|0wm>fQvx&z!?W`7KuQZ%^T{W4Ki7q4AkSW3$(EPBed1Gi1b_N`{ zH6j5&y_tj1s62Zky^`3KrHi@wn}j6(F!=H!R#j%CU`3y3noHm)HfqZHweDCq`Db=@ zL;9PAI^F8wAy24Dl($$J6M4_>dnwkp1}A) z=_dc^yyDS{>l!S=s9{M2#}kIgF`=!K5wNOE7%=hrkx6uUKxt1&d}cw;OiJ$ zPUvzvuI|>A0>Rn*oQZFmBC0c<2?-}QO0dJvU*Hg3fcT*oTa9k$8r1?7Agu)<*t1C; zc@%EuYu^3>oz(IFyu0khMw`a@DRcJ$tj*=Tcw%Iq7ui)O6;v0-4u3L1)frt9#2Y^X z_u9r)6S6B%;=H*)rV4lqW<{_ExK=u{w2KNg1Xut4SlhbrVp`WeRrH<1_3^U2fkk* z=iyEnaqAEH$nf1k{->tEmbC+{c_GcN8gPJMeszY zjP;8K1MJ&HfkMH1>wB|L3v|?)pa?o%7tO0p##@`lm1TT-yuh4VGo(ld^+)d>+&I4( zCopTK#k-6<42w(;XzzQF#&`wG&n^=A8%GRc3f-uuKC{vSL)!Nl5<{(;iCU7X_3Lu( zIH3@S$h-ilK+}o^%^K*UM|s&9std&iloGx=kuu?*~iZLdLQ*G`Wd4!wyIgnZIM*1!e ziu+)C`$P0cO?tuYvmZpAP#!<62R%DUecik!6oqE>8qPuQrb&c&2v0NjHo$nqdG$xl z&v~r@ROXat%R6dXsS(it%r!B8t-J0lMyrAghEU|bu&f(Adu5x-`5Za zBn3vWz=tjI}3aB4N%j;)YJ52Kx(K%jhOcx2o z4<+&BWJQ@w59e_)1E|JiQsnEa2Dp(Mb;R@BbAFr??K;;6BVcsTq5Q!JIlB5}i~i@o zO%l!a;;9#R05Z@cU$VthhSs%rca#9fMReL2D-V3xWWE}YFUV_s&?7T)rbD@K!7#~MCb%AVgC=qN76Y-3@GLRu1eG|E(-h;B;?N=~5bh2fl1p!#$Y7?3|hY>&x z4viu;6|WZSZDaQh`iT{Q)u*Fvt*%m#yiM~f3jQIDZJGi KhZ6gf=YIp01!A}W literal 0 HcmV?d00001 diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1Eval-members.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1Eval-members.html new file mode 100644 index 000000000..05b0f0a8f --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1Eval-members.html @@ -0,0 +1,43 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

Sch1Eval Member List

This is the complete list of members for Sch1Eval, including all inherited members.

+ + + + + + + +
EOFitT typedefeoEvalFunc< Sch1 >
EOType typedefeoEvalFunc< Sch1 >
functor_category()eoUF< A1, R > [static]
operator()(Sch1 &_sch1)Sch1Eval [inline]
moeoEvalFunc< Sch1 >::operator()(A1)=0eoUF< A1, R > [pure virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< A1, R > [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1Eval.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1Eval.html new file mode 100644 index 000000000..55b009135 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1Eval.html @@ -0,0 +1,57 @@ + + +ParadisEO-MOEOMovingObjects: Sch1Eval Class Reference + + + + +
+
+ +

Sch1Eval Class Reference

Inheritance diagram for Sch1Eval: +

+ +moeoEvalFunc< Sch1 > +eoEvalFunc< Sch1 > +eoUF< A1, R > +eoFunctorBase + +List of all members. + + + + +

Public Member Functions

+void operator() (Sch1 &_sch1)
+

Detailed Description

+ +

+ +

+Definition at line 52 of file Sch1.cpp.


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1Eval.png b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1Eval.png new file mode 100644 index 0000000000000000000000000000000000000000..f51abff0873921deab89de389301824ffdad246a GIT binary patch literal 841 zcmeAS@N?(olHy`uVBq!ia0vp^Q-Syg3p0=uf41`nkdg@S332`Z|38rV|Nnvc^Ajcj zSzvtNz=7&R|DOQ4j3q&S!3+-1Zlp0VFx~fbaSW-L^Y&I?-(v+Hh6|rI-@jpA;J4w{ z&I>hP|GCddU{-8NY23If#8kOAsBMpxL1@zSRuN+uWEMfLDfDDxun#u=fXGkwbY!t<-DoSCZ6TW z?!M1wbvE}+duF?Kb?tZF>aAa&SNgyH`DfqK((9!rr*$@;F*?1*f3wN_r|*94`E^jN z=-k}T2~kCf3n$8!N4Re5jEVBd+5Mn!;`M7`eXH-E`dPN6WAoG2tk)F_r;DXuXPOo^ zXMNu+r*-}whK$=k7sq^Da7^!&ut+xJM&Z{#U#%)NdA2(7>zVKv_b$^e8J%UC(hDJ9)M=4G;@Y02KXuBlKfii@bH;5& z$E$K(HnEWcTj!t5F?{ee)LXVrfSo$qzp1+aCxMatYisrBT+HI_NY&Qx!vUSR}cT%T! zyht#8bnBV-HLlmTB2AsHv#-urzojqcFz0lim3foC1uQ9C$ya(K{_)Vj9qOqIL$=XuL2*Vk@M{n~kOnFlmXrbT`hTVeYDL)O9BOH(Z$?6;77 z%5cfSJg?GH^AA%zQ*ce$+bO2$VuA0N&+8ko|}&R%@% zlW+DrsoGhx;p<+`5&gHn;_9cGR%Q0QtbJ~?BhzGck5=E}-?~Qpxz;ubJ7BtJ@O1Ta JS?83{1OQFLoSy&y literal 0 HcmV?d00001 diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1ObjectiveVectorTraits-members.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1ObjectiveVectorTraits-members.html new file mode 100644 index 000000000..496dfb5f0 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1ObjectiveVectorTraits-members.html @@ -0,0 +1,43 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

Sch1ObjectiveVectorTraits Member List

This is the complete list of members for Sch1ObjectiveVectorTraits, including all inherited members.

+ + + + + + + +
maximizing(int i)Sch1ObjectiveVectorTraits [inline, static]
moeoObjectiveVectorTraits::maximizing(unsigned int _i)moeoObjectiveVectorTraits [inline, static]
minimizing(int i)Sch1ObjectiveVectorTraits [inline, static]
moeoObjectiveVectorTraits::minimizing(unsigned int _i)moeoObjectiveVectorTraits [inline, static]
nObjectives()Sch1ObjectiveVectorTraits [inline, static]
setup(unsigned int _nObjectives, std::vector< bool > &_bObjectives)moeoObjectiveVectorTraits [inline, static]
tolerance()moeoObjectiveVectorTraits [inline, static]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1ObjectiveVectorTraits.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1ObjectiveVectorTraits.html new file mode 100644 index 000000000..ff9f46804 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1ObjectiveVectorTraits.html @@ -0,0 +1,61 @@ + + +ParadisEO-MOEOMovingObjects: Sch1ObjectiveVectorTraits Class Reference + + + + +
+
+ +

Sch1ObjectiveVectorTraits Class Reference

Inheritance diagram for Sch1ObjectiveVectorTraits: +

+ +moeoObjectiveVectorTraits + +List of all members. + + + + + + + + + +

Static Public Member Functions

+static bool minimizing (int i)
+static bool maximizing (int i)
+static unsigned int nObjectives ()
 Returns the number of objectives.
+

Detailed Description

+ +

+ +

+Definition at line 21 of file Sch1.cpp.


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1ObjectiveVectorTraits.png b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classSch1ObjectiveVectorTraits.png new file mode 100644 index 0000000000000000000000000000000000000000..6180dfbc38ffabdfdc4a8c2703f329130ee1819d GIT binary patch literal 591 zcmV-V0!vvU2Ejn11|9sYiLi#=2zSB=R+9vZ2OhzhP zS8Ds<>4BQZ5Yav2J4_*R*mLwo=JK>NSrTEacj}@kGE)s&0Ey%hQBYTETpncwRG(^) zI+IYS`XE^e^^`-PdF`cJy+^ymEuhaDQ?~=NbW+)3x`cZ_9I|2}4onRgt~SDIm37S& zrKY{gvy6F`z!beOsgxD7$@glvxi9-!*ydw@p`T0U(9hf4?eiJt&SaB7Pur9>_g*`Z z%(d6PXS9EG&)&`C-IM2;&)Q@j&3wgg@xyj`T>44o*YzCC>-BO9=2_-GnUgu0lR24_ zIhp5S;^CH4KD?mGd<7HHHz|Q{v$+<(d8y~%F+hK~26AA6E5$|M#`JUa2Ig=YnKilU zHlW;z^-XTT3<#>L3XpSIQR7vsfGj>pFw~w@jVX5~O2t{;Ab9PSJ(jFX=m9I=i$u*e z2WIZ1w8=DyHzT_U!i; + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

moeoIBMOLS< MOEOT, Move > Member List

This is the complete list of members for moeoIBMOLS< MOEOT, Move >, including all inherited members.

+ + + + + + + + + + + + + + +
continuatormoeoIBMOLS< MOEOT, Move > [private]
evalmoeoIBMOLS< MOEOT, Move > [private]
fitnessAssignmentmoeoIBMOLS< MOEOT, Move > [private]
functor_category()eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void > [static]
moeoIBMOLS(moMoveInit< Move > &_moveInit, moNextMove< Move > &_nextMove, eoEvalFunc< MOEOT > &_eval, moeoMoveIncrEval< Move > &_moveIncrEval, moeoBinaryIndicatorBasedFitnessAssignment< MOEOT > &_fitnessAssignment, eoContinue< MOEOT > &_continuator)moeoIBMOLS< MOEOT, Move > [inline]
moveIncrEvalmoeoIBMOLS< MOEOT, Move > [private]
moveInitmoeoIBMOLS< MOEOT, Move > [private]
new_oneStep(eoPop< MOEOT > &_pop)moeoIBMOLS< MOEOT, Move > [inline, private]
nextMovemoeoIBMOLS< MOEOT, Move > [private]
ObjectiveVector typedefmoeoIBMOLS< MOEOT, Move >
oneStep(eoPop< MOEOT > &_pop)moeoIBMOLS< MOEOT, Move > [inline, private]
operator()(eoPop< MOEOT > &_pop, moeoArchive< MOEOT > &_arch)moeoIBMOLS< MOEOT, Move > [inline, virtual]
~eoBF()eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIBMOLS.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIBMOLS.html new file mode 100644 index 000000000..886ebc547 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIBMOLS.html @@ -0,0 +1,295 @@ + + +ParadisEO-MOEOMovingObjects: moeoIBMOLS< MOEOT, Move > Class Template Reference + + + + +
+
+ +

moeoIBMOLS< MOEOT, Move > Class Template Reference

Indicator-Based Multi-Objective Local Search (IBMOLS) as described in Basseur M., Burke K. +More... +

+#include <moeoIBMOLS.h> +

+

Inheritance diagram for moeoIBMOLS< MOEOT, Move >: +

+ +moeoLS< MOEOT, eoPop< MOEOT > & > +moeoAlgo +eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef MOEOT::ObjectiveVector ObjectiveVector
 The type of objective vector.

Public Member Functions

 moeoIBMOLS (moMoveInit< Move > &_moveInit, moNextMove< Move > &_nextMove, eoEvalFunc< MOEOT > &_eval, moeoMoveIncrEval< Move > &_moveIncrEval, moeoBinaryIndicatorBasedFitnessAssignment< MOEOT > &_fitnessAssignment, eoContinue< MOEOT > &_continuator)
 Ctor.
void operator() (eoPop< MOEOT > &_pop, moeoArchive< MOEOT > &_arch)
 Apply the local search until a local archive does not change or another stopping criteria is met and update the archive _arch with new non-dominated solutions.

Private Member Functions

void oneStep (eoPop< MOEOT > &_pop)
 Apply one step of the local search to the population _pop.
void new_oneStep (eoPop< MOEOT > &_pop)
 Apply one step of the local search to the population _pop.

Private Attributes

+moMoveInit< Move > & moveInit
 the move initializer
+moNextMove< Move > & nextMove
 the neighborhood explorer
+eoEvalFunc< MOEOT > & eval
 the full evaluation
+moeoMoveIncrEval< Move > & moveIncrEval
 the incremental evaluation
+moeoBinaryIndicatorBasedFitnessAssignment<
+ MOEOT > & 
fitnessAssignment
 the fitness assignment strategy
+eoContinue< MOEOT > & continuator
 the stopping criteria

Classes

class  OneObjectiveComparator
+

Detailed Description

+

template<class MOEOT, class Move>
+ class moeoIBMOLS< MOEOT, Move >

+ +Indicator-Based Multi-Objective Local Search (IBMOLS) as described in Basseur M., Burke K. +

+: "Indicator-Based Multi-Objective Local Search" (2007). +

+ +

+Definition at line 33 of file moeoIBMOLS.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class MOEOT, class Move>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moeoIBMOLS< MOEOT, Move >::moeoIBMOLS (moMoveInit< Move > &  _moveInit,
moNextMove< Move > &  _nextMove,
eoEvalFunc< MOEOT > &  _eval,
moeoMoveIncrEval< Move > &  _moveIncrEval,
moeoBinaryIndicatorBasedFitnessAssignment< MOEOT > &  _fitnessAssignment,
eoContinue< MOEOT > &  _continuator 
) [inline]
+
+
+ +

+Ctor. +

+

Parameters:
+ + + + + + + +
_moveInit the move initializer
_nextMove the neighborhood explorer
_eval the full evaluation
_moveIncrEval the incremental evaluation
_fitnessAssignment the fitness assignment strategy
_continuator the stopping criteria
+
+ +

+Definition at line 50 of file moeoIBMOLS.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class MOEOT, class Move>
+ + + + + + + + + + + + + + + + + + +
void moeoIBMOLS< MOEOT, Move >::operator() (eoPop< MOEOT > &  _pop,
moeoArchive< MOEOT > &  _arch 
) [inline, virtual]
+
+
+ +

+Apply the local search until a local archive does not change or another stopping criteria is met and update the archive _arch with new non-dominated solutions. +

+

Parameters:
+ + + +
_pop the initial population
_arch the (updated) archive
+
+ +

+Implements eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void >. +

+Definition at line 73 of file moeoIBMOLS.h. +

+References moeoIBMOLS< MOEOT, Move >::continuator, moeoArchive< MOEOT >::equals(), moeoIBMOLS< MOEOT, Move >::fitnessAssignment, moeoIBMOLS< MOEOT, Move >::oneStep(), and moeoArchive< MOEOT >::update(). +

+

+ +

+
+
+template<class MOEOT, class Move>
+ + + + + + + + + +
void moeoIBMOLS< MOEOT, Move >::oneStep (eoPop< MOEOT > &  _pop  )  [inline, private]
+
+
+ +

+Apply one step of the local search to the population _pop. +

+

Parameters:
+ + +
_pop the population
+
+ +

+Definition at line 120 of file moeoIBMOLS.h. +

+References moeoIBMOLS< MOEOT, Move >::continuator, moeoIBMOLS< MOEOT, Move >::fitnessAssignment, moeoIBMOLS< MOEOT, Move >::moveIncrEval, moeoIBMOLS< MOEOT, Move >::moveInit, and moeoIBMOLS< MOEOT, Move >::nextMove. +

+Referenced by moeoIBMOLS< MOEOT, Move >::operator()(). +

+

+ +

+
+
+template<class MOEOT, class Move>
+ + + + + + + + + +
void moeoIBMOLS< MOEOT, Move >::new_oneStep (eoPop< MOEOT > &  _pop  )  [inline, private]
+
+
+ +

+Apply one step of the local search to the population _pop. +

+

Parameters:
+ + +
_pop the population
+
+ +

+Definition at line 304 of file moeoIBMOLS.h. +

+References moeoIBMOLS< MOEOT, Move >::continuator, moeoIBMOLS< MOEOT, Move >::fitnessAssignment, moeoIBMOLS< MOEOT, Move >::moveIncrEval, moeoIBMOLS< MOEOT, Move >::moveInit, and moeoIBMOLS< MOEOT, Move >::nextMove. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIBMOLS.png b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIBMOLS.png new file mode 100644 index 0000000000000000000000000000000000000000..f8ca65a0c08752e1f6c5838783872770a7ad31bc GIT binary patch literal 1838 zcmcgtdpOf;93PRTXYymNWpjS(xaDyxMi-ZCuG?~?TxwxcsuLL&a+!p-G3E9Ua;Xrf z7P=Uc#o{P&Oif91$&^f@6iYd)o=%t!-L=qQ`A<3 zKp-$z7mOzavP@aZxpK>-xKAcOPC99N;JmO)OG{F^w8Skb2{^0bea&+t*v$~4KH1*0uV3J!p-ha40xBa2N8OM;SdZ?oOY z-_GZ~FdS7FU-r_oYM0#{#DK(Fy{|P)r~tHGim=MjT+O@$14mUyBQlPIg5+LgYAihP zOpctTUN>~1S7#$ys%M%}cBT_B$qy_^22+Nk2xq2d`^FL=0ti2#7}0i5{dKbkPkUYP zdon=zP}5;D0I${aM-|y#T?y<)A;S3V&PUclM@BYr`)*VbWzcd<;`Bv_QmC?ltQ-?^ z47C4;A}bf*aTCjxZ{>wT7=t(6>k}~svdPnj{To-TwFeC5`7qri(SjP=1I3(NG1oV{F(aztLSCe7 z>`?RJ<14J5vP>&P%C<`Gtz&d|?IE+AN#j2fY{- z64x~c4)jy0!LLt!2;nJRC(OU$LLRYuKwQaA@2sBBu879|T^?P#r3Z*G`~RvjU| zvl3{r_JT=_>|mZ|>A}mVf%t?2+QB>v-j2ISCBMxt+o_QSfZs8~D;)2Q-!?%5oFYlj zm-Px+umt7fD`&+P*;8RbIASBa#}x0%o6i>1R1tm)@72znD!}meHtCVuwT8B(>_iZn z^mOXtdh9mg(~GUb3FXAT{1vt)Hf5wM*SdY~sx?(86uq_!ICM0)ImD^hoQ8Z5a|XJr zguY&T@j~|`hJ(5yis)9Q{JL0<{1PJj&w27+w1z=DXdVY|O}+8v$oV(QG?hV>g{a(D zuu&&N+2fC+=7`YyNVFSZ5LUbVdqaQcZP1<*-y(nWjkSPVh-;Kc3;f6a|5AT)*Ql!- zO(6(Pb3ZxkaHFHXO$hmxmt+kL&%Vms3HzGc+T#?uRhMrZB;xG$X8L42&AFkz{N8@C zw;iG;?HMv>QZfUo`_^6&n*u3DcrT<})Z7|!CX10P$ua_bS>VGHl+W29~D$-cNOy0=eBw|=>gC-3B-7L_@l zIhoLp0qk1+CC9$B`t#G}A?Y(~iqQaq+g9a&+BZ{&$T7LYZxM`&Ime&(_-iJAcnRMG z#k~6j@1t_7&Po!zhGfcrfP16t8U^_kI*6-*EA`Y;-@EJ#9jiFNLQG{uQFkhkur-BdJM6GECo}g%`G^K! zdb$)!uG0cKB2{`L>vT=;JOlkM89e06FUqUJ0p~e3-TI*gs#xt8Y!OiS@%AkL{_|*) zBX|lcKes0ePi)kq!ushN*sde^nRv{mX8-52?*QM1UbN + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator Member List

This is the complete list of members for moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator, including all inherited members.

+ + + + + + + +
functor_category()eoBF< A1, A2, R > [static]
objmoeoIBMOLS< MOEOT, Move >::OneObjectiveComparator [private]
OneObjectiveComparator(unsigned int _obj)moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator [inline]
operator()(const MOEOT &_moeo1, const MOEOT &_moeo2)moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator [inline]
moeoComparator::operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIBMOLS_1_1OneObjectiveComparator.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIBMOLS_1_1OneObjectiveComparator.html new file mode 100644 index 000000000..7d46550f4 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIBMOLS_1_1OneObjectiveComparator.html @@ -0,0 +1,68 @@ + + +ParadisEO-MOEOMovingObjects: moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator Class Reference + + + + +
+
+ + +

moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator Class Reference

Inheritance diagram for moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator: +

+ +moeoComparator< MOEOT > +eoBF< A1, A2, R > +eoFunctorBase + +List of all members. + + + + + + + + + +

Public Member Functions

OneObjectiveComparator (unsigned int _obj)
+const bool operator() (const MOEOT &_moeo1, const MOEOT &_moeo2)

Private Attributes

+unsigned int obj
+

Detailed Description

+

template<class MOEOT, class Move>
+ class moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator

+ + +

+ +

+Definition at line 462 of file moeoIBMOLS.h.


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIBMOLS_1_1OneObjectiveComparator.png b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIBMOLS_1_1OneObjectiveComparator.png new file mode 100644 index 0000000000000000000000000000000000000000..d4f1e1cad1ee8b03a0ab9a0dfa11c994ad66819b GIT binary patch literal 1285 zcmeAS@N?(olHy`uVBq!ia0y~yV2lH@53n!;$$fHS>wuI*fKQ0)|NsAi%>Vxn%%7hy z0muU50|yRNANv0U$Ym@E@(X5gcy=R=fq`YVr;B4q#hkZu0?QsN@VGu)e!oNZ!Oeqb z+Mccc9e+r|GofHkip=k$4@2~q^NF#n6OGIblD#v3aS~9H=TR()<1dcvD+KL^bPTYxraHX#4hZx2!+AA3d#DAjALnZ-wG}6WeD`ldYcav$n0fdNuRx zZ^w_fpR{+fWN-7RoA6_)guRCSp5SBMQ$HpFUD12I`YZdFxkU=K3)R>%P42zlA1?gn za>AbY`}f0@-(1SrbNFsPOs%AT7@bW8%eKzWsb^2zuT`4|l^=3uiN40gbHy^A`>6D&-DB7!(EB}=HTD?`uuR1?0 zb9OA`T7M)zWJ+|L>Xje1EHyplY8ii4E5syDnI>rayM*V*iu&bdax5xl6K`FeyYj2k z|GZ=Gh3{!U4*$#?7|j)4VamJwR&8xv#R|T6Yorns^1CbUY+NP(^ZQ|Gpof9Z3#(tY z>3#VIsWtPmP3~QMwbSjf?7KSSxHUcE+K-Q(s@Q0RmAUDc@x_Aw{04DLdc;>R-t#if zH!}TN5XZePcfOrj&!)bu==*eU?ZFq7&y8ngX-3VOrM0B?*6G5+{bzQ+sl4{_)4bfDEB1uMiEjV9Tl`1qf4}HGsr(za*1!L} z@AQ5l{-`RoJzI`yf83p8y8RS?e&>Bv`+|Q@Z3Isr>$v&+bKrJ+?e$)-|NLI|=YvQ3 zJL5|KW8GK%e^)=h3-tA|$9sP<|MFY7@7e~^!>8%vrHCTNryL!7z{xxJ<1fo}mTm0M zpHDk)ruA6LdZJ0klIyR}A2Sl!we5Om7{}WUey2Np@7XAx?LDA7b5FyUvX>Y3-JG}E z{QBqE-Fvn6+rD93pMI!P^;`Jq(<{~*-#K+Jw)?{;o_Wu+CpLYz+P$q=&t36F#XL3p z^ri(i#-0xXcdp#iSkY4cYYOL~J6SuNEZ4k|U4MOPiPB!Hy-D(0)^C~qG^;zE`;2qa zw@aF5550CefBNI?!lws&Zr^&Ic)mi_u4Go*^-!W%aLZx`kWEyN}l%n(uME-~azPujw7@|GTd3 zU-$6px@qAGe{27jeO%qIX7BN*?3w zhi~6quK4a>touICw%XaQ_q!=1bIQN{{KsD1_=n8Byy8E=GK;~})z4*}Q$iB}>er=; literal 0 HcmV?d00001 diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIteratedIBMOLS-members.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIteratedIBMOLS-members.html new file mode 100644 index 000000000..b2686004d --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIteratedIBMOLS-members.html @@ -0,0 +1,49 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

moeoIteratedIBMOLS< MOEOT, Move > Member List

This is the complete list of members for moeoIteratedIBMOLS< MOEOT, Move >, including all inherited members.

+ + + + + + + + + + + + + +
continuatormoeoIteratedIBMOLS< MOEOT, Move > [private]
evalmoeoIteratedIBMOLS< MOEOT, Move > [private]
functor_category()eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void > [static]
generateNewSolutions(eoPop< MOEOT > &_pop, const moeoArchive< MOEOT > &_arch)moeoIteratedIBMOLS< MOEOT, Move > [inline, private]
ibmolsmoeoIteratedIBMOLS< MOEOT, Move > [private]
moeoIteratedIBMOLS(moMoveInit< Move > &_moveInit, moNextMove< Move > &_nextMove, eoEvalFunc< MOEOT > &_eval, moeoMoveIncrEval< Move > &_moveIncrEval, moeoBinaryIndicatorBasedFitnessAssignment< MOEOT > &_fitnessAssignment, eoContinue< MOEOT > &_continuator, eoMonOp< MOEOT > &_monOp, eoMonOp< MOEOT > &_randomMonOp, unsigned int _nNoiseIterations=1)moeoIteratedIBMOLS< MOEOT, Move > [inline]
monOpmoeoIteratedIBMOLS< MOEOT, Move > [private]
nNoiseIterationsmoeoIteratedIBMOLS< MOEOT, Move > [private]
ObjectiveVector typedefmoeoIteratedIBMOLS< MOEOT, Move >
operator()(eoPop< MOEOT > &_pop, moeoArchive< MOEOT > &_arch)moeoIteratedIBMOLS< MOEOT, Move > [inline, virtual]
randomMonOpmoeoIteratedIBMOLS< MOEOT, Move > [private]
~eoBF()eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIteratedIBMOLS.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIteratedIBMOLS.html new file mode 100644 index 000000000..af9f19c43 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIteratedIBMOLS.html @@ -0,0 +1,286 @@ + + +ParadisEO-MOEOMovingObjects: moeoIteratedIBMOLS< MOEOT, Move > Class Template Reference + + + + +
+
+ +

moeoIteratedIBMOLS< MOEOT, Move > Class Template Reference

Iterated version of IBMOLS as described in Basseur M., Burke K. +More... +

+#include <moeoIteratedIBMOLS.h> +

+

Inheritance diagram for moeoIteratedIBMOLS< MOEOT, Move >: +

+ +moeoLS< MOEOT, eoPop< MOEOT > & > +moeoAlgo +eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef MOEOT::ObjectiveVector ObjectiveVector
 The type of objective vector.

Public Member Functions

 moeoIteratedIBMOLS (moMoveInit< Move > &_moveInit, moNextMove< Move > &_nextMove, eoEvalFunc< MOEOT > &_eval, moeoMoveIncrEval< Move > &_moveIncrEval, moeoBinaryIndicatorBasedFitnessAssignment< MOEOT > &_fitnessAssignment, eoContinue< MOEOT > &_continuator, eoMonOp< MOEOT > &_monOp, eoMonOp< MOEOT > &_randomMonOp, unsigned int _nNoiseIterations=1)
 Ctor.
void operator() (eoPop< MOEOT > &_pop, moeoArchive< MOEOT > &_arch)
 Apply the local search iteratively until the stopping criteria is met.

Private Member Functions

void generateNewSolutions (eoPop< MOEOT > &_pop, const moeoArchive< MOEOT > &_arch)
 Creates new population randomly initialized and/or initialized from the archive _arch.

Private Attributes

+moeoIBMOLS< MOEOT, Move > ibmols
 the local search to iterate
+eoEvalFunc< MOEOT > & eval
 the full evaluation
+eoContinue< MOEOT > & continuator
 the stopping criteria
+eoMonOp< MOEOT > & monOp
 the monary operator
+eoMonOp< MOEOT > & randomMonOp
 the random monary operator (or random initializer)
+unsigned int nNoiseIterations
 the number of iterations to apply the random noise
+

Detailed Description

+

template<class MOEOT, class Move>
+ class moeoIteratedIBMOLS< MOEOT, Move >

+ +Iterated version of IBMOLS as described in Basseur M., Burke K. +

+: "Indicator-Based Multi-Objective Local Search" (2007). +

+ +

+Definition at line 41 of file moeoIteratedIBMOLS.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class MOEOT, class Move>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moeoIteratedIBMOLS< MOEOT, Move >::moeoIteratedIBMOLS (moMoveInit< Move > &  _moveInit,
moNextMove< Move > &  _nextMove,
eoEvalFunc< MOEOT > &  _eval,
moeoMoveIncrEval< Move > &  _moveIncrEval,
moeoBinaryIndicatorBasedFitnessAssignment< MOEOT > &  _fitnessAssignment,
eoContinue< MOEOT > &  _continuator,
eoMonOp< MOEOT > &  _monOp,
eoMonOp< MOEOT > &  _randomMonOp,
unsigned int  _nNoiseIterations = 1 
) [inline]
+
+
+ +

+Ctor. +

+

Parameters:
+ + + + + + + + + + +
_moveInit the move initializer
_nextMove the neighborhood explorer
_eval the full evaluation
_moveIncrEval the incremental evaluation
_fitnessAssignment the fitness assignment strategy
_continuator the stopping criteria
_monOp the monary operator
_randomMonOp the random monary operator (or random initializer)
_nNoiseIterations the number of iterations to apply the random noise
+
+ +

+Definition at line 61 of file moeoIteratedIBMOLS.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class MOEOT, class Move>
+ + + + + + + + + + + + + + + + + + +
void moeoIteratedIBMOLS< MOEOT, Move >::operator() (eoPop< MOEOT > &  _pop,
moeoArchive< MOEOT > &  _arch 
) [inline, virtual]
+
+
+ +

+Apply the local search iteratively until the stopping criteria is met. +

+

Parameters:
+ + + +
_pop the initial population
_arch the (updated) archive
+
+ +

+Implements eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void >. +

+Definition at line 86 of file moeoIteratedIBMOLS.h. +

+References moeoIteratedIBMOLS< MOEOT, Move >::continuator, moeoIteratedIBMOLS< MOEOT, Move >::generateNewSolutions(), moeoIteratedIBMOLS< MOEOT, Move >::ibmols, and moeoArchive< MOEOT >::update(). +

+

+ +

+
+
+template<class MOEOT, class Move>
+ + + + + + + + + + + + + + + + + + +
void moeoIteratedIBMOLS< MOEOT, Move >::generateNewSolutions (eoPop< MOEOT > &  _pop,
const moeoArchive< MOEOT > &  _arch 
) [inline, private]
+
+
+ +

+Creates new population randomly initialized and/or initialized from the archive _arch. +

+

Parameters:
+ + + +
_pop the output population
_arch the archive
+
+ +

+Definition at line 121 of file moeoIteratedIBMOLS.h. +

+References moeoIteratedIBMOLS< MOEOT, Move >::eval, eoPop< EOT >::invalidate(), moeoIteratedIBMOLS< MOEOT, Move >::monOp, moeoIteratedIBMOLS< MOEOT, Move >::nNoiseIterations, and moeoIteratedIBMOLS< MOEOT, Move >::randomMonOp. +

+Referenced by moeoIteratedIBMOLS< MOEOT, Move >::operator()(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIteratedIBMOLS.png b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoIteratedIBMOLS.png new file mode 100644 index 0000000000000000000000000000000000000000..dc4163151f6e645db1890721cca2fc89465d1d16 GIT binary patch literal 1889 zcmcIlX;hO(6#ZB#6h!l}B!VCiDkv&iNkmG7P(lC|l&~vnEK|_!x$h0-sE>!9 zj)@Kc0D4}Y7#sj-KvcL>Q$uA>s+DG{x=lw9`@1WZN)=QpJ887YODgnR>+I~z;3>yd zL$xzFA3p&77OjNjp|?q+4VIE~=+@C!+af#jBRD zLWmn*7WVBg0~H9&v8RaxcrJ__ zJoYwj80tDra!Gl1o{XF@0mplGVp=+5LcR4sLG8=i>@q;50uGrKikO{YIYUfc3!G_#lk zktbSAu|B}RDQZ1~6AA9VWN5lMfcxunGL0pwX+92KlE&yoQ}SN z@V%1%o{ZN=@n0HCqTe+aw7;12hwW+V30tf%2IX4ti*_ERA=D8hud7k$9$K4q(BulN zvOzSDa@p}b%+R#^K*vCgFN+;xz@T1I|E3--F@k@Welyg(*yFD4sO^k1F?(#E{vA;r zeGg-(g$*QF!h7bzrA2v0@Ip#a492cX!ny`#5#k@)<3soXgAPU5Nw;thhOwpDBhB5I z!^6|xJD0$HXrP~30ILI=_Z9cy^5{N4>F4_yQSB^2f_DvBaX3A#{zzcbGZSBFSuj7k z&3bYnPsYFsNWBeSxWL)BF(s6uuJf$=L}77!&g52`WNG+JQF;qr$hqgJ)cEd@j2TgW zIp)dmO=p&Yc-kNl+j%@I+y-tMa-2Jk0)ukQ<;H(z5Sj>PkBuR)``_i_bh$pt4JD8! zjTd?pN($uB{$v^rY^a8_C=gFgfq`Q82r1YReSsA<_GOw%Bt z5&SBl!j@G_cig_xKWUIXFVB^_U}wMP*OOEg~noVhhoGb-<@BB)I72w7i1iMBOIgEZ0lyqc0@M)3DNpX?dQCER}F@ zw_bH%q|9lmF?$!U1fG`v$UVVaTDIJu{J>=XD25$Bsy>|LgD93+VPP4n1G+0Q?f2zL z&h^x-7{#MprW?N?^yk~wA%GQ{sK<4#sg7Mm z6O9^!H?Mu9f2t+_5!SVp=Q_XNhoLH156?|Qd&lwgo*Bo2j&pWmc=2^iS)upvYE zdBfMurOg6&L}rB5g|{TApzO}K+H#w)^4{&uU!Odrx$7y)>bjw&S`-#_a{7nG$oxwz zypSKyXJ&EZ;}#Cof7XaqtY>5lB9ZL@2L)}hLcYwZb!wF-&B8o;sx{#5bh-qmk>YLJ zzKXT0IdHC~XUoG`8A}EJErM(Lo_B~RryC&iFn`x% + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

moeoMoveIncrEval< Move > Member List

This is the complete list of members for moeoMoveIncrEval< Move >, including all inherited members.

+ + + + +
functor_category()eoBF< A1, A2, R > [static]
operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoMoveIncrEval.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoMoveIncrEval.html new file mode 100644 index 000000000..4164ae922 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoMoveIncrEval.html @@ -0,0 +1,54 @@ + + +ParadisEO-MOEOMovingObjects: moeoMoveIncrEval< Move > Class Template Reference + + + + +
+
+ +

moeoMoveIncrEval< Move > Class Template Reference

Inheritance diagram for moeoMoveIncrEval< Move >: +

+ +eoBF< A1, A2, R > +eoFunctorBase + +List of all members. + +
+

Detailed Description

+

template<class Move>
+ class moeoMoveIncrEval< Move >

+ + +

+ +

+Definition at line 9 of file moeoMoveIncrEval.h.


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoMoveIncrEval.png b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoMoveIncrEval.png new file mode 100644 index 0000000000000000000000000000000000000000..a9d2cd48808734866a4d4a92cc58e2b4ddd368e2 GIT binary patch literal 684 zcmV;d0#p5oP)3A-@(DWag|f>1k5KdhLrfgoDNWoFnG_JxLkLZW$bAoLpYCfK(~SHcWB{mU zSfuf3a!bG>#ii<2GA3V>XOTG(F_Hu#iDM)(E3nQ^GU1YaCPx$r?FH*oLJKa!DunLO@QFzzMu7G$f}{SEny zxnX1@8`;Q4HnNe8e25H#T5w^^@tl!gNA~)y=XpqX-b#ahH<6PF?vR&55Q9G1`}Ef* z72rE=W|Yq;1;Vxn%%7hy z0muU50|yRNANv0U$Ym@E@(X5gcy=R=fq^;2)5S3)qw(#G+`h*OJZ;Tkv+f(38&o%5 zUAN_V=a!)N^({x`1w3BxY+2fAv}bA*Q{P*4iS4gUOu2t$<(+@QSlVZ#a84-IVUFsl zivkRLvKBqHipsxi$(*7qJo9+7BG1~huBUB}q-{O)*Ly00MJ~lt&TREOB z*HnM!H{00oXg5}+bKTkcd z{H}lTdqag@?_`HLxBgZy;_2AzA}Mfn*O7R$-d`40jo~kZ1hzkY!4tPY+o9%8p8N6- zd-NC!dz)<)&Mjgr6yxpKoZ&FXRlViIex+a8FL^KCw9kI|rrzO77BOVz-iQ9P|C!zT zzevJfD*xB@4Ew)jv8n>K$$w-7M5P3#?&4!%is%XExE47*_EOS}Ln%)l#agl7o9y@E zk{FZ1t;KP-uK2$) zWzkoGNsA5FEj7H9B6z4v@;KY^nN2zC=R3_@@YI4!e_x7$o(+$1&HHt8epF6;&T%j> z%-)Jie|51R7k?6888hPql@|rRx(+*L?9z7JAz(h`hE!_#hSFkT4(Z@>*A5BYDG?P8 zPv>56)p2HU>HoLW(eqyIizPx$YQKfFed@WW_XEzQOwY|}PFP5_J-Xg5m z_~4t+r5g?`pPeip+IAf2HxrWHox~@2X8Y48Va~Ii8shTKx#Va)DzO!|bb0Bspu6wN zoxJldFWO&e&Fhp&s#lwH`d2TnY*RJI^|QC;2Fw$PY+gbC6}@H`~Su z?>o0zTTXb(cz1?CP!ac2m%sVpe&wO>9{8^MeeBqJ9=ogGn<`9vWREoadz8+VZ?H90 s&@xrX`XbkHtlmB9>xFo;wZHgxo!Rg-^>eN + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT > Member List

This is the complete list of members for moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >, including all inherited members.

+ + + + + + + + + + + + +
functor_category()eoUF< eoPop< MOEOT > &, void > [static]
metricmoeoReferencePointIndicatorBasedFitnessAssignment< MOEOT > [protected]
moeoReferencePointIndicatorBasedFitnessAssignment(ObjectiveVector &_refPoint, moeoNormalizedSolutionVsSolutionBinaryMetric< ObjectiveVector, double > &_metric)moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT > [inline]
ObjectiveVector typedefmoeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >
operator()(eoPop< MOEOT > &_pop)moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT > [inline, virtual]
refPointmoeoReferencePointIndicatorBasedFitnessAssignment< MOEOT > [protected]
setFitnesses(eoPop< MOEOT > &_pop)moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT > [inline, protected]
setup(const eoPop< MOEOT > &_pop)moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT > [inline, protected]
updateByDeleting(eoPop< MOEOT > &_pop, ObjectiveVector &_objVec)moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT > [inline, virtual]
moeoFitnessAssignment::updateByDeleting(eoPop< MOEOT > &_pop, MOEOT &_moeo)moeoFitnessAssignment< MOEOT > [inline]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< eoPop< MOEOT > &, void > [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoReferencePointIndicatorBasedFitnessAssignment.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoReferencePointIndicatorBasedFitnessAssignment.html new file mode 100644 index 000000000..d76beca59 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoReferencePointIndicatorBasedFitnessAssignment.html @@ -0,0 +1,283 @@ + + +ParadisEO-MOEOMovingObjects: moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT > Class Template Reference + + + + +
+
+ +

moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT > Class Template Reference

Fitness assignment sheme based a Reference Point and a Quality Indicator. +More... +

+#include <moeoReferencePointIndicatorBasedFitnessAssignment.h> +

+

Inheritance diagram for moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >: +

+ +moeoFitnessAssignment< MOEOT > +eoUF< eoPop< MOEOT > &, void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef MOEOT::ObjectiveVector ObjectiveVector
 The type of objective vector.

Public Member Functions

 moeoReferencePointIndicatorBasedFitnessAssignment (ObjectiveVector &_refPoint, moeoNormalizedSolutionVsSolutionBinaryMetric< ObjectiveVector, double > &_metric)
 Ctor.
void operator() (eoPop< MOEOT > &_pop)
 Sets the fitness values for every solution contained in the population _pop.
void updateByDeleting (eoPop< MOEOT > &_pop, ObjectiveVector &_objVec)
 Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account.

Protected Member Functions

void setup (const eoPop< MOEOT > &_pop)
 Sets the bounds for every objective using the min and the max value for every objective vector of _pop (and the reference point).
void setFitnesses (eoPop< MOEOT > &_pop)
 Sets the fitness of every individual contained in the population _pop.

Protected Attributes

+ObjectiveVectorrefPoint
 the reference point
+moeoNormalizedSolutionVsSolutionBinaryMetric<
+ ObjectiveVector, double > & 
metric
 the quality indicator
+

Detailed Description

+

template<class MOEOT>
+ class moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >

+ +Fitness assignment sheme based a Reference Point and a Quality Indicator. +

+ +

+Definition at line 25 of file moeoReferencePointIndicatorBasedFitnessAssignment.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class MOEOT>
+ + + + + + + + + + + + + + + + + + +
moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::moeoReferencePointIndicatorBasedFitnessAssignment (ObjectiveVector _refPoint,
moeoNormalizedSolutionVsSolutionBinaryMetric< ObjectiveVector, double > &  _metric 
) [inline]
+
+
+ +

+Ctor. +

+

Parameters:
+ + + +
_refPoint the reference point
_metric the quality indicator
+
+ +

+Definition at line 37 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class MOEOT>
+ + + + + + + + + +
void moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::operator() (eoPop< MOEOT > &  _pop  )  [inline, virtual]
+
+
+ +

+Sets the fitness values for every solution contained in the population _pop. +

+

Parameters:
+ + +
_pop the population
+
+ +

+Implements eoUF< eoPop< MOEOT > &, void >. +

+Definition at line 46 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +

+References moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::setFitnesses(), and moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::setup(). +

+

+ +

+
+
+template<class MOEOT>
+ + + + + + + + + + + + + + + + + + +
void moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::updateByDeleting (eoPop< MOEOT > &  _pop,
ObjectiveVector _objVec 
) [inline, virtual]
+
+
+ +

+Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account. +

+

Parameters:
+ + + +
_pop the population
_objVec the objective vector
+
+ +

+Implements moeoFitnessAssignment< MOEOT >. +

+Definition at line 60 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +

+

+ +

+
+
+template<class MOEOT>
+ + + + + + + + + +
void moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::setup (const eoPop< MOEOT > &  _pop  )  [inline, protected]
+
+
+ +

+Sets the bounds for every objective using the min and the max value for every objective vector of _pop (and the reference point). +

+

Parameters:
+ + +
_pop the population
+
+ +

+Definition at line 78 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +

+References moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::metric, moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::refPoint, and moeoNormalizedSolutionVsSolutionBinaryMetric< ObjectiveVector, R >::setup(). +

+Referenced by moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::operator()(). +

+

+ +

+
+
+template<class MOEOT>
+ + + + + + + + + +
void moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::setFitnesses (eoPop< MOEOT > &  _pop  )  [inline, protected]
+
+
+ +

+Sets the fitness of every individual contained in the population _pop. +

+

Parameters:
+ + +
_pop the population
+
+ +

+Definition at line 99 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +

+References moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::metric, and moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::refPoint. +

+Referenced by moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::operator()(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoReferencePointIndicatorBasedFitnessAssignment.png b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classmoeoReferencePointIndicatorBasedFitnessAssignment.png new file mode 100644 index 0000000000000000000000000000000000000000..b52223b04ca18a18c96ae70d6ef01cabc11c17d0 GIT binary patch literal 1490 zcmah}dozw^_JLkLie)pVv?jQHN_Z9{Qc4mPfJM}vstARsp{R6%8KwvRB!)-!WWsnqmqO%xSW(d3i=>i>tp6|GFqk0D-~hUO*yp-spc zC-IiAf9FcOT+qi4-8+L`+}6rRq|SF+xGjedXE%ku*bcd4Tbn{`&`Zq^O@3hr?w8ej z?P6sZOJ3R%eOmJ>ZLvP{`-KdvzSi8vEEzzbk|}?TKz!)vH7?PZ^31!Eek@)Wc84`) z<>JL#XLq)d9O>}NPhF$yL@{gu1Cx=jmrprS*^?x+(7Gu3Fb1YF#MPpCFiTR9vu`ny z^yOj9!T?f;oT`YHrR?icT2GKa4mKk_<)NVqTe{J0_(Lm51TeL9$wl4W2qiuZ7ko9OT zL-m+(^*HPHpw=ZDJK8v_U)xCY$C_;8$=9&U~`IiodBlXB_*-isZiYiy$GUFi%zi=nKE=HyKxGX;L*VE-J)kl`~5e_sg3?{D)ZK9d=X#`!eRG>-7w4Y~L8=izq z#@Akf$d0BNEg?VY8fZx^+p$iJ;u~?#R=N2+=;<#Q`qX8C@h#zCC>RM&UnAB~*1x%* zt@u)+I4oyL=wUGs9_U$pAHPtFbr>O^wYrJnzyv1?cjUJ1{xfHCa)RbiqdrCZBG8(W bFn3K0xzW}YSX(4hJYc}rGr*&Pc$E1MkDQai literal 0 HcmV?d00001 diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classpeoEA-members.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classpeoEA-members.html new file mode 100644 index 000000000..7b4ab6b73 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classpeoEA-members.html @@ -0,0 +1,45 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

peoEA< EOT > Member List

This is the complete list of members for peoEA< EOT >, including all inherited members.

+ + + + + + + + + +
contpeoEA< EOT > [private]
operator()(eoPop< EOT > &__pop)peoEA< EOT >
peoEA(eoContinue< EOT > &__cont, peoPopEval< EOT > &__pop_eval, eoSelect< EOT > &__select, peoTransform< EOT > &__trans, eoReplacement< EOT > &__replace)peoEA< EOT >
poppeoEA< EOT > [private]
pop_evalpeoEA< EOT > [private]
replacepeoEA< EOT > [private]
run()peoEA< EOT >
selectpeoEA< EOT > [private]
transpeoEA< EOT > [private]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classpeoEA.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classpeoEA.html new file mode 100644 index 000000000..f19685464 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/classpeoEA.html @@ -0,0 +1,228 @@ + + +ParadisEO-MOEOMovingObjects: peoEA< EOT > Class Template Reference + + + + +
+
+ +

peoEA< EOT > Class Template Reference

The peoEA class offers an elementary evolutionary algorithm implementation. +More... +

+#include <pmoeoEA.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 peoEA (eoContinue< EOT > &__cont, peoPopEval< EOT > &__pop_eval, eoSelect< EOT > &__select, peoTransform< EOT > &__trans, eoReplacement< EOT > &__replace)
 Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism.
+void run ()
 Evolutionary algorithm function - a side effect of the fact that the class is derived from the Runner class, thus requiring the existence of a run function, the algorithm being executed on a distinct thread.
void operator() (eoPop< EOT > &__pop)
 Function operator for specifying the population to be associated with the algorithm.

Private Attributes

+eoContinue< EOT > & cont
+peoPopEval< EOT > & pop_eval
+eoSelect< EOT > & select
+peoTransform< EOT > & trans
+eoReplacement< EOT > & replace
+eoPop< EOT > * pop
+


Detailed Description

+

template<class EOT>
+ class peoEA< EOT >

+ +The peoEA class offers an elementary evolutionary algorithm implementation. +

+In addition, as compared with the algorithms provided by the EO framework, the peoEA class has the underlying necessary structure for including, for example, parallel evaluation and parallel transformation operators, migration operators etc. Although there is no restriction on using the algorithms provided by the EO framework, the drawback resides in the fact that the EO implementation is exclusively sequential and, in consequence, no parallelism is provided. A simple example for constructing a peoEA object:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
...    
eoPop< EOT > population( POP_SIZE, popInitializer );   // creation of a population with POP_SIZE individuals - the popInitializer is a functor to be called for each individual
   
eoGenContinue< EOT > eaCont( NUM_GEN );   // number of generations for the evolutionary algorithm
eoCheckPoint< EOT > eaCheckpointContinue( eaCont );   // checkpoint incorporating the continuation criterion - startpoint for adding other checkpoint objects
   
peoSeqPopEval< EOT > eaPopEval( evalFunction );   // sequential evaluation functor wrapper - evalFunction represents the actual evaluation functor
   
eoRankingSelect< EOT > selectionStrategy;   // selection strategy for creating the offspring population - a simple ranking selection in this case
eoSelectNumber< EOT > eaSelect( selectionStrategy, POP_SIZE );   // the number of individuals to be selected for creating the offspring population
eoRankingSelect< EOT > selectionStrategy;   // selection strategy for creating the offspring population - a simple ranking selection in this case
   
eoSGATransform< EOT > transform( crossover, CROSS_RATE, mutation, MUT_RATE );   // transformation operator - crossover and mutation operators with their associated probabilities
peoSeqTransform< EOT > eaTransform( transform );   // ParadisEO specific sequential operator - a parallel version may be specified in the same manner
   
eoPlusReplacement< EOT > eaReplace;   // replacement strategy - for integrating the offspring resulting individuals in the initial population
   
peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace );   // ParadisEO evolutionary algorithm integrating the above defined objects
eaAlg( population );   // specifying the initial population for the algorithm
...    
+ +

+ +

+Definition at line 54 of file pmoeoEA.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
peoEA< EOT >::peoEA (eoContinue< EOT > &  __cont,
peoPopEval< EOT > &  __pop_eval,
eoSelect< EOT > &  __select,
peoTransform< EOT > &  __trans,
eoReplacement< EOT > &  __replace 
)
+
+
+ +

+Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. +

+Depending on the requirements, a sequential or a parallel evaluation operator may be specified or, in the same manner, a sequential or a parallel transformation operator may be given as parameter. Out of the box objects may be provided, from the EO package, for example, or custom defined ones may be specified, provided that they are derived from the correct base classes.

+

Parameters:
+ + + + + + +
eoContinue< EOT >& __cont - continuation criterion specifying whether the algorithm should continue or not;
peoPopEval< EOT >& __pop_eval - evaluation operator; it allows the specification of parallel evaluation operators, aggregate evaluation functions, etc.;
eoSelect< EOT >& __select - selection strategy to be applied for constructing a list of offspring individuals;
peoTransform< EOT >& __trans - transformation operator, i.e. crossover and mutation; allows for sequential or parallel transform;
eoReplacement< EOT >& __replace - replacement strategy for integrating the offspring individuals in the initial population;
+
+ +

+Definition at line 98 of file pmoeoEA.h. +

+References peoEA< EOT >::pop_eval, and peoEA< EOT >::trans. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
void peoEA< EOT >::operator() (eoPop< EOT > &  __pop  ) 
+
+
+ +

+Function operator for specifying the population to be associated with the algorithm. +

+

Parameters:
+ + +
eoPop< EOT >& __pop - initial population of the algorithm, to be iteratively evolved;
+
+ +

+Definition at line 114 of file pmoeoEA.h. +

+References peoEA< EOT >::pop. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x62.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x62.html new file mode 100644 index 000000000..d728575f3 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x62.html @@ -0,0 +1,78 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- b -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x63.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x63.html new file mode 100644 index 000000000..e8c442917 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x63.html @@ -0,0 +1,95 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- c -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x64.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x64.html new file mode 100644 index 000000000..11ee93db3 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x64.html @@ -0,0 +1,96 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- d -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x65.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x65.html new file mode 100644 index 000000000..a503f09dc --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x65.html @@ -0,0 +1,80 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- e -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x66.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x66.html new file mode 100644 index 000000000..cf69b4562 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x66.html @@ -0,0 +1,86 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- f -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x67.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x67.html new file mode 100644 index 000000000..211b7ceeb --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x67.html @@ -0,0 +1,82 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- g -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x68.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x68.html new file mode 100644 index 000000000..68b57203f --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x68.html @@ -0,0 +1,77 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- h -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x69.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x69.html new file mode 100644 index 000000000..38128c1ac --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x69.html @@ -0,0 +1,90 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- i -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x6b.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x6b.html new file mode 100644 index 000000000..77cee7bc6 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x6b.html @@ -0,0 +1,76 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- k -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x6c.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x6c.html new file mode 100644 index 000000000..962b32b59 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x6c.html @@ -0,0 +1,78 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- l -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x6d.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x6d.html new file mode 100644 index 000000000..a91ecaea2 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x6d.html @@ -0,0 +1,124 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- m -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x6e.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x6e.html new file mode 100644 index 000000000..7d5abecd9 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x6e.html @@ -0,0 +1,83 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- n -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x6f.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x6f.html new file mode 100644 index 000000000..9f70376a5 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x6f.html @@ -0,0 +1,91 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- o -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x70.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x70.html new file mode 100644 index 000000000..6d7c434ff --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x70.html @@ -0,0 +1,84 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- p -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x72.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x72.html new file mode 100644 index 000000000..acf2c1ba2 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x72.html @@ -0,0 +1,86 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- r -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x73.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x73.html new file mode 100644 index 000000000..438a8ba8a --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x73.html @@ -0,0 +1,85 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- s -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x74.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x74.html new file mode 100644 index 000000000..d375480c1 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x74.html @@ -0,0 +1,85 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- t -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x75.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x75.html new file mode 100644 index 000000000..dd36247f6 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x75.html @@ -0,0 +1,78 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- u -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x76.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x76.html new file mode 100644 index 000000000..189cc4afc --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x76.html @@ -0,0 +1,79 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- v -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x77.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x77.html new file mode 100644 index 000000000..76af96fda --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x77.html @@ -0,0 +1,77 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- w -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x7e.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x7e.html new file mode 100644 index 000000000..a6fd80cfd --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/functions_0x7e.html @@ -0,0 +1,76 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- ~ -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/make__eval__FlowShop_8h-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/make__eval__FlowShop_8h-source.html new file mode 100644 index 000000000..904b7e000 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/make__eval__FlowShop_8h-source.html @@ -0,0 +1,83 @@ + + +ParadisEO-MOEOMovingObjects: make_eval_FlowShop.h Source File + + + + +
+
+

make_eval_FlowShop.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // make_eval_FlowShop.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 MAKE_EVAL_FLOWSHOP_H_
+00014 #define MAKE_EVAL_FLOWSHOP_H_
+00015 
+00016 
+00017 #include <utils/eoParser.h>
+00018 #include <utils/eoState.h>
+00019 #include <eoEvalFuncCounter.h>
+00020 #include <FlowShop.h>
+00021 #include <FlowShopBenchmarkParser.h>
+00022 #include <FlowShopEval.h>
+00023 
+00024 /*
+00025  * This function creates an eoEvalFuncCounter<eoFlowShop> that can later be used to evaluate an individual.
+00026  * @param eoParser& _parser  to get user parameters
+00027  * @param eoState& _state  to store the memory
+00028  */
+00029 eoEvalFuncCounter<FlowShop> & do_make_eval(eoParser& _parser, eoState& _state)
+00030 {
+00031     // benchmark file name
+00032     std::string benchmarkFileName = _parser.getORcreateParam(std::string(), "BenchmarkFile", "Benchmark file name (benchmarks are available at www.lifl.fr/~liefooga/benchmarks)", 'B',"Representation", true).value();
+00033     if (benchmarkFileName == "") {
+00034         std::string stmp = "*** Missing name of the benchmark file\n";
+00035         stmp += "    Type '-B=the_benchmark_file_name' or '--BenchmarkFile=the_benchmark_file_name'\n";
+00036         stmp += "    Benchmarks files are available at www.lifl.fr/~liefooga/benchmarks";
+00037         throw std::runtime_error(stmp.c_str());
+00038     }
+00039     // reading of the parameters contained in the benchmark file
+00040     FlowShopBenchmarkParser fParser(benchmarkFileName);
+00041     unsigned int M = fParser.getM();
+00042     unsigned int N = fParser.getN();
+00043     std::vector< std::vector<unsigned int> > p = fParser.getP();
+00044     std::vector<unsigned int> d = fParser.getD();
+00045     // build of the initializer (a pointer, stored in the eoState)
+00046     FlowShopEval* plainEval = new FlowShopEval(M, N, p, d);
+00047     // turn that object into an evaluation counter
+00048     eoEvalFuncCounter<FlowShop>* eval = new eoEvalFuncCounter<FlowShop> (* plainEval);
+00049     // store in state
+00050     _state.storeFunctor(eval);
+00051     // and return a reference
+00052     return *eval;
+00053 }
+00054 
+00055 #endif /*MAKE_EVAL_FLOWSHOP_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/make__genotype__FlowShop_8h-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/make__genotype__FlowShop_8h-source.html new file mode 100644 index 000000000..51c9704e5 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/make__genotype__FlowShop_8h-source.html @@ -0,0 +1,76 @@ + + +ParadisEO-MOEOMovingObjects: make_genotype_FlowShop.h Source File + + + + +
+
+

make_genotype_FlowShop.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // make_genotype_FlowShop.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 MAKE_GENOTYPE_FLOWSHOP_H_
+00014 #define MAKE_GENOTYPE_FLOWSHOP_H_
+00015 
+00016 #include <utils/eoParser.h>
+00017 #include <utils/eoState.h>
+00018 #include <FlowShop.h>
+00019 #include <FlowShopInit.h>
+00020 #include <FlowShopBenchmarkParser.h>
+00021 
+00022 /*
+00023  * This function creates an eoInit<eoFlowShop> that can later be used to initialize the population (see make_pop.h).
+00024  * @param eoParser& _parser  to get user parameters
+00025  * @param eoState& _state  to store the memory
+00026  */
+00027 eoInit<FlowShop> & do_make_genotype(eoParser& _parser, eoState& _state)
+00028 {
+00029     // benchmark file name
+00030     std::string benchmarkFileName = _parser.getORcreateParam(std::string(), "BenchmarkFile", "Benchmark file name (benchmarks are available at www.lifl.fr/~liefooga/benchmarks/)", 'B',"Representation", true).value();
+00031     if (benchmarkFileName == "") {
+00032         std::string stmp = "*** Missing name of the benchmark file\n";
+00033         stmp += "   Type '-B=the_benchmark_file_name' or '--BenchmarkFile=the_benchmark_file_name'\n";
+00034         stmp += "   Benchmarks files are available at www.lifl.fr/~liefooga/benchmarks";
+00035         throw std::runtime_error(stmp.c_str());
+00036     }
+00037     // reading of number of jobs to schedule contained in the benchmark file
+00038     FlowShopBenchmarkParser fParser(benchmarkFileName);
+00039     unsigned int N = fParser.getN();
+00040     // build of the initializer (a pointer, stored in the eoState)
+00041     eoInit<FlowShop>* init = new FlowShopInit(N);
+00042     // store in state
+00043     _state.storeFunctor(init);
+00044     // and return a reference
+00045     return *init;
+00046 }
+00047 
+00048 #endif /*MAKE_GENOTYPE_FLOWSHOP_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/make__ls__moeo_8h-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/make__ls__moeo_8h-source.html new file mode 100644 index 000000000..c61f1774b --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/make__ls__moeo_8h-source.html @@ -0,0 +1,136 @@ + + +ParadisEO-MOEOMovingObjects: make_ls_moeo.h Source File + + + + +
+
+

make_ls_moeo.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // make_ls_moeo.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 MAKE_LS_MOEO_H_
+00014 #define MAKE_LS_MOEO_H_
+00015 
+00016 #include <eoContinue.h>
+00017 #include <eoEvalFunc.h>
+00018 #include <eoGenOp.h>
+00019 #include <utils/eoParser.h>
+00020 #include <utils/eoState.h>
+00021 #include <algo/moeoIBMOLS.h>
+00022 #include <algo/moeoIteratedIBMOLS.h>
+00023 #include <algo/moeoLS.h>
+00024 #include <archive/moeoArchive.h>
+00025 #include <fitness/moeoBinaryIndicatorBasedFitnessAssignment.h>
+00026 #include <fitness/moeoExpBinaryIndicatorBasedFitnessAssignment.h>
+00027 #include <metric/moeoNormalizedSolutionVsSolutionBinaryMetric.h>
+00028 #include <move/moeoMoveIncrEval.h>
+00029 
+00043 template < class MOEOT, class Move >
+00044 moeoLS < MOEOT, eoPop<MOEOT> & > & do_make_ls_moeo      (
+00045     eoParser & _parser,
+00046     eoState & _state,
+00047     eoEvalFunc < MOEOT > & _eval,
+00048     moeoMoveIncrEval < Move > & _moveIncrEval,
+00049     eoContinue < MOEOT > & _continue,
+00050     eoMonOp < MOEOT > & _op,
+00051     eoMonOp < MOEOT > & _opInit,
+00052     moMoveInit < Move > & _moveInit,
+00053     moNextMove < Move > & _nextMove,
+00054     moeoArchive < MOEOT > & _archive
+00055 )
+00056 {
+00057     /* the objective vector type */
+00058     typedef typename MOEOT::ObjectiveVector ObjectiveVector;
+00059     /* the fitness assignment strategy */
+00060     std::string & fitnessParam = _parser.getORcreateParam(std::string("IndicatorBased"), "fitness",
+00061                             "Fitness assignment strategy parameter: IndicatorBased...", 'F',
+00062                             "Evolution Engine").value();
+00063     std::string & indicatorParam = _parser.getORcreateParam(std::string("Epsilon"), "indicator",
+00064                               "Binary indicator to use with the IndicatorBased assignment: Epsilon, Hypervolume", 'i',
+00065                               "Evolution Engine").value();
+00066     double rho = _parser.getORcreateParam(1.1, "rho", "reference point for the hypervolume indicator",
+00067                                           'r', "Evolution Engine").value();
+00068     double kappa = _parser.getORcreateParam(0.05, "kappa", "Scaling factor kappa for IndicatorBased",
+00069                                             'k', "Evolution Engine").value();
+00070     moeoBinaryIndicatorBasedFitnessAssignment < MOEOT > * fitnessAssignment;
+00071     if (fitnessParam == std::string("IndicatorBased"))
+00072     {
+00073         // metric
+00074         moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > *metric;
+00075         if (indicatorParam == std::string("Epsilon"))
+00076         {
+00077             metric = new moeoAdditiveEpsilonBinaryMetric < ObjectiveVector >;
+00078         }
+00079         else if (indicatorParam == std::string("Hypervolume"))
+00080         {
+00081             metric = new moeoHypervolumeBinaryMetric < ObjectiveVector > (rho);
+00082         }
+00083         else
+00084         {
+00085             std::string stmp = std::string("Invalid binary quality indicator: ") + indicatorParam;
+00086             throw std::runtime_error(stmp.c_str());
+00087         }
+00088         fitnessAssignment = new moeoExpBinaryIndicatorBasedFitnessAssignment < MOEOT> (*metric, kappa);
+00089     }
+00090     else
+00091     {
+00092         std::string stmp = std::string("Invalid fitness assignment strategy: ") + fitnessParam;
+00093         throw std::runtime_error(stmp.c_str());
+00094     }
+00095     _state.storeFunctor(fitnessAssignment);
+00096     // number of iterations
+00097     unsigned int n = _parser.getORcreateParam(1, "n", "Number of iterations for population Initialization", 'n', "Evolution Engine").value();
+00098     // LS
+00099     std::string & lsParam = _parser.getORcreateParam(std::string("I-IBMOLS"), "ls",
+00100                        "Local Search: IBMOLS, I-IBMOLS (Iterated-IBMOLS)...", 'L',
+00101                        "Evolution Engine").value();
+00102     moeoLS < MOEOT, eoPop<MOEOT> & > * ls;
+00103     if (lsParam == std::string("IBMOLS"))
+00104     {
+00105         ls = new moeoIBMOLS < MOEOT, Move > (_moveInit, _nextMove, _eval, _moveIncrEval, *fitnessAssignment, _continue);;
+00106     }
+00107     else if (lsParam == std::string("I-IBMOLS"))
+00108     {
+00109         ls = new moeoIteratedIBMOLS < MOEOT, Move > (_moveInit, _nextMove, _eval, _moveIncrEval, *fitnessAssignment, _continue, _op, _opInit, n);
+00110     }
+00111     else
+00112     {
+00113         std::string stmp = std::string("Invalid fitness assignment strategy: ") + fitnessParam;
+00114         throw std::runtime_error(stmp.c_str());
+00115     }
+00116     _state.storeFunctor(ls);
+00117     // that's it !
+00118     return *ls;
+00119 }
+00120 
+00121 #endif /*MAKE_LS_MOEO_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/make__op__FlowShop_8h-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/make__op__FlowShop_8h-source.html new file mode 100644 index 000000000..55d792e9d --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/make__op__FlowShop_8h-source.html @@ -0,0 +1,130 @@ + + +ParadisEO-MOEOMovingObjects: make_op_FlowShop.h Source File + + + + +
+
+

make_op_FlowShop.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // make_op_FlowShop.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 MAKE_OP_FLOWSHOP_H_
+00014 #define MAKE_OP_FLOWSHOP_H_
+00015 
+00016 #include <utils/eoParser.h>
+00017 #include <utils/eoState.h>
+00018 #include <eoOp.h>
+00019 #include <eoGenOp.h>
+00020 #include <eoCloneOps.h>
+00021 #include <eoOpContainer.h>
+00022 #include <eoProportionalCombinedOp.h>
+00023 #include <FlowShopOpCrossoverQuad.h>
+00024 #include <FlowShopOpMutationShift.h>
+00025 #include <FlowShopOpMutationExchange.h>
+00026 
+00027 /*
+00028  * This function builds the operators that will be applied to the eoFlowShop
+00029  * @param eoParameterLoader& _parser to get user parameters
+00030  * @param eoState& _state to store the memory
+00031  */
+00032 eoGenOp<FlowShop> & do_make_op(eoParameterLoader& _parser, eoState& _state)
+00033 {
+00034 
+00036     // Variation operators
+00038 
+00039     // the crossover
+00041 
+00042     // a first crossover
+00043     eoQuadOp<FlowShop> *cross = new FlowShopOpCrossoverQuad;
+00044     // store in the state
+00045     _state.storeFunctor(cross);
+00046 
+00047     // relative rate in the combination
+00048     double cross1Rate = _parser.createParam(1.0, "crossRate", "Relative rate for the only crossover", 0, "Variation Operators").value();
+00049     // creation of the combined operator with this one
+00050     eoPropCombinedQuadOp<FlowShop> *propXover = new eoPropCombinedQuadOp<FlowShop>(*cross, cross1Rate);
+00051     // store in the state
+00052     _state.storeFunctor(propXover);
+00053 
+00054 
+00055     // the mutation
+00057 
+00058     // a first mutation : the shift mutation
+00059     eoMonOp<FlowShop> *mut = new FlowShopOpMutationShift;
+00060     _state.storeFunctor(mut);
+00061     // its relative rate in the combination
+00062     double mut1Rate = _parser.createParam(0.5, "shiftMutRate", "Relative rate for shift mutation", 0, "Variation Operators").value();
+00063     // creation of the combined operator with this one
+00064     eoPropCombinedMonOp<FlowShop> *propMutation = new eoPropCombinedMonOp<FlowShop>(*mut, mut1Rate);
+00065     _state.storeFunctor(propMutation);
+00066 
+00067     // a second mutation : the exchange mutation
+00068     mut = new FlowShopOpMutationExchange;
+00069     _state.storeFunctor(mut);
+00070     // its relative rate in the combination
+00071     double mut2Rate = _parser.createParam(0.5, "exchangeMutRate", "Relative rate for exchange mutation", 0, "Variation Operators").value();
+00072     // addition of this one to the combined operator
+00073     propMutation -> add(*mut, mut2Rate);
+00074 
+00075     // end of crossover and mutation definitions
+00077 
+00078     // First read the individual level parameters
+00079     eoValueParam<double>& pCrossParam = _parser.createParam(0.25, "pCross", "Probability of Crossover", 'c', "Variation Operators" );
+00080     // minimum check
+00081     if ( (pCrossParam.value() < 0) || (pCrossParam.value() > 1) )
+00082         throw std::runtime_error("Invalid pCross");
+00083 
+00084     eoValueParam<double>& pMutParam = _parser.createParam(0.35, "pMut", "Probability of Mutation", 'm', "Variation Operators" );
+00085     // minimum check
+00086     if ( (pMutParam.value() < 0) || (pMutParam.value() > 1) )
+00087         throw std::runtime_error("Invalid pMut");
+00088 
+00089     // the crossover - with probability pCross
+00090     eoProportionalOp<FlowShop> * propOp = new eoProportionalOp<FlowShop> ;
+00091     _state.storeFunctor(propOp);
+00092     eoQuadOp<FlowShop> *ptQuad = new eoQuadCloneOp<FlowShop>;
+00093     _state.storeFunctor(ptQuad);
+00094     propOp -> add(*propXover, pCrossParam.value()); // crossover, with proba pcross
+00095     propOp -> add(*ptQuad, 1-pCrossParam.value()); // nothing, with proba 1-pcross
+00096 
+00097     // now the sequential
+00098     eoSequentialOp<FlowShop> *op = new eoSequentialOp<FlowShop>;
+00099     _state.storeFunctor(op);
+00100     op -> add(*propOp, 1.0);     // always do combined crossover
+00101     op -> add(*propMutation, pMutParam.value()); // then mutation, with proba pmut
+00102 
+00103     // return a reference
+00104     return *op;
+00105 }
+00106 
+00107 #endif /*MAKE_OP_FLOWSHOP_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/moeoIBMOLS_8h-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/moeoIBMOLS_8h-source.html new file mode 100644 index 000000000..3b87f592f --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/moeoIBMOLS_8h-source.html @@ -0,0 +1,469 @@ + + +ParadisEO-MOEOMovingObjects: moeoIBMOLS.h Source File + + + + +
+
+

moeoIBMOLS.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoIBMOLS.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 MOEOIBMOLS_H_
+00014 #define MOEOIBMOLS_H_
+00015 
+00016 #include <math.h>
+00017 #include <eoContinue.h>
+00018 #include <eoEvalFunc.h>
+00019 #include <eoPop.h>
+00020 #include <moMove.h>
+00021 #include <moMoveInit.h>
+00022 #include <moNextMove.h>
+00023 #include <algo/moeoLS.h>
+00024 #include <archive/moeoArchive.h>
+00025 #include <fitness/moeoBinaryIndicatorBasedFitnessAssignment.h>
+00026 #include <move/moeoMoveIncrEval.h>
+00027 
+00032 template < class MOEOT, class Move >
+00033 class moeoIBMOLS : public moeoLS < MOEOT, eoPop < MOEOT > & >
+00034 {
+00035 public:
+00036 
+00038     typedef typename MOEOT::ObjectiveVector ObjectiveVector;
+00039 
+00040 
+00050     moeoIBMOLS(
+00051         moMoveInit < Move > & _moveInit,
+00052         moNextMove < Move > & _nextMove,
+00053         eoEvalFunc < MOEOT > & _eval,
+00054         moeoMoveIncrEval < Move > & _moveIncrEval,
+00055         moeoBinaryIndicatorBasedFitnessAssignment < MOEOT > & _fitnessAssignment,
+00056         eoContinue < MOEOT > & _continuator
+00057     ) :
+00058             moveInit(_moveInit),
+00059             nextMove(_nextMove),
+00060             eval(_eval),
+00061             moveIncrEval(_moveIncrEval),
+00062             fitnessAssignment (_fitnessAssignment),
+00063             continuator (_continuator)
+00064     {}
+00065 
+00066 
+00073     void operator() (eoPop < MOEOT > & _pop, moeoArchive < MOEOT > & _arch)
+00074     {
+00075         // evaluation of the objective values
+00076         /*
+00077                 for (unsigned int i=0; i<_pop.size(); i++)
+00078                 {
+00079                     eval(_pop[i]);
+00080                 }
+00081         */
+00082         // fitness assignment for the whole population
+00083         fitnessAssignment(_pop);
+00084         // creation of a local archive
+00085         moeoArchive < MOEOT > archive;
+00086         // creation of another local archive (for the stopping criteria)
+00087         moeoArchive < MOEOT > previousArchive;
+00088         // update the archive with the initial population
+00089         archive.update(_pop);
+00090         do
+00091         {
+00092             previousArchive.update(archive);
+00093             oneStep(_pop);
+00094             archive.update(_pop);
+00095         } while ( (! archive.equals(previousArchive)) && (continuator(_arch)) );
+00096         _arch.update(archive);
+00097     }
+00098 
+00099 
+00100 private:
+00101 
+00103     moMoveInit < Move > & moveInit;
+00105     moNextMove < Move > & nextMove;
+00107     eoEvalFunc < MOEOT > & eval;
+00109     moeoMoveIncrEval < Move > & moveIncrEval;
+00111     moeoBinaryIndicatorBasedFitnessAssignment < MOEOT > & fitnessAssignment;
+00113     eoContinue < MOEOT > & continuator;
+00114 
+00115 
+00120     void oneStep (eoPop < MOEOT > & _pop)
+00121     {
+00122         // the move
+00123         Move move;
+00124         // the objective vector and the fitness of the current solution
+00125         ObjectiveVector x_objVec;
+00126         double x_fitness;
+00127         // the index, the objective vector and the fitness of the worst solution in the population (-1 implies that the worst is the newly created one)
+00128         int worst_idx;
+00129         ObjectiveVector worst_objVec;
+00130         double worst_fitness;
+00132         // the indexes and the objective vectors of the extreme non-dominated points
+00133         int ext_0_idx, ext_1_idx;
+00134         ObjectiveVector ext_0_objVec, ext_1_objVec;
+00135         unsigned int ind;   
+00137         // the index of the current solution to be explored
+00138         unsigned int i=0;
+00139         // initilization of the move for the first individual
+00140         moveInit(move, _pop[i]);
+00141         while (i<_pop.size() && continuator(_pop))
+00142         {
+00143             // x = one neigbour of pop[i]
+00144             // evaluate x in the objective space
+00145             x_objVec = moveIncrEval(move, _pop[i]);
+00146             // update every fitness values to take x into account and compute the fitness of x
+00147             x_fitness = fitnessAssignment.updateByAdding(_pop, x_objVec);
+00148 
+00152                         // extreme solutions (min only!)
+00153             ext_0_idx = -1;
+00154             ext_0_objVec = x_objVec;
+00155             ext_1_idx = -1;
+00156             ext_1_objVec = x_objVec;
+00157             for (unsigned int k=0; k<_pop.size(); k++)
+00158             {
+00159                 // ext_0
+00160                 if (_pop[k].objectiveVector()[0] < ext_0_objVec[0])
+00161                 {
+00162                     ext_0_idx = k;
+00163                     ext_0_objVec = _pop[k].objectiveVector();
+00164                 }
+00165                 else if ( (_pop[k].objectiveVector()[0] == ext_0_objVec[0]) && (_pop[k].objectiveVector()[1] < ext_0_objVec[1]) )
+00166                 {
+00167                     ext_0_idx = k;
+00168                     ext_0_objVec = _pop[k].objectiveVector();
+00169                 }
+00170                 // ext_1
+00171                 else if (_pop[k].objectiveVector()[1] < ext_1_objVec[1])
+00172                 {
+00173                     ext_1_idx = k;
+00174                     ext_1_objVec = _pop[k].objectiveVector();
+00175                 }
+00176                 else if ( (_pop[k].objectiveVector()[1] == ext_1_objVec[1]) && (_pop[k].objectiveVector()[0] < ext_1_objVec[0]) )
+00177                 {
+00178                     ext_1_idx = k;
+00179                     ext_1_objVec = _pop[k].objectiveVector();
+00180                 }
+00181             }
+00182                         // worst init
+00183             if (ext_0_idx == -1)
+00184             {
+00185                 ind = 0;
+00186                 while (ind == ext_1_idx)
+00187                 {
+00188                     ind++;
+00189                 }
+00190                 worst_idx = ind;
+00191                 worst_objVec = _pop[ind].objectiveVector();
+00192                 worst_fitness = _pop[ind].fitness();
+00193             }
+00194             else if (ext_1_idx == -1)
+00195             {
+00196                 ind = 0;
+00197                 while (ind == ext_0_idx)
+00198                 {
+00199                     ind++;
+00200                 }
+00201                 worst_idx = ind;
+00202                 worst_objVec = _pop[ind].objectiveVector();
+00203                 worst_fitness = _pop[ind].fitness();
+00204             }
+00205             else
+00206             {
+00207                 worst_idx = -1;
+00208                 worst_objVec = x_objVec;
+00209                 worst_fitness = x_fitness;
+00210             }
+00214 
+00215             // who is the worst ?
+00216             for (unsigned int j=0; j<_pop.size(); j++)
+00217             {
+00218                 if ( (j!=ext_0_idx) && (j!=ext_1_idx) )
+00219                 {
+00220                     if (_pop[j].fitness() < worst_fitness)
+00221                     {
+00222                         worst_idx = j;
+00223                         worst_objVec = _pop[j].objectiveVector();
+00224                         worst_fitness = _pop[j].fitness();
+00225                     }
+00226                 }
+00227             }
+00228             // if the worst solution is the new one
+00229             if (worst_idx == -1)
+00230             {
+00231                 // if all its neighbours have been explored,
+00232                 // let's explore the neighborhoud of the next individual
+00233                 if (! nextMove(move, _pop[i]))
+00234                 {
+00235                     i++;
+00236                     if (i<_pop.size())
+00237                     {
+00238                         // initilization of the move for the next individual
+00239                         moveInit(move, _pop[i]);
+00240                     }
+00241                 }
+00242             }
+00243             // if the worst solution is located before _pop[i]
+00244             else if (worst_idx <= i)
+00245             {
+00246                 // the new solution takes place insteed of _pop[worst_idx]
+00247                 _pop[worst_idx] = _pop[i];
+00248                 move(_pop[worst_idx]);
+00249                 _pop[worst_idx].objectiveVector(x_objVec);
+00250                 _pop[worst_idx].fitness(x_fitness);
+00251                 // let's explore the neighborhoud of the next individual
+00252                 i++;
+00253                 if (i<_pop.size())
+00254                 {
+00255                     // initilization of the move for the next individual
+00256                     moveInit(move, _pop[i]);
+00257                 }
+00258             }
+00259             // if the worst solution is located after _pop[i]
+00260             else if (worst_idx > i)
+00261             {
+00262                 // the new solution takes place insteed of _pop[i+1] and _pop[worst_idx] is deleted
+00263                 _pop[worst_idx] = _pop[i+1];
+00264                 _pop[i+1] = _pop[i];
+00265                 move(_pop[i+1]);
+00266                 _pop[i+1].objectiveVector(x_objVec);
+00267                 _pop[i+1].fitness(x_fitness);
+00268                 // let's explore the neighborhoud of the individual _pop[i+2]
+00269                 i += 2;
+00270                 if (i<_pop.size())
+00271                 {
+00272                     // initilization of the move for the next individual
+00273                     moveInit(move, _pop[i]);
+00274                 }
+00275             }
+00276             // update fitness values
+00277             fitnessAssignment.updateByDeleting(_pop, worst_objVec);
+00278         }
+00279     }
+00280 
+00281 
+00282 
+00283 
+00284 
+00285 
+00286 
+00287 
+00288 
+00289 
+00290 
+00291 
+00292 
+00293 // INUTILE !!!!
+00294 
+00295 
+00296 
+00297 
+00298 
+00299 
+00304     void new_oneStep (eoPop < MOEOT > & _pop)
+00305     {
+00306         // the move
+00307         Move move;
+00308         // the objective vector and the fitness of the current solution
+00309         ObjectiveVector x_objVec;
+00310         double x_fitness;
+00311         // the index, the objective vector and the fitness of the worst solution in the population (-1 implies that the worst is the newly created one)
+00312         int worst_idx;
+00313         ObjectiveVector worst_objVec;
+00314         double worst_fitness;
+00316         // the index of the extreme non-dominated points
+00317         int ext_0_idx, ext_1_idx;
+00318         unsigned int ind;   
+00320         // the index current of the current solution to be explored
+00321         unsigned int i=0;
+00322         // initilization of the move for the first individual
+00323         moveInit(move, _pop[i]);
+00324         while (i<_pop.size() && continuator(_pop))
+00325         {
+00326             // x = one neigbour of pop[i]
+00327             // evaluate x in the objective space
+00328             x_objVec = moveIncrEval(move, _pop[i]);
+00329             // update every fitness values to take x into account and compute the fitness of x
+00330             x_fitness = fitnessAssignment.updateByAdding(_pop, x_objVec);
+00331 
+00335                         // extremes solutions
+00336             OneObjectiveComparator comp0(0);
+00337             ext_0_idx = std::min_element(_pop.begin(), _pop.end(), comp0) - _pop.begin();
+00338             OneObjectiveComparator comp1(1);
+00339             ext_1_idx = std::min_element(_pop.begin(), _pop.end(), comp1) - _pop.begin();
+00340                         // new = extreme ?
+00341             if (x_objVec[0] < _pop[ext_0_idx].objectiveVector()[0])
+00342             {
+00343                 ext_0_idx = -1;
+00344             }
+00345             else if ( (x_objVec[0] == _pop[ext_0_idx].objectiveVector()[0]) && (x_objVec[1] < _pop[ext_0_idx].objectiveVector()[1]) )
+00346             {
+00347                 ext_0_idx = -1;
+00348             }
+00349             else if (x_objVec[1] < _pop[ext_1_idx].objectiveVector()[1])
+00350             {
+00351                 ext_1_idx = -1;
+00352             }
+00353             else if ( (x_objVec[1] == _pop[ext_1_idx].objectiveVector()[1]) && (x_objVec[0] < _pop[ext_1_idx].objectiveVector()[0]) )
+00354             {
+00355                 ext_1_idx = -1;
+00356             }
+00357             // worst init
+00358             if (ext_0_idx == -1)
+00359             {
+00360                 ind = 0;
+00361                 while (ind == ext_1_idx)
+00362                 {
+00363                     ind++;
+00364                 }
+00365                 worst_idx = ind;
+00366                 worst_objVec = _pop[ind].objectiveVector();
+00367                 worst_fitness = _pop[ind].fitness();
+00368             }
+00369             else if (ext_1_idx == -1)
+00370             {
+00371                 ind = 0;
+00372                 while (ind == ext_0_idx)
+00373                 {
+00374                     ind++;
+00375                 }
+00376                 worst_idx = ind;
+00377                 worst_objVec = _pop[ind].objectiveVector();
+00378                 worst_fitness = _pop[ind].fitness();
+00379             }
+00380             else
+00381             {
+00382                 worst_idx = -1;
+00383                 worst_objVec = x_objVec;
+00384                 worst_fitness = x_fitness;
+00385             }
+00389 
+00390             // who is the worst ?
+00391             for (unsigned int j=0; j<_pop.size(); j++)
+00392             {
+00393                 if ( (j!=ext_0_idx) && (j!=ext_1_idx) )
+00394                 {
+00395                     if (_pop[j].fitness() < worst_fitness)
+00396                     {
+00397                         worst_idx = j;
+00398                         worst_objVec = _pop[j].objectiveVector();
+00399                         worst_fitness = _pop[j].fitness();
+00400                     }
+00401                 }
+00402             }
+00403             // if the worst solution is the new one
+00404             if (worst_idx == -1)
+00405             {
+00406                 // if all its neighbours have been explored,
+00407                 // let's explore the neighborhoud of the next individual
+00408                 if (! nextMove(move, _pop[i]))
+00409                 {
+00410                     i++;
+00411                     if (i<_pop.size())
+00412                     {
+00413                         // initilization of the move for the next individual
+00414                         moveInit(move, _pop[i]);
+00415                     }
+00416                 }
+00417             }
+00418             // if the worst solution is located before _pop[i]
+00419             else if (worst_idx <= i)
+00420             {
+00421                 // the new solution takes place insteed of _pop[worst_idx]
+00422                 _pop[worst_idx] = _pop[i];
+00423                 move(_pop[worst_idx]);
+00424                 _pop[worst_idx].objectiveVector(x_objVec);
+00425                 _pop[worst_idx].fitness(x_fitness);
+00426                 // let's explore the neighborhoud of the next individual
+00427                 i++;
+00428                 if (i<_pop.size())
+00429                 {
+00430                     // initilization of the move for the next individual
+00431                     moveInit(move, _pop[i]);
+00432                 }
+00433             }
+00434             // if the worst solution is located after _pop[i]
+00435             else if (worst_idx > i)
+00436             {
+00437                 // the new solution takes place insteed of _pop[i+1] and _pop[worst_idx] is deleted
+00438                 _pop[worst_idx] = _pop[i+1];
+00439                 _pop[i+1] = _pop[i];
+00440                 move(_pop[i+1]);
+00441                 _pop[i+1].objectiveVector(x_objVec);
+00442                 _pop[i+1].fitness(x_fitness);
+00443                 // let's explore the neighborhoud of the individual _pop[i+2]
+00444                 i += 2;
+00445                 if (i<_pop.size())
+00446                 {
+00447                     // initilization of the move for the next individual
+00448                     moveInit(move, _pop[i]);
+00449                 }
+00450             }
+00451             // update fitness values
+00452             fitnessAssignment.updateByDeleting(_pop, worst_objVec);
+00453         }
+00454     }
+00455 
+00456 
+00457 
+00458 
+00459 
+00460 
+00462 class OneObjectiveComparator : public moeoComparator < MOEOT >
+00463     {
+00464     public:
+00465         OneObjectiveComparator(unsigned int _obj) : obj(_obj)
+00466         {
+00467             if (obj > MOEOT::ObjectiveVector::nObjectives())
+00468             {
+00469                 throw std::runtime_error("Problem with the index of objective in OneObjectiveComparator");
+00470             }
+00471         }
+00472         const bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2)
+00473         {
+00474             if (_moeo1.objectiveVector()[obj] < _moeo2.objectiveVector()[obj])
+00475             {
+00476                 return true;
+00477             }
+00478             else
+00479             {
+00480                 return (_moeo1.objectiveVector()[obj] == _moeo2.objectiveVector()[obj]) && (_moeo1.objectiveVector()[(obj+1)%2] < _moeo2.objectiveVector()[(obj+1)%2]);
+00481             }
+00482         }
+00483     private:
+00484         unsigned int obj;
+00485     };
+00487 
+00488 
+00489 
+00490 
+00491 };
+00492 
+00493 #endif /*MOEOIBMOLS_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/moeoIteratedIBMOLS_8h-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/moeoIteratedIBMOLS_8h-source.html new file mode 100644 index 000000000..8f03adb31 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/moeoIteratedIBMOLS_8h-source.html @@ -0,0 +1,206 @@ + + +ParadisEO-MOEOMovingObjects: moeoIteratedIBMOLS.h Source File + + + + +
+
+

moeoIteratedIBMOLS.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoIteratedIBMOLS.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 MOEOITERATEDIBMOLS_H_
+00014 #define MOEOITERATEDIBMOLS_H_
+00015 
+00016 #include <eoContinue.h>
+00017 #include <eoEvalFunc.h>
+00018 #include <eoOp.h>
+00019 #include <eoPop.h>
+00020 #include <utils/rnd_generators.h>
+00021 #include <moMove.h>
+00022 #include <moMoveInit.h>
+00023 #include <moNextMove.h>
+00024 #include <algo/moeoIBMOLS.h>
+00025 #include <algo/moeoLS.h>
+00026 #include <archive/moeoArchive.h>
+00027 #include <fitness/moeoBinaryIndicatorBasedFitnessAssignment.h>
+00028 #include <move/moeoMoveIncrEval.h>
+00029 
+00030 
+00031 
+00032 //#include <rsCrossQuad.h>
+00033 
+00034 
+00035 
+00040 template < class MOEOT, class Move >
+00041 class moeoIteratedIBMOLS : public moeoLS < MOEOT, eoPop < MOEOT > & >
+00042 {
+00043 public:
+00044 
+00046     typedef typename MOEOT::ObjectiveVector ObjectiveVector;
+00047 
+00048 
+00061     moeoIteratedIBMOLS(
+00062         moMoveInit < Move > & _moveInit,
+00063         moNextMove < Move > & _nextMove,
+00064         eoEvalFunc < MOEOT > & _eval,
+00065         moeoMoveIncrEval < Move > & _moveIncrEval,
+00066         moeoBinaryIndicatorBasedFitnessAssignment < MOEOT > & _fitnessAssignment,
+00067         eoContinue < MOEOT > & _continuator,
+00068         eoMonOp < MOEOT > & _monOp,
+00069         eoMonOp < MOEOT > & _randomMonOp,
+00070         unsigned int _nNoiseIterations=1
+00071     ) :
+00072             ibmols(_moveInit, _nextMove, _eval, _moveIncrEval, _fitnessAssignment, _continuator),
+00073             eval(_eval),
+00074             continuator(_continuator),
+00075             monOp(_monOp),
+00076             randomMonOp(_randomMonOp),
+00077             nNoiseIterations(_nNoiseIterations)
+00078     {}
+00079 
+00080 
+00086     void operator() (eoPop < MOEOT > & _pop, moeoArchive < MOEOT > & _arch)
+00087     {
+00088         _arch.update(_pop);
+00089         ibmols(_pop, _arch);
+00090         while (continuator(_arch))
+00091         {
+00092             // generate new solutions from the archive
+00093             generateNewSolutions(_pop, _arch);
+00094             // apply the local search (the global archive is updated in the sub-function)
+00095             ibmols(_pop, _arch);
+00096         }
+00097     }
+00098 
+00099 
+00100 private:
+00101 
+00103     moeoIBMOLS < MOEOT, Move > ibmols;
+00105     eoEvalFunc < MOEOT > & eval;
+00107     eoContinue < MOEOT > & continuator;
+00109     eoMonOp < MOEOT > & monOp;
+00111     eoMonOp < MOEOT > & randomMonOp;
+00113     unsigned int nNoiseIterations;
+00114 
+00115 
+00121     void generateNewSolutions(eoPop < MOEOT > & _pop, const moeoArchive < MOEOT > & _arch)
+00122     {
+00123         // shuffle vector for the random selection of individuals
+00124         vector<unsigned int> shuffle;
+00125         shuffle.resize(std::max(_pop.size(), _arch.size()));
+00126         // init shuffle
+00127         for (unsigned int i=0; i<shuffle.size(); i++)
+00128         {
+00129             shuffle[i] = i;
+00130         }
+00131         // randomize shuffle
+00132         UF_random_generator <unsigned int> gen;
+00133         std::random_shuffle(shuffle.begin(), shuffle.end(), gen);
+00134         // start the creation of new solutions
+00135         for (unsigned int i=0; i<_pop.size(); i++)
+00136         {
+00137             if (shuffle[i] < _arch.size()) // the given archive contains the individual i
+00138             {
+00139                 // add it to the resulting pop
+00140                 _pop[i] = _arch[shuffle[i]];
+00141                 // apply noise
+00142                 for (unsigned int j=0; j<nNoiseIterations; j++)
+00143                 {
+00144                     monOp(_pop[i]);
+00145                 }
+00146             }
+00147             else // a random solution needs to be added
+00148             {
+00149                 // random initialization
+00150                 randomMonOp(_pop[i]);
+00151             }
+00152             // evaluation of the new individual
+00153             _pop[i].invalidate();
+00154             eval(_pop[i]);
+00155         }
+00156     }
+00157 
+00158 
+00159 
+00160 
+00161 
+00163 // A DEVELOPPER RAPIDEMENT POUR TESTER AVEC CROSSOVER //
+00164     /*
+00165         void generateNewSolutions2(eoPop < MOEOT > & _pop, const moeoArchive < MOEOT > & _arch)
+00166         {
+00167                 // here, we must have a QuadOp !
+00168                 //eoQuadOp < MOEOT > quadOp;
+00169                 rsCrossQuad quadOp;
+00170                 // shuffle vector for the random selection of individuals
+00171                 vector<unsigned int> shuffle;
+00172                 shuffle.resize(_arch.size());
+00173                 // init shuffle
+00174                 for (unsigned int i=0; i<shuffle.size(); i++)
+00175                 {
+00176                         shuffle[i] = i;
+00177                 }
+00178                 // randomize shuffle
+00179                 UF_random_generator <unsigned int int> gen;
+00180                 std::random_shuffle(shuffle.begin(), shuffle.end(), gen);
+00181                 // start the creation of new solutions
+00182                 unsigned int i=0;
+00183                 while ((i<_pop.size()-1) && (i<_arch.size()-1))
+00184                 {
+00185                         _pop[i] = _arch[shuffle[i]];
+00186                         _pop[i+1] = _arch[shuffle[i+1]];
+00187                         // then, apply the operator nIterationsNoise times
+00188                         for (unsigned int j=0; j<nNoiseIterations; j++)
+00189                         {
+00190                                 quadOp(_pop[i], _pop[i+1]);
+00191                         }
+00192                         eval(_pop[i]);
+00193                         eval(_pop[i+1]);
+00194                         i=i+2;
+00195                 }
+00196                 // do we have to add some random solutions ?
+00197                 while (i<_pop.size())
+00198                 {
+00199                         randomMonOp(_pop[i]);
+00200                         eval(_pop[i]);
+00201                         i++;
+00202                 }
+00203         }
+00204         */
+00206 
+00207 
+00208 
+00209 
+00210 
+00211 };
+00212 
+00213 #endif /*MOEOITERATEDIBMOLS_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/moeoMoveIncrEval_8h-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/moeoMoveIncrEval_8h-source.html new file mode 100644 index 000000000..884a87bd0 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/moeoMoveIncrEval_8h-source.html @@ -0,0 +1,39 @@ + + +ParadisEO-MOEOMovingObjects: moeoMoveIncrEval.h Source File + + + + +
+
+

moeoMoveIncrEval.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 #ifndef _MOEOMOVEINCREVAL_H
+00004 #define _MOEOMOVEINCREVAL_H
+00005 
+00006 #include <eoFunctor.h>
+00007 
+00008 template < class Move >
+00009 class moeoMoveIncrEval : public eoBF < const Move &, const typename Move::EOType &, typename Move::EOType::ObjectiveVector > {};
+00010 
+00011 #endif
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/moeoReferencePointIndicatorBasedFitnessAssignment_8h-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/moeoReferencePointIndicatorBasedFitnessAssignment_8h-source.html new file mode 100644 index 000000000..0501f0edf --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/moeoReferencePointIndicatorBasedFitnessAssignment_8h-source.html @@ -0,0 +1,109 @@ + + +ParadisEO-MOEOMovingObjects: moeoReferencePointIndicatorBasedFitnessAssignment.h Source File + + + + +
+
+

moeoReferencePointIndicatorBasedFitnessAssignment.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoReferencePointIndicatorBasedFitnessAssignment.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 MOEOREFERENCEPOINTINDICATORBASEDFITNESSASSIGNMENT_H_
+00014 #define MOEOREFERENCEPOINTINDICATORBASEDFITNESSASSIGNMENT_H_
+00015 
+00016 #include <math.h>
+00017 #include <eoPop.h>
+00018 #include <fitness/moeoFitnessAssignment.h>
+00019 #include <metric/moeoNormalizedSolutionVsSolutionBinaryMetric.h>
+00020 
+00024 template < class MOEOT >
+00025 class moeoReferencePointIndicatorBasedFitnessAssignment : public moeoFitnessAssignment < MOEOT >
+00026 {
+00027 public:
+00028 
+00030     typedef typename MOEOT::ObjectiveVector ObjectiveVector;
+00031 
+00037     moeoReferencePointIndicatorBasedFitnessAssignment (ObjectiveVector & _refPoint, moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric) :
+00038             refPoint(_refPoint), metric(_metric)
+00039     {}
+00040 
+00041 
+00046     void operator()(eoPop < MOEOT > & _pop)
+00047     {
+00048         // 1 - setting of the bounds
+00049         setup(_pop);
+00050         // 2 - setting fitnesses
+00051         setFitnesses(_pop);
+00052     }
+00053 
+00054 
+00060     void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec)
+00061     {
+00062         // nothing to do  ;-)
+00063     }
+00064 
+00065 
+00066 protected:
+00067 
+00069     ObjectiveVector & refPoint;
+00071     moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & metric;
+00072 
+00073 
+00078     void setup(const eoPop < MOEOT > & _pop)
+00079     {
+00080         double min, max;
+00081         for (unsigned int i=0; i<ObjectiveVector::Traits::nObjectives(); i++)
+00082         {
+00083             min = refPoint[i];
+00084             max = refPoint[i];
+00085             for (unsigned int j=0; j<_pop.size(); j++)
+00086             {
+00087                 min = std::min(min, _pop[j].objectiveVector()[i]);
+00088                 max = std::max(max, _pop[j].objectiveVector()[i]);
+00089             }
+00090             // setting of the bounds for the objective i
+00091             metric.setup(min, max, i);
+00092         }
+00093     }
+00094 
+00099     void setFitnesses(eoPop < MOEOT > & _pop)
+00100     {
+00101         for (unsigned int i=0; i<_pop.size(); i++)
+00102         {
+00103             _pop[i].fitness(- metric(_pop[i].objectiveVector(), refPoint) );
+00104         }
+00105     }
+00106 
+00107 };
+00108 
+00109 #endif /*MOEOREFERENCEPOINTINDICATORBASEDFITNESSASSIGNMENT_H_*/
+

Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/pmoeoEA_8h-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/pmoeoEA_8h-source.html new file mode 100644 index 000000000..4b15a4c07 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/pmoeoEA_8h-source.html @@ -0,0 +1,127 @@ + + +ParadisEO-MOEOMovingObjects: pmoeoEA.h Source File + + + + +
+
+

pmoeoEA.h

00001 // "pmoeoEA.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __pmoeoEA_h
+00010 #define __pmoeoEA_h
+00011 
+00012 #include <eoContinue.h>
+00013 #include <eoEvalFunc.h>
+00014 #include <eoSelect.h>
+00015 #include <eoPopEvalFunc.h>
+00016 #include <eoReplacement.h>
+00017 
+00018 #include "peoPopEval.h"
+00019 #include "peoTransform.h"
+00020 #include "core/runner.h"
+00021 #include "core/peo_debug.h"
+00022 
+00024 
+00054 template < class EOT > class peoEA : public Runner {
+00055 
+00056 public:
+00057 
+00069         peoEA( 
+00070                 eoContinue< EOT >& __cont,
+00071                 peoPopEval< EOT >& __pop_eval,
+00072                 eoSelect< EOT >& __select,
+00073                 peoTransform< EOT >& __trans,
+00074                 eoReplacement< EOT >& __replace 
+00075         );
+00076 
+00079         void run();
+00080         
+00084         void operator()( eoPop< EOT >& __pop );
+00085 
+00086 private:
+00087 
+00088 
+00089         eoContinue< EOT >& cont;
+00090         peoPopEval< EOT >& pop_eval;
+00091         eoSelect< EOT >& select;
+00092         peoTransform< EOT >& trans;
+00093         eoReplacement< EOT >& replace;
+00094         eoPop< EOT >* pop;
+00095 };
+00096 
+00097 
+00098 template < class EOT > peoEA< EOT > :: peoEA( 
+00099 
+00100                                 eoContinue< EOT >& __cont, 
+00101                                 peoPopEval< EOT >& __pop_eval, 
+00102                                 eoSelect< EOT >& __select, 
+00103                                 peoTransform< EOT >& __trans, 
+00104                                 eoReplacement< EOT >& __replace
+00105 
+00106                 ) : cont( __cont ), pop_eval( __pop_eval ), select( __select ), trans( __trans ), replace( __replace )
+00107 {
+00108 
+00109         trans.setOwner( *this );
+00110         pop_eval.setOwner( *this );
+00111 }
+00112 
+00113 
+00114 template< class EOT > void peoEA< EOT > :: operator ()( eoPop< EOT >& __pop ) {
+00115 
+00116         pop = &__pop;
+00117 }
+00118 
+00119 
+00120 template< class EOT > void peoEA< EOT > :: run() {
+00121 
+00122         printDebugMessage( "performing the first evaluation of the population." );
+00123         pop_eval( *pop );
+00124         
+00125         do {
+00126 
+00127                 eoPop< EOT > off;
+00128 
+00129                 printDebugMessage( "performing the selection step." );
+00130                 select( *pop, off );
+00131                 trans( off );
+00132 
+00133                 printDebugMessage( "performing the evaluation of the population." );
+00134                 pop_eval( off );
+00135 
+00136                 printDebugMessage( "performing the replacement of the population." );
+00137                 replace( *pop, off );
+00138 
+00139                 printDebugMessage( "deciding of the continuation." );
+00140         
+00141         } while ( cont( *pop ) );
+00142 }
+00143 
+00144 
+00145 #endif
+

Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/t-moeo_8cpp-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/t-moeo_8cpp-source.html new file mode 100644 index 000000000..40719a90e --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/t-moeo_8cpp-source.html @@ -0,0 +1,47 @@ + + +ParadisEO-MOEOMovingObjects: t-moeo.cpp Source File + + + + +
+
+

t-moeo.cpp

00001 //-----------------------------------------------------------------------------
+00002 // t-moeo.cpp
+00003 //-----------------------------------------------------------------------------
+00004 
+00005 #include <core/MOEO.h>  // MOEO
+00006 
+00007 //-----------------------------------------------------------------------------
+00008 
+00009 
+00010 //-----------------------------------------------------------------------------
+00011 
+00012 int main()
+00013 {
+00014   std::cout << "Please fill the test" << std::endl;
+00015 
+00016   return 0;
+00017 }
+00018 
+00019 //-----------------------------------------------------------------------------
+

Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/tutorial_2examples_2flowshop_2benchs_2README-source.html b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/tutorial_2examples_2flowshop_2benchs_2README-source.html new file mode 100644 index 000000000..38fba453c --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/html/tutorial_2examples_2flowshop_2benchs_2README-source.html @@ -0,0 +1,29 @@ + + +ParadisEO-MOEOMovingObjects: README Source File + + + + +
+
+

README

00001 Further benchmarks for the bi-objective flow-shop scheduling problem are available at http://www.lifl.fr/~liefooga/benchmarks/
+

Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/index.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/index.h new file mode 100644 index 000000000..7d66328c1 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/index.h @@ -0,0 +1,72 @@ +/** @mainpage Welcome to ParadisEO-MOEO + +@section Introduction + +ParadisEO-MOEO is a white-box object-oriented generic framework dedicated to the flexible design of evolutionary multi-objective algorithms. +This paradigm-free software embeds some features and techniques for Pareto-based resolution and +aims to provide a set of classes allowing to ease and speed up the development of computationally efficient programs. +It is based on a clear conceptual distinction between the solution methods and the multi-objective problems they are intended to solve. +This separation confers a maximum design and code reuse. +ParadisEO-MOEO provides a broad range of archive-related features (such as elitism or performance metrics) +and the most common Pareto-based fitness assignment strategies (MOGA, NSGA, SPEA, IBEA and more). +Furthermore, parallel and distributed models as well as hybridization mechanisms can be applied to an algorithm designed within ParadisEO-MOEO +using the whole version of ParadisEO. + + + +@section tutorials Tutorials + +Tutorials for ParadisEO-MOEO are available here. + + + +@section Installation + +The installation procedure of the package is detailed in the README file in the top-directory of the source-tree. + + + +@section Design + +For an introduction to the design of ParadisEO-MOEO, +you can look at the ParadisEO website. + + +@section LICENSE + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr + +*/ + +/** @page webpages Related webpages + +- ParadisEO homepage +- INRIA GForge project page +- README +*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShop.eps b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShop.eps new file mode 100644 index 000000000..f75958a57 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShop.eps @@ -0,0 +1,227 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 120.968 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.13333 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 6 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(FlowShop) cw +(moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >) cw +(MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >) cw +(EO< MOEOObjectiveVector >) cw +(eoObject) cw +(eoPersistent) cw +(eoPrintable) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (FlowShop) 0.5 0 box + (moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >) 0.5 1 box + (MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >) 0.5 2 box + (EO< MOEOObjectiveVector >) 0.5 3 box + (eoObject) 0 4 box + (eoPersistent) 1 4 box + (eoPrintable) 1 5 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +0 0.5 3 out +solid +0 1 4 conn +solid +1 0 4 in +solid +1 1 4 in +solid +0 1 4 out +solid +1 1 5 in diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShop.tex b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShop.tex new file mode 100644 index 000000000..59a46d8fb --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShop.tex @@ -0,0 +1,32 @@ +\section{Flow\-Shop Class Reference} +\label{classFlowShop}\index{FlowShop@{FlowShop}} +Structure of the genotype for the flow-shop scheduling problem: a vector of unsigned int int. + + +{\tt \#include $<$Flow\-Shop.h$>$} + +Inheritance diagram for Flow\-Shop::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3.3871cm]{classFlowShop} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +std::string \bf{class\-Name} () const \label{classFlowShop_eaab263664f0078082e723a905d430f3} + +\begin{CompactList}\small\item\em class name \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Structure of the genotype for the flow-shop scheduling problem: a vector of unsigned int int. + + + +Definition at line 22 of file Flow\-Shop.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +Flow\-Shop.h\item +Flow\-Shop.cpp\end{CompactItemize} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopBenchmarkParser.tex b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopBenchmarkParser.tex new file mode 100644 index 000000000..b80948da4 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopBenchmarkParser.tex @@ -0,0 +1,110 @@ +\section{Flow\-Shop\-Benchmark\-Parser Class Reference} +\label{classFlowShopBenchmarkParser}\index{FlowShopBenchmarkParser@{FlowShopBenchmarkParser}} +Class to handle parameters of a flow-shop instance from a benchmark file. + + +{\tt \#include $<$Flow\-Shop\-Benchmark\-Parser.h$>$} + +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{Flow\-Shop\-Benchmark\-Parser} (const std::string \_\-benchmark\-File\-Name) +\begin{CompactList}\small\item\em Ctor. \item\end{CompactList}\item +const unsigned int \bf{get\-M} ()\label{classFlowShopBenchmarkParser_8d5042c2f8727e235f94c947b2ba00a5} + +\begin{CompactList}\small\item\em the number of machines \item\end{CompactList}\item +const unsigned int \bf{get\-N} ()\label{classFlowShopBenchmarkParser_fe16df4df5104aee3d792e60bb32a66d} + +\begin{CompactList}\small\item\em the number of jobs \item\end{CompactList}\item +const std::vector$<$ std::vector$<$ unsigned int $>$ $>$ \bf{get\-P} ()\label{classFlowShopBenchmarkParser_2df87bf8a18a55266729ab105955d7bf} + +\begin{CompactList}\small\item\em the processing times \item\end{CompactList}\item +const std::vector$<$ unsigned int $>$ \bf{get\-D} ()\label{classFlowShopBenchmarkParser_b362d0042273be436c55637828d8582d} + +\begin{CompactList}\small\item\em the due-dates \item\end{CompactList}\item +void \bf{print\-On} (std::ostream \&\_\-os) const +\begin{CompactList}\small\item\em printing. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +void \bf{init} (const std::string \_\-benchmark\-File\-Name) +\begin{CompactList}\small\item\em Initialisation of the parameters with the data contained in the benchmark file. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +unsigned int \bf{M}\label{classFlowShopBenchmarkParser_4cc02556c751afe32e8800544160c7c7} + +\begin{CompactList}\small\item\em number of machines \item\end{CompactList}\item +unsigned int \bf{N}\label{classFlowShopBenchmarkParser_fb220e40e9f94e3c1d3a7eb437aeffce} + +\begin{CompactList}\small\item\em number of jobs \item\end{CompactList}\item +std::vector$<$ std::vector$<$ unsigned int $>$ $>$ \bf{p}\label{classFlowShopBenchmarkParser_4c1ce3d710b6605ddcc723101b808de5} + +\begin{CompactList}\small\item\em p[i][j] = processing time of job j on machine i \item\end{CompactList}\item +std::vector$<$ unsigned int $>$ \bf{d}\label{classFlowShopBenchmarkParser_8898519f54465b2d23a846053363bf4b} + +\begin{CompactList}\small\item\em d[j] = due-date of the job j \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Class to handle parameters of a flow-shop instance from a benchmark file. + + + +Definition at line 23 of file Flow\-Shop\-Benchmark\-Parser.h. + +\subsection{Constructor \& Destructor Documentation} +\index{FlowShopBenchmarkParser@{Flow\-Shop\-Benchmark\-Parser}!FlowShopBenchmarkParser@{FlowShopBenchmarkParser}} +\index{FlowShopBenchmarkParser@{FlowShopBenchmarkParser}!FlowShopBenchmarkParser@{Flow\-Shop\-Benchmark\-Parser}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Flow\-Shop\-Benchmark\-Parser::Flow\-Shop\-Benchmark\-Parser (const std::string {\em \_\-benchmark\-File\-Name})}\label{classFlowShopBenchmarkParser_2787b88a1be9d4d37438c557bf32f137} + + +Ctor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-benchmark\-File\-Name}]the name of the benchmark file \end{description} +\end{Desc} + + +Definition at line 16 of file Flow\-Shop\-Benchmark\-Parser.cpp. + +References init(). + +\subsection{Member Function Documentation} +\index{FlowShopBenchmarkParser@{Flow\-Shop\-Benchmark\-Parser}!printOn@{printOn}} +\index{printOn@{printOn}!FlowShopBenchmarkParser@{Flow\-Shop\-Benchmark\-Parser}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Flow\-Shop\-Benchmark\-Parser::print\-On (std::ostream \& {\em \_\-os}) const}\label{classFlowShopBenchmarkParser_69c9ba47e774da4b06424a724573265d} + + +printing. + +.. + +Definition at line 46 of file Flow\-Shop\-Benchmark\-Parser.cpp. + +References d, M, N, and p.\index{FlowShopBenchmarkParser@{Flow\-Shop\-Benchmark\-Parser}!init@{init}} +\index{init@{init}!FlowShopBenchmarkParser@{Flow\-Shop\-Benchmark\-Parser}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Flow\-Shop\-Benchmark\-Parser::init (const std::string {\em \_\-benchmark\-File\-Name})\hspace{0.3cm}{\tt [private]}}\label{classFlowShopBenchmarkParser_4e6de6a0ec2859e1a2fb758fb06dc915} + + +Initialisation of the parameters with the data contained in the benchmark file. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-benchmark\-File\-Name}]the name of the benchmark file \end{description} +\end{Desc} + + +Definition at line 64 of file Flow\-Shop\-Benchmark\-Parser.cpp. + +References d, M, N, and p. + +Referenced by Flow\-Shop\-Benchmark\-Parser(). + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +Flow\-Shop\-Benchmark\-Parser.h\item +Flow\-Shop\-Benchmark\-Parser.cpp\end{CompactItemize} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopEval.eps b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopEval.eps new file mode 100644 index 000000000..a523d0b88 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopEval.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 543.478 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 0.92 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(FlowShopEval) cw +(moeoEvalFunc< FlowShop >) cw +(eoEvalFunc< FlowShop >) cw +(eoUF< A1, R >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (FlowShopEval) 0 0 box + (moeoEvalFunc< FlowShop >) 0 1 box + (eoEvalFunc< FlowShop >) 0 2 box + (eoUF< A1, R >) 0 3 box + (eoFunctorBase) 0 4 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in +solid +0 0 3 out +solid +1 0 4 in diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopEval.tex b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopEval.tex new file mode 100644 index 000000000..1e7306dd5 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopEval.tex @@ -0,0 +1,147 @@ +\section{Flow\-Shop\-Eval Class Reference} +\label{classFlowShopEval}\index{FlowShopEval@{FlowShopEval}} +Evaluation of the objective vector a (multi-objective) \doxyref{Flow\-Shop}{p.}{classFlowShop} object. + + +{\tt \#include $<$Flow\-Shop\-Eval.h$>$} + +Inheritance diagram for Flow\-Shop\-Eval::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5cm]{classFlowShopEval} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{Flow\-Shop\-Eval} (unsigned int \_\-M, unsigned int \_\-N, const std::vector$<$ std::vector$<$ unsigned int $>$ $>$ \&\_\-p, const std::vector$<$ unsigned int $>$ \&\_\-d) +\begin{CompactList}\small\item\em Ctor. \item\end{CompactList}\item +void \bf{operator()} (\bf{Flow\-Shop} \&\_\-flowshop) +\begin{CompactList}\small\item\em computation of the multi-objective evaluation of a \doxyref{Flow\-Shop}{p.}{classFlowShop} object \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +double \bf{makespan} (const \bf{Flow\-Shop} \&\_\-flowshop) +\begin{CompactList}\small\item\em computation of the makespan \item\end{CompactList}\item +double \bf{tardiness} (const \bf{Flow\-Shop} \&\_\-flowshop) +\begin{CompactList}\small\item\em computation of the tardiness \item\end{CompactList}\item +std::vector$<$ std::vector$<$ unsigned int $>$ $>$ \bf{completion\-Time} (const \bf{Flow\-Shop} \&\_\-flowshop) +\begin{CompactList}\small\item\em computation of the completion times of a scheduling (for each job on each machine) C[i][j] = completion of the jth job of the scheduling on the ith machine \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +unsigned int \bf{M}\label{classFlowShopEval_9c7c7263d8c04d18d66729f4875d46cd} + +\begin{CompactList}\small\item\em number of machines \item\end{CompactList}\item +unsigned int \bf{N}\label{classFlowShopEval_48c4a108b54c2c949cb649e470c9e8c4} + +\begin{CompactList}\small\item\em number of jobs \item\end{CompactList}\item +std::vector$<$ std::vector$<$ unsigned int $>$ $>$ \bf{p}\label{classFlowShopEval_f4152ec0542e13cbc8f4c4ece284a2b4} + +\begin{CompactList}\small\item\em p[i][j] = processing time of job j on machine i \item\end{CompactList}\item +std::vector$<$ unsigned int $>$ \bf{d}\label{classFlowShopEval_a283f1bfd433ec1bd3a45c46bd6e3ba4} + +\begin{CompactList}\small\item\em d[j] = due-date of the job j \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Evaluation of the objective vector a (multi-objective) \doxyref{Flow\-Shop}{p.}{classFlowShop} object. + + + +Definition at line 23 of file Flow\-Shop\-Eval.h. + +\subsection{Constructor \& Destructor Documentation} +\index{FlowShopEval@{Flow\-Shop\-Eval}!FlowShopEval@{FlowShopEval}} +\index{FlowShopEval@{FlowShopEval}!FlowShopEval@{Flow\-Shop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Flow\-Shop\-Eval::Flow\-Shop\-Eval (unsigned int {\em \_\-M}, unsigned int {\em \_\-N}, const std::vector$<$ std::vector$<$ unsigned int $>$ $>$ \& {\em \_\-p}, const std::vector$<$ unsigned int $>$ \& {\em \_\-d})}\label{classFlowShopEval_f830293ad66a253a4008937fd6d68fce} + + +Ctor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-M}]the number of machines \item[{\em \_\-N}]the number of jobs to schedule \item[{\em \_\-p}]the processing times \item[{\em \_\-d}]the due dates \end{description} +\end{Desc} + + +Definition at line 16 of file Flow\-Shop\-Eval.cpp. + +\subsection{Member Function Documentation} +\index{FlowShopEval@{Flow\-Shop\-Eval}!operator()@{operator()}} +\index{operator()@{operator()}!FlowShopEval@{Flow\-Shop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Flow\-Shop\-Eval::operator() (\bf{Flow\-Shop} \& {\em \_\-flowshop})}\label{classFlowShopEval_d6ea74de6e62c2b104b52aa68b5da3a5} + + +computation of the multi-objective evaluation of a \doxyref{Flow\-Shop}{p.}{classFlowShop} object + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-flowshop}]the \doxyref{Flow\-Shop}{p.}{classFlowShop} object to evaluate \end{description} +\end{Desc} + + +Definition at line 21 of file Flow\-Shop\-Eval.cpp. + +References makespan(), MOEO$<$ MOEOObjective\-Vector, MOEOFitness, MOEODiversity $>$::objective\-Vector(), and tardiness().\index{FlowShopEval@{Flow\-Shop\-Eval}!makespan@{makespan}} +\index{makespan@{makespan}!FlowShopEval@{Flow\-Shop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}double Flow\-Shop\-Eval::makespan (const \bf{Flow\-Shop} \& {\em \_\-flowshop})\hspace{0.3cm}{\tt [private]}}\label{classFlowShopEval_8b383e0c6cfd68fdf61e987b5fc91cf3} + + +computation of the makespan + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-flowshop}]the genotype to evaluate \end{description} +\end{Desc} + + +Definition at line 31 of file Flow\-Shop\-Eval.cpp. + +References completion\-Time(), M, and N. + +Referenced by operator()().\index{FlowShopEval@{Flow\-Shop\-Eval}!tardiness@{tardiness}} +\index{tardiness@{tardiness}!FlowShopEval@{Flow\-Shop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}double Flow\-Shop\-Eval::tardiness (const \bf{Flow\-Shop} \& {\em \_\-flowshop})\hspace{0.3cm}{\tt [private]}}\label{classFlowShopEval_25d04be8fd17b5589fdac732accaaf9e} + + +computation of the tardiness + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-flowshop}]the genotype to evaluate \end{description} +\end{Desc} + + +Definition at line 40 of file Flow\-Shop\-Eval.cpp. + +References completion\-Time(), d, M, and N. + +Referenced by operator()().\index{FlowShopEval@{Flow\-Shop\-Eval}!completionTime@{completionTime}} +\index{completionTime@{completionTime}!FlowShopEval@{Flow\-Shop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}std::vector$<$ std::vector$<$ unsigned int $>$ $>$ Flow\-Shop\-Eval::completion\-Time (const \bf{Flow\-Shop} \& {\em \_\-flowshop})\hspace{0.3cm}{\tt [private]}}\label{classFlowShopEval_84cfc6f7bee1c0e4b1a29ca99e3c129b} + + +computation of the completion times of a scheduling (for each job on each machine) C[i][j] = completion of the jth job of the scheduling on the ith machine + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-flowshop}]the genotype to evaluate \end{description} +\end{Desc} + + +Definition at line 53 of file Flow\-Shop\-Eval.cpp. + +References M, N, and p. + +Referenced by makespan(), and tardiness(). + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +Flow\-Shop\-Eval.h\item +Flow\-Shop\-Eval.cpp\end{CompactItemize} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopInit.eps b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopInit.eps new file mode 100644 index 000000000..1ad12f21f --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopInit.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 615.385 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 0.8125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(FlowShopInit) cw +(eoInit< FlowShop >) cw +(eoUF< A1, R >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (FlowShopInit) 0 0 box + (eoInit< FlowShop >) 0 1 box + (eoUF< A1, R >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopInit.tex b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopInit.tex new file mode 100644 index 000000000..0ae13d5d8 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopInit.tex @@ -0,0 +1,75 @@ +\section{Flow\-Shop\-Init Class Reference} +\label{classFlowShopInit}\index{FlowShopInit@{FlowShopInit}} +Initialization of a random genotype built by the default constructor of the \doxyref{Flow\-Shop}{p.}{classFlowShop} class. + + +{\tt \#include $<$Flow\-Shop\-Init.h$>$} + +Inheritance diagram for Flow\-Shop\-Init::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classFlowShopInit} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{Flow\-Shop\-Init} (unsigned int \_\-N) +\begin{CompactList}\small\item\em Ctor. \item\end{CompactList}\item +void \bf{operator()} (\bf{Flow\-Shop} \&\_\-flowshop) +\begin{CompactList}\small\item\em builds a random genotype \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +unsigned int \bf{N}\label{classFlowShopInit_3bf7c402441e5bba3397377630e6ff4c} + +\begin{CompactList}\small\item\em the number of jobs (size of a scheduling vector) \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Initialization of a random genotype built by the default constructor of the \doxyref{Flow\-Shop}{p.}{classFlowShop} class. + + + +Definition at line 22 of file Flow\-Shop\-Init.h. + +\subsection{Constructor \& Destructor Documentation} +\index{FlowShopInit@{Flow\-Shop\-Init}!FlowShopInit@{FlowShopInit}} +\index{FlowShopInit@{FlowShopInit}!FlowShopInit@{Flow\-Shop\-Init}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Flow\-Shop\-Init::Flow\-Shop\-Init (unsigned int {\em \_\-N})}\label{classFlowShopInit_8ede459984d5de13c6a181c72cf4551e} + + +Ctor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-N}]the number of jobs to schedule \end{description} +\end{Desc} + + +Definition at line 16 of file Flow\-Shop\-Init.cpp. + +\subsection{Member Function Documentation} +\index{FlowShopInit@{Flow\-Shop\-Init}!operator()@{operator()}} +\index{operator()@{operator()}!FlowShopInit@{Flow\-Shop\-Init}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Flow\-Shop\-Init::operator() (\bf{Flow\-Shop} \& {\em \_\-flowshop})}\label{classFlowShopInit_3df0d9e3834cdfa494683df7e8646025} + + +builds a random genotype + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-flowshop}]a genotype that has been default-constructed \end{description} +\end{Desc} + + +Definition at line 20 of file Flow\-Shop\-Init.cpp. + +References MOEO$<$ MOEOObjective\-Vector, MOEOFitness, MOEODiversity $>$::invalidate(), N, eo\-Rng::uniform(), and moeo\-Vector$<$ MOEOObjective\-Vector, MOEOFitness, MOEODiversity, Gene\-Type $>$::value(). + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +Flow\-Shop\-Init.h\item +Flow\-Shop\-Init.cpp\end{CompactItemize} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopObjectiveVectorTraits.eps b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopObjectiveVectorTraits.eps new file mode 100644 index 000000000..2884e0a07 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopObjectiveVectorTraits.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 201.005 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.4875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(FlowShopObjectiveVectorTraits) cw +(moeoObjectiveVectorTraits) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (FlowShopObjectiveVectorTraits) 0 0 box + (moeoObjectiveVectorTraits) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopObjectiveVectorTraits.tex b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopObjectiveVectorTraits.tex new file mode 100644 index 000000000..828d5a702 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopObjectiveVectorTraits.tex @@ -0,0 +1,67 @@ +\section{Flow\-Shop\-Objective\-Vector\-Traits Class Reference} +\label{classFlowShopObjectiveVectorTraits}\index{FlowShopObjectiveVectorTraits@{FlowShopObjectiveVectorTraits}} +Definition of the objective vector traits for multi-objective flow-shop problems. + + +{\tt \#include $<$Flow\-Shop\-Objective\-Vector\-Traits.h$>$} + +Inheritance diagram for Flow\-Shop\-Objective\-Vector\-Traits::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classFlowShopObjectiveVectorTraits} +\end{center} +\end{figure} +\subsection*{Static Public Member Functions} +\begin{CompactItemize} +\item +static bool \bf{minimizing} (int \_\-i) +\begin{CompactList}\small\item\em Returns true if the \_\-ith objective have to be minimzed. \item\end{CompactList}\item +static bool \bf{maximizing} (int \_\-i) +\begin{CompactList}\small\item\em Returns true if the \_\-ith objective have to be maximzed. \item\end{CompactList}\item +static unsigned int \bf{n\-Objectives} ()\label{classFlowShopObjectiveVectorTraits_76ebe7639b502980bc683ab404b69c10} + +\begin{CompactList}\small\item\em Returns the number of objectives. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Definition of the objective vector traits for multi-objective flow-shop problems. + + + +Definition at line 21 of file Flow\-Shop\-Objective\-Vector\-Traits.h. + +\subsection{Member Function Documentation} +\index{FlowShopObjectiveVectorTraits@{Flow\-Shop\-Objective\-Vector\-Traits}!minimizing@{minimizing}} +\index{minimizing@{minimizing}!FlowShopObjectiveVectorTraits@{Flow\-Shop\-Objective\-Vector\-Traits}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool Flow\-Shop\-Objective\-Vector\-Traits::minimizing (int {\em \_\-i})\hspace{0.3cm}{\tt [static]}}\label{classFlowShopObjectiveVectorTraits_e1a0f5be1782b9f9ce08128a404a1fa8} + + +Returns true if the \_\-ith objective have to be minimzed. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-i}]index of the objective \end{description} +\end{Desc} + + +Definition at line 16 of file Flow\-Shop\-Objective\-Vector\-Traits.cpp.\index{FlowShopObjectiveVectorTraits@{Flow\-Shop\-Objective\-Vector\-Traits}!maximizing@{maximizing}} +\index{maximizing@{maximizing}!FlowShopObjectiveVectorTraits@{Flow\-Shop\-Objective\-Vector\-Traits}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool Flow\-Shop\-Objective\-Vector\-Traits::maximizing (int {\em \_\-i})\hspace{0.3cm}{\tt [static]}}\label{classFlowShopObjectiveVectorTraits_229fbb4cc19d289637891c1b49f3eaba} + + +Returns true if the \_\-ith objective have to be maximzed. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-i}]index of the objective \end{description} +\end{Desc} + + +Definition at line 22 of file Flow\-Shop\-Objective\-Vector\-Traits.cpp. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +Flow\-Shop\-Objective\-Vector\-Traits.h\item +Flow\-Shop\-Objective\-Vector\-Traits.cpp\end{CompactItemize} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpCrossoverQuad.eps b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpCrossoverQuad.eps new file mode 100644 index 000000000..aa48795f7 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpCrossoverQuad.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 156.25 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.2 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(FlowShopOpCrossoverQuad) cw +(eoQuadOp< FlowShop >) cw +(eoOp< EOType >) cw +(eoBF< FlowShop &, FlowShop &, bool >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (FlowShopOpCrossoverQuad) 0.5 0 box + (eoQuadOp< FlowShop >) 0.5 1 box + (eoOp< EOType >) 0 2 box + (eoBF< FlowShop &, FlowShop &, bool >) 1 2 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpCrossoverQuad.tex b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpCrossoverQuad.tex new file mode 100644 index 000000000..058ee679e --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpCrossoverQuad.tex @@ -0,0 +1,76 @@ +\section{Flow\-Shop\-Op\-Crossover\-Quad Class Reference} +\label{classFlowShopOpCrossoverQuad}\index{FlowShopOpCrossoverQuad@{FlowShopOpCrossoverQuad}} +Quadratic crossover operator for flow-shop (modify the both genotypes). + + +{\tt \#include $<$Flow\-Shop\-Op\-Crossover\-Quad.h$>$} + +Inheritance diagram for Flow\-Shop\-Op\-Crossover\-Quad::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classFlowShopOpCrossoverQuad} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +std::string \bf{class\-Name} () const \label{classFlowShopOpCrossoverQuad_60ac69b87970b7000980f65aa6ead44a} + +\begin{CompactList}\small\item\em the class name (used to display statistics) \item\end{CompactList}\item +bool \bf{operator()} (\bf{Flow\-Shop} \&\_\-flowshop1, \bf{Flow\-Shop} \&\_\-flowshop2) +\begin{CompactList}\small\item\em eo\-Quad crossover - \_\-flowshop1 and \_\-flowshop2 are the (future) offspring, i.e. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +\bf{Flow\-Shop} \bf{generate\-Offspring} (const \bf{Flow\-Shop} \&\_\-parent1, const \bf{Flow\-Shop} \&\_\-parent2, unsigned int \_\-point1, unsigned int \_\-point2) +\begin{CompactList}\small\item\em generation of an offspring by a 2 points crossover \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Quadratic crossover operator for flow-shop (modify the both genotypes). + + + +Definition at line 22 of file Flow\-Shop\-Op\-Crossover\-Quad.h. + +\subsection{Member Function Documentation} +\index{FlowShopOpCrossoverQuad@{Flow\-Shop\-Op\-Crossover\-Quad}!operator()@{operator()}} +\index{operator()@{operator()}!FlowShopOpCrossoverQuad@{Flow\-Shop\-Op\-Crossover\-Quad}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool Flow\-Shop\-Op\-Crossover\-Quad::operator() (\bf{Flow\-Shop} \& {\em \_\-flowshop1}, \bf{Flow\-Shop} \& {\em \_\-flowshop2})\hspace{0.3cm}{\tt [virtual]}}\label{classFlowShopOpCrossoverQuad_92f70807bea24d3c233af580e2c55e3a} + + +eo\-Quad crossover - \_\-flowshop1 and \_\-flowshop2 are the (future) offspring, i.e. + +\_\-copies\_\- of the parents \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-flowshop1}]the first parent \item[{\em \_\-flowshop2}]the second parent \end{description} +\end{Desc} + + +Implements \bf{eo\-BF$<$ Flow\-Shop \&, Flow\-Shop \&, bool $>$}. + +Definition at line 22 of file Flow\-Shop\-Op\-Crossover\-Quad.cpp. + +References generate\-Offspring(), eo\-Rng::random(), and moeo\-Vector$<$ MOEOObjective\-Vector, MOEOFitness, MOEODiversity, Gene\-Type $>$::value().\index{FlowShopOpCrossoverQuad@{Flow\-Shop\-Op\-Crossover\-Quad}!generateOffspring@{generateOffspring}} +\index{generateOffspring@{generateOffspring}!FlowShopOpCrossoverQuad@{Flow\-Shop\-Op\-Crossover\-Quad}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\bf{Flow\-Shop} Flow\-Shop\-Op\-Crossover\-Quad::generate\-Offspring (const \bf{Flow\-Shop} \& {\em \_\-parent1}, const \bf{Flow\-Shop} \& {\em \_\-parent2}, unsigned int {\em \_\-point1}, unsigned int {\em \_\-point2})\hspace{0.3cm}{\tt [private]}}\label{classFlowShopOpCrossoverQuad_cbc2f344a0a29861900f4846597564c3} + + +generation of an offspring by a 2 points crossover + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-parent1}]the first parent \item[{\em \_\-parent2}]the second parent \item[{\em \_\-point1}]the first point \item[{\em \_\-point2}]the second point \end{description} +\end{Desc} + + +Definition at line 54 of file Flow\-Shop\-Op\-Crossover\-Quad.cpp. + +Referenced by operator()(). + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +Flow\-Shop\-Op\-Crossover\-Quad.h\item +Flow\-Shop\-Op\-Crossover\-Quad.cpp\end{CompactItemize} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpMutationExchange.eps b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpMutationExchange.eps new file mode 100644 index 000000000..bf5f5bbe7 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpMutationExchange.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 203.046 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.4625 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(FlowShopOpMutationExchange) cw +(eoMonOp< FlowShop >) cw +(eoOp< EOType >) cw +(eoUF< FlowShop &, bool >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (FlowShopOpMutationExchange) 0.5 0 box + (eoMonOp< FlowShop >) 0.5 1 box + (eoOp< EOType >) 0 2 box + (eoUF< FlowShop &, bool >) 1 2 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpMutationExchange.tex b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpMutationExchange.tex new file mode 100644 index 000000000..0faf123cc --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpMutationExchange.tex @@ -0,0 +1,55 @@ +\section{Flow\-Shop\-Op\-Mutation\-Exchange Class Reference} +\label{classFlowShopOpMutationExchange}\index{FlowShopOpMutationExchange@{FlowShopOpMutationExchange}} +Exchange mutation operator for the flow-shop. + + +{\tt \#include $<$Flow\-Shop\-Op\-Mutation\-Exchange.h$>$} + +Inheritance diagram for Flow\-Shop\-Op\-Mutation\-Exchange::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classFlowShopOpMutationExchange} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +std::string \bf{class\-Name} () const \label{classFlowShopOpMutationExchange_36a926c9fe21346db26fadf1d50c1c7a} + +\begin{CompactList}\small\item\em the class name (used to display statistics) \item\end{CompactList}\item +bool \bf{operator()} (\bf{Flow\-Shop} \&\_\-flowshop) +\begin{CompactList}\small\item\em modifies the parent with an exchange mutation \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Exchange mutation operator for the flow-shop. + + + +Definition at line 22 of file Flow\-Shop\-Op\-Mutation\-Exchange.h. + +\subsection{Member Function Documentation} +\index{FlowShopOpMutationExchange@{Flow\-Shop\-Op\-Mutation\-Exchange}!operator()@{operator()}} +\index{operator()@{operator()}!FlowShopOpMutationExchange@{Flow\-Shop\-Op\-Mutation\-Exchange}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool Flow\-Shop\-Op\-Mutation\-Exchange::operator() (\bf{Flow\-Shop} \& {\em \_\-flowshop})\hspace{0.3cm}{\tt [virtual]}}\label{classFlowShopOpMutationExchange_bdb2e1d937d788c50f04226265c848bd} + + +modifies the parent with an exchange mutation + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-flowshop}]the parent genotype (will be modified) \end{description} +\end{Desc} + + +Implements \bf{eo\-UF$<$ Flow\-Shop \&, bool $>$}. + +Definition at line 22 of file Flow\-Shop\-Op\-Mutation\-Exchange.cpp. + +References eo\-Rng::random(), and moeo\-Vector$<$ MOEOObjective\-Vector, MOEOFitness, MOEODiversity, Gene\-Type $>$::value(). + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +Flow\-Shop\-Op\-Mutation\-Exchange.h\item +Flow\-Shop\-Op\-Mutation\-Exchange.cpp\end{CompactItemize} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpMutationShift.eps b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpMutationShift.eps new file mode 100644 index 000000000..02aaa4f09 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpMutationShift.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 225.989 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.2125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(FlowShopOpMutationShift) cw +(eoMonOp< FlowShop >) cw +(eoOp< EOType >) cw +(eoUF< FlowShop &, bool >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (FlowShopOpMutationShift) 0.5 0 box + (eoMonOp< FlowShop >) 0.5 1 box + (eoOp< EOType >) 0 2 box + (eoUF< FlowShop &, bool >) 1 2 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpMutationShift.tex b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpMutationShift.tex new file mode 100644 index 000000000..1c2c41671 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classFlowShopOpMutationShift.tex @@ -0,0 +1,55 @@ +\section{Flow\-Shop\-Op\-Mutation\-Shift Class Reference} +\label{classFlowShopOpMutationShift}\index{FlowShopOpMutationShift@{FlowShopOpMutationShift}} +Shift mutation operator for flow-shop. + + +{\tt \#include $<$Flow\-Shop\-Op\-Mutation\-Shift.h$>$} + +Inheritance diagram for Flow\-Shop\-Op\-Mutation\-Shift::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classFlowShopOpMutationShift} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +std::string \bf{class\-Name} () const \label{classFlowShopOpMutationShift_dd1d710568978d1d4bb8c6f3925da4c6} + +\begin{CompactList}\small\item\em the class name (used to display statistics) \item\end{CompactList}\item +bool \bf{operator()} (\bf{Flow\-Shop} \&\_\-flowshop) +\begin{CompactList}\small\item\em modifies the parent with a shift mutation \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Shift mutation operator for flow-shop. + + + +Definition at line 22 of file Flow\-Shop\-Op\-Mutation\-Shift.h. + +\subsection{Member Function Documentation} +\index{FlowShopOpMutationShift@{Flow\-Shop\-Op\-Mutation\-Shift}!operator()@{operator()}} +\index{operator()@{operator()}!FlowShopOpMutationShift@{Flow\-Shop\-Op\-Mutation\-Shift}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool Flow\-Shop\-Op\-Mutation\-Shift::operator() (\bf{Flow\-Shop} \& {\em \_\-flowshop})\hspace{0.3cm}{\tt [virtual]}}\label{classFlowShopOpMutationShift_c000b017e75ddee3b6fe9db8ea5ddd5b} + + +modifies the parent with a shift mutation + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-flowshop}]the parent genotype (will be modified) \end{description} +\end{Desc} + + +Implements \bf{eo\-UF$<$ Flow\-Shop \&, bool $>$}. + +Definition at line 22 of file Flow\-Shop\-Op\-Mutation\-Shift.cpp. + +References eo\-Rng::random(), and moeo\-Vector$<$ MOEOObjective\-Vector, MOEOFitness, MOEODiversity, Gene\-Type $>$::value(). + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +Flow\-Shop\-Op\-Mutation\-Shift.h\item +Flow\-Shop\-Op\-Mutation\-Shift.cpp\end{CompactItemize} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1.eps b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1.eps new file mode 100644 index 000000000..07b0240e6 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1.eps @@ -0,0 +1,233 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 147.059 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.4 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 7 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Sch1) cw +(moeoRealVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity >) cw +(moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double >) cw +(MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >) cw +(EO< MOEOObjectiveVector >) cw +(eoObject) cw +(eoPersistent) cw +(eoPrintable) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Sch1) 0.5 0 box + (moeoRealVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity >) 0.5 1 box + (moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double >) 0.5 2 box + (MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >) 0.5 3 box + (EO< MOEOObjectiveVector >) 0.5 4 box + (eoObject) 0 5 box + (eoPersistent) 1 5 box + (eoPrintable) 1 6 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +0 0.5 3 out +solid +1 0.5 4 in +solid +0 0.5 4 out +solid +0 1 5 conn +solid +1 0 5 in +solid +1 1 5 in +solid +0 1 5 out +solid +1 1 6 in diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1.tex b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1.tex new file mode 100644 index 000000000..ab886bbb8 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1.tex @@ -0,0 +1,26 @@ +\section{Sch1 Class Reference} +\label{classSch1}\index{Sch1@{Sch1}} +Inheritance diagram for Sch1::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4.11765cm]{classSch1} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{Sch1} ()\label{classSch1_3ddc72f40539bfe0d5bb8d977b6655c0} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 44 of file Sch1.cpp. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Sch1.cpp\end{CompactItemize} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1Eval.eps b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1Eval.eps new file mode 100644 index 000000000..88fc1f312 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1Eval.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 636.943 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 0.785 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Sch1Eval) cw +(moeoEvalFunc< Sch1 >) cw +(eoEvalFunc< Sch1 >) cw +(eoUF< A1, R >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Sch1Eval) 0 0 box + (moeoEvalFunc< Sch1 >) 0 1 box + (eoEvalFunc< Sch1 >) 0 2 box + (eoUF< A1, R >) 0 3 box + (eoFunctorBase) 0 4 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in +solid +0 0 3 out +solid +1 0 4 in diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1Eval.tex b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1Eval.tex new file mode 100644 index 000000000..cb664fb89 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1Eval.tex @@ -0,0 +1,26 @@ +\section{Sch1Eval Class Reference} +\label{classSch1Eval}\index{Sch1Eval@{Sch1Eval}} +Inheritance diagram for Sch1Eval::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5cm]{classSch1Eval} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +void \bf{operator()} (\bf{Sch1} \&\_\-sch1)\label{classSch1Eval_4f806a964f7bafa9e4fcca45da458c98} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 52 of file Sch1.cpp. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Sch1.cpp\end{CompactItemize} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1ObjectiveVectorTraits.eps b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1ObjectiveVectorTraits.eps new file mode 100644 index 000000000..a95749c2a --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1ObjectiveVectorTraits.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 231.214 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.1625 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Sch1ObjectiveVectorTraits) cw +(moeoObjectiveVectorTraits) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Sch1ObjectiveVectorTraits) 0 0 box + (moeoObjectiveVectorTraits) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1ObjectiveVectorTraits.tex b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1ObjectiveVectorTraits.tex new file mode 100644 index 000000000..1455866e5 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classSch1ObjectiveVectorTraits.tex @@ -0,0 +1,32 @@ +\section{Sch1Objective\-Vector\-Traits Class Reference} +\label{classSch1ObjectiveVectorTraits}\index{Sch1ObjectiveVectorTraits@{Sch1ObjectiveVectorTraits}} +Inheritance diagram for Sch1Objective\-Vector\-Traits::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classSch1ObjectiveVectorTraits} +\end{center} +\end{figure} +\subsection*{Static Public Member Functions} +\begin{CompactItemize} +\item +static bool \bf{minimizing} (int i)\label{classSch1ObjectiveVectorTraits_455ac35e419ad21c0a4ba4bbd2768ca5} + +\item +static bool \bf{maximizing} (int i)\label{classSch1ObjectiveVectorTraits_a7de212f3346dde550757e8a412baa4d} + +\item +static unsigned int \bf{n\-Objectives} ()\label{classSch1ObjectiveVectorTraits_54ae04aa8eb052223778ecae175be95b} + +\begin{CompactList}\small\item\em Returns the number of objectives. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 21 of file Sch1.cpp. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Sch1.cpp\end{CompactItemize} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIBMOLS.eps b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIBMOLS.eps new file mode 100644 index 000000000..e4e6c44f5 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIBMOLS.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 101.266 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.9375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoIBMOLS< MOEOT, Move >) cw +(moeoLS< MOEOT, eoPop< MOEOT > & >) cw +(moeoAlgo) cw +(eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoIBMOLS< MOEOT, Move >) 0.5 0 box + (moeoLS< MOEOT, eoPop< MOEOT > & >) 0.5 1 box + (moeoAlgo) 0 2 box + (eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void >) 1 2 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIBMOLS.tex b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIBMOLS.tex new file mode 100644 index 000000000..3ba2aec88 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIBMOLS.tex @@ -0,0 +1,147 @@ +\section{moeo\-IBMOLS$<$ MOEOT, Move $>$ Class Template Reference} +\label{classmoeoIBMOLS}\index{moeoIBMOLS@{moeoIBMOLS}} +Indicator-Based Multi-Objective Local Search (IBMOLS) as described in Basseur M., Burke K. + + +{\tt \#include $<$moeo\-IBMOLS.h$>$} + +Inheritance diagram for moeo\-IBMOLS$<$ MOEOT, Move $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.83544cm]{classmoeoIBMOLS} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef MOEOT::Objective\-Vector \bf{Objective\-Vector}\label{classmoeoIBMOLS_d3433001dcc9a6e2a967aa5d64163935} + +\begin{CompactList}\small\item\em The type of objective vector. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{moeo\-IBMOLS} (mo\-Move\-Init$<$ Move $>$ \&\_\-move\-Init, mo\-Next\-Move$<$ Move $>$ \&\_\-next\-Move, \bf{eo\-Eval\-Func}$<$ MOEOT $>$ \&\_\-eval, \bf{moeo\-Move\-Incr\-Eval}$<$ Move $>$ \&\_\-move\-Incr\-Eval, \bf{moeo\-Binary\-Indicator\-Based\-Fitness\-Assignment}$<$ MOEOT $>$ \&\_\-fitness\-Assignment, \bf{eo\-Continue}$<$ MOEOT $>$ \&\_\-continuator) +\begin{CompactList}\small\item\em Ctor. \item\end{CompactList}\item +void \bf{operator()} (\bf{eo\-Pop}$<$ MOEOT $>$ \&\_\-pop, \bf{moeo\-Archive}$<$ MOEOT $>$ \&\_\-arch) +\begin{CompactList}\small\item\em Apply the local search until a local archive does not change or another stopping criteria is met and update the archive \_\-arch with new non-dominated solutions. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +void \bf{one\-Step} (\bf{eo\-Pop}$<$ MOEOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em Apply one step of the local search to the population \_\-pop. \item\end{CompactList}\item +void \bf{new\_\-one\-Step} (\bf{eo\-Pop}$<$ MOEOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em Apply one step of the local search to the population \_\-pop. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +mo\-Move\-Init$<$ Move $>$ \& \bf{move\-Init}\label{classmoeoIBMOLS_b4b4908b893edd52d6fa24085d2a89e5} + +\begin{CompactList}\small\item\em the move initializer \item\end{CompactList}\item +mo\-Next\-Move$<$ Move $>$ \& \bf{next\-Move}\label{classmoeoIBMOLS_8b8ebbd6eb6c82caa796160b4be2a86b} + +\begin{CompactList}\small\item\em the neighborhood explorer \item\end{CompactList}\item +\bf{eo\-Eval\-Func}$<$ MOEOT $>$ \& \bf{eval}\label{classmoeoIBMOLS_e9acda4b2f61f8960109a8c6fd52551e} + +\begin{CompactList}\small\item\em the full evaluation \item\end{CompactList}\item +\bf{moeo\-Move\-Incr\-Eval}$<$ Move $>$ \& \bf{move\-Incr\-Eval}\label{classmoeoIBMOLS_6c38636061bd03c4be809277e2dc257a} + +\begin{CompactList}\small\item\em the incremental evaluation \item\end{CompactList}\item +\bf{moeo\-Binary\-Indicator\-Based\-Fitness\-Assignment}$<$ MOEOT $>$ \& \bf{fitness\-Assignment}\label{classmoeoIBMOLS_0c858da33922736b74d9875766cec9d7} + +\begin{CompactList}\small\item\em the fitness assignment strategy \item\end{CompactList}\item +\bf{eo\-Continue}$<$ MOEOT $>$ \& \bf{continuator}\label{classmoeoIBMOLS_c15985c0bb5d9ba835f35d99d7c42b14} + +\begin{CompactList}\small\item\em the stopping criteria \item\end{CompactList}\end{CompactItemize} +\subsection*{Classes} +\begin{CompactItemize} +\item +class \bf{One\-Objective\-Comparator} +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class MOEOT, class Move$>$ class moeo\-IBMOLS$<$ MOEOT, Move $>$} + +Indicator-Based Multi-Objective Local Search (IBMOLS) as described in Basseur M., Burke K. + +: \char`\"{}Indicator-Based Multi-Objective Local Search\char`\"{} (2007). + + + +Definition at line 33 of file moeo\-IBMOLS.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moeoIBMOLS@{moeo\-IBMOLS}!moeoIBMOLS@{moeoIBMOLS}} +\index{moeoIBMOLS@{moeoIBMOLS}!moeoIBMOLS@{moeo\-IBMOLS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT, class Move$>$ \bf{moeo\-IBMOLS}$<$ MOEOT, Move $>$::\bf{moeo\-IBMOLS} (mo\-Move\-Init$<$ Move $>$ \& {\em \_\-move\-Init}, mo\-Next\-Move$<$ Move $>$ \& {\em \_\-next\-Move}, \bf{eo\-Eval\-Func}$<$ MOEOT $>$ \& {\em \_\-eval}, \bf{moeo\-Move\-Incr\-Eval}$<$ Move $>$ \& {\em \_\-move\-Incr\-Eval}, \bf{moeo\-Binary\-Indicator\-Based\-Fitness\-Assignment}$<$ MOEOT $>$ \& {\em \_\-fitness\-Assignment}, \bf{eo\-Continue}$<$ MOEOT $>$ \& {\em \_\-continuator})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoIBMOLS_6d6a39ad3d5e4c298d450d801098e274} + + +Ctor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move\-Init}]the move initializer \item[{\em \_\-next\-Move}]the neighborhood explorer \item[{\em \_\-eval}]the full evaluation \item[{\em \_\-move\-Incr\-Eval}]the incremental evaluation \item[{\em \_\-fitness\-Assignment}]the fitness assignment strategy \item[{\em \_\-continuator}]the stopping criteria \end{description} +\end{Desc} + + +Definition at line 50 of file moeo\-IBMOLS.h. + +\subsection{Member Function Documentation} +\index{moeoIBMOLS@{moeo\-IBMOLS}!operator()@{operator()}} +\index{operator()@{operator()}!moeoIBMOLS@{moeo\-IBMOLS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT, class Move$>$ void \bf{moeo\-IBMOLS}$<$ MOEOT, Move $>$::operator() (\bf{eo\-Pop}$<$ MOEOT $>$ \& {\em \_\-pop}, \bf{moeo\-Archive}$<$ MOEOT $>$ \& {\em \_\-arch})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmoeoIBMOLS_fd788bbc4f956dec932dba2a4d4479b6} + + +Apply the local search until a local archive does not change or another stopping criteria is met and update the archive \_\-arch with new non-dominated solutions. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]the initial population \item[{\em \_\-arch}]the (updated) archive \end{description} +\end{Desc} + + +Implements \bf{eo\-BF$<$ eo\-Pop$<$ MOEOT $>$ \&, moeo\-Archive$<$ MOEOT $>$ \&, void $>$}. + +Definition at line 73 of file moeo\-IBMOLS.h. + +References moeo\-IBMOLS$<$ MOEOT, Move $>$::continuator, moeo\-Archive$<$ MOEOT $>$::equals(), moeo\-IBMOLS$<$ MOEOT, Move $>$::fitness\-Assignment, moeo\-IBMOLS$<$ MOEOT, Move $>$::one\-Step(), and moeo\-Archive$<$ MOEOT $>$::update().\index{moeoIBMOLS@{moeo\-IBMOLS}!oneStep@{oneStep}} +\index{oneStep@{oneStep}!moeoIBMOLS@{moeo\-IBMOLS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT, class Move$>$ void \bf{moeo\-IBMOLS}$<$ MOEOT, Move $>$::one\-Step (\bf{eo\-Pop}$<$ MOEOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, private]}}\label{classmoeoIBMOLS_fce770398602972b5d67c52638687d43} + + +Apply one step of the local search to the population \_\-pop. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]the population \end{description} +\end{Desc} + + +Definition at line 120 of file moeo\-IBMOLS.h. + +References moeo\-IBMOLS$<$ MOEOT, Move $>$::continuator, moeo\-IBMOLS$<$ MOEOT, Move $>$::fitness\-Assignment, moeo\-IBMOLS$<$ MOEOT, Move $>$::move\-Incr\-Eval, moeo\-IBMOLS$<$ MOEOT, Move $>$::move\-Init, and moeo\-IBMOLS$<$ MOEOT, Move $>$::next\-Move. + +Referenced by moeo\-IBMOLS$<$ MOEOT, Move $>$::operator()().\index{moeoIBMOLS@{moeo\-IBMOLS}!new_oneStep@{new\_\-oneStep}} +\index{new_oneStep@{new\_\-oneStep}!moeoIBMOLS@{moeo\-IBMOLS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT, class Move$>$ void \bf{moeo\-IBMOLS}$<$ MOEOT, Move $>$::new\_\-one\-Step (\bf{eo\-Pop}$<$ MOEOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, private]}}\label{classmoeoIBMOLS_9d811733d8e7508a7c48615c8ff0f990} + + +Apply one step of the local search to the population \_\-pop. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]the population \end{description} +\end{Desc} + + +Definition at line 304 of file moeo\-IBMOLS.h. + +References moeo\-IBMOLS$<$ MOEOT, Move $>$::continuator, moeo\-IBMOLS$<$ MOEOT, Move $>$::fitness\-Assignment, moeo\-IBMOLS$<$ MOEOT, Move $>$::move\-Incr\-Eval, moeo\-IBMOLS$<$ MOEOT, Move $>$::move\-Init, and moeo\-IBMOLS$<$ MOEOT, Move $>$::next\-Move. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-IBMOLS.h\end{CompactItemize} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIBMOLS_1_1OneObjectiveComparator.eps b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIBMOLS_1_1OneObjectiveComparator.eps new file mode 100644 index 000000000..ffa490e53 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIBMOLS_1_1OneObjectiveComparator.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 223.464 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.2375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator) cw +(moeoComparator< MOEOT >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator) 0 0 box + (moeoComparator< MOEOT >) 0 1 box + (eoBF< A1, A2, R >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIBMOLS_1_1OneObjectiveComparator.tex b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIBMOLS_1_1OneObjectiveComparator.tex new file mode 100644 index 000000000..08cd609bb --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIBMOLS_1_1OneObjectiveComparator.tex @@ -0,0 +1,37 @@ +\section{moeo\-IBMOLS$<$ MOEOT, Move $>$::One\-Objective\-Comparator Class Reference} +\label{classmoeoIBMOLS_1_1OneObjectiveComparator}\index{moeoIBMOLS::OneObjectiveComparator@{moeoIBMOLS::OneObjectiveComparator}} +Inheritance diagram for moeo\-IBMOLS$<$ MOEOT, Move $>$::One\-Objective\-Comparator::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmoeoIBMOLS_1_1OneObjectiveComparator} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{One\-Objective\-Comparator} (unsigned int \_\-obj)\label{classmoeoIBMOLS_1_1OneObjectiveComparator_09ee419d143aa29bb05d48c358655bb1} + +\item +const bool \bf{operator()} (const MOEOT \&\_\-moeo1, const MOEOT \&\_\-moeo2)\label{classmoeoIBMOLS_1_1OneObjectiveComparator_44685d0ab08fede366bb404fe7f36302} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +unsigned int \bf{obj}\label{classmoeoIBMOLS_1_1OneObjectiveComparator_724ca0379e42fdffe4ec0d788cd52f43} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class MOEOT, class Move$>$ class moeo\-IBMOLS$<$ MOEOT, Move $>$::One\-Objective\-Comparator} + + + + + +Definition at line 462 of file moeo\-IBMOLS.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-IBMOLS.h\end{CompactItemize} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIteratedIBMOLS.eps b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIteratedIBMOLS.eps new file mode 100644 index 000000000..9957b08e2 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIteratedIBMOLS.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 101.266 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.9375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoIteratedIBMOLS< MOEOT, Move >) cw +(moeoLS< MOEOT, eoPop< MOEOT > & >) cw +(moeoAlgo) cw +(eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoIteratedIBMOLS< MOEOT, Move >) 0.5 0 box + (moeoLS< MOEOT, eoPop< MOEOT > & >) 0.5 1 box + (moeoAlgo) 0 2 box + (eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void >) 1 2 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIteratedIBMOLS.tex b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIteratedIBMOLS.tex new file mode 100644 index 000000000..b0e826ed2 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoIteratedIBMOLS.tex @@ -0,0 +1,124 @@ +\section{moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$ Class Template Reference} +\label{classmoeoIteratedIBMOLS}\index{moeoIteratedIBMOLS@{moeoIteratedIBMOLS}} +Iterated version of IBMOLS as described in Basseur M., Burke K. + + +{\tt \#include $<$moeo\-Iterated\-IBMOLS.h$>$} + +Inheritance diagram for moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.83544cm]{classmoeoIteratedIBMOLS} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef MOEOT::Objective\-Vector \bf{Objective\-Vector}\label{classmoeoIteratedIBMOLS_bc0f8dff81be56b23376995aace92a01} + +\begin{CompactList}\small\item\em The type of objective vector. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{moeo\-Iterated\-IBMOLS} (mo\-Move\-Init$<$ Move $>$ \&\_\-move\-Init, mo\-Next\-Move$<$ Move $>$ \&\_\-next\-Move, \bf{eo\-Eval\-Func}$<$ MOEOT $>$ \&\_\-eval, \bf{moeo\-Move\-Incr\-Eval}$<$ Move $>$ \&\_\-move\-Incr\-Eval, \bf{moeo\-Binary\-Indicator\-Based\-Fitness\-Assignment}$<$ MOEOT $>$ \&\_\-fitness\-Assignment, \bf{eo\-Continue}$<$ MOEOT $>$ \&\_\-continuator, \bf{eo\-Mon\-Op}$<$ MOEOT $>$ \&\_\-mon\-Op, \bf{eo\-Mon\-Op}$<$ MOEOT $>$ \&\_\-random\-Mon\-Op, unsigned int \_\-n\-Noise\-Iterations=1) +\begin{CompactList}\small\item\em Ctor. \item\end{CompactList}\item +void \bf{operator()} (\bf{eo\-Pop}$<$ MOEOT $>$ \&\_\-pop, \bf{moeo\-Archive}$<$ MOEOT $>$ \&\_\-arch) +\begin{CompactList}\small\item\em Apply the local search iteratively until the stopping criteria is met. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +void \bf{generate\-New\-Solutions} (\bf{eo\-Pop}$<$ MOEOT $>$ \&\_\-pop, const \bf{moeo\-Archive}$<$ MOEOT $>$ \&\_\-arch) +\begin{CompactList}\small\item\em Creates new population randomly initialized and/or initialized from the archive \_\-arch. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\bf{moeo\-IBMOLS}$<$ MOEOT, Move $>$ \bf{ibmols}\label{classmoeoIteratedIBMOLS_6b1351f1faa391a1f095d1f9d4dba915} + +\begin{CompactList}\small\item\em the local search to iterate \item\end{CompactList}\item +\bf{eo\-Eval\-Func}$<$ MOEOT $>$ \& \bf{eval}\label{classmoeoIteratedIBMOLS_7abdd0c1433ec4671522c8d5edc9fe61} + +\begin{CompactList}\small\item\em the full evaluation \item\end{CompactList}\item +\bf{eo\-Continue}$<$ MOEOT $>$ \& \bf{continuator}\label{classmoeoIteratedIBMOLS_964e5df65c7aa33dd84eed3180d5e0a3} + +\begin{CompactList}\small\item\em the stopping criteria \item\end{CompactList}\item +\bf{eo\-Mon\-Op}$<$ MOEOT $>$ \& \bf{mon\-Op}\label{classmoeoIteratedIBMOLS_77851daa2f2230000c0012beef3b8558} + +\begin{CompactList}\small\item\em the monary operator \item\end{CompactList}\item +\bf{eo\-Mon\-Op}$<$ MOEOT $>$ \& \bf{random\-Mon\-Op}\label{classmoeoIteratedIBMOLS_89df3bfa7069c06c7e7cf4b30ccc5535} + +\begin{CompactList}\small\item\em the random monary operator (or random initializer) \item\end{CompactList}\item +unsigned int \bf{n\-Noise\-Iterations}\label{classmoeoIteratedIBMOLS_a50f25daf2847fb9d299ef65baf3bda7} + +\begin{CompactList}\small\item\em the number of iterations to apply the random noise \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class MOEOT, class Move$>$ class moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$} + +Iterated version of IBMOLS as described in Basseur M., Burke K. + +: \char`\"{}Indicator-Based Multi-Objective Local Search\char`\"{} (2007). + + + +Definition at line 41 of file moeo\-Iterated\-IBMOLS.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moeoIteratedIBMOLS@{moeo\-Iterated\-IBMOLS}!moeoIteratedIBMOLS@{moeoIteratedIBMOLS}} +\index{moeoIteratedIBMOLS@{moeoIteratedIBMOLS}!moeoIteratedIBMOLS@{moeo\-Iterated\-IBMOLS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT, class Move$>$ \bf{moeo\-Iterated\-IBMOLS}$<$ MOEOT, Move $>$::\bf{moeo\-Iterated\-IBMOLS} (mo\-Move\-Init$<$ Move $>$ \& {\em \_\-move\-Init}, mo\-Next\-Move$<$ Move $>$ \& {\em \_\-next\-Move}, \bf{eo\-Eval\-Func}$<$ MOEOT $>$ \& {\em \_\-eval}, \bf{moeo\-Move\-Incr\-Eval}$<$ Move $>$ \& {\em \_\-move\-Incr\-Eval}, \bf{moeo\-Binary\-Indicator\-Based\-Fitness\-Assignment}$<$ MOEOT $>$ \& {\em \_\-fitness\-Assignment}, \bf{eo\-Continue}$<$ MOEOT $>$ \& {\em \_\-continuator}, \bf{eo\-Mon\-Op}$<$ MOEOT $>$ \& {\em \_\-mon\-Op}, \bf{eo\-Mon\-Op}$<$ MOEOT $>$ \& {\em \_\-random\-Mon\-Op}, unsigned int {\em \_\-n\-Noise\-Iterations} = {\tt 1})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoIteratedIBMOLS_67352bb5d797f20e767a4f0fa6d80f93} + + +Ctor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move\-Init}]the move initializer \item[{\em \_\-next\-Move}]the neighborhood explorer \item[{\em \_\-eval}]the full evaluation \item[{\em \_\-move\-Incr\-Eval}]the incremental evaluation \item[{\em \_\-fitness\-Assignment}]the fitness assignment strategy \item[{\em \_\-continuator}]the stopping criteria \item[{\em \_\-mon\-Op}]the monary operator \item[{\em \_\-random\-Mon\-Op}]the random monary operator (or random initializer) \item[{\em \_\-n\-Noise\-Iterations}]the number of iterations to apply the random noise \end{description} +\end{Desc} + + +Definition at line 61 of file moeo\-Iterated\-IBMOLS.h. + +\subsection{Member Function Documentation} +\index{moeoIteratedIBMOLS@{moeo\-Iterated\-IBMOLS}!operator()@{operator()}} +\index{operator()@{operator()}!moeoIteratedIBMOLS@{moeo\-Iterated\-IBMOLS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT, class Move$>$ void \bf{moeo\-Iterated\-IBMOLS}$<$ MOEOT, Move $>$::operator() (\bf{eo\-Pop}$<$ MOEOT $>$ \& {\em \_\-pop}, \bf{moeo\-Archive}$<$ MOEOT $>$ \& {\em \_\-arch})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmoeoIteratedIBMOLS_52d4aa19a93c69ed0c2246c62821e76e} + + +Apply the local search iteratively until the stopping criteria is met. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]the initial population \item[{\em \_\-arch}]the (updated) archive \end{description} +\end{Desc} + + +Implements \bf{eo\-BF$<$ eo\-Pop$<$ MOEOT $>$ \&, moeo\-Archive$<$ MOEOT $>$ \&, void $>$}. + +Definition at line 86 of file moeo\-Iterated\-IBMOLS.h. + +References moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$::continuator, moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$::generate\-New\-Solutions(), moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$::ibmols, and moeo\-Archive$<$ MOEOT $>$::update().\index{moeoIteratedIBMOLS@{moeo\-Iterated\-IBMOLS}!generateNewSolutions@{generateNewSolutions}} +\index{generateNewSolutions@{generateNewSolutions}!moeoIteratedIBMOLS@{moeo\-Iterated\-IBMOLS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT, class Move$>$ void \bf{moeo\-Iterated\-IBMOLS}$<$ MOEOT, Move $>$::generate\-New\-Solutions (\bf{eo\-Pop}$<$ MOEOT $>$ \& {\em \_\-pop}, const \bf{moeo\-Archive}$<$ MOEOT $>$ \& {\em \_\-arch})\hspace{0.3cm}{\tt [inline, private]}}\label{classmoeoIteratedIBMOLS_2826cf283f6670b3c46da5ac6b6def18} + + +Creates new population randomly initialized and/or initialized from the archive \_\-arch. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]the output population \item[{\em \_\-arch}]the archive \end{description} +\end{Desc} + + +Definition at line 121 of file moeo\-Iterated\-IBMOLS.h. + +References moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$::eval, eo\-Pop$<$ EOT $>$::invalidate(), moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$::mon\-Op, moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$::n\-Noise\-Iterations, and moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$::random\-Mon\-Op. + +Referenced by moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$::operator()(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Iterated\-IBMOLS.h\end{CompactItemize} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoMoveIncrEval.eps b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoMoveIncrEval.eps new file mode 100644 index 000000000..769d2fb57 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoMoveIncrEval.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 324.324 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.54167 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoMoveIncrEval< Move >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoMoveIncrEval< Move >) 0 0 box + (eoBF< A1, A2, R >) 0 1 box + (eoFunctorBase) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoMoveIncrEval.tex b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoMoveIncrEval.tex new file mode 100644 index 000000000..0e0a807a0 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoMoveIncrEval.tex @@ -0,0 +1,22 @@ +\section{moeo\-Move\-Incr\-Eval$<$ Move $>$ Class Template Reference} +\label{classmoeoMoveIncrEval}\index{moeoMoveIncrEval@{moeoMoveIncrEval}} +Inheritance diagram for moeo\-Move\-Incr\-Eval$<$ Move $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classmoeoMoveIncrEval} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class Move$>$ class moeo\-Move\-Incr\-Eval$<$ Move $>$} + + + + + +Definition at line 9 of file moeo\-Move\-Incr\-Eval.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Move\-Incr\-Eval.h\end{CompactItemize} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoObjectiveVectorTraits.eps b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoObjectiveVectorTraits.eps new file mode 100644 index 000000000..e70f35158 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoObjectiveVectorTraits.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 100.503 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.975 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoObjectiveVectorTraits) cw +(FlowShopObjectiveVectorTraits) cw +(Sch1ObjectiveVectorTraits) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoObjectiveVectorTraits) 0.5 1 box + (FlowShopObjectiveVectorTraits) 0 0 box + (Sch1ObjectiveVectorTraits) 1 0 box + +% ----- relations ----- + +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoReferencePointIndicatorBasedFitnessAssignment.eps b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoReferencePointIndicatorBasedFitnessAssignment.eps new file mode 100644 index 000000000..c1feb7742 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoReferencePointIndicatorBasedFitnessAssignment.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 202.532 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.46875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >) cw +(moeoFitnessAssignment< MOEOT >) cw +(eoUF< eoPop< MOEOT > &, void >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >) 0 0 box + (moeoFitnessAssignment< MOEOT >) 0 1 box + (eoUF< eoPop< MOEOT > &, void >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoReferencePointIndicatorBasedFitnessAssignment.tex b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoReferencePointIndicatorBasedFitnessAssignment.tex new file mode 100644 index 000000000..0ba580737 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classmoeoReferencePointIndicatorBasedFitnessAssignment.tex @@ -0,0 +1,148 @@ +\section{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$ Class Template Reference} +\label{classmoeoReferencePointIndicatorBasedFitnessAssignment}\index{moeoReferencePointIndicatorBasedFitnessAssignment@{moeoReferencePointIndicatorBasedFitnessAssignment}} +Fitness assignment sheme based a Reference Point and a Quality Indicator. + + +{\tt \#include $<$moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment.h$>$} + +Inheritance diagram for moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmoeoReferencePointIndicatorBasedFitnessAssignment} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef MOEOT::Objective\-Vector \bf{Objective\-Vector}\label{classmoeoReferencePointIndicatorBasedFitnessAssignment_51ae5507dca3e934f7db36eef78df556} + +\begin{CompactList}\small\item\em The type of objective vector. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment} (\bf{Objective\-Vector} \&\_\-ref\-Point, \bf{moeo\-Normalized\-Solution\-Vs\-Solution\-Binary\-Metric}$<$ \bf{Objective\-Vector}, double $>$ \&\_\-metric) +\begin{CompactList}\small\item\em Ctor. \item\end{CompactList}\item +void \bf{operator()} (\bf{eo\-Pop}$<$ MOEOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em Sets the fitness values for every solution contained in the population \_\-pop. \item\end{CompactList}\item +void \bf{update\-By\-Deleting} (\bf{eo\-Pop}$<$ MOEOT $>$ \&\_\-pop, \bf{Objective\-Vector} \&\_\-obj\-Vec) +\begin{CompactList}\small\item\em Updates the fitness values of the whole population \_\-pop by taking the deletion of the objective vector \_\-obj\-Vec into account. \item\end{CompactList}\end{CompactItemize} +\subsection*{Protected Member Functions} +\begin{CompactItemize} +\item +void \bf{setup} (const \bf{eo\-Pop}$<$ MOEOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em Sets the bounds for every objective using the min and the max value for every objective vector of \_\-pop (and the reference point). \item\end{CompactList}\item +void \bf{set\-Fitnesses} (\bf{eo\-Pop}$<$ MOEOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em Sets the fitness of every individual contained in the population \_\-pop. \item\end{CompactList}\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +\bf{Objective\-Vector} \& \bf{ref\-Point}\label{classmoeoReferencePointIndicatorBasedFitnessAssignment_73dc1eb66e46b28b7ee283f7367f427b} + +\begin{CompactList}\small\item\em the reference point \item\end{CompactList}\item +\bf{moeo\-Normalized\-Solution\-Vs\-Solution\-Binary\-Metric}$<$ \bf{Objective\-Vector}, double $>$ \& \bf{metric}\label{classmoeoReferencePointIndicatorBasedFitnessAssignment_9adf4fd353f44f15d3722ef26aa81832} + +\begin{CompactList}\small\item\em the quality indicator \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class MOEOT$>$ class moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$} + +Fitness assignment sheme based a Reference Point and a Quality Indicator. + + + +Definition at line 25 of file moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moeoReferencePointIndicatorBasedFitnessAssignment@{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}!moeoReferencePointIndicatorBasedFitnessAssignment@{moeoReferencePointIndicatorBasedFitnessAssignment}} +\index{moeoReferencePointIndicatorBasedFitnessAssignment@{moeoReferencePointIndicatorBasedFitnessAssignment}!moeoReferencePointIndicatorBasedFitnessAssignment@{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT$>$ \bf{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}$<$ MOEOT $>$::\bf{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment} (\bf{Objective\-Vector} \& {\em \_\-ref\-Point}, \bf{moeo\-Normalized\-Solution\-Vs\-Solution\-Binary\-Metric}$<$ \bf{Objective\-Vector}, double $>$ \& {\em \_\-metric})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoReferencePointIndicatorBasedFitnessAssignment_67a5e91e08f89f27ad5aad989898c425} + + +Ctor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-ref\-Point}]the reference point \item[{\em \_\-metric}]the quality indicator \end{description} +\end{Desc} + + +Definition at line 37 of file moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment.h. + +\subsection{Member Function Documentation} +\index{moeoReferencePointIndicatorBasedFitnessAssignment@{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}!operator()@{operator()}} +\index{operator()@{operator()}!moeoReferencePointIndicatorBasedFitnessAssignment@{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT$>$ void \bf{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}$<$ MOEOT $>$::operator() (\bf{eo\-Pop}$<$ MOEOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmoeoReferencePointIndicatorBasedFitnessAssignment_d122ebb7cda54b283d6736dc5e57da7d} + + +Sets the fitness values for every solution contained in the population \_\-pop. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]the population \end{description} +\end{Desc} + + +Implements \bf{eo\-UF$<$ eo\-Pop$<$ MOEOT $>$ \&, void $>$}. + +Definition at line 46 of file moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment.h. + +References moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$::set\-Fitnesses(), and moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$::setup().\index{moeoReferencePointIndicatorBasedFitnessAssignment@{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}!updateByDeleting@{updateByDeleting}} +\index{updateByDeleting@{updateByDeleting}!moeoReferencePointIndicatorBasedFitnessAssignment@{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT$>$ void \bf{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}$<$ MOEOT $>$::update\-By\-Deleting (\bf{eo\-Pop}$<$ MOEOT $>$ \& {\em \_\-pop}, \bf{Objective\-Vector} \& {\em \_\-obj\-Vec})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmoeoReferencePointIndicatorBasedFitnessAssignment_ba47422dd4f82274af2f69c0b5f95d3a} + + +Updates the fitness values of the whole population \_\-pop by taking the deletion of the objective vector \_\-obj\-Vec into account. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]the population \item[{\em \_\-obj\-Vec}]the objective vector \end{description} +\end{Desc} + + +Implements \bf{moeo\-Fitness\-Assignment$<$ MOEOT $>$} \doxyref{p.}{classmoeoFitnessAssignment_4922629569eddc9be049b3ead1ab0269}. + +Definition at line 60 of file moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment.h.\index{moeoReferencePointIndicatorBasedFitnessAssignment@{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}!setup@{setup}} +\index{setup@{setup}!moeoReferencePointIndicatorBasedFitnessAssignment@{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT$>$ void \bf{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}$<$ MOEOT $>$::setup (const \bf{eo\-Pop}$<$ MOEOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, protected]}}\label{classmoeoReferencePointIndicatorBasedFitnessAssignment_67bfa12f97d247c15f3e28f923646b78} + + +Sets the bounds for every objective using the min and the max value for every objective vector of \_\-pop (and the reference point). + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]the population \end{description} +\end{Desc} + + +Definition at line 78 of file moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment.h. + +References moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$::metric, moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$::ref\-Point, and moeo\-Normalized\-Solution\-Vs\-Solution\-Binary\-Metric$<$ Objective\-Vector, R $>$::setup(). + +Referenced by moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$::operator()().\index{moeoReferencePointIndicatorBasedFitnessAssignment@{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}!setFitnesses@{setFitnesses}} +\index{setFitnesses@{setFitnesses}!moeoReferencePointIndicatorBasedFitnessAssignment@{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT$>$ void \bf{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}$<$ MOEOT $>$::set\-Fitnesses (\bf{eo\-Pop}$<$ MOEOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, protected]}}\label{classmoeoReferencePointIndicatorBasedFitnessAssignment_b1ca358eeb6dac0afe902a3978e1219a} + + +Sets the fitness of every individual contained in the population \_\-pop. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]the population \end{description} +\end{Desc} + + +Definition at line 99 of file moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment.h. + +References moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$::metric, and moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$::ref\-Point. + +Referenced by moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$::operator()(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment.h\end{CompactItemize} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classpeoEA.tex b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classpeoEA.tex new file mode 100644 index 000000000..d1a3e09cf --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/latex/classpeoEA.tex @@ -0,0 +1,119 @@ +\section{peo\-EA$<$ EOT $>$ Class Template Reference} +\label{classpeoEA}\index{peoEA@{peoEA}} +The \doxyref{peo\-EA}{p.}{classpeoEA} class offers an elementary evolutionary algorithm implementation. + + +{\tt \#include $<$pmoeo\-EA.h$>$} + +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{peo\-EA} (\bf{eo\-Continue}$<$ EOT $>$ \&\_\-\_\-cont, peo\-Pop\-Eval$<$ EOT $>$ \&\_\-\_\-pop\_\-eval, \bf{eo\-Select}$<$ EOT $>$ \&\_\-\_\-select, peo\-Transform$<$ EOT $>$ \&\_\-\_\-trans, \bf{eo\-Replacement}$<$ EOT $>$ \&\_\-\_\-replace) +\begin{CompactList}\small\item\em Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. \item\end{CompactList}\item +void \bf{run} ()\label{classpeoEA_6ab8c321d29350634143a2a01cf2ad24} + +\begin{CompactList}\small\item\em Evolutionary algorithm function - a side effect of the fact that the class is derived from the {\bf Runner} class, thus requiring the existence of a {\em run\/} function, the algorithm being executed on a distinct thread. \item\end{CompactList}\item +void \bf{operator()} (\bf{eo\-Pop}$<$ EOT $>$ \&\_\-\_\-pop) +\begin{CompactList}\small\item\em \doxyref{Function} operator for specifying the population to be associated with the algorithm. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\bf{eo\-Continue}$<$ EOT $>$ \& \bf{cont}\label{classpeoEA_5f015eebf42f176b9fe322488c446c2a} + +\item +peo\-Pop\-Eval$<$ EOT $>$ \& \bf{pop\_\-eval}\label{classpeoEA_9140259f50c9186edcb062b023624c96} + +\item +\bf{eo\-Select}$<$ EOT $>$ \& \bf{select}\label{classpeoEA_2d8428d69fdd6aefefbaf543fdd46d19} + +\item +peo\-Transform$<$ EOT $>$ \& \bf{trans}\label{classpeoEA_713c77935eb8aafebfb9488cfaa4a363} + +\item +\bf{eo\-Replacement}$<$ EOT $>$ \& \bf{replace}\label{classpeoEA_9bd2d4356cf7e69e3141dc269213aa8a} + +\item +\bf{eo\-Pop}$<$ EOT $>$ $\ast$ \bf{pop}\label{classpeoEA_c0b110e410bc16283e8339f24b733772} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-EA$<$ EOT $>$} + +The \doxyref{peo\-EA}{p.}{classpeoEA} class offers an elementary evolutionary algorithm implementation. + +In addition, as compared with the algorithms provided by the \doxyref{EO} framework, the \doxyref{peo\-EA}{p.}{classpeoEA} class has the underlying necessary structure for including, for example, parallel evaluation and parallel transformation operators, migration operators etc. Although there is no restriction on using the algorithms provided by the \doxyref{EO} framework, the drawback resides in the fact that the \doxyref{EO} implementation is exclusively sequential and, in consequence, no parallelism is provided. A simple example for constructing a \doxyref{peo\-EA}{p.}{classpeoEA} object: + +\begin{TabularC}{2} +\hline +... ~ &~ \\\hline +eo\-Pop$<$ EOT $>$ population( POP\_\-SIZE, pop\-Initializer ); ~ &// creation of a population with POP\_\-SIZE individuals - the pop\-Initializer is a functor to be called for each individual \\\hline +~ &~ \\\hline +eo\-Gen\-Continue$<$ EOT $>$ ea\-Cont( NUM\_\-GEN ); ~ &// number of generations for the evolutionary algorithm \\\hline +eo\-Check\-Point$<$ EOT $>$ ea\-Checkpoint\-Continue( ea\-Cont ); ~ &// checkpoint incorporating the continuation criterion - startpoint for adding other checkpoint objects \\\hline +~ &~ \\\hline +peo\-Seq\-Pop\-Eval$<$ EOT $>$ ea\-Pop\-Eval( eval\-Function ); ~ &// sequential evaluation functor wrapper - eval\-Function represents the actual evaluation functor \\\hline +~ &~ \\\hline +eo\-Ranking\-Select$<$ EOT $>$ selection\-Strategy; ~ &// selection strategy for creating the offspring population - a simple ranking selection in this case \\\hline +eo\-Select\-Number$<$ EOT $>$ ea\-Select( selection\-Strategy, POP\_\-SIZE ); ~ &// the number of individuals to be selected for creating the offspring population \\\hline +eo\-Ranking\-Select$<$ EOT $>$ selection\-Strategy; ~ &// selection strategy for creating the offspring population - a simple ranking selection in this case \\\hline +~ &~ \\\hline +eo\-SGATransform$<$ EOT $>$ transform( crossover, CROSS\_\-RATE, mutation, MUT\_\-RATE ); ~ &// transformation operator - crossover and mutation operators with their associated probabilities \\\hline +peo\-Seq\-Transform$<$ EOT $>$ ea\-Transform( transform ); ~ &// Paradis\-EO specific sequential operator - a parallel version may be specified in the same manner \\\hline +~ &~ \\\hline +eo\-Plus\-Replacement$<$ EOT $>$ ea\-Replace; ~ &// replacement strategy - for integrating the offspring resulting individuals in the initial population \\\hline +~ &~ \\\hline +peo\-EA$<$ EOT $>$ ea\-Alg( ea\-Checkpoint\-Continue, ea\-Pop\-Eval, ea\-Select, ea\-Transform, ea\-Replace ); ~ &// Paradis\-EO evolutionary algorithm integrating the above defined objects \\\hline +ea\-Alg( population ); ~ &// specifying the initial population for the algorithm \\\hline +... ~ &~ \\\hline +\end{TabularC} + + + + +Definition at line 54 of file pmoeo\-EA.h. + +\subsection{Constructor \& Destructor Documentation} +\index{peoEA@{peo\-EA}!peoEA@{peoEA}} +\index{peoEA@{peoEA}!peoEA@{peo\-EA}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ \bf{peo\-EA}$<$ EOT $>$::\bf{peo\-EA} (\bf{eo\-Continue}$<$ EOT $>$ \& {\em \_\-\_\-cont}, peo\-Pop\-Eval$<$ EOT $>$ \& {\em \_\-\_\-pop\_\-eval}, \bf{eo\-Select}$<$ EOT $>$ \& {\em \_\-\_\-select}, peo\-Transform$<$ EOT $>$ \& {\em \_\-\_\-trans}, \bf{eo\-Replacement}$<$ EOT $>$ \& {\em \_\-\_\-replace})}\label{classpeoEA_dbfc4f8907bef234602149229f132371} + + +Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. + +Depending on the requirements, a sequential or a parallel evaluation operator may be specified or, in the same manner, a sequential or a parallel transformation operator may be given as parameter. Out of the box objects may be provided, from the \doxyref{EO} package, for example, or custom defined ones may be specified, provided that they are derived from the correct base classes. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Continue$<$}]EOT $>$\& \_\-\_\-cont - continuation criterion specifying whether the algorithm should continue or not; \item[{\em peo\-Pop\-Eval$<$}]EOT $>$\& \_\-\_\-pop\_\-eval - evaluation operator; it allows the specification of parallel evaluation operators, aggregate evaluation functions, etc.; \item[{\em eo\-Select$<$}]EOT $>$\& \_\-\_\-select - selection strategy to be applied for constructing a list of offspring individuals; \item[{\em peo\-Transform$<$}]EOT $>$\& \_\-\_\-trans - transformation operator, i.e. crossover and mutation; allows for sequential or parallel transform; \item[{\em eo\-Replacement$<$}]EOT $>$\& \_\-\_\-replace - replacement strategy for integrating the offspring individuals in the initial population; \end{description} +\end{Desc} + + +Definition at line 98 of file pmoeo\-EA.h. + +References peo\-EA$<$ EOT $>$::pop\_\-eval, and peo\-EA$<$ EOT $>$::trans. + +\subsection{Member Function Documentation} +\index{peoEA@{peo\-EA}!operator()@{operator()}} +\index{operator()@{operator()}!peoEA@{peo\-EA}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \bf{peo\-EA}$<$ EOT $>$::operator() (\bf{eo\-Pop}$<$ EOT $>$ \& {\em \_\-\_\-pop})}\label{classpeoEA_3c709e3b2491147d26fee36138644613} + + +\doxyref{Function} operator for specifying the population to be associated with the algorithm. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-pop - initial population of the algorithm, to be iteratively evolved; \end{description} +\end{Desc} + + +Definition at line 114 of file pmoeo\-EA.h. + +References peo\-EA$<$ EOT $>$::pop. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +pmoeo\-EA.h\end{CompactItemize} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShop.3 b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShop.3 new file mode 100644 index 000000000..9e706c47c --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShop.3 @@ -0,0 +1,31 @@ +.TH "FlowShop" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +FlowShop \- Structure of the genotype for the flow-shop scheduling problem: a vector of unsigned int int. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >< moeoRealObjectiveVector< FlowShopObjectiveVectorTraits >, double, double, unsigned int >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "std::string \fBclassName\fP () const " +.br +.RI "\fIclass name \fP" +.in -1c +.SH "Detailed Description" +.PP +Structure of the genotype for the flow-shop scheduling problem: a vector of unsigned int int. +.PP +Definition at line 22 of file FlowShop.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopBenchmarkParser.3 b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopBenchmarkParser.3 new file mode 100644 index 000000000..f72583422 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopBenchmarkParser.3 @@ -0,0 +1,120 @@ +.TH "FlowShopBenchmarkParser" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +FlowShopBenchmarkParser \- Class to handle parameters of a flow-shop instance from a benchmark file. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBFlowShopBenchmarkParser\fP (const std::string _benchmarkFileName)" +.br +.RI "\fICtor. \fP" +.ti -1c +.RI "const unsigned int \fBgetM\fP ()" +.br +.RI "\fIthe number of machines \fP" +.ti -1c +.RI "const unsigned int \fBgetN\fP ()" +.br +.RI "\fIthe number of jobs \fP" +.ti -1c +.RI "const std::vector< std::vector< unsigned int > > \fBgetP\fP ()" +.br +.RI "\fIthe processing times \fP" +.ti -1c +.RI "const std::vector< unsigned int > \fBgetD\fP ()" +.br +.RI "\fIthe due-dates \fP" +.ti -1c +.RI "void \fBprintOn\fP (std::ostream &_os) const " +.br +.RI "\fIprinting. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBinit\fP (const std::string _benchmarkFileName)" +.br +.RI "\fIInitialisation of the parameters with the data contained in the benchmark file. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "unsigned int \fBM\fP" +.br +.RI "\fInumber of machines \fP" +.ti -1c +.RI "unsigned int \fBN\fP" +.br +.RI "\fInumber of jobs \fP" +.ti -1c +.RI "std::vector< std::vector< unsigned int > > \fBp\fP" +.br +.RI "\fIp[i][j] = processing time of job j on machine i \fP" +.ti -1c +.RI "std::vector< unsigned int > \fBd\fP" +.br +.RI "\fId[j] = due-date of the job j \fP" +.in -1c +.SH "Detailed Description" +.PP +Class to handle parameters of a flow-shop instance from a benchmark file. +.PP +Definition at line 23 of file FlowShopBenchmarkParser.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "FlowShopBenchmarkParser::FlowShopBenchmarkParser (const std::string _benchmarkFileName)" +.PP +Ctor. +.PP +\fBParameters:\fP +.RS 4 +\fI_benchmarkFileName\fP the name of the benchmark file +.RE +.PP + +.PP +Definition at line 16 of file FlowShopBenchmarkParser.cpp. +.PP +References init(). +.SH "Member Function Documentation" +.PP +.SS "void FlowShopBenchmarkParser::printOn (std::ostream & _os) const" +.PP +printing. +.PP +.. +.PP +Definition at line 46 of file FlowShopBenchmarkParser.cpp. +.PP +References d, M, N, and p. +.SS "void FlowShopBenchmarkParser::init (const std::string _benchmarkFileName)\fC [private]\fP" +.PP +Initialisation of the parameters with the data contained in the benchmark file. +.PP +\fBParameters:\fP +.RS 4 +\fI_benchmarkFileName\fP the name of the benchmark file +.RE +.PP + +.PP +Definition at line 64 of file FlowShopBenchmarkParser.cpp. +.PP +References d, M, N, and p. +.PP +Referenced by FlowShopBenchmarkParser(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopEval.3 b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopEval.3 new file mode 100644 index 000000000..494aa09b5 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopEval.3 @@ -0,0 +1,155 @@ +.TH "FlowShopEval" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +FlowShopEval \- Evaluation of the objective vector a (multi-objective) \fBFlowShop\fP object. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoEvalFunc< FlowShop >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBFlowShopEval\fP (unsigned int _M, unsigned int _N, const std::vector< std::vector< unsigned int > > &_p, const std::vector< unsigned int > &_d)" +.br +.RI "\fICtor. \fP" +.ti -1c +.RI "void \fBoperator()\fP (\fBFlowShop\fP &_flowshop)" +.br +.RI "\fIcomputation of the multi-objective evaluation of a \fBFlowShop\fP object \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "double \fBmakespan\fP (const \fBFlowShop\fP &_flowshop)" +.br +.RI "\fIcomputation of the makespan \fP" +.ti -1c +.RI "double \fBtardiness\fP (const \fBFlowShop\fP &_flowshop)" +.br +.RI "\fIcomputation of the tardiness \fP" +.ti -1c +.RI "std::vector< std::vector< unsigned int > > \fBcompletionTime\fP (const \fBFlowShop\fP &_flowshop)" +.br +.RI "\fIcomputation of the completion times of a scheduling (for each job on each machine) C[i][j] = completion of the jth job of the scheduling on the ith machine \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "unsigned int \fBM\fP" +.br +.RI "\fInumber of machines \fP" +.ti -1c +.RI "unsigned int \fBN\fP" +.br +.RI "\fInumber of jobs \fP" +.ti -1c +.RI "std::vector< std::vector< unsigned int > > \fBp\fP" +.br +.RI "\fIp[i][j] = processing time of job j on machine i \fP" +.ti -1c +.RI "std::vector< unsigned int > \fBd\fP" +.br +.RI "\fId[j] = due-date of the job j \fP" +.in -1c +.SH "Detailed Description" +.PP +Evaluation of the objective vector a (multi-objective) \fBFlowShop\fP object. +.PP +Definition at line 23 of file FlowShopEval.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "FlowShopEval::FlowShopEval (unsigned int _M, unsigned int _N, const std::vector< std::vector< unsigned int > > & _p, const std::vector< unsigned int > & _d)" +.PP +Ctor. +.PP +\fBParameters:\fP +.RS 4 +\fI_M\fP the number of machines +.br +\fI_N\fP the number of jobs to schedule +.br +\fI_p\fP the processing times +.br +\fI_d\fP the due dates +.RE +.PP + +.PP +Definition at line 16 of file FlowShopEval.cpp. +.SH "Member Function Documentation" +.PP +.SS "void FlowShopEval::operator() (\fBFlowShop\fP & _flowshop)" +.PP +computation of the multi-objective evaluation of a \fBFlowShop\fP object +.PP +\fBParameters:\fP +.RS 4 +\fI_flowshop\fP the \fBFlowShop\fP object to evaluate +.RE +.PP + +.PP +Definition at line 21 of file FlowShopEval.cpp. +.PP +References makespan(), MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >::objectiveVector(), and tardiness(). +.SS "double FlowShopEval::makespan (const \fBFlowShop\fP & _flowshop)\fC [private]\fP" +.PP +computation of the makespan +.PP +\fBParameters:\fP +.RS 4 +\fI_flowshop\fP the genotype to evaluate +.RE +.PP + +.PP +Definition at line 31 of file FlowShopEval.cpp. +.PP +References completionTime(), M, and N. +.PP +Referenced by operator()(). +.SS "double FlowShopEval::tardiness (const \fBFlowShop\fP & _flowshop)\fC [private]\fP" +.PP +computation of the tardiness +.PP +\fBParameters:\fP +.RS 4 +\fI_flowshop\fP the genotype to evaluate +.RE +.PP + +.PP +Definition at line 40 of file FlowShopEval.cpp. +.PP +References completionTime(), d, M, and N. +.PP +Referenced by operator()(). +.SS "std::vector< std::vector< unsigned int > > FlowShopEval::completionTime (const \fBFlowShop\fP & _flowshop)\fC [private]\fP" +.PP +computation of the completion times of a scheduling (for each job on each machine) C[i][j] = completion of the jth job of the scheduling on the ith machine +.PP +\fBParameters:\fP +.RS 4 +\fI_flowshop\fP the genotype to evaluate +.RE +.PP + +.PP +Definition at line 53 of file FlowShopEval.cpp. +.PP +References M, N, and p. +.PP +Referenced by makespan(), and tardiness(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopInit.3 b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopInit.3 new file mode 100644 index 000000000..daac1acff --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopInit.3 @@ -0,0 +1,73 @@ +.TH "FlowShopInit" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +FlowShopInit \- Initialization of a random genotype built by the default constructor of the \fBFlowShop\fP class. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoInit< FlowShop >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBFlowShopInit\fP (unsigned int _N)" +.br +.RI "\fICtor. \fP" +.ti -1c +.RI "void \fBoperator()\fP (\fBFlowShop\fP &_flowshop)" +.br +.RI "\fIbuilds a random genotype \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "unsigned int \fBN\fP" +.br +.RI "\fIthe number of jobs (size of a scheduling vector) \fP" +.in -1c +.SH "Detailed Description" +.PP +Initialization of a random genotype built by the default constructor of the \fBFlowShop\fP class. +.PP +Definition at line 22 of file FlowShopInit.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "FlowShopInit::FlowShopInit (unsigned int _N)" +.PP +Ctor. +.PP +\fBParameters:\fP +.RS 4 +\fI_N\fP the number of jobs to schedule +.RE +.PP + +.PP +Definition at line 16 of file FlowShopInit.cpp. +.SH "Member Function Documentation" +.PP +.SS "void FlowShopInit::operator() (\fBFlowShop\fP & _flowshop)" +.PP +builds a random genotype +.PP +\fBParameters:\fP +.RS 4 +\fI_flowshop\fP a genotype that has been default-constructed +.RE +.PP + +.PP +Definition at line 20 of file FlowShopInit.cpp. +.PP +References MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >::invalidate(), N, eoRng::uniform(), and moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >::value(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopObjectiveVectorTraits.3 b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopObjectiveVectorTraits.3 new file mode 100644 index 000000000..c0037a4a5 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopObjectiveVectorTraits.3 @@ -0,0 +1,65 @@ +.TH "FlowShopObjectiveVectorTraits" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +FlowShopObjectiveVectorTraits \- Definition of the objective vector traits for multi-objective flow-shop problems. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoObjectiveVectorTraits\fP. +.PP +.SS "Static Public Member Functions" + +.in +1c +.ti -1c +.RI "static bool \fBminimizing\fP (int _i)" +.br +.RI "\fIReturns true if the _ith objective have to be minimzed. \fP" +.ti -1c +.RI "static bool \fBmaximizing\fP (int _i)" +.br +.RI "\fIReturns true if the _ith objective have to be maximzed. \fP" +.ti -1c +.RI "static unsigned int \fBnObjectives\fP ()" +.br +.RI "\fIReturns the number of objectives. \fP" +.in -1c +.SH "Detailed Description" +.PP +Definition of the objective vector traits for multi-objective flow-shop problems. +.PP +Definition at line 21 of file FlowShopObjectiveVectorTraits.h. +.SH "Member Function Documentation" +.PP +.SS "bool FlowShopObjectiveVectorTraits::minimizing (int _i)\fC [static]\fP" +.PP +Returns true if the _ith objective have to be minimzed. +.PP +\fBParameters:\fP +.RS 4 +\fI_i\fP index of the objective +.RE +.PP + +.PP +Definition at line 16 of file FlowShopObjectiveVectorTraits.cpp. +.SS "bool FlowShopObjectiveVectorTraits::maximizing (int _i)\fC [static]\fP" +.PP +Returns true if the _ith objective have to be maximzed. +.PP +\fBParameters:\fP +.RS 4 +\fI_i\fP index of the objective +.RE +.PP + +.PP +Definition at line 22 of file FlowShopObjectiveVectorTraits.cpp. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopOpCrossoverQuad.3 b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopOpCrossoverQuad.3 new file mode 100644 index 000000000..145fb7989 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopOpCrossoverQuad.3 @@ -0,0 +1,85 @@ +.TH "FlowShopOpCrossoverQuad" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +FlowShopOpCrossoverQuad \- Quadratic crossover operator for flow-shop (modify the both genotypes). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoQuadOp< FlowShop >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "std::string \fBclassName\fP () const " +.br +.RI "\fIthe class name (used to display statistics) \fP" +.ti -1c +.RI "bool \fBoperator()\fP (\fBFlowShop\fP &_flowshop1, \fBFlowShop\fP &_flowshop2)" +.br +.RI "\fIeoQuad crossover - _flowshop1 and _flowshop2 are the (future) offspring, i.e. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "\fBFlowShop\fP \fBgenerateOffspring\fP (const \fBFlowShop\fP &_parent1, const \fBFlowShop\fP &_parent2, unsigned int _point1, unsigned int _point2)" +.br +.RI "\fIgeneration of an offspring by a 2 points crossover \fP" +.in -1c +.SH "Detailed Description" +.PP +Quadratic crossover operator for flow-shop (modify the both genotypes). +.PP +Definition at line 22 of file FlowShopOpCrossoverQuad.h. +.SH "Member Function Documentation" +.PP +.SS "bool FlowShopOpCrossoverQuad::operator() (\fBFlowShop\fP & _flowshop1, \fBFlowShop\fP & _flowshop2)\fC [virtual]\fP" +.PP +eoQuad crossover - _flowshop1 and _flowshop2 are the (future) offspring, i.e. +.PP +_copies_ of the parents +.PP +\fBParameters:\fP +.RS 4 +\fI_flowshop1\fP the first parent +.br +\fI_flowshop2\fP the second parent +.RE +.PP + +.PP +Implements \fBeoBF< FlowShop &, FlowShop &, bool >\fP. +.PP +Definition at line 22 of file FlowShopOpCrossoverQuad.cpp. +.PP +References generateOffspring(), eoRng::random(), and moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >::value(). +.SS "\fBFlowShop\fP FlowShopOpCrossoverQuad::generateOffspring (const \fBFlowShop\fP & _parent1, const \fBFlowShop\fP & _parent2, unsigned int _point1, unsigned int _point2)\fC [private]\fP" +.PP +generation of an offspring by a 2 points crossover +.PP +\fBParameters:\fP +.RS 4 +\fI_parent1\fP the first parent +.br +\fI_parent2\fP the second parent +.br +\fI_point1\fP the first point +.br +\fI_point2\fP the second point +.RE +.PP + +.PP +Definition at line 54 of file FlowShopOpCrossoverQuad.cpp. +.PP +Referenced by operator()(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopOpMutationExchange.3 b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopOpMutationExchange.3 new file mode 100644 index 000000000..b91193066 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopOpMutationExchange.3 @@ -0,0 +1,53 @@ +.TH "FlowShopOpMutationExchange" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +FlowShopOpMutationExchange \- Exchange mutation operator for the flow-shop. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoMonOp< FlowShop >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "std::string \fBclassName\fP () const " +.br +.RI "\fIthe class name (used to display statistics) \fP" +.ti -1c +.RI "bool \fBoperator()\fP (\fBFlowShop\fP &_flowshop)" +.br +.RI "\fImodifies the parent with an exchange mutation \fP" +.in -1c +.SH "Detailed Description" +.PP +Exchange mutation operator for the flow-shop. +.PP +Definition at line 22 of file FlowShopOpMutationExchange.h. +.SH "Member Function Documentation" +.PP +.SS "bool FlowShopOpMutationExchange::operator() (\fBFlowShop\fP & _flowshop)\fC [virtual]\fP" +.PP +modifies the parent with an exchange mutation +.PP +\fBParameters:\fP +.RS 4 +\fI_flowshop\fP the parent genotype (will be modified) +.RE +.PP + +.PP +Implements \fBeoUF< FlowShop &, bool >\fP. +.PP +Definition at line 22 of file FlowShopOpMutationExchange.cpp. +.PP +References eoRng::random(), and moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >::value(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopOpMutationShift.3 b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopOpMutationShift.3 new file mode 100644 index 000000000..0c9fe814d --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/FlowShopOpMutationShift.3 @@ -0,0 +1,53 @@ +.TH "FlowShopOpMutationShift" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +FlowShopOpMutationShift \- Shift mutation operator for flow-shop. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoMonOp< FlowShop >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "std::string \fBclassName\fP () const " +.br +.RI "\fIthe class name (used to display statistics) \fP" +.ti -1c +.RI "bool \fBoperator()\fP (\fBFlowShop\fP &_flowshop)" +.br +.RI "\fImodifies the parent with a shift mutation \fP" +.in -1c +.SH "Detailed Description" +.PP +Shift mutation operator for flow-shop. +.PP +Definition at line 22 of file FlowShopOpMutationShift.h. +.SH "Member Function Documentation" +.PP +.SS "bool FlowShopOpMutationShift::operator() (\fBFlowShop\fP & _flowshop)\fC [virtual]\fP" +.PP +modifies the parent with a shift mutation +.PP +\fBParameters:\fP +.RS 4 +\fI_flowshop\fP the parent genotype (will be modified) +.RE +.PP + +.PP +Implements \fBeoUF< FlowShop &, bool >\fP. +.PP +Definition at line 22 of file FlowShopOpMutationShift.cpp. +.PP +References eoRng::random(), and moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >::value(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/Sch1.3 b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/Sch1.3 new file mode 100644 index 000000000..662313cd3 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/Sch1.3 @@ -0,0 +1,24 @@ +.TH "Sch1" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Sch1 \- +.SH SYNOPSIS +.br +.PP +Inherits \fBmoeoRealVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity >< moeoRealObjectiveVector< Sch1ObjectiveVectorTraits >, double, double >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBSch1\fP ()" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 44 of file Sch1.cpp. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/Sch1Eval.3 b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/Sch1Eval.3 new file mode 100644 index 000000000..cec0251f9 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/Sch1Eval.3 @@ -0,0 +1,24 @@ +.TH "Sch1Eval" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Sch1Eval \- +.SH SYNOPSIS +.br +.PP +Inherits \fBmoeoEvalFunc< Sch1 >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBoperator()\fP (\fBSch1\fP &_sch1)" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 52 of file Sch1.cpp. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/Sch1ObjectiveVectorTraits.3 b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/Sch1ObjectiveVectorTraits.3 new file mode 100644 index 000000000..800dfaad9 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/Sch1ObjectiveVectorTraits.3 @@ -0,0 +1,31 @@ +.TH "Sch1ObjectiveVectorTraits" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Sch1ObjectiveVectorTraits \- +.SH SYNOPSIS +.br +.PP +Inherits \fBmoeoObjectiveVectorTraits\fP. +.PP +.SS "Static Public Member Functions" + +.in +1c +.ti -1c +.RI "static bool \fBminimizing\fP (int i)" +.br +.ti -1c +.RI "static bool \fBmaximizing\fP (int i)" +.br +.ti -1c +.RI "static unsigned int \fBnObjectives\fP ()" +.br +.RI "\fIReturns the number of objectives. \fP" +.in -1c +.SH "Detailed Description" +.PP +Definition at line 21 of file Sch1.cpp. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/moeoIBMOLS.3 b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/moeoIBMOLS.3 new file mode 100644 index 000000000..fb196da6b --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/moeoIBMOLS.3 @@ -0,0 +1,168 @@ +.TH "moeoIBMOLS" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoIBMOLS \- Indicator-Based Multi-Objective Local Search (IBMOLS) as described in Basseur M., Burke K. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoLS< MOEOT, eoPop< MOEOT > & >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef MOEOT::ObjectiveVector \fBObjectiveVector\fP" +.br +.RI "\fIThe type of objective vector. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoIBMOLS\fP (moMoveInit< Move > &_moveInit, moNextMove< Move > &_nextMove, \fBeoEvalFunc\fP< MOEOT > &_eval, \fBmoeoMoveIncrEval\fP< Move > &_moveIncrEval, \fBmoeoBinaryIndicatorBasedFitnessAssignment\fP< MOEOT > &_fitnessAssignment, \fBeoContinue\fP< MOEOT > &_continuator)" +.br +.RI "\fICtor. \fP" +.ti -1c +.RI "void \fBoperator()\fP (\fBeoPop\fP< MOEOT > &_pop, \fBmoeoArchive\fP< MOEOT > &_arch)" +.br +.RI "\fIApply the local search until a local archive does not change or another stopping criteria is met and update the archive _arch with new non-dominated solutions. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBoneStep\fP (\fBeoPop\fP< MOEOT > &_pop)" +.br +.RI "\fIApply one step of the local search to the population _pop. \fP" +.ti -1c +.RI "void \fBnew_oneStep\fP (\fBeoPop\fP< MOEOT > &_pop)" +.br +.RI "\fIApply one step of the local search to the population _pop. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "moMoveInit< Move > & \fBmoveInit\fP" +.br +.RI "\fIthe move initializer \fP" +.ti -1c +.RI "moNextMove< Move > & \fBnextMove\fP" +.br +.RI "\fIthe neighborhood explorer \fP" +.ti -1c +.RI "\fBeoEvalFunc\fP< MOEOT > & \fBeval\fP" +.br +.RI "\fIthe full evaluation \fP" +.ti -1c +.RI "\fBmoeoMoveIncrEval\fP< Move > & \fBmoveIncrEval\fP" +.br +.RI "\fIthe incremental evaluation \fP" +.ti -1c +.RI "\fBmoeoBinaryIndicatorBasedFitnessAssignment\fP< MOEOT > & \fBfitnessAssignment\fP" +.br +.RI "\fIthe fitness assignment strategy \fP" +.ti -1c +.RI "\fBeoContinue\fP< MOEOT > & \fBcontinuator\fP" +.br +.RI "\fIthe stopping criteria \fP" +.in -1c +.SS "Classes" + +.in +1c +.ti -1c +.RI "class \fBOneObjectiveComparator\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoIBMOLS< MOEOT, Move >" +Indicator-Based Multi-Objective Local Search (IBMOLS) as described in Basseur M., Burke K. + +: 'Indicator-Based Multi-Objective Local Search' (2007). +.PP +Definition at line 33 of file moeoIBMOLS.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoeoIBMOLS\fP< MOEOT, Move >::\fBmoeoIBMOLS\fP (moMoveInit< Move > & _moveInit, moNextMove< Move > & _nextMove, \fBeoEvalFunc\fP< MOEOT > & _eval, \fBmoeoMoveIncrEval\fP< Move > & _moveIncrEval, \fBmoeoBinaryIndicatorBasedFitnessAssignment\fP< MOEOT > & _fitnessAssignment, \fBeoContinue\fP< MOEOT > & _continuator)\fC [inline]\fP" +.PP +Ctor. +.PP +\fBParameters:\fP +.RS 4 +\fI_moveInit\fP the move initializer +.br +\fI_nextMove\fP the neighborhood explorer +.br +\fI_eval\fP the full evaluation +.br +\fI_moveIncrEval\fP the incremental evaluation +.br +\fI_fitnessAssignment\fP the fitness assignment strategy +.br +\fI_continuator\fP the stopping criteria +.RE +.PP + +.PP +Definition at line 50 of file moeoIBMOLS.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoeoIBMOLS\fP< MOEOT, Move >::operator() (\fBeoPop\fP< MOEOT > & _pop, \fBmoeoArchive\fP< MOEOT > & _arch)\fC [inline, virtual]\fP" +.PP +Apply the local search until a local archive does not change or another stopping criteria is met and update the archive _arch with new non-dominated solutions. +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP the initial population +.br +\fI_arch\fP the (updated) archive +.RE +.PP + +.PP +Implements \fBeoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void >\fP. +.PP +Definition at line 73 of file moeoIBMOLS.h. +.PP +References moeoIBMOLS< MOEOT, Move >::continuator, moeoArchive< MOEOT >::equals(), moeoIBMOLS< MOEOT, Move >::fitnessAssignment, moeoIBMOLS< MOEOT, Move >::oneStep(), and moeoArchive< MOEOT >::update(). +.SS "template void \fBmoeoIBMOLS\fP< MOEOT, Move >::oneStep (\fBeoPop\fP< MOEOT > & _pop)\fC [inline, private]\fP" +.PP +Apply one step of the local search to the population _pop. +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP the population +.RE +.PP + +.PP +Definition at line 120 of file moeoIBMOLS.h. +.PP +References moeoIBMOLS< MOEOT, Move >::continuator, moeoIBMOLS< MOEOT, Move >::fitnessAssignment, moeoIBMOLS< MOEOT, Move >::moveIncrEval, moeoIBMOLS< MOEOT, Move >::moveInit, and moeoIBMOLS< MOEOT, Move >::nextMove. +.PP +Referenced by moeoIBMOLS< MOEOT, Move >::operator()(). +.SS "template void \fBmoeoIBMOLS\fP< MOEOT, Move >::new_oneStep (\fBeoPop\fP< MOEOT > & _pop)\fC [inline, private]\fP" +.PP +Apply one step of the local search to the population _pop. +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP the population +.RE +.PP + +.PP +Definition at line 304 of file moeoIBMOLS.h. +.PP +References moeoIBMOLS< MOEOT, Move >::continuator, moeoIBMOLS< MOEOT, Move >::fitnessAssignment, moeoIBMOLS< MOEOT, Move >::moveIncrEval, moeoIBMOLS< MOEOT, Move >::moveInit, and moeoIBMOLS< MOEOT, Move >::nextMove. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/moeoIBMOLS_OneObjectiveComparator.3 b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/moeoIBMOLS_OneObjectiveComparator.3 new file mode 100644 index 000000000..1323b146e --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/moeoIBMOLS_OneObjectiveComparator.3 @@ -0,0 +1,38 @@ +.TH "moeoIBMOLS::OneObjectiveComparator" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoIBMOLS::OneObjectiveComparator \- +.SH SYNOPSIS +.br +.PP +Inherits \fBmoeoComparator< MOEOT >< MOEOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBOneObjectiveComparator\fP (unsigned int _obj)" +.br +.ti -1c +.RI "const bool \fBoperator()\fP (const MOEOT &_moeo1, const MOEOT &_moeo2)" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "unsigned int \fBobj\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator" + +.PP +Definition at line 462 of file moeoIBMOLS.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/moeoIteratedIBMOLS.3 b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/moeoIteratedIBMOLS.3 new file mode 100644 index 000000000..4ccf4fad5 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/moeoIteratedIBMOLS.3 @@ -0,0 +1,151 @@ +.TH "moeoIteratedIBMOLS" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoIteratedIBMOLS \- Iterated version of IBMOLS as described in Basseur M., Burke K. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoLS< MOEOT, eoPop< MOEOT > & >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef MOEOT::ObjectiveVector \fBObjectiveVector\fP" +.br +.RI "\fIThe type of objective vector. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoIteratedIBMOLS\fP (moMoveInit< Move > &_moveInit, moNextMove< Move > &_nextMove, \fBeoEvalFunc\fP< MOEOT > &_eval, \fBmoeoMoveIncrEval\fP< Move > &_moveIncrEval, \fBmoeoBinaryIndicatorBasedFitnessAssignment\fP< MOEOT > &_fitnessAssignment, \fBeoContinue\fP< MOEOT > &_continuator, \fBeoMonOp\fP< MOEOT > &_monOp, \fBeoMonOp\fP< MOEOT > &_randomMonOp, unsigned int _nNoiseIterations=1)" +.br +.RI "\fICtor. \fP" +.ti -1c +.RI "void \fBoperator()\fP (\fBeoPop\fP< MOEOT > &_pop, \fBmoeoArchive\fP< MOEOT > &_arch)" +.br +.RI "\fIApply the local search iteratively until the stopping criteria is met. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBgenerateNewSolutions\fP (\fBeoPop\fP< MOEOT > &_pop, const \fBmoeoArchive\fP< MOEOT > &_arch)" +.br +.RI "\fICreates new population randomly initialized and/or initialized from the archive _arch. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoeoIBMOLS\fP< MOEOT, Move > \fBibmols\fP" +.br +.RI "\fIthe local search to iterate \fP" +.ti -1c +.RI "\fBeoEvalFunc\fP< MOEOT > & \fBeval\fP" +.br +.RI "\fIthe full evaluation \fP" +.ti -1c +.RI "\fBeoContinue\fP< MOEOT > & \fBcontinuator\fP" +.br +.RI "\fIthe stopping criteria \fP" +.ti -1c +.RI "\fBeoMonOp\fP< MOEOT > & \fBmonOp\fP" +.br +.RI "\fIthe monary operator \fP" +.ti -1c +.RI "\fBeoMonOp\fP< MOEOT > & \fBrandomMonOp\fP" +.br +.RI "\fIthe random monary operator (or random initializer) \fP" +.ti -1c +.RI "unsigned int \fBnNoiseIterations\fP" +.br +.RI "\fIthe number of iterations to apply the random noise \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoIteratedIBMOLS< MOEOT, Move >" +Iterated version of IBMOLS as described in Basseur M., Burke K. + +: 'Indicator-Based Multi-Objective Local Search' (2007). +.PP +Definition at line 41 of file moeoIteratedIBMOLS.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoeoIteratedIBMOLS\fP< MOEOT, Move >::\fBmoeoIteratedIBMOLS\fP (moMoveInit< Move > & _moveInit, moNextMove< Move > & _nextMove, \fBeoEvalFunc\fP< MOEOT > & _eval, \fBmoeoMoveIncrEval\fP< Move > & _moveIncrEval, \fBmoeoBinaryIndicatorBasedFitnessAssignment\fP< MOEOT > & _fitnessAssignment, \fBeoContinue\fP< MOEOT > & _continuator, \fBeoMonOp\fP< MOEOT > & _monOp, \fBeoMonOp\fP< MOEOT > & _randomMonOp, unsigned int _nNoiseIterations = \fC1\fP)\fC [inline]\fP" +.PP +Ctor. +.PP +\fBParameters:\fP +.RS 4 +\fI_moveInit\fP the move initializer +.br +\fI_nextMove\fP the neighborhood explorer +.br +\fI_eval\fP the full evaluation +.br +\fI_moveIncrEval\fP the incremental evaluation +.br +\fI_fitnessAssignment\fP the fitness assignment strategy +.br +\fI_continuator\fP the stopping criteria +.br +\fI_monOp\fP the monary operator +.br +\fI_randomMonOp\fP the random monary operator (or random initializer) +.br +\fI_nNoiseIterations\fP the number of iterations to apply the random noise +.RE +.PP + +.PP +Definition at line 61 of file moeoIteratedIBMOLS.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoeoIteratedIBMOLS\fP< MOEOT, Move >::operator() (\fBeoPop\fP< MOEOT > & _pop, \fBmoeoArchive\fP< MOEOT > & _arch)\fC [inline, virtual]\fP" +.PP +Apply the local search iteratively until the stopping criteria is met. +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP the initial population +.br +\fI_arch\fP the (updated) archive +.RE +.PP + +.PP +Implements \fBeoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void >\fP. +.PP +Definition at line 86 of file moeoIteratedIBMOLS.h. +.PP +References moeoIteratedIBMOLS< MOEOT, Move >::continuator, moeoIteratedIBMOLS< MOEOT, Move >::generateNewSolutions(), moeoIteratedIBMOLS< MOEOT, Move >::ibmols, and moeoArchive< MOEOT >::update(). +.SS "template void \fBmoeoIteratedIBMOLS\fP< MOEOT, Move >::generateNewSolutions (\fBeoPop\fP< MOEOT > & _pop, const \fBmoeoArchive\fP< MOEOT > & _arch)\fC [inline, private]\fP" +.PP +Creates new population randomly initialized and/or initialized from the archive _arch. +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP the output population +.br +\fI_arch\fP the archive +.RE +.PP + +.PP +Definition at line 121 of file moeoIteratedIBMOLS.h. +.PP +References moeoIteratedIBMOLS< MOEOT, Move >::eval, eoPop< EOT >::invalidate(), moeoIteratedIBMOLS< MOEOT, Move >::monOp, moeoIteratedIBMOLS< MOEOT, Move >::nNoiseIterations, and moeoIteratedIBMOLS< MOEOT, Move >::randomMonOp. +.PP +Referenced by moeoIteratedIBMOLS< MOEOT, Move >::operator()(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/moeoMoveIncrEval.3 b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/moeoMoveIncrEval.3 new file mode 100644 index 000000000..3bbbf9481 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/moeoMoveIncrEval.3 @@ -0,0 +1,21 @@ +.TH "moeoMoveIncrEval" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoMoveIncrEval \- +.SH SYNOPSIS +.br +.PP +Inherits \fBeoBF< A1, A2, R >< const const Move &, Move::EOType &, Move::EOType::ObjectiveVector >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moeoMoveIncrEval< Move >" + +.PP +Definition at line 9 of file moeoMoveIncrEval.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/moeoReferencePointIndicatorBasedFitnessAssignment.3 b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/moeoReferencePointIndicatorBasedFitnessAssignment.3 new file mode 100644 index 000000000..7b8c8dafc --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/moeoReferencePointIndicatorBasedFitnessAssignment.3 @@ -0,0 +1,155 @@ +.TH "moeoReferencePointIndicatorBasedFitnessAssignment" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoReferencePointIndicatorBasedFitnessAssignment \- Fitness assignment sheme based a Reference Point and a Quality Indicator. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoFitnessAssignment< MOEOT >< MOEOT >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef MOEOT::ObjectiveVector \fBObjectiveVector\fP" +.br +.RI "\fIThe type of objective vector. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoReferencePointIndicatorBasedFitnessAssignment\fP (\fBObjectiveVector\fP &_refPoint, \fBmoeoNormalizedSolutionVsSolutionBinaryMetric\fP< \fBObjectiveVector\fP, double > &_metric)" +.br +.RI "\fICtor. \fP" +.ti -1c +.RI "void \fBoperator()\fP (\fBeoPop\fP< MOEOT > &_pop)" +.br +.RI "\fISets the fitness values for every solution contained in the population _pop. \fP" +.ti -1c +.RI "void \fBupdateByDeleting\fP (\fBeoPop\fP< MOEOT > &_pop, \fBObjectiveVector\fP &_objVec)" +.br +.RI "\fIUpdates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account. \fP" +.in -1c +.SS "Protected Member Functions" + +.in +1c +.ti -1c +.RI "void \fBsetup\fP (const \fBeoPop\fP< MOEOT > &_pop)" +.br +.RI "\fISets the bounds for every objective using the min and the max value for every objective vector of _pop (and the reference point). \fP" +.ti -1c +.RI "void \fBsetFitnesses\fP (\fBeoPop\fP< MOEOT > &_pop)" +.br +.RI "\fISets the fitness of every individual contained in the population _pop. \fP" +.in -1c +.SS "Protected Attributes" + +.in +1c +.ti -1c +.RI "\fBObjectiveVector\fP & \fBrefPoint\fP" +.br +.RI "\fIthe reference point \fP" +.ti -1c +.RI "\fBmoeoNormalizedSolutionVsSolutionBinaryMetric\fP< \fBObjectiveVector\fP, double > & \fBmetric\fP" +.br +.RI "\fIthe quality indicator \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >" +Fitness assignment sheme based a Reference Point and a Quality Indicator. +.PP +Definition at line 25 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoeoReferencePointIndicatorBasedFitnessAssignment\fP< MOEOT >::\fBmoeoReferencePointIndicatorBasedFitnessAssignment\fP (\fBObjectiveVector\fP & _refPoint, \fBmoeoNormalizedSolutionVsSolutionBinaryMetric\fP< \fBObjectiveVector\fP, double > & _metric)\fC [inline]\fP" +.PP +Ctor. +.PP +\fBParameters:\fP +.RS 4 +\fI_refPoint\fP the reference point +.br +\fI_metric\fP the quality indicator +.RE +.PP + +.PP +Definition at line 37 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoeoReferencePointIndicatorBasedFitnessAssignment\fP< MOEOT >::operator() (\fBeoPop\fP< MOEOT > & _pop)\fC [inline, virtual]\fP" +.PP +Sets the fitness values for every solution contained in the population _pop. +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP the population +.RE +.PP + +.PP +Implements \fBeoUF< eoPop< MOEOT > &, void >\fP. +.PP +Definition at line 46 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +.PP +References moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::setFitnesses(), and moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::setup(). +.SS "template void \fBmoeoReferencePointIndicatorBasedFitnessAssignment\fP< MOEOT >::updateByDeleting (\fBeoPop\fP< MOEOT > & _pop, \fBObjectiveVector\fP & _objVec)\fC [inline, virtual]\fP" +.PP +Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account. +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP the population +.br +\fI_objVec\fP the objective vector +.RE +.PP + +.PP +Implements \fBmoeoFitnessAssignment< MOEOT >\fP. +.PP +Definition at line 60 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +.SS "template void \fBmoeoReferencePointIndicatorBasedFitnessAssignment\fP< MOEOT >::setup (const \fBeoPop\fP< MOEOT > & _pop)\fC [inline, protected]\fP" +.PP +Sets the bounds for every objective using the min and the max value for every objective vector of _pop (and the reference point). +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP the population +.RE +.PP + +.PP +Definition at line 78 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +.PP +References moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::metric, moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::refPoint, and moeoNormalizedSolutionVsSolutionBinaryMetric< ObjectiveVector, R >::setup(). +.PP +Referenced by moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::operator()(). +.SS "template void \fBmoeoReferencePointIndicatorBasedFitnessAssignment\fP< MOEOT >::setFitnesses (\fBeoPop\fP< MOEOT > & _pop)\fC [inline, protected]\fP" +.PP +Sets the fitness of every individual contained in the population _pop. +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP the population +.RE +.PP + +.PP +Definition at line 99 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +.PP +References moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::metric, and moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::refPoint. +.PP +Referenced by moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::operator()(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/peoEA.3 b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/peoEA.3 new file mode 100644 index 000000000..8025ecfaa --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/man/man3/peoEA.3 @@ -0,0 +1,107 @@ +.TH "peoEA" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoEA \- The \fBpeoEA\fP class offers an elementary evolutionary algorithm implementation. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoEA\fP (\fBeoContinue\fP< EOT > &__cont, peoPopEval< EOT > &__pop_eval, \fBeoSelect\fP< EOT > &__select, peoTransform< EOT > &__trans, \fBeoReplacement\fP< EOT > &__replace)" +.br +.RI "\fIConstructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. \fP" +.ti -1c +.RI "void \fBrun\fP ()" +.br +.RI "\fIEvolutionary algorithm function - a side effect of the fact that the class is derived from the \fBRunner\fP class, thus requiring the existence of a \fIrun\fP function, the algorithm being executed on a distinct thread. \fP" +.ti -1c +.RI "void \fBoperator()\fP (\fBeoPop\fP< EOT > &__pop)" +.br +.RI "\fI\fBFunction\fP operator for specifying the population to be associated with the algorithm. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBeoContinue\fP< EOT > & \fBcont\fP" +.br +.ti -1c +.RI "peoPopEval< EOT > & \fBpop_eval\fP" +.br +.ti -1c +.RI "\fBeoSelect\fP< EOT > & \fBselect\fP" +.br +.ti -1c +.RI "peoTransform< EOT > & \fBtrans\fP" +.br +.ti -1c +.RI "\fBeoReplacement\fP< EOT > & \fBreplace\fP" +.br +.ti -1c +.RI "\fBeoPop\fP< EOT > * \fBpop\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoEA< EOT >" +The \fBpeoEA\fP class offers an elementary evolutionary algorithm implementation. + +In addition, as compared with the algorithms provided by the \fBEO\fP framework, the \fBpeoEA\fP class has the underlying necessary structure for including, for example, parallel evaluation and parallel transformation operators, migration operators etc. Although there is no restriction on using the algorithms provided by the \fBEO\fP framework, the drawback resides in the fact that the \fBEO\fP implementation is exclusively sequential and, in consequence, no parallelism is provided. A simple example for constructing a \fBpeoEA\fP object: +.PP +... eoPop< EOT > population( POP_SIZE, popInitializer ); // creation of a population with POP_SIZE individuals - the popInitializer is a functor to be called for each individual eoGenContinue< EOT > eaCont( NUM_GEN ); // number of generations for the evolutionary algorithm eoCheckPoint< EOT > eaCheckpointContinue( eaCont ); // checkpoint incorporating the continuation criterion - startpoint for adding other checkpoint objects peoSeqPopEval< EOT > eaPopEval( evalFunction ); // sequential evaluation functor wrapper - evalFunction represents the actual evaluation functor eoRankingSelect< EOT > selectionStrategy; // selection strategy for creating the offspring population - a simple ranking selection in this case eoSelectNumber< EOT > eaSelect( selectionStrategy, POP_SIZE ); // the number of individuals to be selected for creating the offspring population eoRankingSelect< EOT > selectionStrategy; // selection strategy for creating the offspring population - a simple ranking selection in this case eoSGATransform< EOT > transform( crossover, CROSS_RATE, mutation, MUT_RATE ); // transformation operator - crossover and mutation operators with their associated probabilities peoSeqTransform< EOT > eaTransform( transform ); // ParadisEO specific sequential operator - a parallel version may be specified in the same manner eoPlusReplacement< EOT > eaReplace; // replacement strategy - for integrating the offspring resulting individuals in the initial population peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace ); // ParadisEO evolutionary algorithm integrating the above defined objects eaAlg( population ); // specifying the initial population for the algorithm ... +.PP +Definition at line 54 of file pmoeoEA.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoEA\fP< EOT >::\fBpeoEA\fP (\fBeoContinue\fP< EOT > & __cont, peoPopEval< EOT > & __pop_eval, \fBeoSelect\fP< EOT > & __select, peoTransform< EOT > & __trans, \fBeoReplacement\fP< EOT > & __replace)" +.PP +Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. +.PP +Depending on the requirements, a sequential or a parallel evaluation operator may be specified or, in the same manner, a sequential or a parallel transformation operator may be given as parameter. Out of the box objects may be provided, from the \fBEO\fP package, for example, or custom defined ones may be specified, provided that they are derived from the correct base classes. +.PP +\fBParameters:\fP +.RS 4 +\fIeoContinue<\fP EOT >& __cont - continuation criterion specifying whether the algorithm should continue or not; +.br +\fIpeoPopEval<\fP EOT >& __pop_eval - evaluation operator; it allows the specification of parallel evaluation operators, aggregate evaluation functions, etc.; +.br +\fIeoSelect<\fP EOT >& __select - selection strategy to be applied for constructing a list of offspring individuals; +.br +\fIpeoTransform<\fP EOT >& __trans - transformation operator, i.e. crossover and mutation; allows for sequential or parallel transform; +.br +\fIeoReplacement<\fP EOT >& __replace - replacement strategy for integrating the offspring individuals in the initial population; +.RE +.PP + +.PP +Definition at line 98 of file pmoeoEA.h. +.PP +References peoEA< EOT >::pop_eval, and peoEA< EOT >::trans. +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoEA\fP< EOT >::operator() (\fBeoPop\fP< EOT > & __pop)" +.PP +\fBFunction\fP operator for specifying the population to be associated with the algorithm. +.PP +\fBParameters:\fP +.RS 4 +\fIeoPop<\fP EOT >& __pop - initial population of the algorithm, to be iteratively evolved; +.RE +.PP + +.PP +Definition at line 114 of file pmoeoEA.h. +.PP +References peoEA< EOT >::pop. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/moeo.doxyfile.cmake b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/moeo.doxyfile.cmake new file mode 100644 index 000000000..3f56ae1a2 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/doc/moeo.doxyfile.cmake @@ -0,0 +1,237 @@ +# Doxyfile 1.5.1 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = @PACKAGE_NAME@ +PROJECT_NUMBER = @PACKAGE_VERSION@ +OUTPUT_DIRECTORY = @CMAKE_BINARY_DIR@/doc +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = @CMAKE_SOURCE_DIR@ +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = YES +WARNINGS = NO +WARN_IF_UNDOCUMENTED = NO +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = @CMAKE_SOURCE_DIR@ +FILE_PATTERNS = *.cpp \ + *.h \ + NEWS README +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 3 +IGNORE_PREFIX = moeo +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = YES +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = @EO_BIN_DIR@/doc/eo.doxytag=http://eodev.sourceforge.net/eo/doc/html +GENERATE_TAGFILE = @CMAKE_BINARY_DIR@/doc/moeo.doxytag +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = YES diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/moeo-conf.cmake b/tags/paradiseo-ix86-1.1/paradiseo-moeo/moeo-conf.cmake new file mode 100644 index 000000000..07ff1d182 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/moeo-conf.cmake @@ -0,0 +1,25 @@ + +###################################################################################### +###################################################################################### +### In this file, you can specify many CMake variables used to build paradisEO-MOEO. +###################################################################################### +###################################################################################### + + +###################################################################################### +### 1) OPTIONNAL +###################################################################################### + +# SET (MYVAR MYVALUE) + +###################################################################################### + + +##################################################################################### +### 2) OPTIONNAL - Overwrite subdirs +###################################################################################### + +# SUBDIRS(doc tutorial) + +###################################################################################### + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/CMakeLists.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/CMakeLists.txt new file mode 100644 index 000000000..91d0ced9e --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/CMakeLists.txt @@ -0,0 +1,33 @@ + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}) +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) + +###################################################################################### + + +###################################################################################### +### 2) Define your target(s): just the moeo lib here. +###################################################################################### + +SET(MOEO_LIB_OUTPUT_PATH ${ParadisEO-MOEO_BINARY_DIR}/lib) +SET(LIBRARY_OUTPUT_PATH ${MOEO_LIB_OUTPUT_PATH}) + +SET (MOEO_SOURCES core/moeoObjectiveVectorTraits.cpp) + +ADD_LIBRARY(moeo STATIC ${MOEO_SOURCES}) + +###################################################################################### + + +###################################################################################### +### 3) Optionnal: define your target(s)'s version: no effect for windows +###################################################################################### + +SET(MOEO_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(moeo PROPERTIES VERSION "${MOEO_VERSION}") +###################################################################################### + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoAlgo.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoAlgo.h new file mode 100644 index 000000000..39b01f394 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoAlgo.h @@ -0,0 +1,47 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOALGO_H_ +#define MOEOALGO_H_ + +/** + * Abstract class for multi-objective algorithms. + */ +class moeoAlgo + {}; + +#endif /*MOEOALGO_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoCombinedLS.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoCombinedLS.h new file mode 100644 index 000000000..50b2fb258 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoCombinedLS.h @@ -0,0 +1,92 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOCOMBINEDLS_H_ +#define MOEOCOMBINEDLS_H_ + +#include +#include +#include + +/** + * This class allows to embed a set of local searches that are sequentially applied, + * and so working and updating the same archive of non-dominated solutions. + */ +template < class MOEOT, class Type > +class moeoCombinedLS : public moeoLS < MOEOT, Type > + { + public: + + /** + * Ctor + * @param _first_mols the first multi-objective local search to add + */ + moeoCombinedLS(moeoLS < MOEOT, Type > & _first_mols) + { + combinedLS.push_back (& _first_mols); + } + + /** + * Adds a new local search to combine + * @param _mols the multi-objective local search to add + */ + void add(moeoLS < MOEOT, Type > & _mols) + { + combinedLS.push_back(& _mols); + } + + /** + * Gives a new solution in order to explore the neigborhood. + * The new non-dominated solutions are added to the archive + * @param _type the object to apply the local search to + * @param _arch the archive of non-dominated solutions + */ + void operator () (Type _type, moeoArchive < MOEOT > & _arch) + { + for (unsigned int i=0; i operator()(_type, _arch); + } + + + private: + + /** the vector that contains the combined LS */ + std::vector< moeoLS < MOEOT, Type > * > combinedLS; + + }; + +#endif /*MOEOCOMBINEDLS_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoEA.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoEA.h new file mode 100644 index 000000000..9e6ba3e48 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoEA.h @@ -0,0 +1,51 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOEA_H_ +#define MOEOEA_H_ + +#include +#include + +/** + * Abstract class for multi-objective evolutionary algorithms. + */ +template < class MOEOT > +class moeoEA : public moeoAlgo, public eoAlgo < MOEOT > + {}; + +#endif /*MOEOEA_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoEasyEA.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoEasyEA.h new file mode 100755 index 000000000..20cb0c8b8 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoEasyEA.h @@ -0,0 +1,256 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef _MOEOEASYEA_H +#define _MOEOEASYEA_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** + * An easy class to design multi-objective evolutionary algorithms. + */ +template < class MOEOT > +class moeoEasyEA: public moeoEA < MOEOT > + { + public: + + /** + * Ctor taking a breed and merge. + * @param _continuator the stopping criteria + * @param _eval the evaluation functions + * @param _breed the breeder + * @param _replace the replacement strategy + * @param _fitnessEval the fitness evaluation scheme + * @param _diversityEval the diversity evaluation scheme + * @param _evalFitAndDivBeforeSelection put this parameter to 'true' if you want to re-evalue the fitness and the diversity of the population before the selection process + */ + moeoEasyEA(eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoBreed < MOEOT > & _breed, moeoReplacement < MOEOT > & _replace, + moeoFitnessAssignment < MOEOT > & _fitnessEval, moeoDiversityAssignment < MOEOT > & _diversityEval, bool _evalFitAndDivBeforeSelection = false) + : + continuator(_continuator), eval (_eval), loopEval(_eval), popEval(loopEval), selectTransform(dummySelect, dummyTransform), breed(_breed), mergeReduce(dummyMerge, dummyReduce), replace(_replace), + fitnessEval(_fitnessEval), diversityEval(_diversityEval), evalFitAndDivBeforeSelection(_evalFitAndDivBeforeSelection) + {} + + + /** + * Ctor taking a breed, a merge and a eoPopEval. + * @param _continuator the stopping criteria + * @param _popEval the evaluation functions for the whole population + * @param _breed the breeder + * @param _replace the replacement strategy + * @param _fitnessEval the fitness evaluation scheme + * @param _diversityEval the diversity evaluation scheme + * @param _evalFitAndDivBeforeSelection put this parameter to 'true' if you want to re-evalue the fitness and the diversity of the population before the selection process + */ + moeoEasyEA(eoContinue < MOEOT > & _continuator, eoPopEvalFunc < MOEOT > & _popEval, eoBreed < MOEOT > & _breed, moeoReplacement < MOEOT > & _replace, + moeoFitnessAssignment < MOEOT > & _fitnessEval, moeoDiversityAssignment < MOEOT > & _diversityEval, bool _evalFitAndDivBeforeSelection = false) + : + continuator(_continuator), eval (dummyEval), loopEval(dummyEval), popEval(_popEval), selectTransform(dummySelect, dummyTransform), breed(_breed), mergeReduce(dummyMerge, dummyReduce), replace(_replace), + fitnessEval(_fitnessEval), diversityEval(_diversityEval), evalFitAndDivBeforeSelection(_evalFitAndDivBeforeSelection) + {} + + + /** + * Ctor taking a breed, a merge and a reduce. + * @param _continuator the stopping criteria + * @param _eval the evaluation functions + * @param _breed the breeder + * @param _merge the merge scheme + * @param _reduce the reduce scheme + * @param _fitnessEval the fitness evaluation scheme + * @param _diversityEval the diversity evaluation scheme + * @param _evalFitAndDivBeforeSelection put this parameter to 'true' if you want to re-evalue the fitness and the diversity of the population before the selection process + */ + moeoEasyEA(eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoBreed < MOEOT > & _breed, eoMerge < MOEOT > & _merge, eoReduce< MOEOT > & _reduce, + moeoFitnessAssignment < MOEOT > & _fitnessEval, moeoDiversityAssignment < MOEOT > & _diversityEval, bool _evalFitAndDivBeforeSelection = false) + : + continuator(_continuator), eval(_eval), loopEval(_eval), popEval(loopEval), selectTransform(dummySelect, dummyTransform), breed(_breed), mergeReduce(_merge,_reduce), replace(mergeReduce), + fitnessEval(_fitnessEval), diversityEval(_diversityEval), evalFitAndDivBeforeSelection(_evalFitAndDivBeforeSelection) + {} + + + /** + * Ctor taking a select, a transform and a replacement. + * @param _continuator the stopping criteria + * @param _eval the evaluation functions + * @param _select the selection scheme + * @param _transform the tranformation scheme + * @param _replace the replacement strategy + * @param _fitnessEval the fitness evaluation scheme + * @param _diversityEval the diversity evaluation scheme + * @param _evalFitAndDivBeforeSelection put this parameter to 'true' if you want to re-evalue the fitness and the diversity of the population before the selection process + */ + moeoEasyEA(eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoSelect < MOEOT > & _select, eoTransform < MOEOT > & _transform, moeoReplacement < MOEOT > & _replace, + moeoFitnessAssignment < MOEOT > & _fitnessEval, moeoDiversityAssignment < MOEOT > & _diversityEval, bool _evalFitAndDivBeforeSelection = false) + : + continuator(_continuator), eval(_eval), loopEval(_eval), popEval(loopEval), selectTransform(_select, _transform), breed(selectTransform), mergeReduce(dummyMerge, dummyReduce), replace(_replace), + fitnessEval(_fitnessEval), diversityEval(_diversityEval), evalFitAndDivBeforeSelection(_evalFitAndDivBeforeSelection) + {} + + + /** + * Ctor taking a select, a transform, a merge and a reduce. + * @param _continuator the stopping criteria + * @param _eval the evaluation functions + * @param _select the selection scheme + * @param _transform the tranformation scheme + * @param _merge the merge scheme + * @param _reduce the reduce scheme + * @param _fitnessEval the fitness evaluation scheme + * @param _diversityEval the diversity evaluation scheme + * @param _evalFitAndDivBeforeSelection put this parameter to 'true' if you want to re-evalue the fitness and the diversity of the population before the selection process + */ + moeoEasyEA(eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoSelect < MOEOT > & _select, eoTransform < MOEOT > & _transform, eoMerge < MOEOT > & _merge, eoReduce< MOEOT > & _reduce, + moeoFitnessAssignment < MOEOT > & _fitnessEval, moeoDiversityAssignment < MOEOT > & _diversityEval, bool _evalFitAndDivBeforeSelection = false) + : + continuator(_continuator), eval(_eval), loopEval(_eval), popEval(loopEval), selectTransform(_select, _transform), breed(selectTransform), mergeReduce(_merge,_reduce), replace(mergeReduce), + fitnessEval(_fitnessEval), diversityEval(_diversityEval), evalFitAndDivBeforeSelection(_evalFitAndDivBeforeSelection) + {} + + + /** + * Applies a few generation of evolution to the population _pop. + * @param _pop the population + */ + virtual void operator()(eoPop < MOEOT > & _pop) + { + eoPop < MOEOT > offspring, empty_pop; + popEval(empty_pop, _pop); // A first eval of pop. + bool firstTime = true; + do + { + try + { + unsigned int pSize = _pop.size(); + offspring.clear(); // new offspring + // fitness and diversity assignment (if you want to or if it is the first generation) + if (evalFitAndDivBeforeSelection || firstTime) + { + firstTime = false; + fitnessEval(_pop); + diversityEval(_pop); + } + breed(_pop, offspring); + popEval(_pop, offspring); // eval of parents + offspring if necessary + replace(_pop, offspring); // after replace, the new pop. is in _pop + if (pSize > _pop.size()) + { + throw std::runtime_error("Population shrinking!"); + } + else if (pSize < _pop.size()) + { + throw std::runtime_error("Population growing!"); + } + } + catch (std::exception& e) + { + std::string s = e.what(); + s.append( " in moeoEasyEA"); + throw std::runtime_error( s ); + } + } + while (continuator(_pop)); + } + + + protected: + + /** the stopping criteria */ + eoContinue < MOEOT > & continuator; + /** the evaluation functions */ + eoEvalFunc < MOEOT > & eval; + /** to evaluate the whole population */ + eoPopLoopEval < MOEOT > loopEval; + /** to evaluate the whole population */ + eoPopEvalFunc < MOEOT > & popEval; + /** breed: a select followed by a transform */ + eoSelectTransform < MOEOT > selectTransform; + /** the breeder */ + eoBreed < MOEOT > & breed; + /** replacement: a merge followed by a reduce */ + eoMergeReduce < MOEOT > mergeReduce; + /** the replacment strategy */ + moeoReplacement < MOEOT > & replace; + /** the fitness assignment strategy */ + moeoFitnessAssignment < MOEOT > & fitnessEval; + /** the diversity assignment strategy */ + moeoDiversityAssignment < MOEOT > & diversityEval; + /** if this parameter is set to 'true', the fitness and the diversity of the whole population will be re-evaluated before the selection process */ + bool evalFitAndDivBeforeSelection; + /** a dummy eval */ + class eoDummyEval : public eoEvalFunc < MOEOT > + { + public: /** the dummy functor */ + void operator()(MOEOT &) + {} + } + dummyEval; + /** a dummy select */ + class eoDummySelect : public eoSelect < MOEOT > + { + public: /** the dummy functor */ + void operator()(const eoPop < MOEOT > &, eoPop < MOEOT > &) + {} + } + dummySelect; + /** a dummy transform */ + class eoDummyTransform : public eoTransform < MOEOT > + { + public: /** the dummy functor */ + void operator()(eoPop < MOEOT > &) + {} + } + dummyTransform; + /** a dummy merge */ + eoNoElitism < MOEOT > dummyMerge; + /** a dummy reduce */ + eoTruncate < MOEOT > dummyReduce; + + }; + +#endif /*MOEOEASYEA_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoHybridLS.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoHybridLS.h new file mode 100644 index 000000000..3f7af06b4 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoHybridLS.h @@ -0,0 +1,101 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOHYBRIDLS_H_ +#define MOEOHYBRIDLS_H_ + +#include +#include +#include +#include +#include +#include + +/** + * This class allows to apply a multi-objective local search to a number of selected individuals contained in the archive + * at every generation until a stopping criteria is verified. + */ +template < class MOEOT > +class moeoHybridLS : public eoUpdater + { + public: + + /** + * Ctor + * @param _term stopping criteria + * @param _select selector + * @param _mols a multi-objective local search + * @param _arch the archive + */ + moeoHybridLS (eoContinue < MOEOT > & _term, eoSelect < MOEOT > & _select, moeoLS < MOEOT, MOEOT > & _mols, moeoArchive < MOEOT > & _arch) : + term(_term), select(_select), mols(_mols), arch(_arch) + {} + + + /** + * Applies the multi-objective local search to selected individuals contained in the archive if the stopping criteria is not verified + */ + void operator () () + { + if (! term (arch)) + { + // selection of solutions + eoPop < MOEOT > selectedSolutions; + select(arch, selectedSolutions); + // apply the local search to every selected solution + for (unsigned int i=0; i & term; + /** selector */ + eoSelect < MOEOT > & select; + /** multi-objective local search */ + moeoLS < MOEOT, MOEOT > & mols; + /** archive */ + moeoArchive < MOEOT > & arch; + + }; + +#endif /*MOEOHYBRIDLS_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoIBEA.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoIBEA.h new file mode 100644 index 000000000..dc6997191 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoIBEA.h @@ -0,0 +1,194 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOIBEA_H_ +#define MOEOIBEA_H_ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** + * IBEA (Indicator-Based Evolutionary Algorithm) as described in: + * E. Zitzler, S. Künzli, "Indicator-Based Selection in Multiobjective Search", Proc. 8th International Conference on Parallel Problem Solving from Nature (PPSN VIII), pp. 832-842, Birmingham, UK (2004). + * This class builds the IBEA algorithm only by using the fine-grained components of the ParadisEO-MOEO framework. + */ +template < class MOEOT > +class moeoIBEA : public moeoEA < MOEOT > + { + public: + + /** The type of objective vector */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Simple ctor with a eoGenOp. + * @param _maxGen number of generations before stopping + * @param _eval evaluation function + * @param _op variation operator + * @param _metric metric + * @param _kappa scaling factor kappa + */ + moeoIBEA (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op, moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric, const double _kappa=0.05) : + defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2), + fitnessAssignment(_metric, _kappa), replace(fitnessAssignment, dummyDiversityAssignment), genBreed(select, _op), breed(genBreed) + {} + + + /** + * Simple ctor with a eoTransform. + * @param _maxGen number of generations before stopping + * @param _eval evaluation function + * @param _op variation operator + * @param _metric metric + * @param _kappa scaling factor kappa + */ + moeoIBEA (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op, moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric, const double _kappa=0.05) : + defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2), + fitnessAssignment(_metric, _kappa), replace(fitnessAssignment, dummyDiversityAssignment), genBreed(select, _op), breed(genBreed) + {} + + + /** + * Ctor with a crossover, a mutation and their corresponding rates. + * @param _maxGen number of generations before stopping + * @param _eval evaluation function + * @param _crossover crossover + * @param _pCross crossover probability + * @param _mutation mutation + * @param _pMut mutation probability + * @param _metric metric + * @param _kappa scaling factor kappa + */ + moeoIBEA (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoQuadOp < MOEOT > & _crossover, double _pCross, eoMonOp < MOEOT > & _mutation, double _pMut, moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric, const double _kappa=0.05) : + defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select (2), + fitnessAssignment(_metric, _kappa), replace (fitnessAssignment, dummyDiversityAssignment), defaultSGAGenOp(_crossover, _pCross, _mutation, _pMut), + genBreed (select, defaultSGAGenOp), breed (genBreed) + {} + + + /** + * Ctor with a continuator (instead of _maxGen) and a eoGenOp. + * @param _continuator stopping criteria + * @param _eval evaluation function + * @param _op variation operator + * @param _metric metric + * @param _kappa scaling factor kappa + */ + moeoIBEA (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op, moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric, const double _kappa=0.05) : + continuator(_continuator), popEval(_eval), select(2), + fitnessAssignment(_metric, _kappa), replace(fitnessAssignment, dummyDiversityAssignment), genBreed(select, _op), breed(genBreed) + {} + + + /** + * Ctor with a continuator (instead of _maxGen) and a eoTransform. + * @param _continuator stopping criteria + * @param _eval evaluation function + * @param _op variation operator + * @param _metric metric + * @param _kappa scaling factor kappa + */ + moeoIBEA (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op, moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric, const double _kappa=0.05) : + continuator(_continuator), popEval(_eval), select(2), + fitnessAssignment(_metric, _kappa), replace(fitnessAssignment, dummyDiversityAssignment), genBreed(select, _op), breed(genBreed) + {} + + + /** + * Apply a few generation of evolution to the population _pop until the stopping criteria is verified. + * @param _pop the population + */ + virtual void operator () (eoPop < MOEOT > &_pop) + { + eoPop < MOEOT > offspring, empty_pop; + popEval (empty_pop, _pop); // a first eval of _pop + // evaluate fitness and diversity + fitnessAssignment(_pop); + dummyDiversityAssignment(_pop); + do + { + // generate offspring, worths are recalculated if necessary + breed (_pop, offspring); + // eval of offspring + popEval (_pop, offspring); + // after replace, the new pop is in _pop. Worths are recalculated if necessary + replace (_pop, offspring); + } + while (continuator (_pop)); + } + + + protected: + + /** a continuator based on the number of generations (used as default) */ + eoGenContinue < MOEOT > defaultGenContinuator; + /** stopping criteria */ + eoContinue < MOEOT > & continuator; + /** evaluation function used to evaluate the whole population */ + eoPopLoopEval < MOEOT > popEval; + /** binary tournament selection */ + moeoDetTournamentSelect < MOEOT > select; + /** fitness assignment used in IBEA */ + moeoExpBinaryIndicatorBasedFitnessAssignment < MOEOT > fitnessAssignment; + /** dummy diversity assignment */ + moeoDummyDiversityAssignment < MOEOT > dummyDiversityAssignment; + /** elitist replacement */ + moeoEnvironmentalReplacement < MOEOT > replace; + /** an object for genetic operators (used as default) */ + eoSGAGenOp < MOEOT > defaultSGAGenOp; + /** general breeder */ + eoGeneralBreeder < MOEOT > genBreed; + /** breeder */ + eoBreed < MOEOT > & breed; + + }; + +#endif /*MOEOIBEA_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoLS.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoLS.h new file mode 100644 index 000000000..812e10c1e --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoLS.h @@ -0,0 +1,53 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOLS_H_ +#define MOEOLS_H_ + +#include +#include +#include + +/** + * Abstract class for local searches applied to multi-objective optimization. + * Starting from a Type (i.e.: an individual, a pop, an archive...), it produces a set of new non-dominated solutions. + */ +template < class MOEOT, class Type > +class moeoLS: public moeoAlgo, public eoBF < Type, moeoArchive < MOEOT > &, void > + {}; + +#endif /*MOEOLS_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoNSGA.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoNSGA.h new file mode 100644 index 000000000..5c8d1fd28 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoNSGA.h @@ -0,0 +1,184 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEONSGA_H_ +#define MOEONSGA_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** + * NSGA (Non-dominated Sorting Genetic Algorithm) as described in: + * N. Srinivas, K. Deb, "Multiobjective Optimization Using Nondominated Sorting in Genetic Algorithms". + * Evolutionary Computation, Vol. 2(3), No 2, pp. 221-248 (1994). + * This class builds the NSGA algorithm only by using the fine-grained components of the ParadisEO-MOEO framework. + */ +template < class MOEOT > +class moeoNSGA: public moeoEA < MOEOT > + { + public: + + /** + * Simple ctor with a eoGenOp. + * @param _maxGen number of generations before stopping + * @param _eval evaluation function + * @param _op variation operator + * @param _nicheSize niche size + */ + moeoNSGA (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op, double _nicheSize = 0.5) : + defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2), + diversityAssignment(_nicheSize), replace(fitnessAssignment, diversityAssignment), genBreed(select, _op), breed(genBreed) + {} + + + /** + * Simple ctor with a eoTransform. + * @param _maxGen number of generations before stopping + * @param _eval evaluation function + * @param _op variation operator + * @param _nicheSize niche size + */ + moeoNSGA (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op, double _nicheSize = 0.5) : + defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2), + diversityAssignment(_nicheSize), replace(fitnessAssignment, diversityAssignment), genBreed(select, _op), breed(genBreed) + {} + + + /** + * Ctor with a crossover, a mutation and their corresponding rates. + * @param _maxGen number of generations before stopping + * @param _eval evaluation function + * @param _crossover crossover + * @param _pCross crossover probability + * @param _mutation mutation + * @param _pMut mutation probability + * @param _nicheSize niche size + */ + moeoNSGA (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoQuadOp < MOEOT > & _crossover, double _pCross, eoMonOp < MOEOT > & _mutation, double _pMut, double _nicheSize = 0.5) : + defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select (2), + diversityAssignment(_nicheSize), replace (fitnessAssignment, diversityAssignment), + defaultSGAGenOp(_crossover, _pCross, _mutation, _pMut), genBreed (select, defaultSGAGenOp), breed (genBreed) + {} + + + /** + * Ctor with a continuator (instead of _maxGen) and a eoGenOp. + * @param _continuator stopping criteria + * @param _eval evaluation function + * @param _op variation operator + * @param _nicheSize niche size + */ + moeoNSGA (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op, double _nicheSize = 0.5) : + continuator(_continuator), popEval(_eval), select(2), + diversityAssignment(_nicheSize), replace(fitnessAssignment, diversityAssignment), genBreed(select, _op), breed(genBreed) + {} + + + /** + * Ctor with a continuator (instead of _maxGen) and a eoTransform. + * @param _continuator stopping criteria + * @param _eval evaluation function + * @param _op variation operator + * @param _nicheSize niche size + */ + moeoNSGA (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op, double _nicheSize = 0.5) : + continuator(_continuator), popEval(_eval), select(2), + diversityAssignment(_nicheSize), replace(fitnessAssignment, diversityAssignment), genBreed(select, _op), breed(genBreed) + {} + + + /** + * Apply a few generation of evolution to the population _pop until the stopping criteria is verified. + * @param _pop the population + */ + virtual void operator () (eoPop < MOEOT > &_pop) + { + eoPop < MOEOT > offspring, empty_pop; + popEval (empty_pop, _pop); // a first eval of _pop + // evaluate fitness and diversity + fitnessAssignment(_pop); + diversityAssignment(_pop); + do + { + // generate offspring, worths are recalculated if necessary + breed (_pop, offspring); + // eval of offspring + popEval (_pop, offspring); + // after replace, the new pop is in _pop. Worths are recalculated if necessary + replace (_pop, offspring); + } + while (continuator (_pop)); + } + + + protected: + + /** a continuator based on the number of generations (used as default) */ + eoGenContinue < MOEOT > defaultGenContinuator; + /** stopping criteria */ + eoContinue < MOEOT > & continuator; + /** evaluation function used to evaluate the whole population */ + eoPopLoopEval < MOEOT > popEval; + /** binary tournament selection */ + moeoDetTournamentSelect < MOEOT > select; + /** fitness assignment used in NSGA-II */ + moeoFastNonDominatedSortingFitnessAssignment < MOEOT > fitnessAssignment; + /** diversity assignment used in NSGA-II */ + moeoFrontByFrontSharingDiversityAssignment < MOEOT > diversityAssignment; + /** elitist replacement */ + moeoElitistReplacement < MOEOT > replace; + /** an object for genetic operators (used as default) */ + eoSGAGenOp < MOEOT > defaultSGAGenOp; + /** general breeder */ + eoGeneralBreeder < MOEOT > genBreed; + /** breeder */ + eoBreed < MOEOT > & breed; + + }; + +#endif /*MOEONSGAII_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoNSGAII.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoNSGAII.h new file mode 100644 index 000000000..d31e723bc --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/algo/moeoNSGAII.h @@ -0,0 +1,190 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEONSGAII_H_ +#define MOEONSGAII_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include + +/** + * NSGA-II (Non-dominated Sorting Genetic Algorithm II) as described in: + * Deb, K., S. Agrawal, A. Pratap, and T. Meyarivan : "A fast elitist non-dominated sorting genetic algorithm for multi-objective optimization: NSGA-II". + * In IEEE Transactions on Evolutionary Computation, Vol. 6, No 2, pp 182-197 (April 2002). + * This class builds the NSGA-II algorithm only by using the fine-grained components of the ParadisEO-MOEO framework. + */ +template < class MOEOT > +class moeoNSGAII: public moeoEA < MOEOT > + { + public: + + /** + * Simple ctor with a eoGenOp. + * @param _maxGen number of generations before stopping + * @param _eval evaluation function + * @param _op variation operator + */ + moeoNSGAII (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op) : + defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2), + replace(fitnessAssignment, diversityAssignment), defaultSGAGenOp(defaultQuadOp, 0.0, defaultMonOp, 0.0), + genBreed(select, _op), breed(genBreed) + {} + + + /** + * Simple ctor with a eoTransform. + * @param _maxGen number of generations before stopping + * @param _eval evaluation function + * @param _op variation operator + */ + moeoNSGAII (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op) : + defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2), + replace(fitnessAssignment, diversityAssignment), defaultSGAGenOp(defaultQuadOp, 0.0, defaultMonOp, 0.0), + genBreed(select, _op), breed(genBreed) + {} + + + /** + * Ctor with a crossover, a mutation and their corresponding rates. + * @param _maxGen number of generations before stopping + * @param _eval evaluation function + * @param _crossover crossover + * @param _pCross crossover probability + * @param _mutation mutation + * @param _pMut mutation probability + */ + moeoNSGAII (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoQuadOp < MOEOT > & _crossover, double _pCross, eoMonOp < MOEOT > & _mutation, double _pMut) : + defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select (2), + replace (fitnessAssignment, diversityAssignment), defaultSGAGenOp(_crossover, _pCross, _mutation, _pMut), + genBreed (select, defaultSGAGenOp), breed (genBreed) + {} + + + /** + * Ctor with a continuator (instead of _maxGen) and a eoGenOp. + * @param _continuator stopping criteria + * @param _eval evaluation function + * @param _op variation operator + */ + moeoNSGAII (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op) : + defaultGenContinuator(0), continuator(_continuator), popEval(_eval), select(2), + replace(fitnessAssignment, diversityAssignment), defaultSGAGenOp(defaultQuadOp, 1.0, defaultMonOp, 1.0), + genBreed(select, _op), breed(genBreed) + {} + + + /** + * Ctor with a continuator (instead of _maxGen) and a eoTransform. + * @param _continuator stopping criteria + * @param _eval evaluation function + * @param _op variation operator + */ + moeoNSGAII (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op) : + continuator(_continuator), popEval(_eval), select(2), + replace(fitnessAssignment, diversityAssignment), defaultSGAGenOp(defaultQuadOp, 0.0, defaultMonOp, 0.0), + genBreed(select, _op), breed(genBreed) + {} + + + /** + * Apply a few generation of evolution to the population _pop until the stopping criteria is verified. + * @param _pop the population + */ + virtual void operator () (eoPop < MOEOT > &_pop) + { + eoPop < MOEOT > offspring, empty_pop; + popEval (empty_pop, _pop); // a first eval of _pop + // evaluate fitness and diversity + fitnessAssignment(_pop); + diversityAssignment(_pop); + do + { + // generate offspring, worths are recalculated if necessary + breed (_pop, offspring); + // eval of offspring + popEval (_pop, offspring); + // after replace, the new pop is in _pop. Worths are recalculated if necessary + replace (_pop, offspring); + } + while (continuator (_pop)); + } + + + protected: + + /** a continuator based on the number of generations (used as default) */ + eoGenContinue < MOEOT > defaultGenContinuator; + /** stopping criteria */ + eoContinue < MOEOT > & continuator; + /** evaluation function used to evaluate the whole population */ + eoPopLoopEval < MOEOT > popEval; + /** binary tournament selection */ + moeoDetTournamentSelect < MOEOT > select; + /** fitness assignment used in NSGA-II */ + moeoFastNonDominatedSortingFitnessAssignment < MOEOT > fitnessAssignment; + /** diversity assignment used in NSGA-II */ + moeoFrontByFrontCrowdingDiversityAssignment < MOEOT > diversityAssignment; + /** elitist replacement */ + moeoElitistReplacement < MOEOT > replace; + /** a default crossover */ + eoQuadCloneOp < MOEOT > defaultQuadOp; + /** a default mutation */ + eoMonCloneOp < MOEOT > defaultMonOp; + /** an object for genetic operators (used as default) */ + eoSGAGenOp < MOEOT > defaultSGAGenOp; + /** general breeder */ + eoGeneralBreeder < MOEOT > genBreed; + /** breeder */ + eoBreed < MOEOT > & breed; + + }; + +#endif /*MOEONSGAII_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/archive/moeoArchive.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/archive/moeoArchive.h new file mode 100644 index 000000000..fcfe1bc7a --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/archive/moeoArchive.h @@ -0,0 +1,206 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOARCHIVE_H_ +#define MOEOARCHIVE_H_ + +#include +#include +#include + +/** + * An archive is a secondary population that stores non-dominated solutions. + */ +template < class MOEOT > +class moeoArchive : public eoPop < MOEOT > + { + public: + + using eoPop < MOEOT > :: size; + using eoPop < MOEOT > :: resize; + using eoPop < MOEOT > :: operator[]; + using eoPop < MOEOT > :: back; + using eoPop < MOEOT > :: pop_back; + + + /** + * The type of an objective vector for a solution + */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Default ctor. + * The moeoObjectiveVectorComparator used to compare solutions is based on Pareto dominance + */ + moeoArchive() : eoPop < MOEOT >(), comparator(paretoComparator) + {} + + + /** + * Ctor + * @param _comparator the moeoObjectiveVectorComparator used to compare solutions + */ + moeoArchive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator) : eoPop < MOEOT >(), comparator(_comparator) + {} + + + /** + * Returns true if the current archive dominates _objectiveVector according to the moeoObjectiveVectorComparator given in the constructor + * @param _objectiveVector the objective vector to compare with the current archive + */ + bool dominates (const ObjectiveVector & _objectiveVector) const + { + for (unsigned int i = 0; i & _pop) + { + for (unsigned int i=0; i<_pop.size(); i++) + { + update(_pop[i]); + } + } + + + /** + * Returns true if the current archive contains the same objective vectors than the given archive _arch + * @param _arch the given archive + */ + bool equals (const moeoArchive < MOEOT > & _arch) + { + for (unsigned int i=0; i & comparator; + /** A moeoObjectiveVectorComparator based on Pareto dominance (used as default) */ + moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; + + }; + +#endif /*MOEOARCHIVE_H_ */ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoAggregativeComparator.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoAggregativeComparator.h new file mode 100644 index 000000000..d684c54eb --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoAggregativeComparator.h @@ -0,0 +1,80 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOAGGREGATIVECOMPARATOR_H_ +#define MOEOAGGREGATIVECOMPARATOR_H_ + +#include + +/** + * Functor allowing to compare two solutions according to their fitness and diversity values, each according to its aggregative value. + */ +template < class MOEOT > +class moeoAggregativeComparator : public moeoComparator < MOEOT > + { + public: + + /** + * Ctor. + * @param _weightFitness the weight for fitness + * @param _weightDiversity the weight for diversity + */ + moeoAggregativeComparator(double _weightFitness = 1.0, double _weightDiversity = 1.0) : weightFitness(_weightFitness), weightDiversity(_weightDiversity) + {} + + + /** + * Returns true if _moeo1 < _moeo2 according to the aggregation of their fitness and diversity values + * @param _moeo1 the first solution + * @param _moeo2 the second solution + */ + const bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) + { + return ( weightFitness * _moeo1.fitness() + weightDiversity * _moeo1.diversity() ) < ( weightFitness * _moeo2.fitness() + weightDiversity * _moeo2.diversity() ); + } + + + private: + + /** the weight for fitness */ + double weightFitness; + /** the weight for diversity */ + double weightDiversity; + + }; + +#endif /*MOEOAGGREGATIVECOMPARATOR_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoComparator.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoComparator.h new file mode 100644 index 000000000..e97845505 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoComparator.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOCOMPARATOR_H_ +#define MOEOCOMPARATOR_H_ + +#include + +/** + * Functor allowing to compare two solutions. + */ +template < class MOEOT > +class moeoComparator : public eoBF < const MOEOT &, const MOEOT &, const bool > + {}; + +#endif /*MOEOCOMPARATOR_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoDiversityThenFitnessComparator.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoDiversityThenFitnessComparator.h new file mode 100644 index 000000000..db58f936f --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoDiversityThenFitnessComparator.h @@ -0,0 +1,70 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEODIVERSITYTHENFITNESSCOMPARATOR_H_ +#define MOEODIVERSITYTHENFITNESSCOMPARATOR_H_ + +#include + +/** + * Functor allowing to compare two solutions according to their diversity values, then according to their fitness values. + */ +template < class MOEOT > +class moeoDiversityThenFitnessComparator : public moeoComparator < MOEOT > + { + public: + + /** + * Returns true if _moeo1 < _moeo2 according to their diversity values, then according to their fitness values + * @param _moeo1 the first solution + * @param _moeo2 the second solution + */ + const bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) + { + if (_moeo1.diversity() == _moeo2.diversity()) + { + return _moeo1.fitness() < _moeo2.fitness(); + } + else + { + return _moeo1.diversity() < _moeo2.diversity(); + } + } + + }; + +#endif /*MOEODIVERSITYTHENFITNESSCOMPARATOR_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoFitnessThenDiversityComparator.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoFitnessThenDiversityComparator.h new file mode 100644 index 000000000..cf6c4004b --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoFitnessThenDiversityComparator.h @@ -0,0 +1,70 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOFITNESSTHENDIVERSITYCOMPARATOR_H_ +#define MOEOFITNESSTHENDIVERSITYCOMPARATOR_H_ + +#include + +/** + * Functor allowing to compare two solutions according to their fitness values, then according to their diversity values. + */ +template < class MOEOT > +class moeoFitnessThenDiversityComparator : public moeoComparator < MOEOT > + { + public: + + /** + * Returns true if _moeo1 < _moeo2 according to their fitness values, then according to their diversity values + * @param _moeo1 the first solution + * @param _moeo2 the second solution + */ + const bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) + { + if (_moeo1.fitness() == _moeo2.fitness()) + { + return _moeo1.diversity() < _moeo2.diversity(); + } + else + { + return _moeo1.fitness() < _moeo2.fitness(); + } + } + + }; + +#endif /*MOEOFITNESSTHENDIVERSITYCOMPARATOR_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoGDominanceObjectiveVectorComparator.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoGDominanceObjectiveVectorComparator.h new file mode 100644 index 000000000..c51e26c02 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoGDominanceObjectiveVectorComparator.h @@ -0,0 +1,127 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOGDOMINANCEOBJECTIVEVECTORCOMPARATOR_H_ +#define MOEOGDOMINANCEOBJECTIVEVECTORCOMPARATOR_H_ + +#include + +/** + * This functor class allows to compare 2 objective vectors according to g-dominance. + * The concept of g-dominance as been introduced in: + * J. Molina, L. V. Santana, A. G. Hernandez-Diaz, C. A. Coello Coello, R. Caballero, + * "g-dominance: Reference point based dominance" (2007) + */ +template < class ObjectiveVector > +class moeoGDominanceObjectiveVectorComparator : public moeoObjectiveVectorComparator < ObjectiveVector > + { + public: + + /** + * Ctor. + * @param _ref the reference point + */ + moeoGDominanceObjectiveVectorComparator(ObjectiveVector & _ref) : ref(_ref) + {} + + + /** + * Returns true if _objectiveVector1 is g-dominated by _objectiveVector2. + * @param _objectiveVector1 the first objective vector + * @param _objectiveVector2 the second objective vector + */ + const bool operator()(const ObjectiveVector & _objectiveVector1, const ObjectiveVector & _objectiveVector2) + { + unsigned int flag1 = flag(_objectiveVector1); + unsigned int flag2 = flag(_objectiveVector2); + if (flag2==0) + { + // cannot dominate + return false; + } + else if ( (flag2==1) && (flag1==0) ) + { + // is dominated + return true; + } + else // (flag1==1) && (flag2==1) + { + // both are on the good region, so let's use the classical Pareto dominance + return paretoComparator(_objectiveVector1, _objectiveVector2); + } + } + + + private: + + /** the reference point */ + ObjectiveVector & ref; + /** Pareto comparator */ + moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; + + + /** + * Returns the flag of _objectiveVector according to the reference point + * @param _objectiveVector the first objective vector + */ + unsigned int flag(const ObjectiveVector & _objectiveVector) + { + unsigned int result=1; + for (unsigned int i=0; i ref[i]) + { + result=0; + } + } + if (result==0) + { + result=1; + for (unsigned int i=0; i +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOOBJECTIVEOBJECTIVEVECTORCOMPARATOR_H_ +#define MOEOOBJECTIVEOBJECTIVEVECTORCOMPARATOR_H_ + +#include + +/** + * Functor allowing to compare two objective vectors according to their first objective value, then their second, and so on. + */ +template < class ObjectiveVector > +class moeoObjectiveObjectiveVectorComparator : public moeoObjectiveVectorComparator < ObjectiveVector > + { + public: + + /** + * Returns true if _objectiveVector1 < _objectiveVector2 on the first objective, then on the second, and so on + * @param _objectiveVector1 the first objective vector + * @param _objectiveVector2 the second objective vector + */ + const bool operator()(const ObjectiveVector & _objectiveVector1, const ObjectiveVector & _objectiveVector2) + { + for (unsigned int i=0; i ObjectiveVector::Traits::tolerance() ) + { + if (_objectiveVector1[i] < _objectiveVector2[i]) + { + return true; + } + else + { + return false; + } + } + } + return false; + } + + }; + +#endif /*MOEOOBJECTIVEOBJECTIVEVECTORCOMPARATOR_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoObjectiveVectorComparator.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoObjectiveVectorComparator.h new file mode 100644 index 000000000..a34112690 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoObjectiveVectorComparator.h @@ -0,0 +1,52 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOOBJECTIVEVECTORCOMPARATOR_H_ +#define MOEOOBJECTIVEVECTORCOMPARATOR_H_ + +#include +#include + +/** + * Abstract class allowing to compare 2 objective vectors. + * The template argument ObjectiveVector have to be a moeoObjectiveVector. + */ +template < class ObjectiveVector > +class moeoObjectiveVectorComparator : public eoBF < const ObjectiveVector &, const ObjectiveVector &, const bool > + {}; + +#endif /*MOEOOBJECTIVEVECTORCOMPARATOR_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoOneObjectiveComparator.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoOneObjectiveComparator.h new file mode 100644 index 000000000..66c71a1de --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoOneObjectiveComparator.h @@ -0,0 +1,82 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOONEOBJECTIVECOMPARATOR_H_ +#define MOEOONEOBJECTIVECOMPARATOR_H_ + +#include + +/** + * Functor allowing to compare two solutions according to one objective. + */ +template < class MOEOT > +class moeoOneObjectiveComparator : public moeoComparator < MOEOT > + { + public: + + /** + * Ctor. + * @param _obj the index of objective + */ + moeoOneObjectiveComparator(unsigned int _obj) : obj(_obj) + { + if (obj > MOEOT::ObjectiveVector::nObjectives()) + { + throw std::runtime_error("Problem with the index of objective in moeoOneObjectiveComparator"); + } + } + + + /** + * Returns true if _moeo1 < _moeo2 on the obj objective + * @param _moeo1 the first solution + * @param _moeo2 the second solution + */ + const bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) + { + return _moeo1.objectiveVector()[obj] < _moeo2.objectiveVector()[obj]; + } + + + private: + + /** the index of objective */ + unsigned int obj; + + }; + +#endif /*MOEOONEOBJECTIVECOMPARATOR_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoParetoObjectiveVectorComparator.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoParetoObjectiveVectorComparator.h new file mode 100644 index 000000000..fca1614f9 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/comparator/moeoParetoObjectiveVectorComparator.h @@ -0,0 +1,95 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOPARETOOBJECTIVEVECTORCOMPARATOR_H_ +#define MOEOPARETOOBJECTIVEVECTORCOMPARATOR_H_ + +#include + +/** + * This functor class allows to compare 2 objective vectors according to Pareto dominance. + */ +template < class ObjectiveVector > +class moeoParetoObjectiveVectorComparator : public moeoObjectiveVectorComparator < ObjectiveVector > + { + public: + + /** + * Returns true if _objectiveVector1 is dominated by _objectiveVector2 + * @param _objectiveVector1 the first objective vector + * @param _objectiveVector2 the second objective vector + */ + const bool operator()(const ObjectiveVector & _objectiveVector1, const ObjectiveVector & _objectiveVector2) + { + bool dom = false; + for (unsigned int i=0; i ObjectiveVector::Traits::tolerance() ) + { + // if the ith objective have to be minimized... + if (ObjectiveVector::minimizing(i)) + { + if (_objectiveVector1[i] > _objectiveVector2[i]) + { + dom = true; //_objectiveVector1[i] is not better than _objectiveVector2[i] + } + else + { + return false; //_objectiveVector2 cannot dominate _objectiveVector1 + } + } + // if the ith objective have to be maximized... + else if (ObjectiveVector::maximizing(i)) + { + if (_objectiveVector1[i] < _objectiveVector2[i]) + { + dom = true; //_objectiveVector1[i] is not better than _objectiveVector2[i] + } + else + { + return false; //_objectiveVector2 cannot dominate _objectiveVector1 + } + } + } + } + return dom; + } + + }; + +#endif /*MOEOPARETOOBJECTIVEVECTORCOMPARATOR_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/MOEO.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/MOEO.h new file mode 100644 index 000000000..6910486a0 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/MOEO.h @@ -0,0 +1,355 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEO_H_ +#define MOEO_H_ + +#include +#include +#include +#include + +/** + * Base class allowing to represent a solution (an individual) for multi-objective optimization. + * The template argument MOEOObjectiveVector allows to represent the solution in the objective space (it can be a moeoObjectiveVector object). + * The template argument MOEOFitness is an object reflecting the quality of the solution in term of convergence (the fitness of a solution is always to be maximized). + * The template argument MOEODiversity is an object reflecting the quality of the solution in term of diversity (the diversity of a solution is always to be maximized). + * All template arguments must have a void and a copy constructor. + * Using some specific representations, you will have to define a copy constructor if the default one is not what you want. + * In the same cases, you will also have to define the affectation operator (operator=). + * Then, you will explicitly have to call the parent copy constructor and the parent affectation operator at the beginning of the corresponding implementation. + * Besides, note that, contrary to the mono-objective case (and to EO) where the fitness value of a solution is confused with its objective value, + * the fitness value differs of the objectives values in the multi-objective case. + */ + +/* + template < typename DataType, typename DataTypeEx > struct Wrapper { + + Wrapper() {} + + Wrapper( const DataType& data ) + : embededData( data ) {} + + Wrapper( const Wrapper& wrapper ) + : embededData( wrapper.embededData ), embededDataEx( wrapper.embededDataEx ) {} + + operator const DataType& () const { return embededData; } + + Wrapper& operator= ( const Wrapper& wrapper ) { + + embededData = wrapper.embededData; + embededDataEx = wrapper.embededDataEx; + return *this; + } + + Wrapper& operator= ( const DataType& data ) { + + embededData = data; + return *this; + } + + DataType embededData; + DataTypeEx embededDataEx; +}; + **/ + + +template < class MOEOObjectiveVector, class MOEOFitness, class MOEODiversity > +class MOEO : public EO < MOEOObjectiveVector > + { + public: + + /** the objective vector type of a solution */ + typedef MOEOObjectiveVector ObjectiveVector; + + /** the fitness type of a solution */ + typedef MOEOFitness Fitness; +// typedef Wrapper< MOEOFitness, MOEOObjectiveVector > Fitness; + + /** the diversity type of a solution */ + typedef MOEODiversity Diversity; + + + /** + * Ctor + */ + MOEO() + { + // default values for every parameters + objectiveVectorValue = ObjectiveVector(); + fitnessValue = Fitness(); + diversityValue = Diversity(); + // invalidate all + invalidate(); + } + + + /** + * Virtual dtor + */ + virtual ~MOEO() + {}; + + + /** + * Returns the objective vector of the current solution + */ + ObjectiveVector objectiveVector() const + { + if ( invalidObjectiveVector() ) + { + throw std::runtime_error("invalid objective vector in MOEO"); + } + return objectiveVectorValue; + } + + + /** + * Sets the objective vector of the current solution + * @param _objectiveVectorValue the new objective vector + */ + void objectiveVector(const ObjectiveVector & _objectiveVectorValue) + { + objectiveVectorValue = _objectiveVectorValue; + invalidObjectiveVectorValue = false; + } + + + /** + * Sets the objective vector as invalid + */ + void invalidateObjectiveVector() + { + invalidObjectiveVectorValue = true; + } + + + /** + * Returns true if the objective vector is invalid, false otherwise + */ + bool invalidObjectiveVector() const + { + return invalidObjectiveVectorValue; + } + + + /** + * Returns the fitness value of the current solution + */ + Fitness fitness() const + { + if ( invalidFitness() ) + { + throw std::runtime_error("invalid fitness in MOEO"); + } +// const_cast< Fitness& >( fitnessValue ).embededDataEx = objectiveVectorValue; + + return fitnessValue; + } + + + /** + * Sets the fitness value of the current solution + * @param _fitnessValue the new fitness value + */ + void fitness(const Fitness & _fitnessValue) + { + fitnessValue = _fitnessValue; + invalidFitnessValue = false; + } + + + /** + * Sets the fitness value as invalid + */ + void invalidateFitness() + { + invalidFitnessValue = true; + } + + + /** + * Returns true if the fitness value is invalid, false otherwise + */ + bool invalidFitness() const + { + return invalidFitnessValue; + } + + + /** + * Returns the diversity value of the current solution + */ + Diversity diversity() const + { + if ( invalidDiversity() ) + { + throw std::runtime_error("invalid diversity in MOEO"); + } + return diversityValue; + } + + + /** + * Sets the diversity value of the current solution + * @param _diversityValue the new diversity value + */ + void diversity(const Diversity & _diversityValue) + { + diversityValue = _diversityValue; + invalidDiversityValue = false; + } + + + /** + * Sets the diversity value as invalid + */ + void invalidateDiversity() + { + invalidDiversityValue = true; + } + + + /** + * Returns true if the diversity value is invalid, false otherwise + */ + bool invalidDiversity() const + { + return invalidDiversityValue; + } + + + /** + * Sets the objective vector, the fitness value and the diversity value as invalid + */ + void invalidate() + { + invalidateObjectiveVector(); + invalidateFitness(); + invalidateDiversity(); + } + + + /** + * Returns true if the objective values are invalid, false otherwise + */ + bool invalid() const + { + return invalidObjectiveVector(); + } + + + /** + * Returns true if the objective vector of the current solution is smaller than the objective vector of _other on the first objective, + * then on the second, and so on (can be usefull for sorting/printing). + * You should implement another function in the sub-class of MOEO to have another sorting mecanism. + * @param _other the other MOEO object to compare with + */ + bool operator<(const MOEO & _other) const + { + return objectiveVector() < _other.objectiveVector(); + } + + + /** + * Return the class id (the class name as a std::string) + */ + virtual std::string className() const + { + return "MOEO"; + } + + + /** + * Writing object + * @param _os output stream + */ + virtual void printOn(std::ostream & _os) const + { + if ( invalidObjectiveVector() ) + { + _os << "INVALID\t"; + } + else + { + _os << objectiveVectorValue << '\t'; + } + } + + + /** + * Reading object + * @param _is input stream + */ + virtual void readFrom(std::istream & _is) + { + std::string objectiveVector_str; + int pos = _is.tellg(); + _is >> objectiveVector_str; + if (objectiveVector_str == "INVALID") + { + invalidateObjectiveVector(); + } + else + { + invalidObjectiveVectorValue = false; + _is.seekg(pos); // rewind + _is >> objectiveVectorValue; + } + } + + + private: + + /** the objective vector of this solution */ + ObjectiveVector objectiveVectorValue; + /** true if the objective vector is invalid */ + bool invalidObjectiveVectorValue; + /** the fitness value of this solution */ + Fitness fitnessValue; + /** true if the fitness value is invalid */ + bool invalidFitnessValue; + /** the diversity value of this solution */ + Diversity diversityValue; + /** true if the diversity value is invalid */ + bool invalidDiversityValue; + + }; + + + +#endif /*MOEO_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoBitVector.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoBitVector.h new file mode 100644 index 000000000..355ea9d51 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoBitVector.h @@ -0,0 +1,108 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOBITVECTOR_H_ +#define MOEOBITVECTOR_H_ + +#include + +/** + * This class is an implementationeo of a simple bit-valued moeoVector. + */ +template < class MOEOObjectiveVector, class MOEOFitness, class MOEODiversity > +class moeoBitVector : public moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool > + { + public: + + using moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool > :: begin; + using moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool > :: end; + using moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool > :: resize; + using moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool > :: size; + + + /** + * Ctor + * @param _size Length of vector (default is 0) + * @param _value Initial value of all elements (default is default value of type GeneType) + */ + moeoBitVector(unsigned int _size = 0, bool _value = false) : moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool >(_size, _value) + {} + + + /** + * Returns the class name as a std::string + */ + virtual std::string className() const + { + return "moeoBitVector"; + } + + + /** + * Writing object + * @param _os output stream + */ + virtual void printOn(std::ostream & _os) const + { + MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >::printOn(_os); + _os << ' '; + _os << size() << ' '; + std::copy(begin(), end(), std::ostream_iterator(_os)); + } + + + /** + * Reading object + * @param _is input stream + */ + virtual void readFrom(std::istream & _is) + { + MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >::readFrom(_is); + unsigned int s; + _is >> s; + std::string bits; + _is >> bits; + if (_is) + { + resize(bits.size()); + std::transform(bits.begin(), bits.end(), begin(), std::bind2nd(std::equal_to(), '1')); + } + } + + }; + +#endif /*MOEOBITVECTOR_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoEvalFunc.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoEvalFunc.h new file mode 100644 index 000000000..767fe8f9d --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoEvalFunc.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOEVALFUNC_H_ +#define MOEOEVALFUNC_H_ + +#include + +/* + * Functor that evaluates one MOEO by setting all its objective values. + */ +template < class MOEOT > +class moeoEvalFunc : public eoEvalFunc< MOEOT > + {}; + +#endif /*MOEOEVALFUNC_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoObjectiveVector.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoObjectiveVector.h new file mode 100644 index 000000000..8629a4db9 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoObjectiveVector.h @@ -0,0 +1,116 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOOBJECTIVEVECTOR_H_ +#define MOEOOBJECTIVEVECTOR_H_ + +#include + +/** + * Abstract class allowing to represent a solution in the objective space (phenotypic representation). + * The template argument ObjectiveVectorTraits defaults to moeoObjectiveVectorTraits, + * but it can be replaced at will by any other class that implements the static functions defined therein. + * Some static funtions to access to the traits characteristics are re-defined in order not to write a lot of typedef's. + */ +template < class ObjectiveVectorTraits, class ObjectiveVectorType > +class moeoObjectiveVector : public std::vector < ObjectiveVectorType > + { + public: + + /** The traits of objective vectors */ + typedef ObjectiveVectorTraits Traits; + /** The type of an objective value */ + typedef ObjectiveVectorType Type; + + + /** + * Ctor + */ + moeoObjectiveVector(Type _value = Type()) : std::vector < Type > (ObjectiveVectorTraits::nObjectives(), _value) + {} + + + /** + * Ctor from a vector of Type + * @param _v the std::vector < Type > + */ + moeoObjectiveVector(std::vector < Type > & _v) : std::vector < Type > (_v) + {} + + + /** + * Parameters setting (for the objective vector of any solution) + * @param _nObjectives the number of objectives + * @param _bObjectives the min/max vector (true = min / false = max) + */ + static void setup(unsigned int _nObjectives, std::vector < bool > & _bObjectives) + { + ObjectiveVectorTraits::setup(_nObjectives, _bObjectives); + } + + + /** + * Returns the number of objectives + */ + static unsigned int nObjectives() + { + return ObjectiveVectorTraits::nObjectives(); + } + + + /** + * Returns true if the _ith objective have to be minimized + * @param _i the index + */ + static bool minimizing(unsigned int _i) + { + return ObjectiveVectorTraits::minimizing(_i); + } + + + /** + * Returns true if the _ith objective have to be maximized + * @param _i the index + */ + static bool maximizing(unsigned int _i) + { + return ObjectiveVectorTraits::maximizing(_i); + } + + }; + +#endif /*MOEOOBJECTIVEVECTOR_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoObjectiveVectorTraits.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoObjectiveVectorTraits.cpp new file mode 100644 index 000000000..ffa042f24 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoObjectiveVectorTraits.cpp @@ -0,0 +1,42 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#include + +// The static variables of the moeoObjectiveVectorTraits class need to be allocated +unsigned int moeoObjectiveVectorTraits::nObj; +std::vector < bool > moeoObjectiveVectorTraits::bObj; diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoObjectiveVectorTraits.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoObjectiveVectorTraits.h new file mode 100644 index 000000000..63c4f9697 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoObjectiveVectorTraits.h @@ -0,0 +1,130 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOOBJECTIVEVECTORTRAITS_H_ +#define MOEOOBJECTIVEVECTORTRAITS_H_ + +#include +#include +#include + +/** + * A traits class for moeoObjectiveVector to specify the number of objectives and which ones have to be minimized or maximized. + */ +class moeoObjectiveVectorTraits + { + public: + + /** + * Parameters setting + * @param _nObjectives the number of objectives + * @param _bObjectives the min/max vector (true = min / false = max) + */ + static void setup(unsigned int _nObjectives, std::vector < bool > & _bObjectives) + { + // in case the number of objectives was already set to a different value + if ( nObj && (nObj != _nObjectives) ) + { + std::cout << "WARNING\n"; + std::cout << "WARNING : the number of objectives are changing\n"; + std::cout << "WARNING : Make sure all existing objects are destroyed\n"; + std::cout << "WARNING\n"; + } + // number of objectives + nObj = _nObjectives; + // min/max vector + bObj = _bObjectives; + // in case the number of objectives and the min/max vector size don't match + if (nObj != bObj.size()) + throw std::runtime_error("Number of objectives and min/max size don't match in moeoObjectiveVectorTraits::setup"); + } + + + /** + * Returns the number of objectives + */ + static unsigned int nObjectives() + { + // in case the number of objectives would not be assigned yet + if (! nObj) + throw std::runtime_error("Number of objectives not assigned in moeoObjectiveVectorTraits"); + return nObj; + } + + + /** + * Returns true if the _ith objective have to be minimized + * @param _i the index + */ + static bool minimizing(unsigned int _i) + { + // in case there would be a wrong index + if (_i >= bObj.size()) + throw std::runtime_error("Wrong index in moeoObjectiveVectorTraits"); + return bObj[_i]; + } + + + /** + * Returns true if the _ith objective have to be maximized + * @param _i the index + */ + static bool maximizing(unsigned int _i) + { + return (! minimizing(_i)); + } + + + /** + * Returns the tolerance value (to compare solutions) + */ + static double tolerance() + { + return 1e-6; + } + + + private: + + /** The number of objectives */ + static unsigned int nObj; + /** The min/max vector */ + static std::vector < bool > bObj; + + }; + +#endif /*MOEOOBJECTIVEVECTORTRAITS_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoRealObjectiveVector.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoRealObjectiveVector.h new file mode 100644 index 000000000..71ce24b00 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoRealObjectiveVector.h @@ -0,0 +1,191 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOREALOBJECTIVEVECTOR_H_ +#define MOEOREALOBJECTIVEVECTOR_H_ + +#include +#include +#include +#include +#include + +/** + * This class allows to represent a solution in the objective space (phenotypic representation) by a std::vector of real values, + * i.e. that an objective value is represented using a double, and this for any objective. + */ +template < class ObjectiveVectorTraits > +class moeoRealObjectiveVector : public moeoObjectiveVector < ObjectiveVectorTraits, double > + { + public: + + using moeoObjectiveVector < ObjectiveVectorTraits, double >::size; + using moeoObjectiveVector < ObjectiveVectorTraits, double >::operator[]; + + /** + * Ctor + */ + moeoRealObjectiveVector(double _value = 0.0) : moeoObjectiveVector < ObjectiveVectorTraits, double > (_value) + {} + + + /** + * Ctor from a vector of doubles + * @param _v the std::vector < double > + */ + moeoRealObjectiveVector(std::vector < double > & _v) : moeoObjectiveVector < ObjectiveVectorTraits, double > (_v) + {} + + + /** + * Returns true if the current objective vector dominates _other according to the Pareto dominance relation + * (but it's better to use a moeoObjectiveVectorComparator object to compare solutions) + * @param _other the other moeoRealObjectiveVector object to compare with + */ + bool dominates(const moeoRealObjectiveVector < ObjectiveVectorTraits > & _other) const + { + moeoParetoObjectiveVectorComparator < moeoRealObjectiveVector > comparator; + return comparator(_other, *this); + } + + + /** + * Returns true if the current objective vector is equal to _other (according to a tolerance value) + * @param _other the other moeoRealObjectiveVector object to compare with + */ + bool operator==(const moeoRealObjectiveVector < ObjectiveVectorTraits > & _other) const + { + for (unsigned int i=0; i < size(); i++) + { + if ( fabs(operator[](i) - _other[i]) > ObjectiveVectorTraits::tolerance() ) + { + return false; + } + } + return true; + } + + + /** + * Returns true if the current objective vector is different than _other (according to a tolerance value) + * @param _other the other moeoRealObjectiveVector object to compare with + */ + bool operator!=(const moeoRealObjectiveVector < ObjectiveVectorTraits > & _other) const + { + return ! operator==(_other); + } + + + /** + * Returns true if the current objective vector is smaller than _other on the first objective, then on the second, and so on + * (can be usefull for sorting/printing) + * @param _other the other moeoRealObjectiveVector object to compare with + */ + bool operator<(const moeoRealObjectiveVector < ObjectiveVectorTraits > & _other) const + { + moeoObjectiveObjectiveVectorComparator < moeoRealObjectiveVector < ObjectiveVectorTraits > > cmp; + return cmp(*this, _other); + } + + + /** + * Returns true if the current objective vector is greater than _other on the first objective, then on the second, and so on + * (can be usefull for sorting/printing) + * @param _other the other moeoRealObjectiveVector object to compare with + */ + bool operator>(const moeoRealObjectiveVector < ObjectiveVectorTraits > & _other) const + { + return _other < *this; + } + + + /** + * Returns true if the current objective vector is smaller than or equal to _other on the first objective, then on the second, and so on + * (can be usefull for sorting/printing) + * @param _other the other moeoRealObjectiveVector object to compare with + */ + bool operator<=(const moeoRealObjectiveVector < ObjectiveVectorTraits > & _other) const + { + return operator==(_other) || operator<(_other); + } + + + /** + * Returns true if the current objective vector is greater than or equal to _other on the first objective, then on the second, and so on + * (can be usefull for sorting/printing) + * @param _other the other moeoRealObjectiveVector object to compare with + */ + bool operator>=(const moeoRealObjectiveVector < ObjectiveVectorTraits > & _other) const + { + return operator==(_other) || operator>(_other); + } + + }; + + +/** + * Output for a moeoRealObjectiveVector object + * @param _os output stream + * @param _objectiveVector the objective vector to write + */ +template < class ObjectiveVectorTraits > +std::ostream & operator<<(std::ostream & _os, const moeoRealObjectiveVector < ObjectiveVectorTraits > & _objectiveVector) +{ + for (unsigned int i=0; i<_objectiveVector.size(); i++) + { + _os << _objectiveVector[i] << '\t'; + } + return _os; +} + +/** + * Input for a moeoRealObjectiveVector object + * @param _is input stream + * @param _objectiveVector the objective vector to read + */ +template < class ObjectiveVectorTraits > +std::istream & operator>>(std::istream & _is, moeoRealObjectiveVector < ObjectiveVectorTraits > & _objectiveVector) +{ + _objectiveVector = moeoRealObjectiveVector < ObjectiveVectorTraits > (); + for (unsigned int i=0; i<_objectiveVector.size(); i++) + { + _is >> _objectiveVector[i]; + } + return _is; +} + +#endif /*MOEOREALOBJECTIVEVECTOR_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoRealVector.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoRealVector.h new file mode 100644 index 000000000..6a5dd07bb --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoRealVector.h @@ -0,0 +1,70 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOREALVECTOR_H_ +#define MOEOREALVECTOR_H_ + +#include + +/** + * This class is an implementation of a simple double-valued moeoVector. + */ +template < class MOEOObjectiveVector, class MOEOFitness, class MOEODiversity > +class moeoRealVector : public moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, double > + { + public: + + /** + * Ctor + * @param _size Length of vector (default is 0) + * @param _value Initial value of all elements (default is default value of type GeneType) + */ + moeoRealVector(unsigned int _size = 0, double _value = 0.0) : moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double >(_size, _value) + {} + + + /** + * Returns the class name as a std::string + */ + virtual std::string className() const + { + return "moeoRealVector"; + } + + }; + +#endif /*MOEOREALVECTOR_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoVector.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoVector.h new file mode 100644 index 000000000..407d8ba22 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/core/moeoVector.h @@ -0,0 +1,168 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOVECTOR_H_ +#define MOEOVECTOR_H_ + +#include +#include +#include + +/** + * Base class for fixed length chromosomes, just derives from MOEO and std::vector and redirects the smaller than operator to MOEO (objective vector based comparison). + * GeneType must have the following methods: void ctor (needed for the std::vector<>), copy ctor. + */ +template < class MOEOObjectiveVector, class MOEOFitness, class MOEODiversity, class GeneType > +class moeoVector : public MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >, public std::vector < GeneType > + { + public: + + using MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity > :: invalidate; + using std::vector < GeneType > :: operator[]; + using std::vector < GeneType > :: begin; + using std::vector < GeneType > :: end; + using std::vector < GeneType > :: resize; + using std::vector < GeneType > :: size; + + /** the atomic type */ + typedef GeneType AtomType; + /** the container type */ + typedef std::vector < GeneType > ContainerType; + + + /** + * Default ctor. + * @param _size Length of vector (default is 0) + * @param _value Initial value of all elements (default is default value of type GeneType) + */ + moeoVector(unsigned int _size = 0, GeneType _value = GeneType()) : + MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >(), std::vector(_size, _value) + {} + + + /** + * We can't have a Ctor from a std::vector as it would create ambiguity with the copy Ctor. + * @param _v a vector of GeneType + */ + void value(const std::vector < GeneType > & _v) + { + if (_v.size() != size()) // safety check + { + if (size()) // NOT an initial empty std::vector + { + std::cout << "Warning: Changing size in moeoVector assignation"<::operator< + * @param _moeo the object to compare with + */ + bool operator<(const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType> & _moeo) const + { + return MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >::operator<(_moeo); + } + + + /** + * Writing object + * @param _os output stream + */ + virtual void printOn(std::ostream & _os) const + { + MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >::printOn(_os); + _os << ' '; + _os << size() << ' '; + std::copy(begin(), end(), std::ostream_iterator(_os, " ")); + } + + + /** + * Reading object + * @param _is input stream + */ + virtual void readFrom(std::istream & _is) + { + MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >::readFrom(_is); + unsigned int sz; + _is >> sz; + resize(sz); + unsigned int i; + for (i = 0; i < sz; ++i) + { + AtomType atom; + _is >> atom; + operator[](i) = atom; + } + } + + }; + + +/** + * To avoid conflicts between MOEO::operator< and std::vector::operator< + * @param _moeo1 the first object to compare + * @param _moeo2 the second object to compare + */ +template < class MOEOObjectiveVector, class MOEOFitness, class MOEODiversity, class GeneType > +bool operator<(const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType> & _moeo1, const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType> & _moeo2) +{ + return _moeo1.operator<(_moeo2); +} + + +/** + * To avoid conflicts between MOEO::operator> and std::vector::operator> + * @param _moeo1 the first object to compare + * @param _moeo2 the second object to compare + */ +template < class MOEOObjectiveVector, class MOEOFitness, class MOEODiversity, class GeneType > +bool operator>(const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType> & _moeo1, const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType> & _moeo2) +{ + return _moeo1.operator>(_moeo2); +} + +#endif /*MOEOVECTOR_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/distance/moeoDistance.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/distance/moeoDistance.h new file mode 100644 index 000000000..d5cf75c75 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/distance/moeoDistance.h @@ -0,0 +1,79 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEODISTANCE_H_ +#define MOEODISTANCE_H_ + +#include + +/** + * The base class for distance computation. + */ +template < class MOEOT , class Type > +class moeoDistance : public eoBF < const MOEOT &, const MOEOT &, const Type > + { + public: + + /** + * Nothing to do + * @param _pop the population + */ + virtual void setup(const eoPop < MOEOT > & _pop) + {} + + + /** + * Nothing to do + * @param _min lower bound + * @param _max upper bound + * @param _obj the objective index + */ + virtual void setup(double _min, double _max, unsigned int _obj) + {} + + + /** + * Nothing to do + * @param _realInterval the eoRealInterval object + * @param _obj the objective index + */ + virtual void setup(eoRealInterval _realInterval, unsigned int _obj) + {} + + }; + +#endif /*MOEODISTANCE_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/distance/moeoDistanceMatrix.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/distance/moeoDistanceMatrix.h new file mode 100644 index 000000000..40514dc28 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/distance/moeoDistanceMatrix.h @@ -0,0 +1,101 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEODISTANCEMATRIX_H_ +#define MOEODISTANCEMATRIX_H_ + +#include +#include +#include + +/** + * A matrix to compute distances between every pair of individuals contained in a population. + */ +template < class MOEOT , class Type > +class moeoDistanceMatrix : public eoUF < const eoPop < MOEOT > &, void > , public std::vector< std::vector < Type > > + { + public: + + using std::vector< std::vector < Type > > :: size; + using std::vector< std::vector < Type > > :: operator[]; + + + /** + * Ctor + * @param _size size for every dimension of the matrix + * @param _distance the distance to use + */ + moeoDistanceMatrix (unsigned int _size, moeoDistance < MOEOT , Type > & _distance) : distance(_distance) + { + this->resize(_size); + for (unsigned int i=0; i<_size; i++) + { + this->operator[](i).resize(_size); + } + } + + + /** + * Sets the distance between every pair of individuals contained in the population _pop + * @param _pop the population + */ + void operator()(const eoPop < MOEOT > & _pop) + { + // 1 - setup the bounds (if necessary) + distance.setup(_pop); + // 2 - compute distances + this->operator[](0).operator[](0) = Type(); + for (unsigned int i=0; ioperator[](i).operator[](i) = Type(); + for (unsigned int j=0; joperator[](i).operator[](j) = distance(_pop[i], _pop[j]); + this->operator[](j).operator[](i) = this->operator[](i).operator[](j); + } + } + } + + + private: + + /** the distance to use */ + moeoDistance < MOEOT , Type > & distance; + + }; + +#endif /*MOEODISTANCEMATRIX_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/distance/moeoEuclideanDistance.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/distance/moeoEuclideanDistance.h new file mode 100644 index 000000000..7b29cce17 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/distance/moeoEuclideanDistance.h @@ -0,0 +1,83 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOEUCLIDEANDISTANCE_H_ +#define MOEOEUCLIDEANDISTANCE_H_ + +#include +#include + +/** + * A class allowing to compute an euclidian distance between two solutions in the objective space with normalized objective values (i.e. between 0 and 1). + * A distance value then lies between 0 and sqrt(nObjectives). + */ +template < class MOEOT > +class moeoEuclideanDistance : public moeoNormalizedDistance < MOEOT > + { + public: + + /** the objective vector type of the solutions */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Returns the euclidian distance between _moeo1 and _moeo2 in the objective space + * @param _moeo1 the first solution + * @param _moeo2 the second solution + */ + const double operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) + { + double result = 0.0; + double tmp1, tmp2; + for (unsigned int i=0; i :: bounds; + + }; + +#endif /*MOEOEUCLIDEANDISTANCE_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/distance/moeoManhattanDistance.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/distance/moeoManhattanDistance.h new file mode 100644 index 000000000..91eea6f3d --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/distance/moeoManhattanDistance.h @@ -0,0 +1,83 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOMANHATTANDISTANCE_H_ +#define MOEOMANHATTANDISTANCE_H_ + +#include +#include + +/** + * A class allowing to compute the Manhattan distance between two solutions in the objective space normalized objective values (i.e. between 0 and 1). + * A distance value then lies between 0 and nObjectives. + */ +template < class MOEOT > +class moeoManhattanDistance : public moeoNormalizedDistance < MOEOT > + { + public: + + /** the objective vector type of the solutions */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Returns the Manhattan distance between _moeo1 and _moeo2 in the objective space + * @param _moeo1 the first solution + * @param _moeo2 the second solution + */ + const double operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) + { + double result = 0.0; + double tmp1, tmp2; + for (unsigned int i=0; i :: bounds; + + }; + +#endif /*MOEOMANHATTANDISTANCE_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/distance/moeoNormalizedDistance.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/distance/moeoNormalizedDistance.h new file mode 100644 index 000000000..8cf2f93a5 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/distance/moeoNormalizedDistance.h @@ -0,0 +1,137 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEONORMALIZEDDISTANCE_H_ +#define MOEONORMALIZEDDISTANCE_H_ + +#include +#include +#include + +/** + * The base class for double distance computation with normalized objective values (i.e. between 0 and 1). + */ +template < class MOEOT , class Type = double > +class moeoNormalizedDistance : public moeoDistance < MOEOT , Type > + { + public: + + /** the objective vector type of the solutions */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Default ctr + */ + moeoNormalizedDistance() + { + bounds.resize(ObjectiveVector::Traits::nObjectives()); + // initialize bounds in case someone does not want to use them + for (unsigned int i=0; i & _pop) + { + double min, max; + for (unsigned int i=0; i bounds; + + }; + +#endif /*MOEONORMALIZEDDISTANCE_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoCrowdingDiversityAssignment.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoCrowdingDiversityAssignment.h new file mode 100644 index 000000000..119436091 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoCrowdingDiversityAssignment.h @@ -0,0 +1,147 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOCROWDINGDIVERSITYASSIGNMENT_H_ +#define MOEOCROWDINGDIVERSITYASSIGNMENT_H_ + +#include +#include +#include + +/** + * Diversity assignment sheme based on crowding proposed in: + * K. Deb, A. Pratap, S. Agarwal, T. Meyarivan, "A Fast and Elitist Multi-Objective Genetic Algorithm: NSGA-II", IEEE Transactions on Evolutionary Computation, vol. 6, no. 2 (2002). + */ +template < class MOEOT > +class moeoCrowdingDiversityAssignment : public moeoDiversityAssignment < MOEOT > + { + public: + + /** the objective vector type of the solutions */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Returns a big value (regarded as infinite) + */ + double inf() const + { + return std::numeric_limits::max(); + } + + + /** + * Returns a very small value that can be used to avoid extreme cases (where the min bound == the max bound) + */ + double tiny() const + { + return 1e-6; + } + + + /** + * Computes diversity values for every solution contained in the population _pop + * @param _pop the population + */ + void operator()(eoPop < MOEOT > & _pop) + { + if (_pop.size() <= 2) + { + for (unsigned int i=0; i<_pop.size(); i++) + { + _pop[i].diversity(inf()); + } + } + else + { + setDistances(_pop); + } + } + + + /** + * @warning NOT IMPLEMENTED, DO NOTHING ! + * Updates the diversity values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + * @warning NOT IMPLEMENTED, DO NOTHING ! + */ + void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + std::cout << "WARNING : updateByDeleting not implemented in moeoCrowdingDiversityAssignment" << std::endl; + } + + + protected: + + /** + * Sets the distance values + * @param _pop the population + */ + virtual void setDistances (eoPop < MOEOT > & _pop) + { + double min, max, distance; + unsigned int nObjectives = MOEOT::ObjectiveVector::nObjectives(); + // set diversity to 0 + for (unsigned int i=0; i<_pop.size(); i++) + { + _pop[i].diversity(0); + } + // for each objective + for (unsigned int obj=0; obj objComp(obj); + // sort + std::sort(_pop.begin(), _pop.end(), objComp); + // min & max + min = _pop[0].objectiveVector()[obj]; + max = _pop[_pop.size()-1].objectiveVector()[obj]; + // set the diversity value to infiny for min and max + _pop[0].diversity(inf()); + _pop[_pop.size()-1].diversity(inf()); + for (unsigned int i=1; i<_pop.size()-1; i++) + { + distance = (_pop[i+1].objectiveVector()[obj] - _pop[i-1].objectiveVector()[obj]) / (max-min); + _pop[i].diversity(_pop[i].diversity() + distance); + } + } + } + + }; + +#endif /*MOEOCROWDINGDIVERSITYASSIGNMENT_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoDiversityAssignment.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoDiversityAssignment.h new file mode 100644 index 000000000..1f3e50560 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoDiversityAssignment.h @@ -0,0 +1,76 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEODIVERSITYASSIGNMENT_H_ +#define MOEODIVERSITYASSIGNMENT_H_ + +#include +#include + +/** + * Functor that sets the diversity values of a whole population. + */ +template < class MOEOT > +class moeoDiversityAssignment : public eoUF < eoPop < MOEOT > &, void > + { + public: + + /** The type for objective vector */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Updates the diversity values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + */ + virtual void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) = 0; + + + /** + * Updates the diversity values of the whole population _pop by taking the deletion of the individual _moeo into account. + * @param _pop the population + * @param _moeo the individual + */ + void updateByDeleting(eoPop < MOEOT > & _pop, MOEOT & _moeo) + { + updateByDeleting(_pop, _moeo.objectiveVector()); + } + + }; + +#endif /*MOEODIVERSITYASSIGNMENT_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoDummyDiversityAssignment.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoDummyDiversityAssignment.h new file mode 100644 index 000000000..f36a75252 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoDummyDiversityAssignment.h @@ -0,0 +1,84 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEODUMMYDIVERSITYASSIGNMENT_H_ +#define MOEODUMMYDIVERSITYASSIGNMENT_H_ + +#include + +/** + * moeoDummyDiversityAssignment is a moeoDiversityAssignment that gives the value '0' as the individual's diversity for a whole population if it is invalid. + */ +template < class MOEOT > +class moeoDummyDiversityAssignment : public moeoDiversityAssignment < MOEOT > + { + public: + + /** The type for objective vector */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Sets the diversity to '0' for every individuals of the population _pop if it is invalid + * @param _pop the population + */ + void operator () (eoPop < MOEOT > & _pop) + { + for (unsigned int idx = 0; idx<_pop.size (); idx++) + { + if (_pop[idx].invalidDiversity()) + { + // set the diversity to 0 + _pop[idx].diversity(0.0); + } + } + } + + + /** + * Updates the diversity values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + */ + void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + // nothing to do... ;-) + } + + }; + +#endif /*MOEODUMMYDIVERSITYASSIGNMENT_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoFrontByFrontCrowdingDiversityAssignment.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoFrontByFrontCrowdingDiversityAssignment.h new file mode 100644 index 000000000..f089649d2 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoFrontByFrontCrowdingDiversityAssignment.h @@ -0,0 +1,158 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOFRONTBYFRONTCROWDINGDIVERSITYASSIGNMENT_H_ +#define MOEOFRONTBYFRONTCROWDINGDIVERSITYASSIGNMENT_H_ + +#include +#include + +/** + * Diversity assignment sheme based on crowding proposed in: + * K. Deb, A. Pratap, S. Agarwal, T. Meyarivan, "A Fast and Elitist Multi-Objective Genetic Algorithm: NSGA-II", IEEE Transactions on Evolutionary Computation, vol. 6, no. 2 (2002). + * Tis strategy assigns diversity values FRONT BY FRONT. It is, for instance, used in NSGA-II. + */ +template < class MOEOT > +class moeoFrontByFrontCrowdingDiversityAssignment : public moeoCrowdingDiversityAssignment < MOEOT > + { + public: + + /** the objective vector type of the solutions */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * @warning NOT IMPLEMENTED, DO NOTHING ! + * Updates the diversity values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + * @warning NOT IMPLEMENTED, DO NOTHING ! + */ + void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + std::cout << "WARNING : updateByDeleting not implemented in moeoFrontByFrontCrowdingDistanceDiversityAssignment" << std::endl; + } + + + private: + + using moeoCrowdingDiversityAssignment < MOEOT >::inf; + using moeoCrowdingDiversityAssignment < MOEOT >::tiny; + + /** + * Sets the distance values + * @param _pop the population + */ + void setDistances (eoPop < MOEOT > & _pop) + { + unsigned int a,b; + double min, max, distance; + unsigned int nObjectives = MOEOT::ObjectiveVector::nObjectives(); + // set diversity to 0 for every individual + for (unsigned int i=0; i<_pop.size(); i++) + { + _pop[i].diversity(0.0); + } + // sort the whole pop according to fitness values + moeoFitnessThenDiversityComparator < MOEOT > fitnessComparator; + std::sort(_pop.begin(), _pop.end(), fitnessComparator); + // compute the crowding distance values for every individual "front" by "front" (front : from a to b) + a = 0; // the front starts at a + while (a < _pop.size()) + { + b = lastIndex(_pop,a); // the front ends at b + // if there is less than 2 individuals in the front... + if ((b-a) < 2) + { + for (unsigned int i=a; i<=b; i++) + { + _pop[i].diversity(inf()); + } + } + // else... + else + { + // for each objective + for (unsigned int obj=0; obj objComp(obj); + std::sort(_pop.begin()+a, _pop.begin()+b+1, objComp); + // min & max + min = _pop[b].objectiveVector()[obj]; + max = _pop[a].objectiveVector()[obj]; + // avoid extreme case + if (min == max) + { + min -= tiny(); + max += tiny(); + } + // set the diversity value to infiny for min and max + _pop[a].diversity(inf()); + _pop[b].diversity(inf()); + // set the diversity values for the other individuals + for (unsigned int i=a+1; i & _pop, unsigned int _start) + { + unsigned int i=_start; + while ( (i<_pop.size()-1) && (_pop[i].fitness()==_pop[i+1].fitness()) ) + { + i++; + } + return i; + } + + }; + +#endif /*MOEOFRONTBYFRONTCROWDINGDIVERSITYASSIGNMENT_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoFrontByFrontSharingDiversityAssignment.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoFrontByFrontSharingDiversityAssignment.h new file mode 100644 index 000000000..56b4cedca --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/diversity/moeoFrontByFrontSharingDiversityAssignment.h @@ -0,0 +1,130 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOFRONTBYFRONTSHARINGDIVERSITYASSIGNMENT_H_ +#define MOEOFRONTBYFRONTSHARINGDIVERSITYASSIGNMENT_H_ + +#include + +/** + * Sharing assignment scheme on the way it is used in NSGA. + */ +template < class MOEOT > +class moeoFrontByFrontSharingDiversityAssignment : public moeoSharingDiversityAssignment < MOEOT > + { + public: + + /** the objective vector type of the solutions */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Ctor + * @param _distance the distance used to compute the neighborhood of solutions (can be related to the decision space or the objective space) + * @param _nicheSize neighborhood size in terms of radius distance (closely related to the way the distances are computed) + * @param _alpha parameter used to regulate the shape of the sharing function + */ + moeoFrontByFrontSharingDiversityAssignment(moeoDistance & _distance, double _nicheSize = 0.5, double _alpha = 2.0) : moeoSharingDiversityAssignment < MOEOT >(_distance, _nicheSize, _alpha) + {} + + + /** + * Ctor with an euclidean distance (with normalized objective values) in the objective space is used as default + * @param _nicheSize neighborhood size in terms of radius distance (closely related to the way the distances are computed) + * @param _alpha parameter used to regulate the shape of the sharing function + */ + moeoFrontByFrontSharingDiversityAssignment(double _nicheSize = 0.5, double _alpha = 2.0) : moeoSharingDiversityAssignment < MOEOT >(_nicheSize, _alpha) + {} + + + /** + * @warning NOT IMPLEMENTED, DO NOTHING ! + * Updates the diversity values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + * @warning NOT IMPLEMENTED, DO NOTHING ! + */ + void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + std::cout << "WARNING : updateByDeleting not implemented in moeoSharingDiversityAssignment" << std::endl; + } + + + private: + + using moeoSharingDiversityAssignment < MOEOT >::distance; + using moeoSharingDiversityAssignment < MOEOT >::nicheSize; + using moeoSharingDiversityAssignment < MOEOT >::sh; + + + /** + * Sets similarities FRONT BY FRONT for every solution contained in the population _pop + * @param _pop the population + */ + void setSimilarities(eoPop < MOEOT > & _pop) + { + // compute distances between every individuals + moeoDistanceMatrix < MOEOT , double > dMatrix (_pop.size(), distance); + dMatrix(_pop); + // sets the distance to bigger than the niche size for every couple of solutions that do not belong to the same front + for (unsigned int i=0; i<_pop.size(); i++) + { + for (unsigned int j=0; j +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOSHARINGDIVERSITYASSIGNMENT_H_ +#define MOEOSHARINGDIVERSITYASSIGNMENT_H_ + +#include +#include +#include +#include +#include +#include + +/** + * Sharing assignment scheme originally porposed by: + * D. E. Goldberg, "Genetic Algorithms in Search, Optimization and Machine Learning", Addision-Wesley, MA, USA (1989). + */ +template < class MOEOT > +class moeoSharingDiversityAssignment : public moeoDiversityAssignment < MOEOT > + { + public: + + /** the objective vector type of the solutions */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Ctor + * @param _distance the distance used to compute the neighborhood of solutions (can be related to the decision space or the objective space) + * @param _nicheSize neighborhood size in terms of radius distance (closely related to the way the distances are computed) + * @param _alpha parameter used to regulate the shape of the sharing function + */ + moeoSharingDiversityAssignment(moeoDistance & _distance, double _nicheSize = 0.5, double _alpha = 1.0) : distance(_distance), nicheSize(_nicheSize), alpha(_alpha) + {} + + + /** + * Ctor with an euclidean distance (with normalized objective values) in the objective space is used as default + * @param _nicheSize neighborhood size in terms of radius distance (closely related to the way the distances are computed) + * @param _alpha parameter used to regulate the shape of the sharing function + */ + moeoSharingDiversityAssignment(double _nicheSize = 0.5, double _alpha = 1.0) : distance(defaultDistance), nicheSize(_nicheSize), alpha(_alpha) + {} + + + /** + * Sets diversity values for every solution contained in the population _pop + * @param _pop the population + */ + void operator()(eoPop < MOEOT > & _pop) + { + // 1 - set simuilarities + setSimilarities(_pop); + // 2 - a higher diversity is better, so the values need to be inverted + moeoDiversityThenFitnessComparator < MOEOT > divComparator; + double max = std::max_element(_pop.begin(), _pop.end(), divComparator)->diversity(); + for (unsigned int i=0 ; i<_pop.size() ; i++) + { + _pop[i].diversity(max - _pop[i].diversity()); + } + } + + + /** + * @warning NOT IMPLEMENTED, DO NOTHING ! + * Updates the diversity values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + * @warning NOT IMPLEMENTED, DO NOTHING ! + */ + void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + std::cout << "WARNING : updateByDeleting not implemented in moeoSharingDiversityAssignment" << std::endl; + } + + + protected: + + /** the distance used to compute the neighborhood of solutions */ + moeoDistance < MOEOT , double > & distance; + /** euclidean distancein the objective space (can be used as default) */ + moeoEuclideanDistance < MOEOT > defaultDistance; + /** neighborhood size in terms of radius distance */ + double nicheSize; + /** parameter used to regulate the shape of the sharing function */ + double alpha; + + + /** + * Sets similarities for every solution contained in the population _pop + * @param _pop the population + */ + virtual void setSimilarities(eoPop < MOEOT > & _pop) + { + // compute distances between every individuals + moeoDistanceMatrix < MOEOT , double > dMatrix (_pop.size(), distance); + dMatrix(_pop); + // compute similarities + double sum; + for (unsigned int i=0; i<_pop.size(); i++) + { + sum = 0.0; + for (unsigned int j=0; j<_pop.size(); j++) + { + sum += sh(dMatrix[i][j]); + } + _pop[i].diversity(sum); + } + } + + + /** + * Sharing function + * @param _dist the distance value + */ + double sh(double _dist) + { + double result; + if (_dist < nicheSize) + { + result = 1.0 - pow(_dist / nicheSize, alpha); + } + else + { + result = 0.0; + } + return result; + } + + }; + + +#endif /*MOEOSHARINGDIVERSITYASSIGNMENT_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/do/make_checkpoint_moeo.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/do/make_checkpoint_moeo.h new file mode 100755 index 000000000..e24d7a23b --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/do/make_checkpoint_moeo.h @@ -0,0 +1,201 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MAKE_CHECKPOINT_MOEO_H_ +#define MAKE_CHECKPOINT_MOEO_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +bool testDirRes(std::string _dirName, bool _erase); + +/** + * This functions allows to build an eoCheckPoint for multi-objective optimization from the parser (partly taken from make_checkpoint_pareto.h) + * @param _parser the parser + * @param _state to store allocated objects + * @param _eval the funtions evaluator + * @param _continue the stopping crietria + * @param _pop the population + * @param _archive the archive of non-dominated solutions + */ +template < class MOEOT > +eoCheckPoint < MOEOT > & do_make_checkpoint_moeo (eoParser & _parser, eoState & _state, eoEvalFuncCounter < MOEOT > & _eval, eoContinue < MOEOT > & _continue, eoPop < MOEOT > & _pop, moeoArchive < MOEOT > & _archive) +{ + eoCheckPoint < MOEOT > & checkpoint = _state.storeFunctor(new eoCheckPoint < MOEOT > (_continue)); + /* the objective vector type */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + /////////////////// + // Counters + ////////////////// + // is nb Eval to be used as counter? + //bool useEval = _parser.getORcreateParam(true, "useEval", "Use nb of eval. as counter (vs nb of gen.)", '\0', "Output").value(); + // Create anyway a generation-counter parameter + eoValueParam *generationCounter = new eoValueParam(0, "Gen."); + // Create an incrementor (sub-class of eoUpdater). + eoIncrementor & increment = _state.storeFunctor( new eoIncrementor(generationCounter->value()) ); + // Add it to the checkpoint + checkpoint.add(increment); + // dir for DISK output + std::string & dirName = _parser.getORcreateParam(std::string("Res"), "resDir", "Directory to store DISK outputs", '\0', "Output").value(); + // shoudl we empty it if exists + eoValueParam& eraseParam = _parser.getORcreateParam(true, "eraseDir", "erase files in dirName if any", '\0', "Output"); + bool dirOK = false; // not tested yet + + // Dump of the whole population + //----------------------------- + bool printPop = _parser.getORcreateParam(false, "printPop", "Print sorted pop. every gen.", '\0', "Output").value(); + eoSortedPopStat * popStat; + if ( printPop ) // we do want pop dump + { + popStat = & _state.storeFunctor(new eoSortedPopStat); + checkpoint.add(*popStat); + } + + ////////////////////////////////// + // State savers + ////////////////////////////// + // feed the state to state savers + // save state every N generation + eoValueParam& saveFrequencyParam = _parser.createParam((unsigned int)(0), "saveFrequency", "Save every F generation (0 = only final state, absent = never)", '\0', "Persistence" ); + if (_parser.isItThere(saveFrequencyParam)) + { + // first make sure dirName is OK + if (! dirOK ) + dirOK = testDirRes(dirName, eraseParam.value()); // TRUE + unsigned int freq = (saveFrequencyParam.value()>0 ? saveFrequencyParam.value() : UINT_MAX ); +#ifdef _MSVC + std::string stmp = dirName + "\generations"; +#else + std::string stmp = dirName + "/generations"; +#endif + eoCountedStateSaver *stateSaver1 = new eoCountedStateSaver(freq, _state, stmp); + _state.storeFunctor(stateSaver1); + checkpoint.add(*stateSaver1); + } + // save state every T seconds + eoValueParam& saveTimeIntervalParam = _parser.getORcreateParam((unsigned int)(0), "saveTimeInterval", "Save every T seconds (0 or absent = never)", '\0',"Persistence" ); + if (_parser.isItThere(saveTimeIntervalParam) && saveTimeIntervalParam.value()>0) + { + // first make sure dirName is OK + if (! dirOK ) + dirOK = testDirRes(dirName, eraseParam.value()); // TRUE +#ifdef _MSVC + std::string stmp = dirName + "\time"; +#else + std::string stmp = dirName + "/time"; +#endif + eoTimedStateSaver *stateSaver2 = new eoTimedStateSaver(saveTimeIntervalParam.value(), _state, stmp); + _state.storeFunctor(stateSaver2); + checkpoint.add(*stateSaver2); + } + + /////////////////// + // Archive + ////////////////// + // update the archive every generation + bool updateArch = _parser.getORcreateParam(true, "updateArch", "Update the archive at each gen.", '\0', "Evolution Engine").value(); + if (updateArch) + { + moeoArchiveUpdater < MOEOT > * updater = new moeoArchiveUpdater < MOEOT > (_archive, _pop); + _state.storeFunctor(updater); + checkpoint.add(*updater); + } + // store the objective vectors contained in the archive every generation + bool storeArch = _parser.getORcreateParam(false, "storeArch", "Store the archive's objective vectors at each gen.", '\0', "Output").value(); + if (storeArch) + { + if (! dirOK ) + dirOK = testDirRes(dirName, eraseParam.value()); // TRUE +#ifdef _MSVC + std::string stmp = dirName + "\arch"; +#else + std::string stmp = dirName + "/arch"; +#endif + moeoArchiveObjectiveVectorSavingUpdater < MOEOT > * save_updater = new moeoArchiveObjectiveVectorSavingUpdater < MOEOT > (_archive, stmp); + _state.storeFunctor(save_updater); + checkpoint.add(*save_updater); + } + // store the contribution of the non-dominated solutions + bool cont = _parser.getORcreateParam(false, "contribution", "Store the contribution of the archive at each gen.", '\0', "Output").value(); + if (cont) + { + if (! dirOK ) + dirOK = testDirRes(dirName, eraseParam.value()); // TRUE +#ifdef _MSVC + std::string stmp = dirName + "\contribution"; +#else + std::string stmp = dirName + "/contribution"; +#endif + moeoContributionMetric < ObjectiveVector > * contribution = new moeoContributionMetric < ObjectiveVector >; + moeoBinaryMetricSavingUpdater < MOEOT > * contribution_updater = new moeoBinaryMetricSavingUpdater < MOEOT > (*contribution, _archive, stmp); + _state.storeFunctor(contribution_updater); + checkpoint.add(*contribution_updater); + } + // store the entropy of the non-dominated solutions + bool ent = _parser.getORcreateParam(false, "entropy", "Store the entropy of the archive at each gen.", '\0', "Output").value(); + if (ent) + { + if (! dirOK ) + dirOK = testDirRes(dirName, eraseParam.value()); // TRUE +#ifdef _MSVC + std::string stmp = dirName + "\entropy"; +#else + std::string stmp = dirName + "/entropy"; +#endif + moeoEntropyMetric < ObjectiveVector > * entropy = new moeoEntropyMetric < ObjectiveVector >; + moeoBinaryMetricSavingUpdater < MOEOT > * entropy_updater = new moeoBinaryMetricSavingUpdater < MOEOT > (*entropy, _archive, stmp); + _state.storeFunctor(entropy_updater); + checkpoint.add(*entropy_updater); + } + + // and that's it for the (control and) output + return checkpoint; +} + +#endif /*MAKE_CHECKPOINT_MOEO_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/do/make_continue_moeo.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/do/make_continue_moeo.h new file mode 100755 index 000000000..84695d7ee --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/do/make_continue_moeo.h @@ -0,0 +1,131 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MAKE_CONTINUE_MOEO_H_ +#define MAKE_CONTINUE_MOEO_H_ + +#include +#include +#include +#include +#include +#ifndef _MSC_VER +#include +#endif +#include +#include + + +/** + * Helper function + * @param _combined the eoCombinedContinue object + * @param _cont the eoContinue to add + */ +template +eoCombinedContinue * make_combinedContinue(eoCombinedContinue *_combined, eoContinue *_cont) +{ + if (_combined) // already exists + _combined->add(*_cont); + else + _combined = new eoCombinedContinue(*_cont); + return _combined; +} + + +/** + * This functions allows to build a eoContinue for multi-objective optimization from the parser (partly taken from make_continue_pareto.h) + * @param _parser the parser + * @param _state to store allocated objects + * @param _eval the funtions evaluator + */ +template +eoContinue & do_make_continue_moeo(eoParser& _parser, eoState& _state, eoEvalFuncCounter & _eval) +{ + // the combined continue - to be filled + eoCombinedContinue *continuator = NULL; + // First the eoGenContinue - need a default value so you can run blind + // but we also need to be able to avoid it <--> 0 + eoValueParam& maxGenParam = _parser.createParam((unsigned int)(100), "maxGen", "Maximum number of generations (0 = none)",'G',"Stopping criterion"); + if (maxGenParam.value()) // positive: -> define and store + { + eoGenContinue *genCont = new eoGenContinue(maxGenParam.value()); + _state.storeFunctor(genCont); + // and "add" to combined + continuator = make_combinedContinue(continuator, genCont); + } + // maxEval + eoValueParam& maxEvalParam = _parser.getORcreateParam((unsigned long)(0), "maxEval", "Maximum number of evaluations (0 = none)", 'E', "Stopping criterion"); + if (maxEvalParam.value()) + { + eoEvalContinue *evalCont = new eoEvalContinue(_eval, maxEvalParam.value()); + _state.storeFunctor(evalCont); + // and "add" to combined + continuator = make_combinedContinue(continuator, evalCont); + } + // maxTime + eoValueParam& maxTimeParam = _parser.getORcreateParam((unsigned long)(0), "maxTime", "Maximum running time in seconds (0 = none)", 'T', "Stopping criterion"); + if (maxTimeParam.value()) // positive: -> define and store + { + eoTimeContinue *timeCont = new eoTimeContinue(maxTimeParam.value()); + _state.storeFunctor(timeCont); + // and "add" to combined + continuator = make_combinedContinue(continuator, timeCont); + } + // CtrlC +#ifndef _MSC_VER + // the CtrlC interception (Linux only I'm afraid) + eoCtrlCContinue *ctrlCCont; + eoValueParam& ctrlCParam = _parser.createParam(true, "CtrlC", "Terminate current generation upon Ctrl C",'C', "Stopping criterion"); + if (ctrlCParam.value()) + { + ctrlCCont = new eoCtrlCContinue; + // store + _state.storeFunctor(ctrlCCont); + // add to combinedContinue + continuator = make_combinedContinue(continuator, ctrlCCont); + } +#endif + // now check that there is at least one! + if (!continuator) + throw std::runtime_error("You MUST provide a stopping criterion"); + // OK, it's there: store in the eoState + _state.storeFunctor(continuator); + // and return + return *continuator; +} + +#endif /*MAKE_CONTINUE_MOEO_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/do/make_ea_moeo.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/do/make_ea_moeo.h new file mode 100755 index 000000000..6f98101ab --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/do/make_ea_moeo.h @@ -0,0 +1,297 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MAKE_EA_MOEO_H_ +#define MAKE_EA_MOEO_H_ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +/** + * This functions allows to build a moeoEA from the parser + * @param _parser the parser + * @param _state to store allocated objects + * @param _eval the funtions evaluator + * @param _continue the stopping crietria + * @param _op the variation operators + * @param _archive the archive of non-dominated solutions + */ +template < class MOEOT > +moeoEA < MOEOT > & do_make_ea_moeo(eoParser & _parser, eoState & _state, eoEvalFunc < MOEOT > & _eval, eoContinue < MOEOT > & _continue, eoGenOp < MOEOT > & _op, moeoArchive < MOEOT > & _archive) +{ + + /* the objective vector type */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /* the fitness assignment strategy */ + std::string & fitnessParam = _parser.createParam(std::string("FastNonDominatedSorting"), "fitness", + "Fitness assignment scheme: Dummy, FastNonDominatedSorting or IndicatorBased", 'F', + "Evolution Engine").value(); + std::string & indicatorParam = _parser.createParam(std::string("Epsilon"), "indicator", + "Binary indicator for IndicatorBased: Epsilon, Hypervolume", 'i', + "Evolution Engine").value(); + double rho = _parser.createParam(1.1, "rho", "reference point for the hypervolume indicator", '\0', + "Evolution Engine").value(); + double kappa = _parser.createParam(0.05, "kappa", "Scaling factor kappa for IndicatorBased", 'k', + "Evolution Engine").value(); + moeoFitnessAssignment < MOEOT > * fitnessAssignment; + if (fitnessParam == std::string("Dummy")) + { + fitnessAssignment = new moeoDummyFitnessAssignment < MOEOT> (); + } + else if (fitnessParam == std::string("FastNonDominatedSorting")) + { + fitnessAssignment = new moeoFastNonDominatedSortingFitnessAssignment < MOEOT> (); + } + else if (fitnessParam == std::string("IndicatorBased")) + { + // metric + moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > *metric; + if (indicatorParam == std::string("Epsilon")) + { + metric = new moeoAdditiveEpsilonBinaryMetric < ObjectiveVector >; + } + else if (indicatorParam == std::string("Hypervolume")) + { + metric = new moeoHypervolumeBinaryMetric < ObjectiveVector > (rho); + } + else + { + std::string stmp = std::string("Invalid binary quality indicator: ") + indicatorParam; + throw std::runtime_error(stmp.c_str()); + } + fitnessAssignment = new moeoExpBinaryIndicatorBasedFitnessAssignment < MOEOT > (*metric, kappa); + } + else + { + std::string stmp = std::string("Invalid fitness assignment strategy: ") + fitnessParam; + throw std::runtime_error(stmp.c_str()); + } + _state.storeFunctor(fitnessAssignment); + + + /* the diversity assignment strategy */ + eoValueParam & diversityParam = _parser.createParam(eoParamParamType("Dummy"), "diversity", + "Diversity assignment scheme: Dummy, Sharing(nicheSize) or Crowding", 'D', "Evolution Engine"); + eoParamParamType & diversityParamValue = diversityParam.value(); + moeoDiversityAssignment < MOEOT > * diversityAssignment; + if (diversityParamValue.first == std::string("Dummy")) + { + diversityAssignment = new moeoDummyDiversityAssignment < MOEOT> (); + } + else if (diversityParamValue.first == std::string("Sharing")) + { + double nicheSize; + if (!diversityParamValue.second.size()) // no parameter added + { + std::cerr << "WARNING, no niche size given for Sharing, using 0.5" << std::endl; + nicheSize = 0.5; + diversityParamValue.second.push_back(std::string("0.5")); + } + else + { + nicheSize = atoi(diversityParamValue.second[0].c_str()); + } + diversityAssignment = new moeoFrontByFrontSharingDiversityAssignment < MOEOT> (nicheSize); + } + else if (diversityParamValue.first == std::string("Crowding")) + { + diversityAssignment = new moeoFrontByFrontCrowdingDiversityAssignment < MOEOT> (); + } + else + { + std::string stmp = std::string("Invalid diversity assignment strategy: ") + diversityParamValue.first; + throw std::runtime_error(stmp.c_str()); + } + _state.storeFunctor(diversityAssignment); + + + /* the comparator strategy */ + std::string & comparatorParam = _parser.createParam(std::string("FitnessThenDiversity"), "comparator", + "Comparator scheme: FitnessThenDiversity, DiversityThenFitness or Aggregative", 'c', "Evolution Engine").value(); + moeoComparator < MOEOT > * comparator; + if (comparatorParam == std::string("FitnessThenDiversity")) + { + comparator = new moeoFitnessThenDiversityComparator < MOEOT> (); + } + else if (comparatorParam == std::string("DiversityThenFitness")) + { + comparator = new moeoDiversityThenFitnessComparator < MOEOT> (); + } + else if (comparatorParam == std::string("Aggregative")) + { + comparator = new moeoAggregativeComparator < MOEOT> (); + } + else + { + std::string stmp = std::string("Invalid comparator strategy: ") + comparatorParam; + throw std::runtime_error(stmp.c_str()); + } + _state.storeFunctor(comparator); + + + /* the selection strategy */ + eoValueParam < eoParamParamType > & selectionParam = _parser.createParam(eoParamParamType("DetTour(2)"), "selection", + "Selection scheme: DetTour(T), StochTour(t) or Random", 'S', "Evolution Engine"); + eoParamParamType & ppSelect = selectionParam.value(); + moeoSelectOne < MOEOT > * select; + if (ppSelect.first == std::string("DetTour")) + { + unsigned int tSize; + if (!ppSelect.second.size()) // no parameter added + { + std::cerr << "WARNING, no parameter passed to DetTour, using 2" << std::endl; + tSize = 2; + // put back 2 in parameter for consistency (and status file) + ppSelect.second.push_back(std::string("2")); + } + else // parameter passed by user as DetTour(T) + { + tSize = atoi(ppSelect.second[0].c_str()); + } + select = new moeoDetTournamentSelect < MOEOT > (*comparator, tSize); + } + else if (ppSelect.first == std::string("StochTour")) + { + double tRate; + if (!ppSelect.second.size()) // no parameter added + { + std::cerr << "WARNING, no parameter passed to StochTour, using 1" << std::endl; + tRate = 1; + // put back 1 in parameter for consistency (and status file) + ppSelect.second.push_back(std::string("1")); + } + else // parameter passed by user as StochTour(T) + { + tRate = atof(ppSelect.second[0].c_str()); + } + select = new moeoStochTournamentSelect < MOEOT > (*comparator, tRate); + } + /* + else if (ppSelect.first == string("Roulette")) + { + // TO DO ! + // ... + } + */ + else if (ppSelect.first == std::string("Random")) + { + select = new moeoRandomSelect (); + } + else + { + std::string stmp = std::string("Invalid selection strategy: ") + ppSelect.first; + throw std::runtime_error(stmp.c_str()); + } + _state.storeFunctor(select); + + + /* the replacement strategy */ + std::string & replacementParam = _parser.createParam(std::string("Elitist"), "replacement", + "Replacement scheme: Elitist, Environmental or Generational", 'R', "Evolution Engine").value(); + moeoReplacement < MOEOT > * replace; + if (replacementParam == std::string("Elitist")) + { + replace = new moeoElitistReplacement < MOEOT> (*fitnessAssignment, *diversityAssignment, *comparator); + } + else if (replacementParam == std::string("Environmental")) + { + replace = new moeoEnvironmentalReplacement < MOEOT> (*fitnessAssignment, *diversityAssignment, *comparator); + } + else if (replacementParam == std::string("Generational")) + { + replace = new moeoGenerationalReplacement < MOEOT> (); + } + else + { + std::string stmp = std::string("Invalid replacement strategy: ") + replacementParam; + throw std::runtime_error(stmp.c_str()); + } + _state.storeFunctor(replace); + + + /* the number of offspring */ + eoValueParam < eoHowMany > & offspringRateParam = _parser.createParam(eoHowMany(1.0), "nbOffspring", + "Number of offspring (percentage or absolute)", 'O', "Evolution Engine"); + + + // the general breeder + eoGeneralBreeder < MOEOT > * breed = new eoGeneralBreeder < MOEOT > (*select, _op, offspringRateParam.value()); + _state.storeFunctor(breed); + // the eoEasyEA + moeoEA < MOEOT > * algo = new moeoEasyEA < MOEOT > (_continue, _eval, *breed, *replace, *fitnessAssignment, *diversityAssignment); + _state.storeFunctor(algo); + return *algo; + +} + +#endif /*MAKE_EA_MOEO_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoAchievementFitnessAssignment.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoAchievementFitnessAssignment.h new file mode 100644 index 000000000..b77355bb1 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoAchievementFitnessAssignment.h @@ -0,0 +1,170 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOACHIEVEMENTFITNESSASSIGNMENT_H_ +#define MOEOACHIEVEMENTFITNESSASSIGNMENT_H_ + +#include +#include +#include + +/** + * Fitness assignment sheme based on the achievement scalarizing function propozed by Wiersbicki (1980). + */ +template < class MOEOT > +class moeoAchievementFitnessAssignment : public moeoScalarFitnessAssignment < MOEOT > + { + public: + + /** the objective vector type of the solutions */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Default ctor + * @param _reference reference point vector + * @param _lambdas weighted coefficients vector + * @param _spn arbitrary small positive number (0 < _spn << 1) + */ + moeoAchievementFitnessAssignment(ObjectiveVector & _reference, std::vector < double > & _lambdas, double _spn=0.0001) : reference(_reference), lambdas(_lambdas), spn(_spn) + { + // consistency check + if ((spn < 0.0) || (spn > 1.0)) + { + std::cout << "Warning, the arbitrary small positive number should be > 0 and <<1, adjusted to 0.0001\n"; + spn = 0.0001; + } + } + + + /** + * Ctor with default values for lambdas (1/nObjectives) + * @param _reference reference point vector + * @param _spn arbitrary small positive number (0 < _spn << 1) + */ + moeoAchievementFitnessAssignment(ObjectiveVector & _reference, double _spn=0.0001) : reference(_reference), spn(_spn) + { + // compute the default values for lambdas + lambdas = std::vector < double > (ObjectiveVector::nObjectives()); + for (unsigned int i=0 ; i 1.0)) + { + std::cout << "Warning, the arbitrary small positive number should be > 0 and <<1, adjusted to 0.0001\n"; + spn = 0.0001; + } + } + + + /** + * Sets the fitness values for every solution contained in the population _pop + * @param _pop the population + */ + virtual void operator()(eoPop < MOEOT > & _pop) + { + for (unsigned int i=0; i<_pop.size() ; i++) + { + compute(_pop[i]); + } + } + + + /** + * Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account (nothing to do). + * @param _pop the population + * @param _objVec the objective vector + */ + void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + // nothing to do ;-) + } + + + /** + * Sets the reference point + * @param _reference the new reference point + */ + void setReference(const ObjectiveVector & _reference) + { + reference = _reference; + } + + + private: + + /** the reference point */ + ObjectiveVector reference; + /** the weighted coefficients vector */ + std::vector < double > lambdas; + /** an arbitrary small positive number (0 < _spn << 1) */ + double spn; + + + /** + * Returns a big value (regarded as infinite) + */ + double inf() const + { + return std::numeric_limits::max(); + } + + + /** + * Computes the fitness value for a solution + * @param _moeo the solution + */ + void compute(MOEOT & _moeo) + { + unsigned int nobj = MOEOT::ObjectiveVector::nObjectives(); + double temp; + double min = inf(); + double sum = 0; + for (unsigned int obj=0; obj +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOBINARYINDICATORBASEDFITNESSASSIGNMENT_H_ +#define MOEOBINARYINDICATORBASEDFITNESSASSIGNMENT_H_ + +#include + +/** + * moeoIndicatorBasedFitnessAssignment for binary indicators. + */ +template < class MOEOT > +class moeoBinaryIndicatorBasedFitnessAssignment : public moeoIndicatorBasedFitnessAssignment < MOEOT > + { + public: + + /** The type for objective vector */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Updates the fitness values of the whole population _pop by taking the new objective vector _objVec into account + * and returns the fitness value of _objVec. + * @param _pop the population + * @param _objVec the objective vector + */ + virtual double updateByAdding(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) = 0; + + }; + +#endif /*MOEOINDICATORBASEDFITNESSASSIGNMENT_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoCriterionBasedFitnessAssignment.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoCriterionBasedFitnessAssignment.h new file mode 100644 index 000000000..398e005bc --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoCriterionBasedFitnessAssignment.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOCRITERIONBASEDFITNESSASSIGNMENT_H_ +#define MOEOCRITERIONBASEDFITNESSASSIGNMENT_H_ + +#include + +/** + * moeoCriterionBasedFitnessAssignment is a moeoFitnessAssignment for criterion-based strategies. + */ +template < class MOEOT > +class moeoCriterionBasedFitnessAssignment : public moeoFitnessAssignment < MOEOT > + {}; + +#endif /*MOEOCRITERIONBASEDFITNESSASSIGNMENT_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoDummyFitnessAssignment.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoDummyFitnessAssignment.h new file mode 100644 index 000000000..be80edb57 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoDummyFitnessAssignment.h @@ -0,0 +1,84 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEODUMMYFITNESSASSIGNMENT_H_ +#define MOEODUMMYFITNESSASSIGNMENT_H_ + +#include + +/** + * moeoDummyFitnessAssignment is a moeoFitnessAssignment that gives the value '0' as the individual's fitness for a whole population if it is invalid. + */ +template < class MOEOT > +class moeoDummyFitnessAssignment : public moeoFitnessAssignment < MOEOT > + { + public: + + /** The type for objective vector */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Sets the fitness to '0' for every individuals of the population _pop if it is invalid + * @param _pop the population + */ + void operator () (eoPop < MOEOT > & _pop) + { + for (unsigned int idx = 0; idx<_pop.size (); idx++) + { + if (_pop[idx].invalidFitness()) + { + // set the diversity to 0 + _pop[idx].fitness(0.0); + } + } + } + + + /** + * Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + */ + void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + // nothing to do... ;-) + } + + }; + +#endif /*MOEODUMMYFITNESSASSIGNMENT_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoExpBinaryIndicatorBasedFitnessAssignment.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoExpBinaryIndicatorBasedFitnessAssignment.h new file mode 100644 index 000000000..a25382f41 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoExpBinaryIndicatorBasedFitnessAssignment.h @@ -0,0 +1,227 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOEXPBINARYINDICATORBASEDFITNESSASSIGNMENT_H_ +#define MOEOEXPBINARYINDICATORBASEDFITNESSASSIGNMENT_H_ + +#include +#include +#include +#include +#include +#include + +/** + * Fitness assignment sheme based on an indicator proposed in: + * E. Zitzler, S. Künzli, "Indicator-Based Selection in Multiobjective Search", Proc. 8th International Conference on Parallel Problem Solving from Nature (PPSN VIII), pp. 832-842, Birmingham, UK (2004). + * This strategy is, for instance, used in IBEA. + */ +template < class MOEOT > +class moeoExpBinaryIndicatorBasedFitnessAssignment : public moeoBinaryIndicatorBasedFitnessAssignment < MOEOT > + { + public: + + /** The type of objective vector */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Ctor. + * @param _metric the quality indicator + * @param _kappa the scaling factor + */ + moeoExpBinaryIndicatorBasedFitnessAssignment(moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric, const double _kappa = 0.05) : metric(_metric), kappa(_kappa) + {} + + + /** + * Sets the fitness values for every solution contained in the population _pop + * @param _pop the population + */ + void operator()(eoPop < MOEOT > & _pop) + { + // 1 - setting of the bounds + setup(_pop); + // 2 - computing every indicator values + computeValues(_pop); + // 3 - setting fitnesses + setFitnesses(_pop); + } + + + /** + * Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + */ + void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + std::vector < double > v; + v.resize(_pop.size()); + for (unsigned int i=0; i<_pop.size(); i++) + { + v[i] = metric(_objVec, _pop[i].objectiveVector()); + } + for (unsigned int i=0; i<_pop.size(); i++) + { + _pop[i].fitness( _pop[i].fitness() + exp(-v[i]/kappa) ); + } + } + + + /** + * Updates the fitness values of the whole population _pop by taking the adding of the objective vector _objVec into account + * and returns the fitness value of _objVec. + * @param _pop the population + * @param _objVec the objective vector + */ + double updateByAdding(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + std::vector < double > v; + // update every fitness values to take the new individual into account + v.resize(_pop.size()); + for (unsigned int i=0; i<_pop.size(); i++) + { + v[i] = metric(_objVec, _pop[i].objectiveVector()); + } + for (unsigned int i=0; i<_pop.size(); i++) + { + _pop[i].fitness( _pop[i].fitness() - exp(-v[i]/kappa) ); + } + // compute the fitness of the new individual + v.clear(); + v.resize(_pop.size()); + for (unsigned int i=0; i<_pop.size(); i++) + { + v[i] = metric(_pop[i].objectiveVector(), _objVec); + } + double result = 0; + for (unsigned int i=0; i & metric; + /** the scaling factor */ + double kappa; + /** the computed indicator values */ + std::vector < std::vector > values; + + + /** + * Sets the bounds for every objective using the min and the max value for every objective vector of _pop + * @param _pop the population + */ + void setup(const eoPop < MOEOT > & _pop) + { + double min, max; + for (unsigned int i=0; i & _pop) + { + values.clear(); + values.resize(_pop.size()); + for (unsigned int i=0; i<_pop.size(); i++) + { + values[i].resize(_pop.size()); + for (unsigned int j=0; j<_pop.size(); j++) + { + if (i != j) + { + values[i][j] = metric(_pop[i].objectiveVector(), _pop[j].objectiveVector()); + } + } + } + } + + + /** + * Sets the fitness value of the whple population + * @param _pop the population + */ + void setFitnesses(eoPop < MOEOT > & _pop) + { + for (unsigned int i=0; i<_pop.size(); i++) + { + _pop[i].fitness(computeFitness(i)); + } + } + + + /** + * Returns the fitness value of the _idx th individual of the population + * @param _idx the index + */ + double computeFitness(const unsigned int _idx) + { + double result = 0; + for (unsigned int i=0; i +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOFASTNONDOMINATEDSORTINGFITNESSASSIGNMENT_H_ +#define MOEOFASTNONDOMINATEDSORTINGFITNESSASSIGNMENT_H_ + +#include +#include +#include +#include +#include +#include + + +/** + * Fitness assignment sheme based on Pareto-dominance count proposed in: + * N. Srinivas, K. Deb, "Multiobjective Optimization Using Nondominated Sorting in Genetic Algorithms", Evolutionary Computation vol. 2, no. 3, pp. 221-248 (1994) + * and in: + * K. Deb, A. Pratap, S. Agarwal, T. Meyarivan, "A Fast and Elitist Multi-Objective Genetic Algorithm: NSGA-II", IEEE Transactions on Evolutionary Computation, vol. 6, no. 2 (2002). + * This strategy is, for instance, used in NSGA and NSGA-II. + */ +template < class MOEOT > +class moeoFastNonDominatedSortingFitnessAssignment : public moeoParetoBasedFitnessAssignment < MOEOT > + { + public: + + /** the objective vector type of the solutions */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Default ctor + */ + moeoFastNonDominatedSortingFitnessAssignment() : comparator(paretoComparator) + {} + + + /** + * Ctor where you can choose your own way to compare objective vectors + * @param _comparator the functor used to compare objective vectors + */ + moeoFastNonDominatedSortingFitnessAssignment(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator) : comparator(_comparator) + {} + + + /** + * Sets the fitness values for every solution contained in the population _pop + * @param _pop the population + */ + void operator()(eoPop < MOEOT > & _pop) + { + // number of objectives for the problem under consideration + unsigned int nObjectives = MOEOT::ObjectiveVector::nObjectives(); + if (nObjectives == 1) + { + // one objective + oneObjective(_pop); + } + else if (nObjectives == 2) + { + // two objectives (the two objectives function is still to implement) + mObjectives(_pop); + } + else if (nObjectives > 2) + { + // more than two objectives + mObjectives(_pop); + } + else + { + // problem with the number of objectives + throw std::runtime_error("Problem with the number of objectives in moeoNonDominatedSortingFitnessAssignment"); + } + // a higher fitness is better, so the values need to be inverted + double max = _pop[0].fitness(); + for (unsigned int i=1 ; i<_pop.size() ; i++) + { + max = std::max(max, _pop[i].fitness()); + } + for (unsigned int i=0 ; i<_pop.size() ; i++) + { + _pop[i].fitness(max - _pop[i].fitness()); + } + } + + + /** + * Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + */ + void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + for (unsigned int i=0; i<_pop.size(); i++) + { + // if _pop[i] is dominated by _objVec + if ( comparator(_pop[i].objectiveVector(), _objVec) ) + { + _pop[i].fitness(_pop[i].fitness()+1); + } + } + } + + + private: + + /** Functor to compare two objective vectors */ + moeoObjectiveVectorComparator < ObjectiveVector > & comparator; + /** Functor to compare two objective vectors according to Pareto dominance relation */ + moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; + /** Functor allowing to compare two solutions according to their first objective value, then their second, and so on. */ + class ObjectiveComparator : public moeoComparator < MOEOT > + { + public: + /** + * Returns true if _moeo1 < _moeo2 on the first objective, then on the second, and so on + * @param _moeo1 the first solution + * @param _moeo2 the second solution + */ + const bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) + { + return cmp(_moeo1.objectiveVector(), _moeo2.objectiveVector()); + } + private: + /** the corresponding comparator for objective vectors */ + moeoObjectiveObjectiveVectorComparator < ObjectiveVector > cmp; + } + objComparator; + + + /** + * Sets the fitness values for mono-objective problems + * @param _pop the population + */ + void oneObjective (eoPop < MOEOT > & _pop) + { + // sorts the population in the ascending order + std::sort(_pop.begin(), _pop.end(), objComparator); + // assign fitness values + unsigned int rank = 1; + _pop[_pop.size()-1].fitness(rank); + for (unsigned int i=_pop.size()-2; i>=0; i--) + { + if (_pop[i].objectiveVector() != _pop[i+1].objectiveVector()) + { + rank++; + } + _pop[i].fitness(rank); + } + } + + + /** + * Sets the fitness values for bi-objective problems with a complexity of O(n log n), where n stands for the population size + * @param _pop the population + */ + void twoObjectives (eoPop < MOEOT > & _pop) + { + //... TO DO ! + } + + + /** + * Sets the fitness values for problems with more than two objectives with a complexity of O(n² log n), where n stands for the population size + * @param _pop the population + */ + void mObjectives (eoPop < MOEOT > & _pop) + { + // S[i] = indexes of the individuals dominated by _pop[i] + std::vector < std::vector > S(_pop.size()); + // n[i] = number of individuals that dominate the individual _pop[i] + std::vector < unsigned int > n(_pop.size(), 0); + // fronts: F[i] = indexes of the individuals contained in the ith front + std::vector < std::vector > F(_pop.size()+2); + // used to store the number of the first front + F[1].reserve(_pop.size()); + for (unsigned int p=0; p<_pop.size(); p++) + { + for (unsigned int q=0; q<_pop.size(); q++) + { + // if q is dominated by p + if ( comparator(_pop[q].objectiveVector(), _pop[p].objectiveVector()) ) + { + // add q to the set of solutions dominated by p + S[p].push_back(q); + } + // if p is dominated by q + else if ( comparator(_pop[p].objectiveVector(), _pop[q].objectiveVector()) ) + { + // increment the domination counter of p + n[p]++; + } + } + // if no individual dominates p + if (n[p] == 0) + { + // p belongs to the first front + _pop[p].fitness(1); + F[1].push_back(p); + } + } + // front counter + unsigned int counter=1; + unsigned int p,q; + while (! F[counter].empty()) + { + // used to store the number of the next front + F[counter+1].reserve(_pop.size()); + for (unsigned int i=0; i +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOFITNESSASSIGNMENT_H_ +#define MOEOFITNESSASSIGNMENT_H_ + +#include +#include + +/** + * Functor that sets the fitness values of a whole population. + */ +template < class MOEOT > +class moeoFitnessAssignment : public eoUF < eoPop < MOEOT > &, void > + { + public: + + /** The type for objective vector */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + */ + virtual void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) = 0; + + + /** + * Updates the fitness values of the whole population _pop by taking the deletion of the individual _moeo into account. + * @param _pop the population + * @param _moeo the individual + */ + void updateByDeleting(eoPop < MOEOT > & _pop, MOEOT & _moeo) + { + updateByDeleting(_pop, _moeo.objectiveVector()); + } + + }; + +#endif /*MOEOFITNESSASSIGNMENT_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoIndicatorBasedFitnessAssignment.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoIndicatorBasedFitnessAssignment.h new file mode 100644 index 000000000..23a761436 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoIndicatorBasedFitnessAssignment.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOINDICATORBASEDFITNESSASSIGNMENT_H_ +#define MOEOINDICATORBASEDFITNESSASSIGNMENT_H_ + +#include + +/** + * moeoIndicatorBasedFitnessAssignment is a moeoFitnessAssignment for Indicator-based strategies. + */ +template < class MOEOT > +class moeoIndicatorBasedFitnessAssignment : public moeoFitnessAssignment < MOEOT > + {}; + +#endif /*MOEOINDICATORBASEDFITNESSASSIGNMENT_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoParetoBasedFitnessAssignment.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoParetoBasedFitnessAssignment.h new file mode 100644 index 000000000..ab794e279 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoParetoBasedFitnessAssignment.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOPARETOBASEDFITNESSASSIGNMENT_H_ +#define MOEOPARETOBASEDFITNESSASSIGNMENT_H_ + +#include + +/** + * moeoParetoBasedFitnessAssignment is a moeoFitnessAssignment for Pareto-based strategies. + */ +template < class MOEOT > +class moeoParetoBasedFitnessAssignment : public moeoFitnessAssignment < MOEOT > + {}; + +#endif /*MOEOPARETOBASEDFITNESSASSIGNMENT_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoScalarFitnessAssignment.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoScalarFitnessAssignment.h new file mode 100644 index 000000000..1cbbd56d9 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoScalarFitnessAssignment.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOSCALARFITNESSASSIGNMENT_H_ +#define MOEOSCALARFITNESSASSIGNMENT_H_ + +#include + +/** + * moeoScalarFitnessAssignment is a moeoFitnessAssignment for scalar strategies. + */ +template < class MOEOT > +class moeoScalarFitnessAssignment : public moeoFitnessAssignment < MOEOT > + {}; + +#endif /*MOEOSCALARFITNESSASSIGNMENT_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoUnaryIndicatorBasedFitnessAssignment.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoUnaryIndicatorBasedFitnessAssignment.h new file mode 100644 index 000000000..119ea37a8 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/fitness/moeoUnaryIndicatorBasedFitnessAssignment.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOUNARYINDICATORBASEDFITNESSASSIGNMENT_H_ +#define MOEOUNARYINDICATORBASEDFITNESSASSIGNMENT_H_ + +#include + +/** + * moeoIndicatorBasedFitnessAssignment for unary indicators. + */ +template < class MOEOT > +class moeoUnaryIndicatorBasedFitnessAssignment : public moeoIndicatorBasedFitnessAssignment < MOEOT > + {}; + +#endif /*MOEOINDICATORBASEDFITNESSASSIGNMENT_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoAdditiveEpsilonBinaryMetric.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoAdditiveEpsilonBinaryMetric.h new file mode 100644 index 000000000..8dacc9d7c --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoAdditiveEpsilonBinaryMetric.h @@ -0,0 +1,109 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOADDITIVEEPSILONBINARYMETRIC_H_ +#define MOEOADDITIVEEPSILONBINARYMETRIC_H_ + +#include + +/** + * Additive epsilon binary metric allowing to compare two objective vectors as proposed in + * Zitzler E., Thiele L., Laumanns M., Fonseca C. M., Grunert da Fonseca V.: + * Performance Assessment of Multiobjective Optimizers: An Analysis and Review. IEEE Transactions on Evolutionary Computation 7(2), pp.117–132 (2003). + */ +template < class ObjectiveVector > +class moeoAdditiveEpsilonBinaryMetric : public moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > + { + public: + + /** + * Returns the minimal distance by which the objective vector _o1 must be translated in all objectives + * so that it weakly dominates the objective vector _o2 + * @warning don't forget to set the bounds for every objective before the call of this function + * @param _o1 the first objective vector + * @param _o2 the second objective vector + */ + double operator()(const ObjectiveVector & _o1, const ObjectiveVector & _o2) + { + // computation of the epsilon value for the first objective + double result = epsilon(_o1, _o2, 0); + // computation of the epsilon value for the other objectives + double tmp; + for (unsigned int i=1; i :: bounds; + + + /** + * Returns the epsilon value by which the objective vector _o1 must be translated in the objective _obj + * so that it dominates the objective vector _o2 + * @param _o1 the first objective vector + * @param _o2 the second objective vector + * @param _obj the index of the objective + */ + double epsilon(const ObjectiveVector & _o1, const ObjectiveVector & _o2, const unsigned int _obj) + { + double result; + // if the objective _obj have to be minimized + if (ObjectiveVector::Traits::minimizing(_obj)) + { + // _o1[_obj] - _o2[_obj] + result = ( (_o1[_obj] - bounds[_obj].minimum()) / bounds[_obj].range() ) - ( (_o2[_obj] - bounds[_obj].minimum()) / bounds[_obj].range() ); + } + // if the objective _obj have to be maximized + else + { + // _o2[_obj] - _o1[_obj] + result = ( (_o2[_obj] - bounds[_obj].minimum()) / bounds[_obj].range() ) - ( (_o1[_obj] - bounds[_obj].minimum()) / bounds[_obj].range() ); + } + return result; + } + + }; + +#endif /*MOEOADDITIVEEPSILONBINARYMETRIC_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoContributionMetric.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoContributionMetric.h new file mode 100644 index 000000000..f8df458da --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoContributionMetric.h @@ -0,0 +1,138 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOCONTRIBUTIONMETRIC_H_ +#define MOEOCONTRIBUTIONMETRIC_H_ + +#include +#include + +/** + * The contribution metric evaluates the proportion of non-dominated solutions given by a Pareto set relatively to another Pareto set + * (Meunier, Talbi, Reininger: 'A multiobjective genetic algorithm for radio network optimization', in Proc. of the 2000 Congress on Evolutionary Computation, IEEE Press, pp. 317-324) + */ +template < class ObjectiveVector > +class moeoContributionMetric : public moeoVectorVsVectorBinaryMetric < ObjectiveVector, double > + { + public: + + /** + * Returns the contribution of the Pareto set '_set1' relatively to the Pareto set '_set2' + * @param _set1 the first Pareto set + * @param _set2 the second Pareto set + */ + double operator()(const std::vector < ObjectiveVector > & _set1, const std::vector < ObjectiveVector > & _set2) + { + unsigned int c = card_C(_set1, _set2); + unsigned int w1 = card_W(_set1, _set2); + unsigned int n1 = card_N(_set1, _set2); + unsigned int w2 = card_W(_set2, _set1); + unsigned int n2 = card_N(_set2, _set1); + return (double) (c / 2.0 + w1 + n1) / (c + w1 + n1 + w2 + n2); + } + + + private: + + /** Functor to compare two objective vectors according to Pareto dominance relation */ + moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; + + + /** + * Returns the number of solutions both in '_set1' and '_set2' + * @param _set1 the first Pareto set + * @param _set2 the second Pareto set + */ + unsigned int card_C (const std::vector < ObjectiveVector > & _set1, const std::vector < ObjectiveVector > & _set2) + { + unsigned int c=0; + for (unsigned int i=0; i<_set1.size(); i++) + for (unsigned int j=0; j<_set2.size(); j++) + if (_set1[i] == _set2[j]) + { + c++; + break; + } + return c; + } + + + /** + * Returns the number of solutions in '_set1' dominating at least one solution of '_set2' + * @param _set1 the first Pareto set + * @param _set2 the second Pareto set + */ + unsigned int card_W (const std::vector < ObjectiveVector > & _set1, const std::vector < ObjectiveVector > & _set2) + { + unsigned int w=0; + for (unsigned int i=0; i<_set1.size(); i++) + for (unsigned int j=0; j<_set2.size(); j++) + if (paretoComparator(_set2[j], _set1[i])) + { + w++; + break; + } + return w; + } + + + /** + * Returns the number of solutions in '_set1' having no relation of dominance with those from '_set2' + * @param _set1 the first Pareto set + * @param _set2 the second Pareto set + */ + unsigned int card_N (const std::vector < ObjectiveVector > & _set1, const std::vector < ObjectiveVector > & _set2) + { + unsigned int n=0; + for (unsigned int i=0; i<_set1.size(); i++) + { + bool domin_rel = false; + for (unsigned int j=0; j<_set2.size(); j++) + if ( (paretoComparator(_set2[j], _set1[i])) || (paretoComparator(_set1[i], _set2[j])) ) + { + domin_rel = true; + break; + } + if (! domin_rel) + n++; + } + return n; + } + + }; + +#endif /*MOEOCONTRIBUTIONMETRIC_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoEntropyMetric.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoEntropyMetric.h new file mode 100644 index 000000000..012e99d9e --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoEntropyMetric.h @@ -0,0 +1,223 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOENTROPYMETRIC_H_ +#define MOEOENTROPYMETRIC_H_ + +#include +#include +#include + +/** + * The entropy gives an idea of the diversity of a Pareto set relatively to another + * (Basseur, Seynhaeve, Talbi: 'Design of Multi-objective Evolutionary Algorithms: Application to the Flow-shop Scheduling Problem', in Proc. of the 2002 Congress on Evolutionary Computation, IEEE Press, pp. 1155-1156) + */ +template < class ObjectiveVector > +class moeoEntropyMetric : public moeoVectorVsVectorBinaryMetric < ObjectiveVector, double > + { + public: + + /** + * Returns the entropy of the Pareto set '_set1' relatively to the Pareto set '_set2' + * @param _set1 the first Pareto set + * @param _set2 the second Pareto set + */ + double operator()(const std::vector < ObjectiveVector > & _set1, const std::vector < ObjectiveVector > & _set2) + { + // normalization + std::vector< ObjectiveVector > set1 = _set1; + std::vector< ObjectiveVector > set2= _set2; + removeDominated (set1); + removeDominated (set2); + prenormalize (set1); + normalize (set1); + normalize (set2); + + // making of PO* + std::vector< ObjectiveVector > star; // rotf :-) + computeUnion (set1, set2, star); + removeDominated (star); + + // making of PO1 U PO* + std::vector< ObjectiveVector > union_set1_star; // rotf again ... + computeUnion (set1, star, union_set1_star); + + unsigned int C = union_set1_star.size(); + float omega=0; + float entropy=0; + + for (unsigned int i=0 ; i 0) + { + omega += 1.0 / N_i; + entropy += (float) n_i / (N_i * C) * log (((float) n_i / C) / log (2.0)); + } + } + entropy /= - log (omega); + entropy *= log (2.0); + return entropy; + } + + + private: + + /** vector of min values */ + std::vector vect_min_val; + /** vector of max values */ + std::vector vect_max_val; + /** Functor to compare two objective vectors according to Pareto dominance relation */ + moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; + + + /** + * Removes the dominated individuals contained in _f + * @param _f a Pareto set + */ + void removeDominated(std::vector < ObjectiveVector > & _f) + { + for (unsigned int i=0 ; i<_f.size(); i++) + { + bool dom = false; + for (unsigned int j=0; j<_f.size(); j++) + if (i != j && paretoComparator(_f[i],_f[j])) + { + dom = true; + break; + } + if (dom) + { + _f[i] = _f.back(); + _f.pop_back(); + i--; + } + } + } + + + /** + * Prenormalization + * @param _f a Pareto set + */ + void prenormalize (const std::vector< ObjectiveVector > & _f) + { + vect_min_val.clear(); + vect_max_val.clear(); + + for (unsigned int i=0 ; imax_val) + max_val = _f[j][i]; + } + vect_min_val.push_back(min_val); + vect_max_val.push_back (max_val); + } + } + + + /** + * Normalization + * @param _f a Pareto set + */ + void normalize (std::vector< ObjectiveVector > & _f) + { + for (unsigned int i=0 ; i & _f1, const std::vector< ObjectiveVector > & _f2, std::vector< ObjectiveVector > & _f) + { + _f = _f1 ; + for (unsigned int i=0; i<_f2.size(); i++) + { + bool b = false; + for (unsigned int j=0; j<_f1.size(); j ++) + if (_f1[j] == _f2[i]) + { + b = true; + break; + } + if (! b) + _f.push_back(_f2[i]); + } + } + + + /** + * How many in niche + */ + unsigned int howManyInNicheOf (const std::vector< ObjectiveVector > & _f, const ObjectiveVector & _s, unsigned int _size) + { + unsigned int n=0; + for (unsigned int i=0 ; i<_f.size(); i++) + { + if (euclidianDistance(_f[i], _s) < (_s.size() / (double) _size)) + n++; + } + return n; + } + + + /** + * Euclidian distance + */ + double euclidianDistance (const ObjectiveVector & _set1, const ObjectiveVector & _to, unsigned int _deg = 2) + { + double dist=0; + for (unsigned int i=0; i<_set1.size(); i++) + dist += pow(fabs(_set1[i] - _to[i]), (int)_deg); + return pow(dist, 1.0 / _deg); + } + + }; + +#endif /*MOEOENTROPYMETRIC_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoHypervolumeBinaryMetric.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoHypervolumeBinaryMetric.h new file mode 100644 index 000000000..d2e61cbf0 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoHypervolumeBinaryMetric.h @@ -0,0 +1,166 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOHYPERVOLUMEBINARYMETRIC_H_ +#define MOEOHYPERVOLUMEBINARYMETRIC_H_ + +#include +#include +#include + +/** + * Hypervolume binary metric allowing to compare two objective vectors as proposed in + * Zitzler E., Künzli S.: Indicator-Based Selection in Multiobjective Search. In Parallel Problem Solving from Nature (PPSN VIII). + * Lecture Notes in Computer Science 3242, Springer, Birmingham, UK pp.832–842 (2004). + * This indicator is based on the hypervolume concept introduced in + * Zitzler, E., Thiele, L.: Multiobjective Optimization Using Evolutionary Algorithms - A Comparative Case Study. + * Parallel Problem Solving from Nature (PPSN-V), pp.292-301 (1998). + */ +template < class ObjectiveVector > +class moeoHypervolumeBinaryMetric : public moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > + { + public: + + /** + * Ctor + * @param _rho value used to compute the reference point from the worst values for each objective (default : 1.1) + */ + moeoHypervolumeBinaryMetric(double _rho = 1.1) : rho(_rho) + { + // not-a-maximization problem check + for (unsigned int i=0; i :: bounds; + /** Functor to compare two objective vectors according to Pareto dominance relation */ + moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; + + + /** + * Returns the volume of the space that is dominated by _o2 but not by _o1 with respect to a reference point computed using rho for the objective _obj. + * @param _o1 the first objective vector + * @param _o2 the second objective vector + * @param _obj the objective index + * @param _flag used for iteration, if _flag=true _o2 is not talen into account (default : false) + */ + double hypervolume(const ObjectiveVector & _o1, const ObjectiveVector & _o2, const unsigned int _obj, const bool _flag = false) + { + double result; + double range = rho * bounds[_obj].range(); + double max = bounds[_obj].minimum() + range; + // value of _1 for the objective _obj + double v1 = _o1[_obj]; + // value of _2 for the objective _obj (if _flag=true, v2=max) + double v2; + if (_flag) + { + v2 = max; + } + else + { + v2 = _o2[_obj]; + } + // computation of the volume + if (_obj == 0) + { + if (v1 < v2) + { + result = (v2 - v1) / range; + } + else + { + result = 0; + } + } + else + { + if (v1 < v2) + { + result = ( hypervolume(_o1, _o2, _obj-1, true) * (v2 - v1) / range ) + ( hypervolume(_o1, _o2, _obj-1) * (max - v2) / range ); + } + else + { + result = hypervolume(_o1, _o2, _obj-1) * (max - v2) / range; + } + } + return result; + } + + }; + +#endif /*MOEOHYPERVOLUMEBINARYMETRIC_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoMetric.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoMetric.h new file mode 100644 index 000000000..b214803de --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoMetric.h @@ -0,0 +1,99 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOMETRIC_H_ +#define MOEOMETRIC_H_ + +#include +#include + +/** + * Base class for performance metrics (also known as quality indicators). + */ +class moeoMetric : public eoFunctorBase + {}; + + +/** + * Base class for unary metrics. + */ +template < class A, class R > +class moeoUnaryMetric : public eoUF < A, R >, public moeoMetric + {}; + + +/** + * Base class for binary metrics. + */ +template < class A1, class A2, class R > +class moeoBinaryMetric : public eoBF < A1, A2, R >, public moeoMetric + {}; + + +/** + * Base class for unary metrics dedicated to the performance evaluation of a single solution's objective vector. + */ +template < class ObjectiveVector, class R > +class moeoSolutionUnaryMetric : public moeoUnaryMetric < const ObjectiveVector &, R > + {}; + + +/** + * Base class for unary metrics dedicated to the performance evaluation of a Pareto set (a vector of objective vectors) + */ +template < class ObjectiveVector, class R > +class moeoVectorUnaryMetric : public moeoUnaryMetric < const std::vector < ObjectiveVector > &, R > + {}; + + +/** + * Base class for binary metrics dedicated to the performance comparison between two solutions's objective vectors. + */ +template < class ObjectiveVector, class R > +class moeoSolutionVsSolutionBinaryMetric : public moeoBinaryMetric < const ObjectiveVector &, const ObjectiveVector &, R > + {}; + + +/** + * Base class for binary metrics dedicated to the performance comparison between two Pareto sets (two vectors of objective vectors) + */ +template < class ObjectiveVector, class R > +class moeoVectorVsVectorBinaryMetric : public moeoBinaryMetric < const std::vector < ObjectiveVector > &, const std::vector < ObjectiveVector > &, R > + {}; + + +#endif /*MOEOMETRIC_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoNormalizedSolutionVsSolutionBinaryMetric.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoNormalizedSolutionVsSolutionBinaryMetric.h new file mode 100644 index 000000000..95a4e54ab --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/metric/moeoNormalizedSolutionVsSolutionBinaryMetric.h @@ -0,0 +1,113 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEONORMALIZEDSOLUTIONVSSOLUTIONBINARYMETRIC_H_ +#define MOEONORMALIZEDSOLUTIONVSSOLUTIONBINARYMETRIC_H_ + +#include +#include +#include + +/** + * Base class for binary metrics dedicated to the performance comparison between two solutions's objective vectors using normalized values. + * Then, indicator values lie in the interval [-1,1]. + * Note that you have to set the bounds for every objective before using the operator(). + */ +template < class ObjectiveVector, class R > +class moeoNormalizedSolutionVsSolutionBinaryMetric : public moeoSolutionVsSolutionBinaryMetric < ObjectiveVector, R > + { + public: + + /** + * Default ctr for any moeoNormalizedSolutionVsSolutionBinaryMetric object + */ + moeoNormalizedSolutionVsSolutionBinaryMetric() + { + bounds.resize(ObjectiveVector::Traits::nObjectives()); + // initialize bounds in case someone does not want to use them + for (unsigned int i=0; i bounds; + + }; + +#endif /*MOEONORMALIZEDSOLUTIONVSSOLUTIONBINARYMETRIC_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/moeo b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/moeo new file mode 100644 index 000000000..c9d4d6555 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/moeo @@ -0,0 +1,126 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEO_ +#define MOEO_ + + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + + +#endif /*MOEO_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/replacement/moeoElitistReplacement.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/replacement/moeoElitistReplacement.h new file mode 100644 index 000000000..75f896b2e --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/replacement/moeoElitistReplacement.h @@ -0,0 +1,156 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOELITISTREPLACEMENT_H_ +#define MOEOELITISTREPLACEMENT_H_ + +#include +#include +#include +#include +#include +#include + +/** + * Elitist replacement strategy that consists in keeping the N best individuals. + */ +template < class MOEOT > class moeoElitistReplacement:public moeoReplacement < MOEOT > + { + public: + + /** + * Full constructor. + * @param _fitnessAssignment the fitness assignment strategy + * @param _diversityAssignment the diversity assignment strategy + * @param _comparator the comparator (used to compare 2 individuals) + */ + moeoElitistReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment, moeoDiversityAssignment < MOEOT > & _diversityAssignment, moeoComparator < MOEOT > & _comparator) : + fitnessAssignment (_fitnessAssignment), diversityAssignment (_diversityAssignment), comparator (_comparator) + {} + + + /** + * Constructor without comparator. A moeoFitThenDivComparator is used as default. + * @param _fitnessAssignment the fitness assignment strategy + * @param _diversityAssignment the diversity assignment strategy + */ + moeoElitistReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment, moeoDiversityAssignment < MOEOT > & _diversityAssignment) : + fitnessAssignment (_fitnessAssignment), diversityAssignment (_diversityAssignment), comparator (defaultComparator) + {} + + + /** + * Constructor without moeoDiversityAssignement. A dummy diversity is used as default. + * @param _fitnessAssignment the fitness assignment strategy + * @param _comparator the comparator (used to compare 2 individuals) + */ + moeoElitistReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment, moeoComparator < MOEOT > & _comparator) : + fitnessAssignment (_fitnessAssignment), diversityAssignment (defaultDiversity), comparator (_comparator) + {} + + + /** + * Constructor without moeoDiversityAssignement nor moeoComparator. + * A moeoFitThenDivComparator and a dummy diversity are used as default. + * @param _fitnessAssignment the fitness assignment strategy + */ + moeoElitistReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment) : + fitnessAssignment (_fitnessAssignment), diversityAssignment (defaultDiversity), comparator (defaultComparator) + {} + + + /** + * Replaces the first population by adding the individuals of the second one, sorting with a moeoComparator and resizing the whole population obtained. + * @param _parents the population composed of the parents (the population you want to replace) + * @param _offspring the offspring population + */ + void operator () (eoPop < MOEOT > &_parents, eoPop < MOEOT > &_offspring) + { + unsigned int sz = _parents.size (); + // merges offspring and parents into a global population + _parents.reserve (_parents.size () + _offspring.size ()); + std::copy (_offspring.begin (), _offspring.end (), back_inserter (_parents)); + // evaluates the fitness and the diversity of this global population + fitnessAssignment (_parents); + diversityAssignment (_parents); + // sorts the whole population according to the comparator + std::sort(_parents.begin(), _parents.end(), comparator); + // finally, resize this global population + _parents.resize (sz); + // and clear the offspring population + _offspring.clear (); + } + + + protected: + + /** the fitness assignment strategy */ + moeoFitnessAssignment < MOEOT > & fitnessAssignment; + /** the diversity assignment strategy */ + moeoDiversityAssignment < MOEOT > & diversityAssignment; + /** a dummy diversity assignment can be used as default */ + moeoDummyDiversityAssignment < MOEOT > defaultDiversity; + /** a fitness then diversity comparator can be used as default */ + moeoFitnessThenDiversityComparator < MOEOT > defaultComparator; + /** this object is used to compare solutions in order to sort the population */ + class Cmp + { + public: + /** + * Ctor. + * @param _comp the comparator + */ + Cmp(moeoComparator < MOEOT > & _comp) : comp(_comp) + {} + /** + * Returns true if _moeo1 is greater than _moeo2 according to the comparator + * _moeo1 the first individual + * _moeo2 the first individual + */ + bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) + { + return comp(_moeo2,_moeo1); + } + private: + /** the comparator */ + moeoComparator < MOEOT > & comp; + } + comparator; + + }; + +#endif /*MOEOELITISTREPLACEMENT_H_ */ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/replacement/moeoEnvironmentalReplacement.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/replacement/moeoEnvironmentalReplacement.h new file mode 100755 index 000000000..4bba8e962 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/replacement/moeoEnvironmentalReplacement.h @@ -0,0 +1,172 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOENVIRONMENTALREPLACEMENT_H_ +#define MOEOENVIRONMENTALREPLACEMENT_H_ + +#include +#include +#include +#include +#include + +/** + * Environmental replacement strategy that consists in keeping the N best individuals by deleting individuals 1 by 1 + * and by updating the fitness and diversity values after each deletion. + */ +template < class MOEOT > class moeoEnvironmentalReplacement:public moeoReplacement < MOEOT > + { + public: + + /** The type for objective vector */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Full constructor. + * @param _fitnessAssignment the fitness assignment strategy + * @param _diversityAssignment the diversity assignment strategy + * @param _comparator the comparator (used to compare 2 individuals) + */ + moeoEnvironmentalReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment, moeoDiversityAssignment < MOEOT > & _diversityAssignment, moeoComparator < MOEOT > & _comparator) : + fitnessAssignment (_fitnessAssignment), diversityAssignment (_diversityAssignment), comparator (_comparator) + {} + + + /** + * Constructor without comparator. A moeoFitThenDivComparator is used as default. + * @param _fitnessAssignment the fitness assignment strategy + * @param _diversityAssignment the diversity assignment strategy + */ + moeoEnvironmentalReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment, moeoDiversityAssignment < MOEOT > & _diversityAssignment) : + fitnessAssignment (_fitnessAssignment), diversityAssignment (_diversityAssignment), comparator (defaultComparator) + {} + + + /** + * Constructor without moeoDiversityAssignement. A dummy diversity is used as default. + * @param _fitnessAssignment the fitness assignment strategy + * @param _comparator the comparator (used to compare 2 individuals) + */ + moeoEnvironmentalReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment, moeoComparator < MOEOT > & _comparator) : + fitnessAssignment (_fitnessAssignment), diversityAssignment (defaultDiversity), comparator (_comparator) + {} + + + /** + * Constructor without moeoDiversityAssignement nor moeoComparator. + * A moeoFitThenDivComparator and a dummy diversity are used as default. + * @param _fitnessAssignment the fitness assignment strategy + */ + moeoEnvironmentalReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment) : + fitnessAssignment (_fitnessAssignment), diversityAssignment (defaultDiversity), comparator (defaultComparator) + {} + + + /** + * Replaces the first population by adding the individuals of the second one, sorting with a moeoComparator and resizing the whole population obtained. + * @param _parents the population composed of the parents (the population you want to replace) + * @param _offspring the offspring population + */ + void operator () (eoPop < MOEOT > &_parents, eoPop < MOEOT > &_offspring) + { + unsigned int sz = _parents.size(); + // merges offspring and parents into a global population + _parents.reserve (_parents.size() + _offspring.size()); + std::copy (_offspring.begin(), _offspring.end(), back_inserter(_parents)); + // evaluates the fitness and the diversity of this global population + fitnessAssignment (_parents); + diversityAssignment (_parents); + // remove individuals 1 by 1 and update the fitness values + unsigned int worstIdx; + ObjectiveVector worstObjVec; + while (_parents.size() > sz) + { + // the individual to delete + worstIdx = std::min_element(_parents.begin(), _parents.end(), comparator) - _parents.begin(); + worstObjVec = _parents[worstIdx].objectiveVector(); + // remove the woorst individual + _parents[worstIdx] = _parents.back(); + _parents.pop_back(); + // update of the fitness and diversity values + fitnessAssignment.updateByDeleting(_parents, worstObjVec); + diversityAssignment.updateByDeleting(_parents, worstObjVec); + + } + // clear the offspring population + _offspring.clear (); + } + + + protected: + + /** the fitness assignment strategy */ + moeoFitnessAssignment < MOEOT > & fitnessAssignment; + /** the diversity assignment strategy */ + moeoDiversityAssignment < MOEOT > & diversityAssignment; + /** a dummy diversity assignment can be used as default */ + moeoDummyDiversityAssignment < MOEOT > defaultDiversity; + /** a fitness then diversity comparator can be used as default */ + moeoFitnessThenDiversityComparator < MOEOT > defaultComparator; + /** this object is used to compare solutions in order to sort the population */ + class Cmp + { + public: + /** + * Ctor. + * @param _comp the comparator + */ + Cmp(moeoComparator < MOEOT > & _comp) : comp(_comp) + {} + /** + * Returns true if _moeo1 is greater than _moeo2 according to the comparator + * _moeo1 the first individual + * _moeo2 the first individual + */ + bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) + { + return comp(_moeo1,_moeo2); + } + private: + /** the comparator */ + moeoComparator < MOEOT > & comp; + } + comparator; + + }; + +#endif /*MOEOENVIRONMENTALREPLACEMENT_H_ */ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/replacement/moeoGenerationalReplacement.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/replacement/moeoGenerationalReplacement.h new file mode 100644 index 000000000..bf78a7745 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/replacement/moeoGenerationalReplacement.h @@ -0,0 +1,64 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOGENERATIONALREPLACEMENT_H_ +#define MOEOGENERATIONALREPLACEMENT_H_ + +#include +#include + +/** + * Generational replacement: only the new individuals are preserved. + */ +template < class MOEOT > +class moeoGenerationalReplacement : public moeoReplacement < MOEOT >, public eoGenerationalReplacement < MOEOT > + { + public: + + /** + * Swaps _parents and _offspring + * @param _parents the parents population + * @param _offspring the offspring population + */ + void operator()(eoPop < MOEOT > & _parents, eoPop < MOEOT > & _offspring) + { + eoGenerationalReplacement < MOEOT >::operator ()(_parents, _offspring); + } + + }; + +#endif /*MOEOGENERATIONALREPLACEMENT_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/replacement/moeoReplacement.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/replacement/moeoReplacement.h new file mode 100644 index 000000000..286575cc7 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/replacement/moeoReplacement.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOREPLACEMENT_H_ +#define MOEOREPLACEMENT_H_ + +#include + +/** + * Replacement strategy for multi-objective optimization. + */ +template < class MOEOT > +class moeoReplacement : public eoReplacement < MOEOT > + {}; + +#endif /*MOEOREPLACEMENT_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoDetTournamentSelect.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoDetTournamentSelect.h new file mode 100644 index 000000000..24e0a451c --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoDetTournamentSelect.h @@ -0,0 +1,108 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEODETTOURNAMENTSELECT_H_ +#define MOEODETTOURNAMENTSELECT_H_ + +#include +#include +#include +#include + +/** + * Selection strategy that selects ONE individual by deterministic tournament. + */ +template < class MOEOT > class moeoDetTournamentSelect:public moeoSelectOne < MOEOT > + { + public: + + /** + * Full Ctor. + * @param _comparator the comparator (used to compare 2 individuals) + * @param _tSize the number of individuals in the tournament (default: 2) + */ + moeoDetTournamentSelect (moeoComparator < MOEOT > & _comparator, unsigned int _tSize = 2) : comparator (_comparator), tSize (_tSize) + { + // consistency check + if (tSize < 2) + { + std:: + cout << "Warning, Tournament size should be >= 2\nAdjusted to 2\n"; + tSize = 2; + } + } + + + /** + * Ctor without comparator. A moeoFitnessThenDiversityComparator is used as default. + * @param _tSize the number of individuals in the tournament (default: 2) + */ + moeoDetTournamentSelect (unsigned int _tSize = 2) : comparator (defaultComparator), tSize (_tSize) + { + // consistency check + if (tSize < 2) + { + std:: + cout << "Warning, Tournament size should be >= 2\nAdjusted to 2\n"; + tSize = 2; + } + } + + + /** + * Apply the tournament to the given population + * @param _pop the population + */ + const MOEOT & operator() (const eoPop < MOEOT > &_pop) + { + // use the selector + return mo_deterministic_tournament (_pop, tSize, comparator); + } + + + protected: + + /** the comparator (used to compare 2 individuals) */ + moeoComparator < MOEOT > & comparator; + /** a fitness then diversity comparator can be used as default */ + moeoFitnessThenDiversityComparator < MOEOT > defaultComparator; + /** the number of individuals in the tournament */ + unsigned int tSize; + + }; + +#endif /*MOEODETTOURNAMENTSELECT_H_ */ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoRandomSelect.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoRandomSelect.h new file mode 100644 index 000000000..c27f07c91 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoRandomSelect.h @@ -0,0 +1,69 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEORANDOMSELECT_H_ +#define MOEORANDOMSELECT_H_ + +#include +#include + + +/** + * Selection strategy that selects only one element randomly from a whole population. + */ +template < class MOEOT > class moeoRandomSelect:public moeoSelectOne < MOEOT >, public eoRandomSelect + { + public: + + /** + * Ctor. + */ + moeoRandomSelect() + {} + + + /** + * Return one individual at random by using an eoRandomSelect. + */ + const MOEOT & operator () (const eoPop < MOEOT > &_pop) + { + return eoRandomSelect < MOEOT >::operator ()(_pop); + } + + }; + +#endif /*MOEORANDOMSELECT_H_ */ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoRouletteSelect.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoRouletteSelect.h new file mode 100644 index 000000000..5bf89b6e2 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoRouletteSelect.h @@ -0,0 +1,87 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOROULETTESELECT_H_ +#define MOEOROULETTESELECT_H_ + +#include +#include + +/** + * Selection strategy that selects ONE individual by using roulette wheel process. + * @WARNING This selection only uses fitness values (and not diversity values). + */ +template < class MOEOT > +class moeoRouletteSelect:public moeoSelectOne < MOEOT > + { + public: + + /** + * Ctor. + * @param _tSize the number of individuals in the tournament (default: 2) + */ + moeoRouletteSelect (unsigned int _tSize = 2) : tSize (_tSize) + { + // consistency check + if (tSize < 2) + { + std:: + cout << "Warning, Tournament size should be >= 2\nAdjusted to 2\n"; + tSize = 2; + } + } + + + /** + * Apply the tournament to the given population + * @param _pop the population + */ + const MOEOT & operator () (const eoPop < MOEOT > & _pop) + { + // use the selector + return mo_roulette_wheel(_pop,tSize); + } + + + protected: + + /** size */ + double & tSize; + + }; + +#endif /*MOEOROULETTESELECT_H_ */ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoSelectFromPopAndArch.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoSelectFromPopAndArch.h new file mode 100644 index 000000000..6b3c98700 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoSelectFromPopAndArch.h @@ -0,0 +1,117 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOSELECTONEFROMPOPANDARCH_H_ +#define MOEOSELECTONEFROMPOPANDARCH_H_ + +#include +#include +#include +#include +#include + +/** + * Elitist selection process that consists in choosing individuals in the archive as well as in the current population. + */ +template < class MOEOT > +class moeoSelectFromPopAndArch : public moeoSelectOne < MOEOT > + { + public: + + /** + * Ctor + * @param _popSelectOne the population's selection operator + * @param _archSelectOne the archive's selection operator + * @param _arch the archive + * @param _ratioFromPop the ratio of selected individuals from the population + */ + moeoSelectFromPopAndArch (moeoSelectOne < MOEOT > & _popSelectOne, moeoSelectOne < MOEOT > _archSelectOne, moeoArchive < MOEOT > & _arch, double _ratioFromPop=0.5) + : popSelectOne(_popSelectOne), archSelectOne(_archSelectOne), arch(_arch), ratioFromPop(_ratioFromPop) + {} + + + /** + * Defaulr ctor - the archive's selection operator is a random selector + * @param _popSelectOne the population's selection operator + * @param _arch the archive + * @param _ratioFromPop the ratio of selected individuals from the population + */ + moeoSelectFromPopAndArch (moeoSelectOne < MOEOT > & _popSelectOne, moeoArchive < MOEOT > & _arch, double _ratioFromPop=0.5) + : popSelectOne(_popSelectOne), archSelectOne(randomSelectOne), arch(_arch), ratioFromPop(_ratioFromPop) + {} + + + /** + * The selection process + */ + virtual const MOEOT & operator () (const eoPop < MOEOT > & pop) + { + if (arch.size() > 0) + if (rng.flip(ratioFromPop)) + return popSelectOne(pop); + else + return archSelectOne(arch); + else + return popSelectOne(pop); + } + + + /** + * Setups some population stats + */ + virtual void setup (const eoPop < MOEOT > & _pop) + { + popSelectOne.setup(_pop); + } + + + private: + + /** The population's selection operator */ + moeoSelectOne < MOEOT > & popSelectOne; + /** The archive's selection operator */ + moeoSelectOne < MOEOT > & archSelectOne; + /** The archive */ + moeoArchive < MOEOT > & arch; + /** The ratio of selected individuals from the population*/ + double ratioFromPop; + /** A random selection operator (used as default for archSelectOne) */ + moeoRandomSelect < MOEOT > randomSelectOne; + + }; + +#endif /*MOEOSELECTONEFROMPOPANDARCH_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoSelectOne.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoSelectOne.h new file mode 100644 index 000000000..c05e44740 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoSelectOne.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOSELECTONE_H_ +#define MOEOSELECTONE_H_ + +#include + +/** + * Selection strategy for multi-objective optimization that selects only one element from a whole population. + */ +template < class MOEOT > +class moeoSelectOne : public eoSelectOne < MOEOT > + {}; + +#endif /*MOEOSELECTONE_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoSelectors.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoSelectors.h new file mode 100644 index 000000000..1b61eafad --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoSelectors.h @@ -0,0 +1,183 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOSELECTORS_H_ +#define MOEOSELECTORS_H_ + +#include + + +template +It mo_deterministic_tournament(It _begin, It _end, unsigned int _t_size,moeoComparator& _comparator ,eoRng& _gen = rng) +{ + It best = _begin + _gen.random(_end - _begin); + + for (unsigned int i = 0; i < _t_size - 1; ++i) + { + It competitor = _begin + _gen.random(_end - _begin); + // compare the two individuals by using the comparator + if (_comparator(*best, *competitor)) + // best "better" than competitor + best=competitor; + } + return best; +} + + +template +const MOEOT& mo_deterministic_tournament(const eoPop& _pop, unsigned int _t_size,moeoComparator& _comparator, eoRng& _gen = rng) +{ + return *mo_deterministic_tournament(_pop.begin(), _pop.end(),_t_size,_comparator, _gen); +} + + +template +MOEOT& mo_deterministic_tournament(eoPop& _pop, unsigned int _t_size,moeoComparator& _comparator,eoRng& _gen = rng) +{ + return *mo_deterministic_tournament(_pop.begin(), _pop.end(), _t_size,_comparator, _gen); +} + + +template +It mo_stochastic_tournament(It _begin, It _end, double _t_rate,moeoComparator& _comparator ,eoRng& _gen = rng) +{ + It i1 = _begin + _gen.random(_end - _begin); + It i2 = _begin + _gen.random(_end - _begin); + + bool return_better = _gen.flip(_t_rate); + + if (_comparator(*i1, *i2)) + { + if (return_better) return i2; + // else + + return i1; + } + else + { + if (return_better) return i1; + // else + } + // else + + return i2; +} + + +template +const MOEOT& mo_stochastic_tournament(const eoPop& _pop, double _t_rate,moeoComparator& _comparator, eoRng& _gen = rng) +{ + return *mo_stochastic_tournament(_pop.begin(), _pop.end(), _t_rate,_comparator, _gen); +} + + +template +MOEOT& mo_stochastic_tournament(eoPop& _pop, double _t_rate, eoRng& _gen = rng) +{ + return *mo_stochastic_tournament(_pop.begin(), _pop.end(), _t_rate, _gen); +} + + +template +It mo_roulette_wheel(It _begin, It _end, double total, eoRng& _gen = rng) +{ + + float roulette = _gen.uniform(total); + + if (roulette == 0.0) // covers the case where total==0.0 + return _begin + _gen.random(_end - _begin); // uniform choice + + It i = _begin; + + while (roulette > 0.0) + { + roulette -= static_cast(*(i++)); + } + + return --i; +} + + +template +const MOEOT& mo_roulette_wheel(const eoPop& _pop, double total, eoRng& _gen = rng) +{ + float roulette = _gen.uniform(total); + + if (roulette == 0.0) // covers the case where total==0.0 + return _pop[_gen.random(_pop.size())]; // uniform choice + + typename eoPop::const_iterator i = _pop.begin(); + + while (roulette > 0.0) + { + roulette -= static_cast((i++)->fitness()); + } + + return *--i; +} + + +template +MOEOT& mo_roulette_wheel(eoPop& _pop, double total, eoRng& _gen = rng) +{ + float roulette = _gen.uniform(total); + + if (roulette == 0.0) // covers the case where total==0.0 + return _pop[_gen.random(_pop.size())]; // uniform choice + + typename eoPop::iterator i = _pop.begin(); + + while (roulette > 0.0) + { + // fitness only + roulette -= static_cast((i++)->fitness()); + } + + return *--i; +} + + +#endif /*MOEOSELECTORS_H_*/ + + + + + + + + + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoStochTournamentSelect.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoStochTournamentSelect.h new file mode 100644 index 000000000..c718db309 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/selection/moeoStochTournamentSelect.h @@ -0,0 +1,116 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOSTOCHTOURNAMENTSELECT_H_ +#define MOEOSTOCHTOURNAMENTSELECT_H_ + +#include +#include +#include +#include + +/** + * Selection strategy that selects ONE individual by stochastic tournament. + */ +template < class MOEOT > class moeoStochTournamentSelect:public moeoSelectOne + { + public: + + /** + * Full Ctor + * @param _comparator the comparator (used to compare 2 individuals) + * @param _tRate the tournament rate + */ + moeoStochTournamentSelect (moeoComparator < MOEOT > & _comparator, double _tRate = 1.0) : comparator (_comparator), tRate (_tRate) + { + // consistency checks + if (tRate < 0.5) + { + std::cerr << "Warning, Tournament rate should be > 0.5\nAdjusted to 0.55\n"; + tRate = 0.55; + } + if (tRate > 1) + { + std::cerr << "Warning, Tournament rate should be < 1\nAdjusted to 1\n"; + tRate = 1; + } + } + + + /** + * Ctor without comparator. A moeoFitnessThenDiversityComparator is used as default. + * @param _tRate the tournament rate + */ + moeoStochTournamentSelect (double _tRate = 1.0) : comparator (defaultComparator), tRate (_tRate) + { + // consistency checks + if (tRate < 0.5) + { + std::cerr << "Warning, Tournament rate should be > 0.5\nAdjusted to 0.55\n"; + tRate = 0.55; + } + if (tRate > 1) + { + std::cerr << "Warning, Tournament rate should be < 1\nAdjusted to 1\n"; + tRate = 1; + } + } + + + /** + * Apply the tournament to the given population + * @param _pop the population + */ + const MOEOT & operator() (const eoPop < MOEOT > &_pop) + { + // use the selector + return mo_stochastic_tournament(_pop,tRate,comparator); + } + + + protected: + + /** the comparator (used to compare 2 individuals) */ + moeoComparator < MOEOT > & comparator; + /** a fitness then diversity comparator can be used as default */ + moeoFitnessThenDiversityComparator < MOEOT > defaultComparator; + /** the tournament rate */ + double tRate; + + }; + +#endif /*MOEOSTOCHTOURNAMENTSELECT_H_ */ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/utils/moeoArchiveObjectiveVectorSavingUpdater.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/utils/moeoArchiveObjectiveVectorSavingUpdater.h new file mode 100644 index 000000000..819533fe1 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/utils/moeoArchiveObjectiveVectorSavingUpdater.h @@ -0,0 +1,120 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOARCHIVEOBJECTIVEVECTORSAVINGUPDATER_H_ +#define MOEOARCHIVEOBJECTIVEVECTORSAVINGUPDATER_H_ + +#include +#include +#include +#include +#include + +#define MAX_BUFFER_SIZE 1000 + +/** + * This class allows to save the objective vectors of the solutions contained in an archive into a file at each generation. + */ +template < class MOEOT > +class moeoArchiveObjectiveVectorSavingUpdater : public eoUpdater + { + public: + + /** + * Ctor + * @param _arch local archive + * @param _filename target filename + * @param _count put this variable to true if you want a new file to be created each time () is called and to false if you only want the file to be updated + * @param _id own ID + */ + moeoArchiveObjectiveVectorSavingUpdater (moeoArchive & _arch, const std::string & _filename, bool _count = false, int _id = -1) : + arch(_arch), filename(_filename), count(_count), counter(0), id(_id) + {} + + + /** + * Saves the fitness of the archive's members into the file + */ + void operator()() + { + char buff[MAX_BUFFER_SIZE]; + if (count) + { + if (id == -1) + { + sprintf (buff, "%s.%u", filename.c_str(), counter ++); + } + else + { + sprintf (buff, "%s.%u.%u", filename.c_str(), id, counter ++); + } + } + else + { + if (id == -1) + { + sprintf (buff, "%s", filename.c_str()); + } + else + { + sprintf (buff, "%s.%u", filename.c_str(), id); + } + counter ++; + } + std::ofstream f(buff); + for (unsigned int i = 0; i < arch.size (); i++) + f << arch[i].objectiveVector() << std::endl; + f.close (); + } + + + private: + + /** local archive */ + moeoArchive & arch; + /** target filename */ + std::string filename; + /** this variable is set to true if a new file have to be created each time () is called and to false if the file only HAVE to be updated */ + bool count; + /** counter */ + unsigned int counter; + /** own ID */ + int id; + + }; + +#endif /*MOEOARCHIVEOBJECTIVEVECTORSAVINGUPDATER_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/utils/moeoArchiveUpdater.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/utils/moeoArchiveUpdater.h new file mode 100644 index 000000000..aa1d377c7 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/utils/moeoArchiveUpdater.h @@ -0,0 +1,80 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOARCHIVEUPDATER_H_ +#define MOEOARCHIVEUPDATER_H_ + +#include +#include +#include + +/** + * This class allows to update the archive at each generation with newly found non-dominated solutions. + */ +template < class MOEOT > +class moeoArchiveUpdater : public eoUpdater + { + public: + + /** + * Ctor + * @param _arch an archive of non-dominated solutions + * @param _pop the main population + */ + moeoArchiveUpdater(moeoArchive < MOEOT > & _arch, const eoPop < MOEOT > & _pop) : arch(_arch), pop(_pop) + {} + + + /** + * Updates the archive with newly found non-dominated solutions contained in the main population + */ + void operator()() + { + arch.update(pop); + } + + + private: + + /** the archive of non-dominated solutions */ + moeoArchive < MOEOT > & arch; + /** the main population */ + const eoPop < MOEOT > & pop; + + }; + +#endif /*MOEOARCHIVEUPDATER_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/utils/moeoBinaryMetricSavingUpdater.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/utils/moeoBinaryMetricSavingUpdater.h new file mode 100644 index 000000000..6f0ed6172 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/utils/moeoBinaryMetricSavingUpdater.h @@ -0,0 +1,119 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOBINARYMETRICSAVINGUPDATER_H_ +#define MOEOBINARYMETRICSAVINGUPDATER_H_ + +#include +#include +#include +#include +#include +#include + +/** + * This class allows to save the progression of a binary metric comparing the objective vectors of the current population (or archive) + * with the objective vectors of the population (or archive) of the generation (n-1) into a file + */ +template < class MOEOT > +class moeoBinaryMetricSavingUpdater : public eoUpdater + { + public: + + /** The objective vector type of a solution */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Ctor + * @param _metric the binary metric comparing two Pareto sets + * @param _pop the main population + * @param _filename the target filename + */ + moeoBinaryMetricSavingUpdater (moeoVectorVsVectorBinaryMetric < ObjectiveVector, double > & _metric, const eoPop < MOEOT > & _pop, std::string _filename) : + metric(_metric), pop(_pop), filename(_filename), counter(1) + {} + + + /** + * Saves the metric's value for the current generation + */ + void operator()() + { + if (pop.size()) + { + if (firstGen) + { + firstGen = false; + } + else + { + // creation of the two Pareto sets + std::vector < ObjectiveVector > from; + std::vector < ObjectiveVector > to; + for (unsigned int i=0; i & metric; + /** main population */ + const eoPop < MOEOT > & pop; + /** (n-1) population */ + eoPop< MOEOT > oldPop; + /** target filename */ + std::string filename; + /** is it the first generation ? */ + bool firstGen; + /** counter */ + unsigned int counter; + + }; + +#endif /*MOEOBINARYMETRICSAVINGUPDATER_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/utils/moeoConvertPopToObjectiveVectors.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/utils/moeoConvertPopToObjectiveVectors.h new file mode 100644 index 000000000..62c5af29f --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/src/utils/moeoConvertPopToObjectiveVectors.h @@ -0,0 +1,69 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOPOPTOOBJECTIVEVECTORS_H_ +#define MOEOPOPTOOBJECTIVEVECTORS_H_ + +#include +#include + +/** + * Functor allowing to get a vector of objective vectors from a population + */ +template < class MOEOT, class ObjectiveVector = typename MOEOT::ObjectiveVector > +class moeoConvertPopToObjectiveVectors : public eoUF < const eoPop < MOEOT >, const std::vector < ObjectiveVector > > + { + public: + + /** + * Returns a vector of the objective vectors from the population _pop + * @param _pop the population + */ + const std::vector < ObjectiveVector > operator()(const eoPop < MOEOT > _pop) + { + std::vector < ObjectiveVector > result; + result.resize(_pop.size()); + for (unsigned int i=0; i<_pop.size(); i++) + { + result.push_back(_pop[i].objectiveVector()); + } + return result; + } + + }; + +#endif /*MOEOPOPTOOBJECTIVEVECTORS_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/CMakeLists.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/CMakeLists.txt new file mode 100644 index 000000000..74c2a9cb8 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/CMakeLists.txt @@ -0,0 +1,75 @@ +############################################################################### +## +## CMakeLists file for ParadisEO-MOEO/test +## +############################################################################### + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${ParadisEO-MOEO_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) + +###################################################################################### + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-MOEO_BINARY_DIR}/lib) + +###################################################################################### + + + +###################################################################################### +### 3) Define your targets and link the librairies +###################################################################################### + +SET (TEST_LIST + t-moeo + t-moeoBitVector + t-moeoRealVector + t-moeoArchive + t-moeoParetoObjectiveVectorComparator + t-moeoAggregativeComparator + t-moeoDiversityThenFitnessComparator + t-moeoFitnessThenDiversityComparator + t-moeoAchievementFitnessAssignment + t-moeoExpBinaryIndicatorBasedFitnessAssignment + t-moeoFastNonDominatedSortingFitnessAssignment + t-moeoCrowdingDiversityAssignment + t-moeoSharingDiversityAssignment + t-moeoIBEA + t-moeoNSGA + t-moeoNSGAII + t-moeoMax3Obj + t-moeoEasyEA +) + +FOREACH (test ${TEST_LIST}) + SET ("T_${test}_SOURCES" "${test}.cpp") +ENDFOREACH (test) + + +IF(ENABLE_CMAKE_TESTING) + + # Add the tests + FOREACH (test ${TEST_LIST}) + ADD_EXECUTABLE(${test} ${T_${test}_SOURCES}) + ADD_TEST(${test} ${test}) + ENDFOREACH (test) + + # Link the librairies + FOREACH (test ${TEST_LIST}) + TARGET_LINK_LIBRARIES(${test} moeo ga es eoutils eo) + ENDFOREACH (test) + +ENDIF(ENABLE_CMAKE_TESTING) + +###################################################################################### + diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeo.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeo.cpp new file mode 100644 index 000000000..4bd6388ef --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeo.cpp @@ -0,0 +1,81 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// t-moeo.cpp +//----------------------------------------------------------------------------- + +#include +#include + +//----------------------------------------------------------------------------- + +class ObjectiveVectorTraits : public moeoObjectiveVectorTraits +{ +public: + static bool minimizing (int i) + { + return true; + } + static bool maximizing (int i) + { + return false; + } + static unsigned int nObjectives () + { + return 2; + } +}; + +typedef moeoRealObjectiveVector < ObjectiveVectorTraits > ObjectiveVector; + +typedef MOEO < ObjectiveVector, double, double > Solution; + +//----------------------------------------------------------------------------- + +int main() +{ + + std::cout << "[MOEO]\t=>\t"; + + // solutions + Solution sol1, sol2; + + std::cout << "OK" << std::endl; + return EXIT_SUCCESS; + +} + +//----------------------------------------------------------------------------- diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoAchievementFitnessAssignment.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoAchievementFitnessAssignment.cpp new file mode 100644 index 000000000..2bf553350 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoAchievementFitnessAssignment.cpp @@ -0,0 +1,147 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// t-moeoAchievementFitnessAssignment.cpp +//----------------------------------------------------------------------------- + +#include +#include + +//----------------------------------------------------------------------------- + +class ObjectiveVectorTraits : public moeoObjectiveVectorTraits +{ +public: + static bool minimizing (int i) + { + return true; + } + static bool maximizing (int i) + { + return false; + } + static unsigned int nObjectives () + { + return 2; + } +}; + +typedef moeoRealObjectiveVector < ObjectiveVectorTraits > ObjectiveVector; + +typedef MOEO < ObjectiveVector, double, double > Solution; + +//----------------------------------------------------------------------------- + +int main() +{ + std::cout << "[moeoAchievementFitnessAssignment]\t=>\t"; + + // objective vectors + ObjectiveVector obj0, obj1, obj2, obj3, obj4, obj5; + obj0[0] = 2; + obj0[1] = 5; + obj1[0] = 3; + obj1[1] = 3; + obj2[0] = 4; + obj2[1] = 1; + obj3[0] = 5; + obj3[1] = 5; + obj4[0] = 5; + obj4[1] = 1; + obj5[0] = 3; + obj5[1] = 3; + + // population + eoPop < Solution > pop; + pop.resize(6); + pop[0].objectiveVector(obj0); + pop[1].objectiveVector(obj1); + pop[2].objectiveVector(obj2); + pop[3].objectiveVector(obj3); + pop[4].objectiveVector(obj4); + pop[5].objectiveVector(obj5); + + // reference point + ObjectiveVector ref; + ref[0] = 3; + ref[1] = 2; + + // fitness assignment + moeoAchievementFitnessAssignment< Solution > fitnessAssignment(ref, 0.0); + fitnessAssignment(pop); + + // pop[0] + if (pop[0].fitness() != -1.5) + { + std::cout << "ERROR (bad fitness for pop[0])" << std::endl; + return EXIT_FAILURE; + } + // pop[1] + if (pop[1].fitness() != -0.5) + { + std::cout << "ERROR (bad fitness for pop[1])" << std::endl; + return EXIT_FAILURE; + } + // pop[2] + if (pop[2].fitness() != -0.5) + { + std::cout << "ERROR (bad fitness for pop[2])" << std::endl; + return EXIT_FAILURE; + } + // pop[3] + if (pop[3].fitness() != -1.5) + { + std::cout << "ERROR (bad fitness for pop[3]) " << std::endl; + return EXIT_FAILURE; + } + // pop[4] + if (pop[4].fitness() != -1.0) + { + std::cout << "ERROR (bad fitness for pop[4])" << std::endl; + return EXIT_FAILURE; + } + // pop[5] + if (pop[5].fitness() != -0.5) + { + std::cout << "ERROR (bad fitness for pop[5])" << std::endl; + return EXIT_FAILURE; + } + + std::cout << "OK" << std::endl; + return EXIT_SUCCESS; +} + +//----------------------------------------------------------------------------- diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoAggregativeComparator.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoAggregativeComparator.cpp new file mode 100644 index 000000000..9f681919d --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoAggregativeComparator.cpp @@ -0,0 +1,81 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// t-moeoAggregativeComparator.cpp +//----------------------------------------------------------------------------- + +#include +#include + +//----------------------------------------------------------------------------- + +typedef MOEO < double, double, double > Solution; + +//----------------------------------------------------------------------------- + +int main() +{ + std::cout << "[moeoAggregativeComparator]\t=>\t"; + + // fitness & diversity + double fit1 = 1.0; + double div1 = 2.0; + double fit2 = 3.0; + double div2 = 1.0; + + // solutions + Solution sol1; + sol1.fitness(fit1); + sol1.diversity(div1); + Solution sol2; + sol2.fitness(fit2); + sol2.diversity(div2); + + // comparator + moeoAggregativeComparator < Solution > comparator; + + // sol1 not better than sol2? + if (! comparator(sol1, sol2)) + { + std::cout << "ERROR (sol1 must be better)" << std::endl; + return EXIT_FAILURE; + } + + std::cout << "OK" << std::endl; + return EXIT_SUCCESS; +} + +//----------------------------------------------------------------------------- diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoArchive.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoArchive.cpp new file mode 100644 index 000000000..42b18954e --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoArchive.cpp @@ -0,0 +1,148 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// t-moeoArchive.cpp +//----------------------------------------------------------------------------- + +#include +#include + +//----------------------------------------------------------------------------- + +class ObjectiveVectorTraits : public moeoObjectiveVectorTraits +{ +public: + static bool minimizing (int i) + { + return true; + } + static bool maximizing (int i) + { + return false; + } + static unsigned int nObjectives () + { + return 2; + } +}; + +typedef moeoRealObjectiveVector < ObjectiveVectorTraits > ObjectiveVector; + +typedef MOEO < ObjectiveVector, double, double > Solution; + +//----------------------------------------------------------------------------- + +int main() +{ + std::cout << "[moeoArchive]\t=>\t"; + + // objective vectors + ObjectiveVector obj0, obj1, obj2, obj3, obj4, obj5; + obj0[0] = 2; + obj0[1] = 5; + obj1[0] = 3; + obj1[1] = 3; + obj2[0] = 4; + obj2[1] = 1; + obj3[0] = 5; + obj3[1] = 5; + obj4[0] = 5; + obj4[1] = 1; + obj5[0] = 3; + obj5[1] = 3; + + // population + eoPop < Solution > pop; + pop.resize(6); + pop[0].objectiveVector(obj0); + pop[1].objectiveVector(obj1); + pop[2].objectiveVector(obj2); + pop[3].objectiveVector(obj3); + pop[4].objectiveVector(obj4); + pop[5].objectiveVector(obj5); + + // archive + moeoArchive< Solution > arch; + arch.update(pop); + + // size + if (arch.size() != 3) + { + std::cout << "ERROR (too much solutions)" << std::endl; + return EXIT_FAILURE; + } + // obj0 must be in + if (! arch.contains(obj0)) + { + std::cout << "ERROR (obj0 not in)" << std::endl; + return EXIT_FAILURE; + } + // obj1 must be in + if (! arch.contains(obj1)) + { + std::cout << "ERROR (obj1 not in)" << std::endl; + return EXIT_FAILURE; + } + // obj2 must be in + if (! arch.contains(obj2)) + { + std::cout << "ERROR (obj2 not in)" << std::endl; + return EXIT_FAILURE; + } + // obj3 must be out + if (arch.contains(obj3)) + { + std::cout << "ERROR (obj3 in)" << std::endl; + return EXIT_FAILURE; + } + // obj4 must be out + if (arch.contains(obj4)) + { + std::cout << "ERROR (obj4 in)" << std::endl; + return EXIT_FAILURE; + } + // obj5 must be in + if (! arch.contains(obj5)) + { + std::cout << "ERROR (obj5 not in)" << std::endl; + return EXIT_FAILURE; + } + + std::cout << "OK" << std::endl; + return EXIT_SUCCESS; +} + +//----------------------------------------------------------------------------- diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoBitVector.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoBitVector.cpp new file mode 100644 index 000000000..5420efdb1 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoBitVector.cpp @@ -0,0 +1,81 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// t-moeoBitVector.cpp +//----------------------------------------------------------------------------- + +#include +#include + +//----------------------------------------------------------------------------- + +class ObjectiveVectorTraits : public moeoObjectiveVectorTraits +{ +public: + static bool minimizing (int i) + { + return true; + } + static bool maximizing (int i) + { + return false; + } + static unsigned int nObjectives () + { + return 2; + } +}; + +typedef moeoRealObjectiveVector < ObjectiveVectorTraits > ObjectiveVector; + +typedef moeoBitVector < ObjectiveVector, double, double > Solution; + +//----------------------------------------------------------------------------- + +int main() +{ + + std::cout << "[moeoBitVector]\t=>\t"; + + // solutions + Solution sol1, sol2; + + std::cout << "OK" << std::endl; + return EXIT_SUCCESS; + +} + +//----------------------------------------------------------------------------- diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoCrowdingDiversityAssignment.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoCrowdingDiversityAssignment.cpp new file mode 100644 index 000000000..5aa17bcad --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoCrowdingDiversityAssignment.cpp @@ -0,0 +1,124 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// t-moeoCrowdingDiversityAssignment.cpp +//----------------------------------------------------------------------------- + +#include +#include + +//----------------------------------------------------------------------------- + +class ObjectiveVectorTraits : public moeoObjectiveVectorTraits +{ +public: + static bool minimizing (int i) + { + return true; + } + static bool maximizing (int i) + { + return false; + } + static unsigned int nObjectives () + { + return 2; + } +}; + +typedef moeoRealObjectiveVector < ObjectiveVectorTraits > ObjectiveVector; + +typedef MOEO < ObjectiveVector, double, double > Solution; + +//----------------------------------------------------------------------------- + +int main() +{ + std::cout << "[moeoCrowdingDiversityAssignment]\t=>\t"; + + // objective vectors + ObjectiveVector obj0, obj1, obj2, obj3; + obj0[0] = 1; + obj0[1] = 5; + obj1[0] = 3; + obj1[1] = 3; + obj2[0] = 3; + obj2[1] = 3; + obj3[0] = 5; + obj3[1] = 1; + + // population + eoPop < Solution > pop; + pop.resize(4); + pop[0].objectiveVector(obj0); + pop[1].objectiveVector(obj1); + pop[2].objectiveVector(obj2); + pop[3].objectiveVector(obj3); + + // diversity assignment + moeoCrowdingDiversityAssignment< Solution > diversityAssignment; + diversityAssignment(pop); + + // pop[0] + if (pop[0].diversity() != diversityAssignment.inf()) + { + std::cout << "ERROR (bad diversity for pop[0])" << std::endl; + return EXIT_FAILURE; + } + // pop[1] + if (pop[1].diversity() != 1.0) + { + std::cout << "ERROR (bad diversity for pop[1])" << std::endl; + return EXIT_FAILURE; + } + // pop[2] + if (pop[2].diversity() != 1.0) + { + std::cout << "ERROR (bad diversity for pop[2])" << std::endl; + return EXIT_FAILURE; + } + // pop[3] + if (pop[3].diversity() != diversityAssignment.inf()) + { + std::cout << "ERROR (bad diversity for pop[3]) " << std::endl; + return EXIT_FAILURE; + } + + std::cout << "OK" << std::endl; + return EXIT_SUCCESS; +} + +//----------------------------------------------------------------------------- diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoDiversityThenFitnessComparator.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoDiversityThenFitnessComparator.cpp new file mode 100644 index 000000000..728549055 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoDiversityThenFitnessComparator.cpp @@ -0,0 +1,81 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// t-moeoDiversityThenFitnessComparator.cpp +//----------------------------------------------------------------------------- + +#include +#include + +//----------------------------------------------------------------------------- + +typedef MOEO < double, double, double > Solution; + +//----------------------------------------------------------------------------- + +int main() +{ + std::cout << "[moeoDiversityThenFitnessComparator]\t=>\t"; + + // fitness & diversity + double fit1 = 1.0; + double div1 = 2.0; + double fit2 = 3.0; + double div2 = 1.0; + + // solutions + Solution sol1; + sol1.fitness(fit1); + sol1.diversity(div1); + Solution sol2; + sol2.fitness(fit2); + sol2.diversity(div2); + + // comparator + moeoDiversityThenFitnessComparator < Solution > comparator; + + // sol1 better than sol2? + if (comparator(sol1, sol2)) + { + std::cout << "ERROR (sol2 must be better)" << std::endl; + return EXIT_FAILURE; + } + + std::cout << "OK" << std::endl; + return EXIT_SUCCESS; +} + +//----------------------------------------------------------------------------- diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoEasyEA.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoEasyEA.cpp new file mode 100644 index 000000000..a27c5aa79 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoEasyEA.cpp @@ -0,0 +1,121 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// t-moeoEasyEA.cpp +//----------------------------------------------------------------------------- + +#include +#include +#include +#include + +//----------------------------------------------------------------------------- + +class ObjectiveVectorTraits : public moeoObjectiveVectorTraits +{ +public: + static bool minimizing (int i) + { + return true; + } + static bool maximizing (int i) + { + return false; + } + static unsigned int nObjectives () + { + return 2; + } +}; + +typedef moeoRealObjectiveVector < ObjectiveVectorTraits > ObjectiveVector; + +class Solution : public moeoRealVector < ObjectiveVector, double, double > +{ +public: + Solution() : moeoRealVector < ObjectiveVector, double, double > (1) {} +}; + +class TestEval : public moeoEvalFunc < Solution > +{ +public: + void operator () (Solution & _sol) + { + ObjectiveVector objVec; + objVec[0] = _sol[0]; + objVec[1] = _sol[0] * _sol[0]; + _sol.objectiveVector(objVec); + } +}; + +//----------------------------------------------------------------------------- + +int main() +{ + std::cout << "[moeoEasyEA]" << std::endl; + + TestEval eval; + eoQuadCloneOp < Solution > xover; + eoUniformMutation < Solution > mutation(0.05); + eoSequentialOp < Solution > op; + op.add(xover, 1.0); + op.add(mutation, 1.0); + eoRealVectorBounds bounds(1, 1.0, 2.0); + eoRealInitBounded < Solution > init(bounds); + eoPop < Solution > pop(20, init); + eoGenContinue < Solution > term(20); + moeoFastNonDominatedSortingFitnessAssignment < Solution > fitnessAssignment; + moeoFrontByFrontCrowdingDiversityAssignment < Solution > diversityAssignment; + moeoFitnessThenDiversityComparator < Solution > comparator; + moeoDetTournamentSelect < Solution > select(comparator, 2); + moeoElitistReplacement < Solution > replace(fitnessAssignment, diversityAssignment, comparator); + eoGeneralBreeder < Solution > breed(select, op); + + // build EA + moeoEasyEA < Solution > algo (term, eval, breed, replace, fitnessAssignment, diversityAssignment); + + // run the algo + algo(pop); + + // final pop + std::cout << "Final population" << std::endl; + std::cout << pop << std::endl; + + std::cout << "[moeoEasyEA] OK" << std::endl; + return EXIT_SUCCESS; +} + +//----------------------------------------------------------------------------- diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoExpBinaryIndicatorBasedFitnessAssignment.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoExpBinaryIndicatorBasedFitnessAssignment.cpp new file mode 100644 index 000000000..f1d91dfd2 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoExpBinaryIndicatorBasedFitnessAssignment.cpp @@ -0,0 +1,145 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// t-moeoExpBinaryIndicatorBasedFitnessAssignment.cpp +//----------------------------------------------------------------------------- + +#include +#include + +//----------------------------------------------------------------------------- + +class ObjectiveVectorTraits : public moeoObjectiveVectorTraits +{ +public: + static bool minimizing (int i) + { + return true; + } + static bool maximizing (int i) + { + return false; + } + static unsigned int nObjectives () + { + return 2; + } +}; + +typedef moeoRealObjectiveVector < ObjectiveVectorTraits > ObjectiveVector; + +typedef MOEO < ObjectiveVector, double, double > Solution; + +//----------------------------------------------------------------------------- + +int main() +{ + std::cout << "[moeoExpBinaryIndicatorBasedFitnessAssignment]\t=>\t"; + + // objective vectors + ObjectiveVector obj0, obj1, obj2, obj3, obj4, obj5; + obj0[0] = 2; + obj0[1] = 5; + obj1[0] = 3; + obj1[1] = 3; + obj2[0] = 4; + obj2[1] = 1; + obj3[0] = 5; + obj3[1] = 5; + obj4[0] = 5; + obj4[1] = 1; + obj5[0] = 3; + obj5[1] = 3; + + // population + eoPop < Solution > pop; + pop.resize(6); + pop[0].objectiveVector(obj0); + pop[1].objectiveVector(obj1); + pop[2].objectiveVector(obj2); + pop[3].objectiveVector(obj3); + pop[4].objectiveVector(obj4); + pop[5].objectiveVector(obj5); + + // indicator + moeoAdditiveEpsilonBinaryMetric < ObjectiveVector > indicator; + + // fitness assignment + moeoExpBinaryIndicatorBasedFitnessAssignment< Solution > fitnessAssignment(indicator, 0.5); + fitnessAssignment(pop); + + // pop[0] + if ( (pop[0].fitness() > -1.56) || (pop[0].fitness() < -1.57) ) + { + std::cout << "ERROR (bad fitness for pop[0])" << std::endl; + return EXIT_FAILURE; + } + // pop[1] + if ( (pop[1].fitness() > -2.40) || (pop[1].fitness() < -2.41) ) + { + std::cout << "ERROR (bad fitness for pop[1])" << std::endl; + return EXIT_FAILURE; + } + // pop[2] + if ( (pop[2].fitness() > -1.51) || (pop[2].fitness() < -1.52) ) + { + std::cout << "ERROR (bad fitness for pop[2])" << std::endl; + return EXIT_FAILURE; + } + // pop[3] + if ( (pop[3].fitness() > -9.38) || (pop[3].fitness() < -9.39) ) + { + std::cout << "ERROR (bad fitness for pop[3]) " << std::endl; + return EXIT_FAILURE; + } + // pop[4] + if ( (pop[4].fitness() > -2.00) || (pop[4].fitness() < -2.01) ) + { + std::cout << "ERROR (bad fitness for pop[4])" << std::endl; + return EXIT_FAILURE; + } + // pop[5] + if ( (pop[5].fitness() > -2.40) || (pop[5].fitness() < -2.41) ) + { + std::cout << "ERROR (bad fitness for pop[5])" << std::endl; + return EXIT_FAILURE; + } + + std::cout << "OK" << std::endl; + return EXIT_SUCCESS; +} + +//----------------------------------------------------------------------------- diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoFastNonDominatedSortingFitnessAssignment.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoFastNonDominatedSortingFitnessAssignment.cpp new file mode 100644 index 000000000..4baa0c8b0 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoFastNonDominatedSortingFitnessAssignment.cpp @@ -0,0 +1,142 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// t-moeoFastNonDominatedSortingFitnessAssignment.cpp +//----------------------------------------------------------------------------- + +#include +#include + +//----------------------------------------------------------------------------- + +class ObjectiveVectorTraits : public moeoObjectiveVectorTraits +{ +public: + static bool minimizing (int i) + { + return true; + } + static bool maximizing (int i) + { + return false; + } + static unsigned int nObjectives () + { + return 2; + } +}; + +typedef moeoRealObjectiveVector < ObjectiveVectorTraits > ObjectiveVector; + +typedef MOEO < ObjectiveVector, double, double > Solution; + +//----------------------------------------------------------------------------- + +int main() +{ + std::cout << "[moeoFastNonDominatedSortingFitnessAssignment]\t=>\t"; + + // objective vectors + ObjectiveVector obj0, obj1, obj2, obj3, obj4, obj5; + obj0[0] = 2; + obj0[1] = 5; + obj1[0] = 3; + obj1[1] = 3; + obj2[0] = 4; + obj2[1] = 1; + obj3[0] = 5; + obj3[1] = 5; + obj4[0] = 5; + obj4[1] = 1; + obj5[0] = 3; + obj5[1] = 3; + + // population + eoPop < Solution > pop; + pop.resize(6); + pop[0].objectiveVector(obj0); // class 1 + pop[1].objectiveVector(obj1); // class 1 + pop[2].objectiveVector(obj2); // class 1 + pop[3].objectiveVector(obj3); // class 3 + pop[4].objectiveVector(obj4); // class 2 + pop[5].objectiveVector(obj5); // class 1 + + // fitness assignment + moeoFastNonDominatedSortingFitnessAssignment< Solution > fitnessAssignment; + fitnessAssignment(pop); + + // pop[0] + if (pop[0].fitness() != 2.0) + { + std::cout << "ERROR (bad fitness for pop[0])" << std::endl; + return EXIT_FAILURE; + } + // pop[1] + if (pop[1].fitness() != 2.0) + { + std::cout << "ERROR (bad fitness for pop[1])" << std::endl; + return EXIT_FAILURE; + } + // pop[2] + if (pop[2].fitness() != 2.0) + { + std::cout << "ERROR (bad fitness for pop[2])" << std::endl; + return EXIT_FAILURE; + } + // pop[3] + if (pop[3].fitness() != 0.0) + { + std::cout << "ERROR (bad fitness for pop[3]) " << std::endl; + return EXIT_FAILURE; + } + // pop[4] + if (pop[4].fitness() != 1.0) + { + std::cout << "ERROR (bad fitness for pop[4])" << std::endl; + return EXIT_FAILURE; + } + // pop[5] + if (pop[5].fitness() != 2.0) + { + std::cout << "ERROR (bad fitness for pop[5])" << std::endl; + return EXIT_FAILURE; + } + + std::cout << "OK" << std::endl; + return EXIT_SUCCESS; +} + +//----------------------------------------------------------------------------- diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoFitnessThenDiversityComparator.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoFitnessThenDiversityComparator.cpp new file mode 100644 index 000000000..e7b69ba3e --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoFitnessThenDiversityComparator.cpp @@ -0,0 +1,81 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// t-moeoFitnessThenDiversityComparator.cpp +//----------------------------------------------------------------------------- + +#include +#include + +//----------------------------------------------------------------------------- + +typedef MOEO < double, double, double > Solution; + +//----------------------------------------------------------------------------- + +int main() +{ + std::cout << "[moeoFitnessThenDiversityComparator]\t=>\t"; + + // fitness & diversity + double fit1 = 1.0; + double div1 = 2.0; + double fit2 = 3.0; + double div2 = 1.0; + + // solutions + Solution sol1; + sol1.fitness(fit1); + sol1.diversity(div1); + Solution sol2; + sol2.fitness(fit2); + sol2.diversity(div2); + + // comparator + moeoFitnessThenDiversityComparator < Solution > comparator; + + // sol1 not better than sol2? + if (! comparator(sol1, sol2)) + { + std::cout << "ERROR (sol1 must be better)" << std::endl; + return EXIT_FAILURE; + } + + std::cout << "OK" << std::endl; + return EXIT_SUCCESS; +} + +//----------------------------------------------------------------------------- diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoIBEA.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoIBEA.cpp new file mode 100644 index 000000000..ce898f4d4 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoIBEA.cpp @@ -0,0 +1,115 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// t-moeoIBEA.cpp +//----------------------------------------------------------------------------- + +#include +#include +#include +#include + +//----------------------------------------------------------------------------- + +class ObjectiveVectorTraits : public moeoObjectiveVectorTraits +{ +public: + static bool minimizing (int i) + { + return true; + } + static bool maximizing (int i) + { + return false; + } + static unsigned int nObjectives () + { + return 2; + } +}; + +typedef moeoRealObjectiveVector < ObjectiveVectorTraits > ObjectiveVector; + +class Solution : public moeoRealVector < ObjectiveVector, double, double > +{ +public: + Solution() : moeoRealVector < ObjectiveVector, double, double > (1) {} +}; + +class TestEval : public moeoEvalFunc < Solution > +{ +public: + void operator () (Solution & _sol) + { + ObjectiveVector objVec; + objVec[0] = _sol[0]; + objVec[1] = _sol[0] * _sol[0]; + _sol.objectiveVector(objVec); + } +}; + +//----------------------------------------------------------------------------- + +int main() +{ + std::cout << "[moeoIBEA]" << std::endl; + + TestEval eval; + eoQuadCloneOp < Solution > xover; + eoUniformMutation < Solution > mutation(0.05); + + eoRealVectorBounds bounds(1, 1.0, 2.0); + eoRealInitBounded < Solution > init(bounds); + eoPop < Solution > pop(20, init); + + // indicator + moeoAdditiveEpsilonBinaryMetric < ObjectiveVector > indicator; + + // build IBEA + moeoIBEA < Solution > nsgaII(20, eval, xover, 1.0, mutation, 1.0, indicator); + + // run the algo + nsgaII(pop); + + // final pop + std::cout << "Final population" << std::endl; + std::cout << pop << std::endl; + + std::cout << "[moeoIBEA] OK" << std::endl; + return EXIT_SUCCESS; +} + +//----------------------------------------------------------------------------- diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoMax3Obj.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoMax3Obj.cpp new file mode 100644 index 000000000..f0ff1471e --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoMax3Obj.cpp @@ -0,0 +1,113 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// t-moeoNSGAII.cpp +//----------------------------------------------------------------------------- + +#include +#include +#include +#include + +//----------------------------------------------------------------------------- + +class ObjectiveVectorTraits : public moeoObjectiveVectorTraits +{ +public: + static bool minimizing (int i) + { + return false; + } + static bool maximizing (int i) + { + return true; + } + static unsigned int nObjectives () + { + return 3; + } +}; + +typedef moeoRealObjectiveVector < ObjectiveVectorTraits > ObjectiveVector; + +class Solution : public moeoRealVector < ObjectiveVector, double, double > +{ +public: + Solution() : moeoRealVector < ObjectiveVector, double, double > (1) {} +}; + +class TestEval : public moeoEvalFunc < Solution > +{ +public: + void operator () (Solution & _sol) + { + ObjectiveVector objVec; + objVec[0] = _sol[0]; + objVec[1] = _sol[0] * _sol[0]; + objVec[2] = _sol[0] + (_sol[0] * _sol[0]); + _sol.objectiveVector(objVec); + } +}; + +//----------------------------------------------------------------------------- + +int main() +{ + std::cout << "[moeoNSGAII]" << std::endl; + + TestEval eval; + eoQuadCloneOp < Solution > xover; + eoUniformMutation < Solution > mutation(0.05); + + eoRealVectorBounds bounds(1, 1.0, 2.0); + eoRealInitBounded < Solution > init(bounds); + eoPop < Solution > pop(20, init); + + // build NSGA-II + moeoNSGAII < Solution > algo(20, eval, xover, 1.0, mutation, 1.0); + + // run the algo + algo(pop); + + // final pop + std::cout << "Final population" << std::endl; + std::cout << pop << std::endl; + + std::cout << "[moeoNSGAII] OK" << std::endl; + return EXIT_SUCCESS; +} + +//----------------------------------------------------------------------------- diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoNSGA.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoNSGA.cpp new file mode 100644 index 000000000..159b6a596 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoNSGA.cpp @@ -0,0 +1,112 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// t-moeoNSGA.cpp +//----------------------------------------------------------------------------- + +#include +#include +#include +#include + +//----------------------------------------------------------------------------- + +class ObjectiveVectorTraits : public moeoObjectiveVectorTraits +{ +public: + static bool minimizing (int i) + { + return true; + } + static bool maximizing (int i) + { + return false; + } + static unsigned int nObjectives () + { + return 2; + } +}; + +typedef moeoRealObjectiveVector < ObjectiveVectorTraits > ObjectiveVector; + +class Solution : public moeoRealVector < ObjectiveVector, double, double > +{ +public: + Solution() : moeoRealVector < ObjectiveVector, double, double > (1) {} +}; + +class TestEval : public moeoEvalFunc < Solution > +{ +public: + void operator () (Solution & _sol) + { + ObjectiveVector objVec; + objVec[0] = _sol[0]; + objVec[1] = _sol[0] * _sol[0]; + _sol.objectiveVector(objVec); + } +}; + +//----------------------------------------------------------------------------- + +int main() +{ + std::cout << "[moeoNSGA]" << std::endl; + + TestEval eval; + eoQuadCloneOp < Solution > xover; + eoUniformMutation < Solution > mutation(0.05); + + eoRealVectorBounds bounds(1, 1.0, 2.0); + eoRealInitBounded < Solution > init(bounds); + eoPop < Solution > pop(20, init); + + // build NSGA + moeoNSGA < Solution > algo(20, eval, xover, 1.0, mutation, 1.0); + + // run the algo + algo(pop); + + // final pop + std::cout << "Final population" << std::endl; + std::cout << pop << std::endl; + + std::cout << "[moeoNSGA] OK" << std::endl; + return EXIT_SUCCESS; +} + +//----------------------------------------------------------------------------- diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoNSGAII.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoNSGAII.cpp new file mode 100644 index 000000000..c62d51800 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoNSGAII.cpp @@ -0,0 +1,112 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// t-moeoNSGAII.cpp +//----------------------------------------------------------------------------- + +#include +#include +#include +#include + +//----------------------------------------------------------------------------- + +class ObjectiveVectorTraits : public moeoObjectiveVectorTraits +{ +public: + static bool minimizing (int i) + { + return true; + } + static bool maximizing (int i) + { + return false; + } + static unsigned int nObjectives () + { + return 2; + } +}; + +typedef moeoRealObjectiveVector < ObjectiveVectorTraits > ObjectiveVector; + +class Solution : public moeoRealVector < ObjectiveVector, double, double > +{ +public: + Solution() : moeoRealVector < ObjectiveVector, double, double > (1) {} +}; + +class TestEval : public moeoEvalFunc < Solution > +{ +public: + void operator () (Solution & _sol) + { + ObjectiveVector objVec; + objVec[0] = _sol[0]; + objVec[1] = _sol[0] * _sol[0]; + _sol.objectiveVector(objVec); + } +}; + +//----------------------------------------------------------------------------- + +int main() +{ + std::cout << "[moeoNSGAII]" << std::endl; + + TestEval eval; + eoQuadCloneOp < Solution > xover; + eoUniformMutation < Solution > mutation(0.05); + + eoRealVectorBounds bounds(1, 1.0, 2.0); + eoRealInitBounded < Solution > init(bounds); + eoPop < Solution > pop(20, init); + + // build NSGA-II + moeoNSGAII < Solution > algo(20, eval, xover, 1.0, mutation, 1.0); + + // run the algo + algo(pop); + + // final pop + std::cout << "Final population" << std::endl; + std::cout << pop << std::endl; + + std::cout << "[moeoNSGAII] OK" << std::endl; + return EXIT_SUCCESS; +} + +//----------------------------------------------------------------------------- diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoParetoObjectiveVectorComparator.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoParetoObjectiveVectorComparator.cpp new file mode 100644 index 000000000..143e3b70e --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoParetoObjectiveVectorComparator.cpp @@ -0,0 +1,95 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// t-moeoParetoObjectiveVectorComparator.cpp +//----------------------------------------------------------------------------- + +#include +#include + +//----------------------------------------------------------------------------- + +class ObjectiveVectorTraits : public moeoObjectiveVectorTraits +{ +public: + static bool minimizing (int i) + { + return true; + } + static bool maximizing (int i) + { + return false; + } + static unsigned int nObjectives () + { + return 2; + } +}; + +typedef moeoRealObjectiveVector < ObjectiveVectorTraits > ObjectiveVector; + +typedef MOEO < ObjectiveVector, double, double > Solution; + +//----------------------------------------------------------------------------- + +int main() +{ + std::cout << "[moeoParetoObjectiveVectorComparator]\t=>\t"; + + // objective vectors + ObjectiveVector obj1; + obj1[0] = 2; + obj1[1] = 5; + ObjectiveVector obj2; + obj2[0] = 3; + obj2[1] = 5; + + // comparator + moeoParetoObjectiveVectorComparator< ObjectiveVector > comparator; + + + // obj1 dominated by obj2? + if (comparator(obj1, obj2)) + { + std::cout << "ERROR (obj1 must be better)" << std::endl; + return EXIT_FAILURE; + } + + std::cout << "OK" << std::endl; + return EXIT_SUCCESS; +} + +//----------------------------------------------------------------------------- diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoRealVector.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoRealVector.cpp new file mode 100644 index 000000000..1d17853f6 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoRealVector.cpp @@ -0,0 +1,81 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// t-moeoRealVector.cpp +//----------------------------------------------------------------------------- + +#include +#include + +//----------------------------------------------------------------------------- + +class ObjectiveVectorTraits : public moeoObjectiveVectorTraits +{ +public: + static bool minimizing (int i) + { + return true; + } + static bool maximizing (int i) + { + return false; + } + static unsigned int nObjectives () + { + return 2; + } +}; + +typedef moeoRealObjectiveVector < ObjectiveVectorTraits > ObjectiveVector; + +typedef moeoRealVector < ObjectiveVector, double, double > Solution; + +//----------------------------------------------------------------------------- + +int main() +{ + + std::cout << "[moeoRealVector]\t=>\t"; + + // solutions + Solution sol1, sol2; + + std::cout << "OK" << std::endl; + return EXIT_SUCCESS; + +} + +//----------------------------------------------------------------------------- diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoSharingDiversityAssignment.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoSharingDiversityAssignment.cpp new file mode 100644 index 000000000..1dd3973fa --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/test/t-moeoSharingDiversityAssignment.cpp @@ -0,0 +1,126 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// t-moeoSharingDiversityAssignment.cpp +//----------------------------------------------------------------------------- + +#include +#include + +//----------------------------------------------------------------------------- + +class ObjectiveVectorTraits : public moeoObjectiveVectorTraits +{ +public: + static bool minimizing (int i) + { + return true; + } + static bool maximizing (int i) + { + return false; + } + static unsigned int nObjectives () + { + return 2; + } +}; + +typedef moeoRealObjectiveVector < ObjectiveVectorTraits > ObjectiveVector; + +typedef MOEO < ObjectiveVector, double, double > Solution; + +//----------------------------------------------------------------------------- + +int main() +{ + std::cout << "[moeoSharingDiversityAssignment]\t=>\t"; + + // objective vectors + ObjectiveVector obj0, obj1, obj2, obj3; + obj0[0] = 1; + obj0[1] = 5; + obj1[0] = 3; + obj1[1] = 3; + obj2[0] = 3; + obj2[1] = 3; + obj3[0] = 5; + obj3[1] = 1; + + // population + eoPop < Solution > pop; + pop.resize(4); + pop[0].objectiveVector(obj0); + pop[1].objectiveVector(obj1); + pop[2].objectiveVector(obj2); + pop[3].objectiveVector(obj3); + + // fitness & diversity assignment + moeoDummyFitnessAssignment< Solution > fitnessAssignment; + fitnessAssignment(pop); + moeoSharingDiversityAssignment< Solution > diversityAssignment; + diversityAssignment(pop); + + // pop[0] + if (pop[0].diversity() != 1.0) + { + std::cout << "ERROR (bad diversity for pop[0])" << std::endl; + return EXIT_FAILURE; + } + // pop[1] + if (pop[1].diversity() != 0.0) + { + std::cout << "ERROR (bad diversity for pop[1])" << std::endl; + return EXIT_FAILURE; + } + // pop[2] + if (pop[2].diversity() != 0.0) + { + std::cout << "ERROR (bad diversity for pop[2])" << std::endl; + return EXIT_FAILURE; + } + // pop[3] + if (pop[3].diversity() != 1.0) + { + std::cout << "ERROR (bad diversity for pop[3]) " << std::endl; + return EXIT_FAILURE; + } + + std::cout << "OK" << std::endl; + return EXIT_SUCCESS; +} + +//----------------------------------------------------------------------------- diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/CMakeLists.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/CMakeLists.txt new file mode 100644 index 000000000..c0e9c67b4 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/CMakeLists.txt @@ -0,0 +1,18 @@ + +###################################################################################### +### 1) Definitions +###################################################################################### + +SET(FLOWSHOP_SRC_DIR ${ParadisEO-MOEO_SOURCE_DIR}/tutorial/examples/flowshop) +SET(FLOWSHOP_BINARY_DIR ${ParadisEO-MOEO_BINARY_DIR}/tutorial/examples/flowshop) + +###################################################################################### + + +###################################################################################### +### 2) Where must cmake go now ? +###################################################################################### + +SUBDIRS(examples Lesson1 Lesson2 Lesson3) + +###################################################################################### diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson1/CMakeLists.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson1/CMakeLists.txt new file mode 100644 index 000000000..5798074c9 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson1/CMakeLists.txt @@ -0,0 +1,66 @@ + +###################################################################################### +### 0) Copy the Sch1.param file in the build path for an easy use. +###################################################################################### + +ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-MOEO_SOURCE_DIR}/tutorial/Lesson1/Sch1.param) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-MOEO_SOURCE_DIR}/tutorial/Lesson1/Sch1.param + ${ParadisEO-MOEO_BINARY_DIR}/tutorial/Lesson1) +###################################################################################### + + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/utils) +INCLUDE_DIRECTORIES(${ParadisEO-MOEO_SOURCE_DIR}/src) +###################################################################################### + + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-MOEO_BINARY_DIR}/lib) + +###################################################################################### + + + +###################################################################################### +### 3) Define your target(s): just an executable here +###################################################################################### + +ADD_EXECUTABLE(Sch1 Sch1.cpp) +ADD_DEPENDENCIES(Sch1 moeo) +###################################################################################### + + + +###################################################################################### +### 4) Optionnal: define your target(s)'s version: no effect for windows +###################################################################################### + +SET(SCH1_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(Sch1 PROPERTIES VERSION "${SCH1_VERSION}") +###################################################################################### + + + +###################################################################################### +### 5) Link the librairies for your target(s) +###################################################################################### + + +TARGET_LINK_LIBRARIES(Sch1 moeo eo eoutils) + +###################################################################################### diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson1/Sch1.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson1/Sch1.cpp new file mode 100644 index 000000000..f774f6f6b --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson1/Sch1.cpp @@ -0,0 +1,140 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Abdelhakim Deneche, Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#include +#include +#include +#include + +using namespace std; + + +// the moeoObjectiveVectorTraits : minimizing 2 objectives +class Sch1ObjectiveVectorTraits : public moeoObjectiveVectorTraits +{ +public: + static bool minimizing (int i) + { + return true; + } + static bool maximizing (int i) + { + return false; + } + static unsigned int nObjectives () + { + return 2; + } +}; + + +// objective vector of real values +typedef moeoRealObjectiveVector < Sch1ObjectiveVectorTraits > Sch1ObjectiveVector; + + +// multi-objective evolving object for the Sch1 problem +class Sch1 : public moeoRealVector < Sch1ObjectiveVector, double, double > +{ +public: + Sch1() : moeoRealVector < Sch1ObjectiveVector, double, double > (1) + {} +}; + + +// evaluation of objective functions +class Sch1Eval : public moeoEvalFunc < Sch1 > +{ +public: + void operator () (Sch1 & _sch1) + { + if (_sch1.invalidObjectiveVector()) + { + Sch1ObjectiveVector objVec; + double x = _sch1[0]; + objVec[0] = x * x; + objVec[1] = (x - 2.0) * (x - 2.0); + _sch1.objectiveVector(objVec); + } + } +}; + + +// main +int main (int argc, char *argv[]) +{ + eoParser parser(argc, argv); // for user-parameter reading + eoState state; // to keep all things allocated + + // parameters + unsigned int POP_SIZE = parser.createParam((unsigned int)(100), "popSize", "Population size",'P',"Param").value(); + unsigned int MAX_GEN = parser.createParam((unsigned int)(100), "maxGen", "Maximum number of generations",'G',"Param").value(); + double M_EPSILON = parser.createParam(0.01, "mutEpsilon", "epsilon for mutation",'e',"Param").value(); + double P_CROSS = parser.createParam(0.25, "pCross", "Crossover probability",'C',"Param").value(); + double P_MUT = parser.createParam(0.35, "pMut", "Mutation probability",'M',"Param").value(); + + // objective functions evaluation + Sch1Eval eval; + + // crossover and mutation + eoQuadCloneOp < Sch1 > xover; + eoUniformMutation < Sch1 > mutation (M_EPSILON); + + // generate initial population + eoRealVectorBounds bounds (1, 0.0, 2.0); // [0, 2] + eoRealInitBounded < Sch1 > init (bounds); + eoPop < Sch1 > pop (POP_SIZE, init); + + // build NSGA-II + moeoNSGAII < Sch1 > nsgaII (MAX_GEN, eval, xover, P_CROSS, mutation, P_MUT); + + // help ? + make_help(parser); + + // run the algo + nsgaII (pop); + + // extract first front of the final population using an moeoArchive (this is the output of nsgaII) + moeoArchive < Sch1 > arch; + arch.update (pop); + + // printing of the final archive + cout << "Final Archive" << endl; + arch.sortedPrintOn (cout); + cout << endl; + + return EXIT_SUCCESS; +} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson1/Sch1.param b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson1/Sch1.param new file mode 100644 index 000000000..fa168bb8c --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson1/Sch1.param @@ -0,0 +1,14 @@ + +###### General ###### +# --help=0 # -h : Prints this message +# --stopOnUnknownParam=1 # Stop if unkown param entered + +###### Param ###### +--popSize=100 # -P : Population size +--maxGen=100 # -G : Maximum number of generations +--mutEpsilon=0.01 # -e : epsilon for mutation +--pCross=0.25 # -C : Crossover probability +--pMut=0.35 # -M : Mutation probability + +###### Persistence ###### +# --status=./Sch1.status # Status file diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson2/CMakeLists.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson2/CMakeLists.txt new file mode 100644 index 000000000..a30bace99 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson2/CMakeLists.txt @@ -0,0 +1,67 @@ + +###################################################################################### +### 0) Copy the FlowShop.param file in the build path for an easy use. +###################################################################################### + +ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-MOEO_SOURCE_DIR}/tutorial/Lesson2/FlowShopEA.param) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-MOEO_SOURCE_DIR}/tutorial/Lesson2/FlowShopEA.param + ${ParadisEO-MOEO_BINARY_DIR}/tutorial/Lesson2) +###################################################################################### + + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${ParadisEO-MOEO_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(${FLOWSHOP_SRC_DIR}) + +###################################################################################### + + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-MOEO_BINARY_DIR}/lib ${FLOWSHOP_BINARY_DIR}/lib) + +###################################################################################### + + + +###################################################################################### +### 3) Define your target(s): just an executable here +###################################################################################### + +ADD_EXECUTABLE(FlowShopEA FlowShopEA.cpp) +ADD_DEPENDENCIES(FlowShopEA flowshop moeo) +###################################################################################### + + + +###################################################################################### +### 4) Optionnal: define your target(s)'s version: no effect for windows +###################################################################################### + +SET(FLOWSHOPEA_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(FlowShopEA PROPERTIES VERSION "${FLOWSHOPEA_VERSION}") +###################################################################################### + + + +###################################################################################### +### 5) Link the librairies for your target(s) +###################################################################################### + + +TARGET_LINK_LIBRARIES(FlowShopEA moeo flowshop eo eoutils) + +###################################################################################### diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson2/FlowShopEA.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson2/FlowShopEA.cpp new file mode 100644 index 000000000..d3e364520 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson2/FlowShopEA.cpp @@ -0,0 +1,147 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + + +// moeo general include +#include +// for the creation of an evaluator +#include +// for the creation of an initializer +#include +// for the creation of the variation operators +#include +// how to initialize the population +#include +// the stopping criterion +#include +// outputs (stats, population dumps, ...) +#include +// evolution engine (selection and replacement) +#include +// simple call to the algo +#include +// checks for help demand, and writes the status file and make_help; in libutils +void make_help(eoParser & _parser); +// definition of the representation +#include + + +using namespace std; + + +int main(int argc, char* argv[]) +{ + try + { + + eoParser parser(argc, argv); // for user-parameter reading + eoState state; // to keep all things allocated + + + /*** the representation-dependent things ***/ + + // The fitness evaluation + eoEvalFuncCounter& eval = do_make_eval(parser, state); + // the genotype (through a genotype initializer) + eoInit& init = do_make_genotype(parser, state); + // the variation operators + eoGenOp& op = do_make_op(parser, state); + + + /*** the representation-independent things ***/ + + // initialization of the population + eoPop& pop = do_make_pop(parser, state, init); + // definition of the archive + moeoArchive arch; + // stopping criteria + unsigned int maxGen = parser.createParam((unsigned int)(100), "maxGen", "Maximum number of gen.",'G',"Stopping criterion").value(); + eoGenContinue term(maxGen); + // checkpointing + eoCheckPoint checkpoint(term); + moeoArchiveUpdater < FlowShop > updater(arch, pop); + checkpoint.add(updater); + // fitness assignment + moeoFastNonDominatedSortingFitnessAssignment fitnessAssignment; + // diversity preservation + moeoFrontByFrontCrowdingDiversityAssignment diversityAssignment; + // comparator + moeoFitnessThenDiversityComparator comparator; + // selection scheme + moeoDetTournamentSelect select(comparator, 2); + // replacement scheme + moeoElitistReplacement replace(fitnessAssignment, diversityAssignment, comparator); + // breeder + eoGeneralBreeder breed(select, op); + // algorithm + moeoEasyEA algo (checkpoint, eval, breed, replace, fitnessAssignment, diversityAssignment); + + + /*** Go ! ***/ + + // help ? + make_help(parser); + + // first evalution (for printing) + apply(eval, pop); + + // printing of the initial population + cout << "Initial Population\n"; + pop.sortedPrintOn(cout); + cout << endl; + + // run the algo + algo(pop); + + // printing of the final population + cout << "Final Population\n"; + pop.sortedPrintOn(cout); + cout << endl; + + // printing of the final archive + cout << "Final Archive\n"; + arch.sortedPrintOn(cout); + cout << endl; + + + } + catch (exception& e) + { + cout << e.what() << endl; + } + return EXIT_SUCCESS; +} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson2/FlowShopEA.param b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson2/FlowShopEA.param new file mode 100644 index 000000000..e80a21e3e --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson2/FlowShopEA.param @@ -0,0 +1,21 @@ + +###### General ###### +--help=0 # -h : Prints this message +--stopOnUnknownParam=1 # Stop if unkown param entered +# --seed=1203083493 # -S : Random number seed + +###### Evolution Engine ###### +--popSize=100 # -P : Population Size + +###### Representation ###### +--BenchmarkFile=../examples/flowshop/benchs/020_10_01.txt # -B : Benchmark file name REQUIRED + +###### Stopping criterion ###### +--maxGen=100 # -G : Maximum number of generations + +###### Variation Operators ###### +--crossRate=1 # Relative rate for the only crossover +--shiftMutRate=0.5 # Relative rate for shift mutation +--exchangeMutRate=0.5 # Relative rate for exchange mutation +--pCross=0.25 # -c : Probability of Crossover +--pMut=0.35 # -m : Probability of Mutation diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson3/CMakeLists.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson3/CMakeLists.txt new file mode 100644 index 000000000..ba6339afc --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson3/CMakeLists.txt @@ -0,0 +1,67 @@ + +###################################################################################### +### 0) Copy the FlowShop.param file in the build path for an easy use. +###################################################################################### + +ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-MOEO_SOURCE_DIR}/tutorial/Lesson3/FlowShopEA.param) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-MOEO_SOURCE_DIR}/tutorial/Lesson3/FlowShopEA.param + ${ParadisEO-MOEO_BINARY_DIR}/tutorial/Lesson3) +###################################################################################### + + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${ParadisEO-MOEO_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(${FLOWSHOP_SRC_DIR}) + +###################################################################################### + + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-MOEO_BINARY_DIR}/lib ${FLOWSHOP_BINARY_DIR}/lib) + +###################################################################################### + + + +###################################################################################### +### 3) Define your target(s): just an executable here +###################################################################################### + +ADD_EXECUTABLE(FlowShopEA FlowShopEA.cpp) +ADD_DEPENDENCIES(FlowShopEA flowshop moeo) +###################################################################################### + + + +###################################################################################### +### 4) Optionnal: define your target(s)'s version: no effect for windows +###################################################################################### + +SET(FLOWSHOPEA_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(FlowShopEA PROPERTIES VERSION "${FLOWSHOPEA_VERSION}") +###################################################################################### + + + +###################################################################################### +### 5) Link the librairies for your target(s) +###################################################################################### + + +TARGET_LINK_LIBRARIES(FlowShopEA moeo flowshop eo eoutils) + +###################################################################################### diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson3/FlowShopEA.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson3/FlowShopEA.cpp new file mode 100644 index 000000000..bb1d0f09b --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson3/FlowShopEA.cpp @@ -0,0 +1,132 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + + +// moeo general include +#include +// for the creation of an evaluator +#include +// for the creation of an initializer +#include +// for the creation of the variation operators +#include +// how to initialize the population +#include +// the stopping criterion +#include +// outputs (stats, population dumps, ...) +#include +// evolution engine (selection and replacement) +#include +// simple call to the algo +#include +// checks for help demand, and writes the status file and make_help; in libutils +void make_help(eoParser & _parser); +// definition of the representation +#include + + +using namespace std; + + +int main(int argc, char* argv[]) +{ + try + { + + eoParser parser(argc, argv); // for user-parameter reading + eoState state; // to keep all things allocated + + + /*** the representation-dependent things ***/ + + // The fitness evaluation + eoEvalFuncCounter& eval = do_make_eval(parser, state); + // the genotype (through a genotype initializer) + eoInit& init = do_make_genotype(parser, state); + // the variation operators + eoGenOp& op = do_make_op(parser, state); + + + /*** the representation-independent things ***/ + + // initialization of the population + eoPop& pop = do_make_pop(parser, state, init); + // definition of the archive + moeoArchive arch; + // stopping criteria + eoContinue& term = do_make_continue_moeo(parser, state, eval); + // output + eoCheckPoint& checkpoint = do_make_checkpoint_moeo(parser, state, eval, term, pop, arch); + // algorithm + eoAlgo& algo = do_make_ea_moeo(parser, state, eval, checkpoint, op, arch); + + + /*** Go ! ***/ + + // help ? + make_help(parser); + + // first evalution (for printing) + apply(eval, pop); + + // printing of the initial population + cout << "Initial Population\n"; + pop.sortedPrintOn(cout); + cout << endl; + + // run the algo + algo(pop); + + // printing of the final population + cout << "Final Population\n"; + pop.sortedPrintOn(cout); + cout << endl; + + // printing of the final archive + cout << "Final Archive\n"; + arch.sortedPrintOn(cout); + cout << endl; + + + } + catch (exception& e) + { + cout << e.what() << endl; + } + return EXIT_SUCCESS; +} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson3/FlowShopEA.param b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson3/FlowShopEA.param new file mode 100644 index 000000000..885600e47 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/Lesson3/FlowShopEA.param @@ -0,0 +1,49 @@ + +###### General ###### +--help=0 # -h : Prints this message +--stopOnUnknownParam=1 # Stop if unkown param entered +# --seed=1183379758 # -S : Random number seed + +###### Evolution Engine ###### +--popSize=100 # -P : Population Size +--updateArch=1 # Update the archive at each gen. +--fitness=FastNonDominatedSorting # -F : Fitness assignment scheme: Dummy, FastNonDominatedSorting or IndicatorBased +--indicator=Epsilon # -i : Binary indicator for IndicatorBased: Epsilon, Hypervolume +--rho=1.1 # -r : reference point for the hypervolume indicator +--kappa=0.05 # -k : Scaling factor kappa for IndicatorBased +--diversity=Crowding # -D : Diversity assignment scheme: Dummy, Sharing(nicheSize) or Crowding +--comparator=FitnessThenDiversity # -C : Comparator scheme: FitnessThenDiversity, DiversityThenFitness or Aggregative +--selection=DetTour(2) # -S : Selection scheme: DetTour(T), StochTour(t) or Random +--replacement=Elitist # -R : Replacement scheme: Elitist, Environmental or Generational +--nbOffspring=100% # -O : Number of offspring (percentage or absolute) + +###### Output ###### +--resDir=Res # Directory to store DISK outputs +--eraseDir=1 # erase files in dirName if any +--printPop=0 # Print sorted pop. every gen. +--storeArch=0 # Store the archive's objective vectors at each gen. +--contribution=0 # Store the contribution of the archive at each gen. +--entropy=0 # Store the entropy of the archive at each gen. + +###### Persistence ###### +--Load= # -L : A save file to restart from +--recomputeFitness=0 # -r : Recompute the fitness after re-loading the pop.? +--saveFrequency=0 # Save every F generation (0 = only final state, absent = never) +--saveTimeInterval=0 # Save every T seconds (0 or absent = never) +--status=./FlowShopEA.status # Status file + +###### Representation ###### +--BenchmarkFile=../examples/flowshop/benchs/020_10_01.txt # -B : Benchmark file name REQUIRED + +###### Stopping criterion ###### +--maxGen=100 # -G : Maximum number of generations (0 = none) +--maxEval=0 # -E : Maximum number of evaluations (0 = none) +--maxTime=0 # -T : Maximum running time in seconds (0 = none) +#--CtrlC=1 # -C : Terminate current generation upon Ctrl C (only available on Unix platforms) + +###### Variation Operators ###### +--crossRate=1 # Relative rate for the only crossover +--shiftMutRate=0.5 # Relative rate for shift mutation +--exchangeMutRate=0.5 # Relative rate for exchange mutation +--pCross=0.25 # -c : Probability of Crossover +--pMut=0.35 # -m : Probability of Mutation diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/CMakeLists.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/CMakeLists.txt new file mode 100644 index 000000000..eae35f629 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/CMakeLists.txt @@ -0,0 +1,9 @@ + + +###################################################################################### +### 1) Where must cmake go now ? +###################################################################################### + +SUBDIRS(flowshop) + +###################################################################################### \ No newline at end of file diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/CMakeLists.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/CMakeLists.txt new file mode 100644 index 000000000..3400a98a0 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/CMakeLists.txt @@ -0,0 +1,72 @@ + +###################################################################################### +### 0) Copy the "benchs" directory in the build directory to easily run the lessons +###################################################################################### + +ADD_CUSTOM_TARGET(install DEPENDS ${FLOWSHOP_SRC_DIR}/benchs) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_directory + ${FLOWSHOP_SRC_DIR}/benchs + ${FLOWSHOP_BINARY_DIR}/benchs) + +###################################################################################### + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${ParadisEO-MOEO_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(${FLOWSHOP_SRC_DIR}) + +###################################################################################### + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +LINK_DIRECTORIES(${EO_BIN_DIR}/lib) + +###################################################################################### + + +###################################################################################### +### 3) Define your target(s): just the flowshop lib here +###################################################################################### + +SET(FLOWSHOP_LIB_OUTPUT_PATH ${FLOWSHOP_BINARY_DIR}/lib) +SET(LIBRARY_OUTPUT_PATH ${FLOWSHOP_LIB_OUTPUT_PATH}) + +SET (FLOWSHOP_SOURCES FlowShopBenchmarkParser.cpp + FlowShopEval.cpp + FlowShopObjectiveVectorTraits.cpp + FlowShopOpCrossoverQuad.cpp + FlowShop.cpp) + +ADD_LIBRARY(flowshop STATIC ${FLOWSHOP_SOURCES}) +ADD_DEPENDENCIES(flowshop moeo) +###################################################################################### + + + +###################################################################################### +### 4) Optionnal: define your target(s)'s version: no effect for windows +###################################################################################### + +SET(FLOWSHOP_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(flowshop PROPERTIES VERSION "${FLOWSHOP_VERSION}") +###################################################################################### + + +###################################################################################### +### 5) Link the librairies for your target(s) +###################################################################################### + +TARGET_LINK_LIBRARIES(flowshop eo) + +###################################################################################### diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShop.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShop.cpp new file mode 100644 index 000000000..0bf5dfe89 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShop.cpp @@ -0,0 +1,43 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#include + +std::string FlowShop::className() const + { + return "FlowShop"; + } diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShop.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShop.h new file mode 100644 index 000000000..993f901d8 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShop.h @@ -0,0 +1,58 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef FLOWSHOP_H_ +#define FLOWSHOP_H_ + +#include +#include + +/** + * Structure of the genotype for the flow-shop scheduling problem: a vector of unsigned int int. + */ +class FlowShop: public moeoVector < FlowShopObjectiveVector , double , double , unsigned int > + { + public: + + /** + * class name + */ + std::string className() const; + + }; + +#endif /*FLOWSHOP_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopBenchmarkParser.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopBenchmarkParser.cpp new file mode 100644 index 000000000..5a8b412b5 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopBenchmarkParser.cpp @@ -0,0 +1,131 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#include +#include + +FlowShopBenchmarkParser::FlowShopBenchmarkParser(const std::string _benchmarkFileName) +{ + init(_benchmarkFileName); +} + + +const unsigned int FlowShopBenchmarkParser::getM() +{ + return M; +} + + +const unsigned int FlowShopBenchmarkParser::getN() +{ + return N; +} + + +const std::vector< std::vector > FlowShopBenchmarkParser::getP() +{ + return p; +} + + +const std::vector FlowShopBenchmarkParser::getD() +{ + return d; +} + + +void FlowShopBenchmarkParser::printOn(std::ostream & _os) const + { + _os << "M=" << M << " N=" << N << std::endl; + _os << "*** processing times" << std::endl; + for (unsigned int i=0; i > (M,N); + d = std::vector (N); + // for each job... + for (unsigned int j=0 ; j j) + getline(inputFile, buffer, '\n'); + // due-date of the job j + getline(inputFile, buffer, '\n'); + d[j] = atoi(buffer.data()); + // processing times of the job j on each machine + getline(inputFile, buffer, '\n'); + start = buffer.find_first_not_of(" "); + for (unsigned int i=0 ; i +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef FLOWSHOPBENCHMARKPARSER_H_ +#define FLOWSHOPBENCHMARKPARSER_H_ + +#include +#include +#include + +/** + * Class to handle parameters of a flow-shop instance from a benchmark file + */ +class FlowShopBenchmarkParser + { + public: + + /** + * Ctor + * @param _benchmarkFileName the name of the benchmark file + */ + FlowShopBenchmarkParser(const std::string _benchmarkFileName); + + + /** + * the number of machines + */ + const unsigned int getM(); + + + /** + * the number of jobs + */ + const unsigned int getN(); + + + /** + * the processing times + */ + const std::vector < std::vector < unsigned int > > getP(); + + + /** + * the due-dates + */ + const std::vector < unsigned int > getD(); + + + /** + * printing... + */ + void printOn(std::ostream & _os) const; + + + private: + + /** number of machines */ + unsigned int M; + /** number of jobs */ + unsigned int N; + /** p[i][j] = processing time of job j on machine i */ + std::vector < std::vector < unsigned int > > p; + /** d[j] = due-date of the job j */ + std::vector < unsigned int > d; + + + /** + * Initialisation of the parameters with the data contained in the benchmark file + * @param _benchmarkFileName the name of the benchmark file + */ + void init(const std::string _benchmarkFileName); + + }; + +#endif /*FLOWSHOPBENCHMARKPARSER_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopEval.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopEval.cpp new file mode 100644 index 000000000..08465a6f8 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopEval.cpp @@ -0,0 +1,90 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#include + + +FlowShopEval::FlowShopEval(unsigned int _M, unsigned int _N, const std::vector< std::vector > & _p, const std::vector & _d) : + M(_M), N (_N), p(_p), d(_d) +{} + + +void FlowShopEval::operator()(FlowShop & _flowshop) +{ + FlowShopObjectiveVector objVector; + objVector[0] = makespan(_flowshop); + objVector[1] = tardiness(_flowshop); + _flowshop.objectiveVector(objVector); +} + + + +double FlowShopEval::makespan(const FlowShop & _flowshop) +{ + // completion times computation for each job on each machine + // C[i][j] = completion of the jth job of the scheduling on the ith machine + std::vector< std::vector > C = completionTime(_flowshop); + return C[M-1][_flowshop[N-1]]; +} + + +double FlowShopEval::tardiness(const FlowShop & _flowshop) +{ + // completion times computation for each job on each machine + // C[i][j] = completion of the jth job of the scheduling on the ith machine + std::vector< std::vector > C = completionTime(_flowshop); + // tardiness computation + unsigned int long sum = 0; + for (unsigned int j=0 ; j > FlowShopEval::completionTime(const FlowShop & _flowshop) +{ + std::vector< std::vector > C(M,N); + C[0][_flowshop[0]] = p[0][_flowshop[0]]; + for (unsigned int j=1; j +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef FLOWSHOPEVAL_H_ +#define FLOWSHOPEVAL_H_ + +#include +#include +#include + +/** + * Evaluation of the objective vector a (multi-objective) FlowShop object + */ +class FlowShopEval : public moeoEvalFunc + { + public: + + /** + * Ctor + * @param _M the number of machines + * @param _N the number of jobs to schedule + * @param _p the processing times + * @param _d the due dates + */ + FlowShopEval(unsigned int _M, unsigned int _N, const std::vector< std::vector > & _p, const std::vector & _d); + + + /** + * computation of the multi-objective evaluation of a FlowShop object + * @param _flowshop the FlowShop object to evaluate + */ + void operator()(FlowShop & _flowshop); + + + private: + + /** number of machines */ + unsigned int M; + /** number of jobs */ + unsigned int N; + /** p[i][j] = processing time of job j on machine i */ + std::vector< std::vector < unsigned int > > p; + /** d[j] = due-date of the job j */ + std::vector < unsigned int > d; + + + /** + * computation of the makespan + * @param _flowshop the genotype to evaluate + */ + double makespan(const FlowShop & _flowshop); + + + /** + * computation of the tardiness + * @param _flowshop the genotype to evaluate + */ + double tardiness(const FlowShop & _flowshop); + + + /** + * computation of the completion times of a scheduling (for each job on each machine) + * C[i][j] = completion of the jth job of the scheduling on the ith machine + * @param _flowshop the genotype to evaluate + */ + std::vector< std::vector > completionTime (const FlowShop & _flowshop); + + }; + +#endif /*FLOWSHOPEVAL_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopInit.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopInit.cpp new file mode 100644 index 000000000..dde677384 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopInit.cpp @@ -0,0 +1,64 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#include + + +FlowShopInit::FlowShopInit(unsigned int _N) : N(_N) +{} + + +void FlowShopInit::operator()(FlowShop & _flowshop) +{ + // scheduling vector + std::vector scheduling(N); + // initialisation of possible values + std::vector possibles(N); + for (unsigned int i=0 ; i +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef FLOWSHOPINIT_H_ +#define FLOWSHOPINIT_H_ + +#include +#include + +/** + * Initialization of a random genotype built by the default constructor of the FlowShop class + */ +typedef eoInitPermutation FlowShopInit; + +#endif /*FLOWSHOPINIT_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVector.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVector.h new file mode 100644 index 000000000..65814085f --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVector.h @@ -0,0 +1,49 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef FLOWSHOPOBJECTIVEVECTOR_H_ +#define FLOWSHOPOBJECTIVEVECTOR_H_ + +#include +#include + +/** + * Definition of the objective vector for multi-objective flow-shop problems: a vector of doubles + */ +typedef moeoRealObjectiveVector < FlowShopObjectiveVectorTraits > FlowShopObjectiveVector; + +#endif /*FLOWSHOPOBJECTIVEVECTOR_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVectorTraits.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVectorTraits.cpp new file mode 100644 index 000000000..08487e873 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVectorTraits.cpp @@ -0,0 +1,57 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#include + + +bool FlowShopObjectiveVectorTraits::minimizing (int _i) +{ + // minimizing both + return true; +} + +bool FlowShopObjectiveVectorTraits::maximizing (int _i) +{ + // minimizing both + return false; +} + +unsigned int FlowShopObjectiveVectorTraits::nObjectives () +{ + // 2 objectives + return 2; +} diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVectorTraits.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVectorTraits.h new file mode 100644 index 000000000..b95d6f2ea --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVectorTraits.h @@ -0,0 +1,71 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef FLOWSHOPOBJECTIVEVECTORTRAITS_H_ +#define FLOWSHOPOBJECTIVEVECTORTRAITS_H_ + +#include + +/** + * Definition of the objective vector traits for multi-objective flow-shop problems + */ +class FlowShopObjectiveVectorTraits : public moeoObjectiveVectorTraits + { + public: + + /** + * Returns true if the _ith objective have to be minimzed + * @param _i index of the objective + */ + static bool minimizing (int _i); + + + /** + * Returns true if the _ith objective have to be maximzed + * @param _i index of the objective + */ + static bool maximizing (int _i); + + + /** + * Returns the number of objectives + */ + static unsigned int nObjectives (); + + }; + +#endif /*FLOWSHOPOBJECTIVEVECTORTRAITS_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpCrossoverQuad.cpp b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpCrossoverQuad.cpp new file mode 100644 index 000000000..5b64c7e41 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpCrossoverQuad.cpp @@ -0,0 +1,110 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#include + + +std::string FlowShopOpCrossoverQuad::className() const + { + return "FlowShopOpCrossoverQuad"; + } + + +bool FlowShopOpCrossoverQuad::operator()(FlowShop & _flowshop1, FlowShop & _flowshop2) +{ + bool oneAtLeastIsModified; + // computation of the 2 random points + unsigned int point1, point2; + do + { + point1 = rng.random(std::min(_flowshop1.size(), _flowshop2.size())); + point2 = rng.random(std::min(_flowshop1.size(), _flowshop2.size())); + } + while (fabs((double) point1-point2) <= 2); + // computation of the offspring + FlowShop offspring1 = generateOffspring(_flowshop1, _flowshop2, point1, point2); + FlowShop offspring2 = generateOffspring(_flowshop2, _flowshop1, point1, point2); + // does at least one genotype has been modified ? + if ((_flowshop1 != offspring1) || (_flowshop2 != offspring2)) + { + // update + _flowshop1.value(offspring1); + _flowshop2.value(offspring2); + // at least one genotype has been modified + oneAtLeastIsModified = true; + } + else + { + // no genotype has been modified + oneAtLeastIsModified = false; + } + // return 'true' if at least one genotype has been modified + return oneAtLeastIsModified; +} + + +FlowShop FlowShopOpCrossoverQuad::generateOffspring(const FlowShop & _parent1, const FlowShop & _parent2, unsigned int _point1, unsigned int _point2) +{ + FlowShop result = _parent1; + std::vector taken_values(result.size(), false); + if (_point1 > _point2) + std::swap(_point1, _point2); + /* first parent */ + for (unsigned int i=0 ; i<=_point1 ; i++) + { + // result[i] == _parent1[i] + taken_values[_parent1[i]] = true; + } + for (unsigned int i=_point2 ; i +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef FLOWSHOPOPCROSSOVERQUAD_H_ +#define FLOWSHOPOPCROSSOVERQUAD_H_ + +#include +#include + +/** + * Quadratic crossover operator for flow-shop (modify the both genotypes) + */ +class FlowShopOpCrossoverQuad : public eoQuadOp < FlowShop > + { + public: + + /** + * the class name (used to display statistics) + */ + std::string className() const; + + + /** + * eoQuad crossover - _flowshop1 and _flowshop2 are the (future) offspring, i.e. _copies_ of the parents + * @param _flowshop1 the first parent + * @param _flowshop2 the second parent + */ + bool operator()(FlowShop & _flowshop1, FlowShop & _flowshop2); + + + private: + + /** + * generation of an offspring by a 2 points crossover + * @param _parent1 the first parent + * @param _parent2 the second parent + * @param _point1 the first point + * @param _point2 the second point + */ + FlowShop generateOffspring(const FlowShop & _parent1, const FlowShop & _parent2, unsigned int _point1, unsigned int _point2); + + }; + +#endif /*FLOWSHOPOPCROSSOVERQUAD_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpMutationExchange.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpMutationExchange.h new file mode 100644 index 000000000..51801d9d9 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpMutationExchange.h @@ -0,0 +1,49 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef FLOWSHOPOPMUTATIONEXCHANGE_H_ +#define FLOWSHOPOPMUTATIONEXCHANGE_H_ + +#include +#include + +/** + * Exchange mutation operator for the flow-shop + */ +typedef eoSwapMutation FlowShopOpMutationExchange; + +#endif /*FLOWSHOPOPMUTATIONEXCHANGE_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpMutationShift.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpMutationShift.h new file mode 100644 index 000000000..523bb88f0 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpMutationShift.h @@ -0,0 +1,49 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef FLOWSHOPOPMUTATIONSHIFT_H_ +#define FLOWSHOPOPMUTATIONSHIFT_H_ + +#include +#include + +/** + * Shift mutation operator for flow-shop + */ +typedef eoShiftMutation FlowShopOpMutationShift; + +#endif /*FLOWSHOPOPMUTATIONSHIFT_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_05_01.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_05_01.txt new file mode 100644 index 000000000..2c2f78d86 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_05_01.txt @@ -0,0 +1,63 @@ +20 +5 +873654221 +0 +468 +54 79 16 66 58 +1 +325 +83 3 89 58 56 +2 +923 +15 11 49 31 20 +3 +513 +71 99 15 68 85 +4 +1070 +77 56 89 78 53 +5 +690 +36 70 45 91 35 +6 +602 +53 99 60 13 53 +7 +289 +38 60 23 59 41 +8 +873 +27 5 57 49 69 +9 +342 +87 56 64 85 13 +10 +764 +76 3 7 85 86 +11 +268 +91 61 1 9 72 +12 +1158 +14 73 63 39 8 +13 +646 +29 75 41 41 49 +14 +1111 +12 47 63 56 47 +15 +965 +77 14 47 40 87 +16 +703 +32 21 26 54 58 +17 +1205 +87 86 75 77 18 +18 +334 +68 5 77 51 68 +19 +1111 +94 77 40 31 28 diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_05_02.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_05_02.txt new file mode 100644 index 000000000..c82c2d033 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_05_02.txt @@ -0,0 +1,63 @@ +20 +5 +379008056 +0 +517 +26 59 78 88 69 +1 +461 +38 62 90 54 30 +2 +832 +27 44 64 47 61 +3 +653 +88 10 49 83 35 +4 +933 +95 23 47 84 53 +5 +811 +55 64 20 9 98 +6 +966 +54 47 61 30 94 +7 +448 +63 68 93 11 33 +8 +577 +23 54 36 92 77 +9 +1122 +45 9 47 63 31 +10 +666 +86 30 70 62 54 +11 +1189 +43 31 54 75 71 +12 +470 +43 92 87 48 78 +13 +475 +40 7 13 23 9 +14 +462 +37 14 40 85 79 +15 +866 +54 95 34 23 51 +16 +392 +35 76 55 4 76 +17 +310 +59 82 13 31 56 +18 +719 +43 91 11 13 80 +19 +1221 +50 37 5 98 72 diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_10_01.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_10_01.txt new file mode 100644 index 000000000..96bca095d --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_10_01.txt @@ -0,0 +1,63 @@ +20 +10 +587595453 +0 +1250 +74 28 89 60 54 92 9 4 25 15 +1 +1371 +21 3 52 88 66 11 8 18 15 84 +2 +637 +58 27 56 26 12 54 88 25 91 8 +3 +616 +4 61 13 58 57 97 72 28 49 30 +4 +917 +21 34 7 76 70 57 27 95 56 95 +5 +937 +28 76 32 98 82 53 22 51 10 79 +6 +1435 +58 64 32 29 99 65 50 84 62 9 +7 +1197 +83 87 98 47 84 77 2 18 70 91 +8 +1301 +31 54 46 79 16 51 49 6 76 76 +9 +637 +61 98 60 26 41 36 82 90 99 26 +10 +749 +94 76 23 19 23 53 93 69 58 42 +11 +1223 +44 41 87 48 11 19 96 61 83 66 +12 +887 +97 70 7 95 68 54 43 57 84 70 +13 +1316 +94 43 36 78 58 86 13 5 64 91 +14 +1330 +66 42 26 77 30 40 60 75 74 67 +15 +1380 +6 79 85 90 5 56 11 4 14 3 +16 +767 +37 88 7 24 5 79 37 38 18 98 +17 +574 +22 15 34 10 39 74 91 28 48 4 +18 +1398 +99 49 36 85 58 24 84 4 96 71 +19 +1179 +83 72 48 55 31 3 67 80 86 62 diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_10_02.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_10_02.txt new file mode 100644 index 000000000..bf23361f5 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_10_02.txt @@ -0,0 +1,63 @@ +20 +10 +1401007982 +0 +1279 +80 59 59 31 30 53 93 90 65 64 +1 +1481 +13 83 70 64 88 19 79 92 97 38 +2 +1157 +64 85 76 11 14 99 88 35 27 44 +3 +1391 +77 85 10 9 22 62 77 13 25 46 +4 +763 +17 70 65 32 93 88 94 75 61 66 +5 +1456 +78 35 19 58 48 93 39 55 24 31 +6 +900 +82 2 77 98 10 34 74 80 97 48 +7 +1047 +4 76 86 95 7 72 46 67 61 27 +8 +1355 +72 46 21 25 14 42 17 3 75 82 +9 +1262 +93 72 75 4 91 65 30 93 92 51 +10 +1329 +68 69 96 45 5 39 62 54 73 90 +11 +562 +25 46 3 60 43 79 77 67 21 63 +12 +684 +67 3 50 87 30 9 43 25 29 85 +13 +567 +80 57 57 31 79 26 98 77 3 36 +14 +765 +43 71 66 1 39 72 48 38 96 69 +15 +808 +93 77 84 96 34 29 14 98 51 67 +16 +999 +21 33 98 22 77 36 45 96 26 81 +17 +548 +33 49 55 95 81 48 25 20 44 18 +18 +577 +14 59 70 73 11 57 98 15 56 81 +19 +704 +30 82 32 77 10 95 30 36 31 72 diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_20_01.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_20_01.txt new file mode 100644 index 000000000..2ef8f0bee --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_20_01.txt @@ -0,0 +1,63 @@ +20 +20 +479340445 +0 +1696 +50 78 36 85 9 75 46 73 71 7 49 3 60 12 75 31 70 20 88 9 +1 +1273 +90 56 43 88 92 64 94 3 49 40 49 53 88 47 19 61 78 78 30 41 +2 +1546 +39 9 10 60 98 96 6 56 36 33 15 59 15 46 60 47 41 38 34 22 +3 +1882 +34 43 19 98 44 95 19 73 87 64 18 7 26 17 87 32 9 26 33 34 +4 +1117 +66 84 55 4 51 22 20 80 8 5 65 65 11 43 27 34 47 64 21 83 +5 +1181 +81 73 48 99 8 41 51 82 25 25 55 58 16 16 48 69 94 62 7 55 +6 +1416 +27 66 85 53 31 26 85 36 76 89 1 24 55 91 72 32 26 11 94 3 +7 +1635 +48 38 70 21 15 33 92 98 73 95 79 55 59 94 88 1 65 38 10 8 +8 +1723 +46 83 82 33 47 68 43 90 80 58 10 26 81 73 48 1 17 68 73 75 +9 +1932 +68 57 39 53 31 9 75 46 6 83 37 40 53 89 59 80 42 37 85 30 +10 +1219 +48 97 91 63 80 81 70 10 6 28 77 89 92 12 74 19 59 74 82 57 +11 +1521 +92 52 82 18 83 28 70 46 33 35 80 94 23 58 86 57 80 9 62 65 +12 +1322 +78 77 85 45 20 61 36 65 79 74 79 51 55 25 49 98 7 65 99 89 +13 +1057 +84 13 17 29 84 69 31 83 10 5 84 74 79 24 94 37 75 16 67 60 +14 +1922 +93 12 6 43 69 37 76 75 93 6 93 54 13 55 15 31 63 38 61 90 +15 +1130 +39 2 54 41 49 57 63 47 65 9 21 86 89 1 95 51 96 85 10 84 +16 +1411 +43 65 87 80 93 36 89 61 26 3 85 22 2 67 41 66 7 50 4 74 +17 +1840 +1 93 85 4 39 80 46 28 73 2 64 83 17 3 94 38 10 62 70 17 +18 +1741 +65 39 4 31 13 96 25 59 42 35 46 19 97 1 15 62 47 39 31 2 +19 +1377 +87 1 72 19 88 74 88 22 18 41 35 44 41 71 71 72 38 97 49 19 diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_05_01.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_05_01.txt new file mode 100644 index 000000000..5f4b46f37 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_05_01.txt @@ -0,0 +1,153 @@ +50 +5 +1328042058 +0 +1290 +75 26 48 26 77 +1 +2352 +87 37 4 67 94 +2 +362 +13 25 92 4 9 +3 +305 +11 95 92 14 57 +4 +262 +41 49 72 93 29 +5 +1250 +43 12 45 54 79 +6 +2170 +93 59 5 21 55 +7 +1601 +69 17 98 20 73 +8 +2039 +80 46 93 6 65 +9 +1628 +13 20 17 18 86 +10 +483 +24 52 79 75 25 +11 +285 +72 44 11 25 39 +12 +1092 +38 92 16 16 76 +13 +936 +81 75 89 77 24 +14 +2349 +83 95 81 28 38 +15 +473 +88 33 92 24 5 +16 +2325 +26 10 45 15 91 +17 +747 +6 45 61 77 29 +18 +970 +89 2 39 36 22 +19 +434 +67 62 28 16 27 +20 +1258 +70 62 94 32 39 +21 +2405 +30 82 87 46 31 +22 +862 +89 29 23 21 46 +23 +298 +30 29 1 81 18 +24 +2014 +68 94 55 28 93 +25 +2608 +21 20 91 70 58 +26 +1737 +78 42 67 89 85 +27 +2214 +46 80 91 54 58 +28 +1910 +99 94 4 96 97 +29 +2245 +10 35 60 62 10 +30 +2211 +17 8 38 46 79 +31 +547 +23 41 25 60 93 +32 +2237 +83 65 90 19 2 +33 +1327 +47 4 93 97 87 +34 +700 +86 71 13 13 17 +35 +1011 +18 30 65 7 18 +36 +2001 +67 14 25 44 10 +37 +1230 +46 32 34 7 50 +38 +1020 +4 50 47 73 8 +39 +1918 +14 30 98 15 26 +40 +1001 +4 27 91 66 14 +41 +1383 +20 98 11 70 21 +42 +1229 +88 39 46 97 15 +43 +2594 +50 84 50 33 10 +44 +403 +84 65 77 97 85 +45 +1515 +58 12 5 64 46 +46 +431 +93 58 14 73 42 +47 +1971 +76 45 47 28 18 +48 +939 +50 49 80 4 36 +49 +2028 +30 15 45 87 2 diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_10_01.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_10_01.txt new file mode 100644 index 000000000..17f3cb117 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_10_01.txt @@ -0,0 +1,153 @@ +50 +10 +1958948863 +0 +793 +46 61 3 51 37 79 83 22 27 24 +1 +2280 +52 87 1 24 16 93 87 29 92 47 +2 +939 +79 51 58 21 42 68 38 99 75 39 +3 +2591 +45 25 85 57 47 75 38 25 94 66 +4 +1540 +97 73 33 69 94 37 86 98 18 41 +5 +2386 +10 93 71 51 14 44 67 55 41 46 +6 +812 +44 28 58 50 94 34 23 80 37 24 +7 +2524 +24 90 56 51 34 39 19 82 58 23 +8 +1370 +85 94 64 21 72 76 97 33 56 68 +9 +1319 +75 59 43 19 36 62 78 68 20 50 +10 +2388 +66 64 48 63 88 74 66 47 2 93 +11 +961 +49 2 69 91 51 28 67 74 39 22 +12 +2831 +95 16 96 11 41 78 7 26 91 64 +13 +2790 +61 35 35 6 71 43 23 61 81 81 +14 +2076 +19 53 82 31 94 98 67 95 33 94 +15 +2519 +47 40 53 63 99 83 8 55 14 97 +16 +1981 +84 81 64 36 11 91 77 11 88 54 +17 +695 +13 26 11 39 97 27 71 42 22 82 +18 +2133 +11 85 61 57 44 6 85 72 36 11 +19 +1871 +19 4 36 47 77 82 29 14 65 91 +20 +1495 +98 4 53 56 69 60 49 8 79 23 +21 +754 +2 10 87 65 91 44 3 98 23 32 +22 +783 +85 63 88 59 38 43 94 90 66 26 +23 +984 +44 96 10 4 25 76 76 36 5 22 +24 +2004 +7 55 32 10 87 99 95 75 15 12 +25 +2269 +73 71 38 12 7 66 48 69 51 23 +26 +1771 +19 66 25 62 66 11 4 26 2 34 +27 +2030 +69 94 24 43 54 35 37 24 81 87 +28 +2603 +12 7 90 49 86 52 82 55 12 59 +29 +2150 +73 15 7 54 49 8 57 98 40 2 +30 +2157 +85 11 11 87 3 40 61 86 59 38 +31 +2187 +23 99 49 29 48 62 6 30 32 84 +32 +937 +53 37 2 2 44 25 97 92 16 62 +33 +728 +16 50 76 18 93 24 5 94 87 10 +34 +510 +88 56 17 75 37 30 27 66 78 11 +35 +2786 +8 69 32 39 82 1 95 47 41 93 +36 +2134 +26 22 39 77 31 73 46 3 43 57 +37 +1046 +42 56 9 69 59 27 92 41 94 81 +38 +2849 +58 67 83 15 78 16 46 41 1 10 +39 +1956 +63 63 69 78 33 91 52 47 93 40 +40 +2456 +7 96 67 68 36 33 8 89 22 62 +41 +1105 +2 74 28 37 3 11 11 28 93 49 +42 +1560 +44 4 88 22 58 99 7 39 62 90 +43 +1745 +38 42 23 41 10 2 54 80 53 34 +44 +2216 +24 40 91 92 98 60 72 47 30 11 +45 +1157 +76 30 71 67 6 90 57 57 34 81 +46 +1317 +85 93 3 24 44 36 85 74 27 51 +47 +2372 +61 36 26 87 62 62 22 38 30 21 +48 +777 +32 25 41 91 24 15 87 59 54 39 +49 +972 +90 87 96 31 94 3 65 5 77 27 diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_20_01.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_20_01.txt new file mode 100644 index 000000000..23ccddab3 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_20_01.txt @@ -0,0 +1,153 @@ +50 +20 +1539989115 +0 +2509 +52 63 82 16 63 94 79 22 80 96 53 54 71 27 95 3 92 80 61 74 +1 +2039 +95 99 21 26 55 34 21 6 13 3 19 67 90 93 53 80 62 38 86 38 +2 +3096 +42 69 79 46 59 89 93 24 64 50 99 25 59 49 54 78 11 55 16 4 +3 +2950 +75 70 95 66 35 62 32 55 77 57 62 77 82 63 22 32 83 34 42 31 +4 +1249 +44 53 46 76 21 47 8 48 17 66 88 38 22 65 84 53 87 85 14 62 +5 +2481 +57 21 23 31 59 66 45 57 78 84 93 98 88 34 54 43 66 44 92 39 +6 +3193 +89 10 40 36 78 76 37 78 82 98 34 96 35 10 2 85 98 47 67 97 +7 +3253 +53 31 95 8 25 15 78 5 4 55 72 20 49 56 80 19 42 66 77 57 +8 +2123 +84 80 87 37 30 18 26 50 72 70 42 15 78 51 84 48 23 19 46 9 +9 +2390 +62 18 37 21 38 54 98 83 93 32 65 36 69 97 66 49 45 66 41 54 +10 +1764 +91 5 24 3 78 24 17 70 68 31 39 65 76 52 25 66 52 61 78 13 +11 +2940 +14 18 24 76 79 55 25 21 25 64 79 97 2 46 16 22 6 60 3 47 +12 +1635 +95 17 65 67 58 96 21 71 67 11 9 27 14 16 79 37 3 98 72 6 +13 +3171 +89 71 62 5 44 10 28 58 80 9 26 25 3 50 90 51 64 82 95 70 +14 +2670 +4 90 19 47 38 12 68 36 43 32 72 61 22 96 51 82 55 79 53 19 +15 +2932 +95 93 67 72 76 96 24 50 93 58 29 24 26 85 29 59 97 71 59 97 +16 +2054 +2 14 66 66 70 53 62 31 21 98 36 97 44 61 29 88 83 28 34 41 +17 +3238 +97 49 6 56 72 92 89 86 33 95 48 61 1 76 90 77 42 74 66 1 +18 +2466 +68 52 65 95 85 77 60 29 14 25 57 75 4 30 83 19 81 27 42 57 +19 +2384 +20 7 59 49 8 6 64 30 30 4 95 92 16 90 83 32 92 33 63 60 +20 +3473 +33 78 2 47 10 91 38 93 59 45 93 73 55 42 19 52 68 13 27 62 +21 +3290 +51 57 67 26 84 14 90 49 83 60 79 21 43 88 95 9 46 9 92 14 +22 +2086 +98 41 82 81 42 41 87 83 85 87 88 29 87 37 87 96 56 12 8 90 +23 +2560 +8 75 90 56 67 30 1 89 85 31 77 3 35 43 12 23 88 51 65 76 +24 +3253 +85 98 30 76 20 85 99 44 70 1 94 96 76 88 34 64 50 16 34 12 +25 +3205 +86 93 63 66 24 17 34 38 35 96 39 51 98 91 23 22 13 49 6 89 +26 +2534 +73 33 5 36 75 23 9 62 2 22 74 26 78 14 44 37 23 83 42 37 +27 +2039 +4 75 93 53 23 60 22 45 76 95 46 44 81 63 30 3 13 48 39 35 +28 +2273 +40 68 53 26 33 76 74 22 46 73 17 56 48 65 82 52 49 13 2 91 +29 +2062 +98 33 85 52 60 39 14 85 72 77 30 31 25 74 83 44 18 78 7 69 +30 +1909 +12 60 81 29 20 85 14 39 69 30 62 64 81 71 42 11 50 96 85 55 +31 +2432 +59 82 73 36 75 10 84 98 46 88 77 38 27 8 56 21 94 77 32 48 +32 +2624 +44 24 34 68 83 65 75 56 3 14 43 44 84 39 89 85 71 68 14 56 +33 +3325 +46 99 74 21 26 15 37 68 57 22 98 46 59 95 38 6 64 88 74 84 +34 +3427 +2 4 13 71 92 55 32 84 71 93 48 66 98 82 96 40 31 77 59 22 +35 +1318 +41 97 78 61 29 41 29 77 77 48 14 31 14 17 10 68 21 76 95 51 +36 +1539 +28 24 35 71 39 28 32 67 33 10 45 48 32 38 3 30 2 73 48 43 +37 +3223 +83 50 20 69 14 93 89 53 49 7 25 27 95 69 53 35 63 92 37 50 +38 +1703 +28 55 16 28 74 88 12 46 59 14 98 82 30 17 97 58 58 72 59 62 +39 +1051 +21 91 48 86 66 27 47 24 82 91 30 51 13 24 11 31 36 87 4 61 +40 +1512 +80 46 12 27 86 77 19 52 59 5 90 90 68 66 65 11 64 66 42 10 +41 +2589 +71 58 11 41 10 81 97 96 70 43 92 63 19 75 47 11 52 98 93 87 +42 +3248 +4 17 80 86 27 19 7 2 76 30 35 85 57 52 76 6 8 40 32 99 +43 +2047 +60 47 9 55 8 76 12 88 10 79 13 36 65 59 22 59 94 31 30 40 +44 +3333 +34 82 24 17 7 55 43 33 65 39 75 69 13 4 17 64 51 75 16 91 +45 +1760 +55 6 76 62 97 67 89 27 19 34 55 67 63 73 14 65 36 45 95 64 +46 +2333 +53 15 32 96 84 65 14 49 77 77 80 81 26 56 11 23 82 98 58 62 +47 +2400 +96 91 35 59 56 8 33 78 86 81 67 18 96 19 69 80 30 90 12 53 +48 +2142 +37 74 66 53 61 18 56 82 21 11 3 81 53 39 91 75 17 4 95 33 +49 +1231 +37 42 48 93 9 56 57 65 75 10 93 72 94 51 53 63 21 23 21 16 diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_05_01.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_05_01.txt new file mode 100644 index 000000000..f0d8d9b38 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_05_01.txt @@ -0,0 +1,303 @@ +100 +5 +896678084 +0 +1682 +73 34 8 62 10 +1 +4503 +84 46 37 86 60 +2 +1249 +57 97 38 46 34 +3 +4984 +52 88 30 3 96 +4 +2923 +66 52 20 22 79 +5 +2401 +67 49 68 33 62 +6 +1978 +33 88 4 90 6 +7 +5318 +62 15 78 94 15 +8 +4769 +65 55 41 98 94 +9 +2093 +7 6 2 9 39 +10 +2438 +6 77 62 84 85 +11 +3143 +31 49 38 69 17 +12 +698 +42 46 95 26 55 +13 +621 +82 14 82 22 59 +14 +2463 +48 35 96 49 48 +15 +3865 +45 40 56 90 11 +16 +1563 +79 1 61 81 63 +17 +1461 +86 70 34 12 98 +18 +2285 +10 46 1 54 33 +19 +4381 +47 28 9 53 49 +20 +1057 +67 73 57 18 41 +21 +3190 +86 24 80 56 82 +22 +4493 +64 44 58 43 12 +23 +4604 +38 55 7 50 61 +24 +1592 +13 94 56 82 94 +25 +4645 +69 52 31 18 80 +26 +2729 +4 40 92 89 84 +27 +1925 +21 76 84 49 18 +28 +3843 +25 92 25 20 68 +29 +4188 +74 22 20 76 6 +30 +2635 +11 46 65 90 98 +31 +3773 +85 19 36 64 47 +32 +269 +50 18 67 89 6 +33 +307 +21 50 96 16 55 +34 +907 +93 31 35 3 73 +35 +288 +98 41 59 12 70 +36 +5211 +91 51 76 45 56 +37 +331 +26 73 66 67 46 +38 +1499 +4 22 83 97 50 +39 +1119 +28 21 37 80 90 +40 +4399 +61 79 33 97 89 +41 +1306 +8 93 2 92 88 +42 +1149 +55 98 95 56 50 +43 +3919 +68 89 20 50 99 +44 +3875 +30 44 84 95 41 +45 +3485 +26 64 43 25 36 +46 +2800 +81 93 4 52 16 +47 +1893 +95 66 44 21 84 +48 +2341 +49 14 74 47 98 +49 +874 +6 10 92 4 44 +50 +3355 +82 36 55 67 42 +51 +345 +71 36 98 62 43 +52 +1530 +61 69 8 63 62 +53 +3516 +84 79 30 25 49 +54 +3194 +29 90 18 3 22 +55 +985 +44 51 28 55 16 +56 +1638 +83 81 54 87 14 +57 +2970 +12 16 68 84 55 +58 +4265 +54 28 42 28 45 +59 +3494 +19 26 28 73 20 +60 +5134 +52 97 12 8 35 +61 +3520 +59 33 57 38 89 +62 +3570 +74 77 81 80 7 +63 +1335 +42 68 19 53 64 +64 +313 +60 28 16 70 36 +65 +1031 +43 46 88 9 5 +66 +4360 +80 16 75 87 63 +67 +2814 +34 96 11 33 8 +68 +571 +74 59 57 11 76 +69 +538 +46 56 99 65 95 +70 +2856 +40 4 4 92 40 +71 +747 +27 52 51 34 51 +72 +3321 +79 89 26 64 98 +73 +612 +1 84 6 96 77 +74 +4517 +98 42 16 67 92 +75 +1532 +44 37 71 54 35 +76 +2848 +8 90 52 26 3 +77 +4701 +55 51 96 32 56 +78 +263 +55 84 89 10 1 +79 +5340 +27 16 79 91 17 +80 +3979 +69 39 91 90 70 +81 +4804 +79 16 57 31 45 +82 +1574 +97 37 2 7 87 +83 +3644 +39 19 33 6 37 +84 +1512 +54 15 42 77 70 +85 +4445 +75 68 1 91 84 +86 +3253 +88 7 40 42 69 +87 +5334 +87 58 76 5 7 +88 +2338 +97 47 85 46 5 +89 +1071 +4 27 99 54 97 +90 +2398 +79 82 65 56 47 +91 +1675 +59 72 98 1 12 +92 +4974 +7 1 78 24 54 +93 +1785 +89 7 61 62 84 +94 +3391 +61 22 83 47 49 +95 +4517 +42 40 30 63 89 +96 +2909 +79 59 14 39 86 +97 +2733 +85 16 62 63 37 +98 +853 +66 7 41 95 52 +99 +4261 +99 72 91 45 85 diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_10_01.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_10_01.txt new file mode 100644 index 000000000..480d6be62 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_10_01.txt @@ -0,0 +1,303 @@ +100 +10 +1539989115 +0 +3490 +52 82 63 79 80 53 71 95 92 61 +1 +2540 +95 21 55 21 13 19 90 53 62 86 +2 +4675 +42 79 59 93 64 99 59 54 11 16 +3 +4381 +75 95 35 32 77 62 82 22 83 42 +4 +945 +44 46 21 8 17 88 22 84 87 14 +5 +3435 +57 23 59 45 78 93 88 54 66 92 +6 +4873 +89 40 78 37 82 34 35 2 98 67 +7 +4993 +53 95 25 78 4 72 49 80 42 77 +8 +2710 +84 87 30 26 72 42 78 84 23 46 +9 +3251 +62 37 38 98 93 65 69 66 45 41 +10 +1985 +91 24 78 17 68 39 76 25 52 78 +11 +4361 +14 24 79 25 25 79 2 16 6 3 +12 +1726 +95 65 58 21 67 9 14 79 3 72 +13 +4828 +89 62 44 28 80 26 3 90 64 95 +14 +3816 +4 19 38 68 43 72 22 51 55 53 +15 +4345 +95 67 76 24 93 29 26 29 97 59 +16 +2572 +2 66 70 62 21 36 44 29 83 34 +17 +4963 +97 6 72 89 33 48 1 90 42 66 +18 +3403 +68 65 85 60 14 57 4 83 81 42 +19 +3238 +20 59 8 64 30 95 16 83 92 63 +20 +5437 +33 2 10 38 59 93 55 19 68 27 +21 +5068 +51 67 84 90 83 79 43 95 46 92 +22 +2635 +98 82 42 87 85 88 87 87 56 8 +23 +3593 +8 90 67 1 85 77 35 12 88 65 +24 +4993 +85 30 20 99 70 94 76 34 50 34 +25 +4897 +86 63 24 34 35 39 98 23 13 6 +26 +3542 +73 5 75 9 2 74 78 44 23 42 +27 +2541 +4 93 23 22 76 46 81 30 13 39 +28 +3014 +40 53 33 74 46 17 48 82 49 2 +29 +2587 +98 85 60 14 72 30 25 83 18 7 +30 +2278 +12 81 20 14 69 62 81 42 50 85 +31 +3336 +59 73 75 84 46 77 27 56 94 32 +32 +3723 +44 34 83 75 3 43 84 89 71 14 +33 +5138 +46 74 26 37 57 98 59 38 64 74 +34 +5345 +2 13 92 32 71 48 98 96 31 59 +35 +1084 +41 78 29 29 77 14 14 10 21 95 +36 +1531 +28 35 39 32 33 45 32 3 2 48 +37 +4932 +83 20 14 89 49 25 95 53 63 37 +38 +1863 +28 16 74 12 59 98 30 97 58 59 +39 +545 +21 48 66 47 82 30 13 11 36 4 +40 +1477 +80 12 86 19 59 90 68 65 64 42 +41 +3653 +71 11 10 97 70 92 19 47 52 93 +42 +4983 +4 80 27 7 76 35 57 76 8 32 +43 +2558 +60 9 8 12 10 13 65 22 94 30 +44 +5156 +34 24 7 43 65 75 13 17 51 16 +45 +1977 +55 76 97 89 19 55 63 14 36 95 +46 +3136 +53 32 84 14 77 80 26 11 82 58 +47 +3271 +96 35 56 33 86 67 96 69 30 12 +48 +2748 +37 66 61 56 21 3 53 91 17 95 +49 +909 +37 48 9 57 75 93 94 53 21 21 +50 +4366 +63 16 94 22 96 54 27 3 80 74 +51 +4943 +99 26 34 6 3 67 93 80 38 38 +52 +4596 +69 46 89 24 50 25 49 78 55 4 +53 +1793 +70 66 62 55 57 77 63 32 34 31 +54 +4596 +53 76 47 48 66 38 65 53 85 62 +55 +3717 +21 31 66 57 84 98 34 43 44 39 +56 +4624 +10 36 76 78 98 96 10 85 47 97 +57 +5212 +31 8 15 5 55 20 56 19 66 57 +58 +5604 +80 37 18 50 70 15 51 48 19 9 +59 +2110 +18 21 54 83 32 36 97 49 66 54 +60 +2568 +5 3 24 70 31 65 52 66 61 13 +61 +5330 +18 76 55 21 64 97 46 22 60 47 +62 +676 +17 67 96 71 11 27 16 37 98 6 +63 +1603 +71 5 10 58 9 25 50 51 82 70 +64 +1085 +90 47 12 36 32 61 96 82 79 19 +65 +5128 +93 72 96 50 58 24 85 59 71 97 +66 +938 +14 66 53 31 98 97 61 88 28 41 +67 +4778 +49 56 92 86 95 61 76 77 74 1 +68 +1986 +52 95 77 29 25 75 30 19 27 57 +69 +2115 +7 49 6 30 4 92 90 32 33 60 +70 +616 +78 47 91 93 45 73 42 52 13 62 +71 +534 +57 26 14 49 60 21 88 9 9 14 +72 +1231 +41 81 41 83 87 29 37 96 12 90 +73 +3376 +75 56 30 89 31 3 43 23 51 76 +74 +2922 +98 76 85 44 1 96 88 64 16 12 +75 +2152 +93 66 17 38 96 51 91 22 49 89 +76 +1813 +33 36 23 62 22 26 14 37 83 37 +77 +3561 +75 53 60 45 95 44 63 3 48 35 +78 +4603 +68 26 76 22 73 56 65 52 13 91 +79 +2813 +33 52 39 85 77 31 74 44 78 69 +80 +528 +60 29 85 39 30 64 71 11 96 55 +81 +1112 +82 36 10 98 88 38 8 21 77 48 +82 +4387 +24 68 65 56 14 44 39 85 68 56 +83 +4573 +99 21 15 68 22 46 95 6 88 84 +84 +5585 +4 71 55 84 93 66 82 40 77 22 +85 +2680 +97 61 41 77 48 31 17 68 76 51 +86 +3262 +24 71 28 67 10 48 38 30 73 43 +87 +3913 +50 69 93 53 7 27 69 35 92 50 +88 +1749 +55 28 88 46 14 82 17 58 72 62 +89 +2369 +91 86 27 24 91 51 24 31 87 61 +90 +888 +46 27 77 52 5 90 66 11 66 10 +91 +3107 +58 41 81 96 43 63 75 11 98 87 +92 +4964 +17 86 19 2 30 85 52 6 40 99 +93 +5249 +47 55 76 88 79 36 59 59 31 40 +94 +5632 +82 17 55 33 39 69 4 64 75 91 +95 +893 +6 62 67 27 34 67 73 65 45 64 +96 +3432 +15 96 65 49 77 81 56 23 98 62 +97 +5507 +91 59 8 78 81 18 19 80 90 53 +98 +2007 +74 53 18 82 11 81 39 75 4 33 +99 +5336 +42 93 56 65 10 72 51 63 23 16 diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_20_01.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_20_01.txt new file mode 100644 index 000000000..f063c0f7c --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_20_01.txt @@ -0,0 +1,303 @@ +100 +20 +450926852 +0 +1420 +12 27 24 42 5 27 51 48 42 31 48 51 8 1 1 28 4 44 6 57 +1 +1890 +72 97 57 16 42 69 9 44 18 49 92 84 37 77 59 81 40 6 49 88 +2 +5212 +29 53 68 44 47 38 22 73 31 78 43 28 33 92 53 96 5 18 84 88 +3 +2835 +16 16 58 75 47 66 15 95 18 23 35 63 4 57 22 99 37 51 72 43 +4 +4466 +22 36 76 32 47 21 84 72 55 37 7 86 8 46 10 79 80 77 39 25 +5 +5004 +61 28 70 66 78 65 38 12 82 34 51 99 38 75 48 97 46 47 51 81 +6 +1562 +69 50 72 31 94 3 71 30 64 43 85 27 97 2 94 15 14 27 77 3 +7 +1927 +71 41 56 6 18 7 11 22 36 7 66 24 75 14 46 6 81 17 59 3 +8 +2807 +86 42 56 6 14 10 45 25 48 69 87 36 76 14 57 77 16 42 97 78 +9 +2057 +16 86 55 52 97 11 48 92 74 97 71 83 93 79 55 98 10 84 5 97 +10 +5762 +54 2 89 7 54 41 29 5 17 15 16 24 69 64 66 5 79 3 83 74 +11 +5182 +53 45 23 92 73 64 31 44 60 38 40 54 10 8 69 51 35 69 51 71 +12 +5558 +64 86 42 45 94 9 14 90 18 80 22 34 25 73 7 51 41 3 9 50 +13 +2591 +96 43 26 70 17 15 56 35 88 78 12 49 40 15 13 60 83 6 9 70 +14 +4353 +79 92 87 72 97 71 59 24 37 89 2 43 88 71 64 17 13 94 59 23 +15 +4442 +68 73 17 48 7 86 35 64 29 95 90 5 90 6 83 98 93 58 30 43 +16 +2375 +98 99 38 86 94 2 7 82 19 1 63 70 57 54 39 46 55 65 86 51 +17 +3311 +87 84 24 63 94 26 20 7 51 18 52 56 39 59 46 87 48 36 49 97 +18 +2369 +40 83 82 61 68 57 48 34 20 11 15 71 29 49 59 44 35 28 46 57 +19 +4728 +74 61 55 92 4 78 88 91 7 11 6 12 97 38 36 18 75 68 13 77 +20 +5437 +22 7 47 73 60 84 54 59 43 92 18 30 51 21 69 71 66 73 45 90 +21 +3616 +23 8 7 49 70 20 30 5 77 99 87 77 97 60 47 93 82 81 51 58 +22 +4472 +47 62 99 53 68 21 81 47 95 81 66 55 5 8 83 97 3 12 68 75 +23 +2738 +55 3 89 20 22 3 2 96 92 79 7 92 75 35 25 44 79 89 82 4 +24 +1604 +21 21 20 97 17 39 1 7 27 53 43 78 91 81 12 18 78 53 6 12 +25 +3121 +90 50 65 58 59 64 78 53 70 47 27 79 80 96 28 59 48 14 99 2 +26 +2296 +68 71 3 59 98 51 8 60 91 48 78 52 81 61 30 9 99 88 12 4 +27 +2107 +14 95 45 29 55 83 8 77 74 32 80 19 60 89 49 45 91 78 8 28 +28 +5637 +42 70 89 98 76 12 71 61 62 58 73 16 97 58 81 78 29 63 36 54 +29 +1686 +41 60 96 61 3 16 60 14 80 33 86 21 14 32 56 67 87 81 24 39 +30 +2186 +40 4 16 83 21 3 41 88 85 65 82 37 2 59 96 65 27 29 82 30 +31 +5311 +63 58 42 8 10 1 39 97 8 86 33 85 55 89 89 50 2 15 73 71 +32 +3210 +23 16 70 83 11 88 8 92 39 60 92 56 97 99 73 87 48 81 66 89 +33 +1223 +75 30 69 73 44 80 96 65 85 47 8 29 60 7 52 29 33 84 69 33 +34 +2856 +4 80 77 2 29 77 3 73 83 89 87 56 8 79 12 80 92 36 71 85 +35 +4618 +31 71 46 56 43 2 79 19 76 40 64 23 30 38 98 14 15 8 70 2 +36 +1981 +87 59 20 7 60 14 48 99 31 72 7 19 87 1 12 70 55 60 61 69 +37 +2755 +25 75 71 15 14 60 23 92 12 54 26 52 42 67 40 10 24 24 42 20 +38 +1976 +47 52 91 55 46 45 38 19 69 29 79 39 16 63 70 30 59 57 77 64 +39 +1153 +70 25 8 3 3 39 85 66 26 57 49 4 56 42 35 19 41 87 10 94 +40 +5686 +1 86 34 73 60 32 32 25 54 93 71 46 86 3 58 51 49 61 2 3 +41 +4817 +49 48 72 13 72 97 69 79 91 65 72 59 4 29 95 4 88 57 6 41 +42 +1305 +59 53 40 47 90 98 56 36 61 39 69 22 30 23 41 23 67 85 24 37 +43 +4539 +11 54 82 76 1 65 99 10 27 8 30 76 15 21 71 9 49 45 97 36 +44 +4894 +93 98 60 15 42 86 51 23 88 87 28 34 24 25 90 62 81 69 15 74 +45 +2853 +38 36 59 43 74 6 59 37 53 57 46 63 23 48 3 30 89 15 91 53 +46 +1815 +5 9 59 44 54 14 47 76 47 5 75 32 57 33 68 20 43 7 32 49 +47 +5816 +43 78 43 13 41 99 79 83 39 56 78 72 81 92 5 69 24 87 68 77 +48 +5297 +82 80 72 16 15 93 67 58 14 80 34 92 77 2 18 88 70 58 17 13 +49 +4830 +33 88 10 18 38 54 83 99 78 2 4 72 43 12 26 22 74 61 1 37 +50 +4903 +26 52 63 16 24 54 58 29 90 17 23 26 82 32 2 43 44 82 49 34 +51 +3618 +89 30 67 18 91 92 49 35 90 84 69 46 97 38 21 63 23 73 25 31 +52 +4572 +86 62 12 3 49 57 50 49 50 86 33 30 3 67 86 67 89 84 46 15 +53 +5078 +10 8 41 11 23 39 19 89 64 65 11 49 46 93 8 22 96 63 37 32 +54 +1714 +16 45 5 98 63 13 64 79 94 53 5 3 86 80 33 82 80 14 56 45 +55 +1214 +72 77 25 9 88 70 5 82 79 5 54 81 62 75 88 41 44 73 50 50 +56 +2317 +96 90 67 28 1 73 5 92 10 16 42 4 26 59 33 69 69 84 9 81 +57 +1939 +47 52 95 44 30 16 52 45 18 58 12 46 56 51 65 81 7 9 62 46 +58 +4684 +9 39 46 14 85 43 15 42 7 60 40 95 67 7 8 21 10 38 10 93 +59 +2148 +56 95 37 39 22 9 26 21 26 78 30 20 87 65 89 54 15 67 89 13 +60 +4555 +8 86 41 76 94 2 67 51 51 25 51 56 46 6 46 42 55 76 66 47 +61 +5302 +69 15 2 92 39 76 11 30 23 71 94 57 66 59 76 53 27 18 98 50 +62 +1794 +87 98 25 59 70 38 77 70 43 93 24 85 53 30 57 52 55 70 10 70 +63 +2125 +84 59 99 95 85 66 74 2 95 99 28 31 34 67 51 26 2 69 70 21 +64 +3571 +62 22 48 11 7 21 88 20 57 6 84 44 52 41 58 69 82 4 92 41 +65 +5197 +52 43 24 55 65 32 83 82 30 62 69 1 81 32 62 80 42 58 36 12 +66 +1470 +82 85 18 56 43 78 96 13 86 60 44 11 68 63 59 46 88 66 82 18 +67 +2420 +66 93 10 16 4 41 73 92 80 33 98 72 48 7 71 10 84 11 54 28 +68 +4451 +67 6 23 56 60 52 59 91 55 57 36 6 4 8 12 81 38 1 34 22 +69 +1234 +33 46 66 23 90 88 94 2 76 79 21 68 25 89 11 99 69 51 34 60 +70 +1487 +3 51 82 84 73 76 15 80 12 7 9 62 76 51 82 6 31 38 5 69 +71 +5745 +53 97 84 22 21 14 50 38 91 69 48 18 46 81 56 90 5 16 12 49 +72 +1472 +95 79 14 32 25 86 20 54 95 82 30 21 13 9 57 79 3 81 3 38 +73 +5132 +42 46 13 40 33 35 54 45 28 26 15 48 72 13 53 34 37 39 56 80 +74 +3842 +59 71 88 47 48 81 16 19 12 41 21 32 72 27 45 56 14 56 44 52 +75 +3269 +77 18 7 92 25 32 33 65 18 52 43 42 82 74 96 75 35 83 41 45 +76 +4366 +38 33 40 61 27 75 9 35 80 38 91 79 32 59 31 54 61 27 14 34 +77 +4912 +12 13 20 51 37 38 74 66 32 21 49 74 25 98 39 94 43 29 25 3 +78 +3383 +1 3 68 74 63 55 11 26 67 84 86 82 58 31 12 84 38 93 78 61 +79 +4632 +66 32 22 85 28 96 21 18 2 74 36 3 17 98 13 55 48 70 25 96 +80 +2775 +24 28 92 6 88 19 97 32 4 76 41 64 99 48 8 64 89 64 89 99 +81 +5614 +17 48 53 13 27 35 15 51 30 16 10 90 54 74 49 14 86 22 83 49 +82 +3465 +58 8 16 32 94 41 43 23 64 75 75 10 81 76 4 18 37 84 78 78 +83 +1004 +71 42 10 8 20 77 2 18 69 75 56 72 73 75 33 6 20 25 23 34 +84 +1425 +88 26 23 43 54 36 1 87 76 36 70 2 93 78 22 27 33 73 51 78 +85 +1759 +63 26 88 30 17 24 74 74 92 79 73 49 73 11 30 20 1 81 7 79 +86 +5341 +60 95 65 53 74 52 37 10 50 71 57 88 79 71 34 54 8 10 20 64 +87 +1080 +86 44 11 24 35 60 61 76 35 82 51 53 54 54 19 30 61 46 30 55 +88 +4906 +8 74 89 2 15 43 3 31 20 70 34 59 72 10 24 58 41 32 30 63 +89 +2859 +8 82 78 11 53 30 75 31 23 22 62 88 37 96 56 35 40 38 30 24 +90 +5588 +44 28 94 33 64 86 41 93 52 39 3 97 68 97 96 66 10 68 63 58 +91 +5551 +99 4 32 27 38 6 86 61 25 8 34 98 22 75 35 85 10 40 82 25 +92 +5376 +80 42 64 35 79 8 51 26 82 22 27 94 94 41 43 78 75 33 40 93 +93 +5672 +76 81 42 40 45 31 65 39 18 79 29 95 37 30 8 15 9 79 39 73 +94 +5671 +94 56 74 40 67 80 42 83 2 90 25 93 15 73 5 29 81 64 37 45 +95 +4086 +75 38 87 96 93 82 50 11 29 55 97 95 31 84 65 31 40 36 44 93 +96 +1806 +63 50 63 69 16 2 48 57 70 77 30 6 46 22 64 45 13 62 2 37 +97 +5810 +57 12 94 23 59 59 88 81 7 3 28 1 33 8 20 41 10 82 27 64 +98 +1083 +76 43 87 32 47 47 52 40 36 20 48 15 82 98 54 84 53 44 71 92 +99 +1887 +34 51 72 13 95 21 46 97 96 61 99 66 75 68 38 51 28 99 45 59 diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/200_10_01.txt b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/200_10_01.txt new file mode 100644 index 000000000..d1bccf9b0 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/200_10_01.txt @@ -0,0 +1,603 @@ +200 +10 +471503978 +0 +7166 +17 30 28 15 52 5 53 55 81 47 +1 +7478 +37 26 82 67 82 44 43 65 44 51 +2 +4344 +22 2 88 57 17 2 43 38 46 44 +3 +3004 +71 29 33 64 66 98 56 76 3 27 +4 +4783 +79 98 69 23 62 27 48 45 93 76 +5 +4813 +37 67 28 9 57 10 83 99 14 4 +6 +1411 +69 92 92 1 58 25 34 84 86 76 +7 +4573 +53 51 66 2 91 27 93 67 23 49 +8 +7480 +59 53 92 43 42 41 95 40 59 5 +9 +4429 +64 82 30 73 69 59 48 93 47 25 +10 +841 +11 86 67 94 48 89 63 70 76 23 +11 +9418 +67 47 53 96 46 36 93 45 45 67 +12 +8849 +27 36 93 78 18 62 91 75 64 55 +13 +5306 +64 23 45 14 94 29 94 91 10 40 +14 +4634 +59 34 7 32 83 17 32 21 4 58 +15 +9336 +31 66 70 23 48 37 81 72 29 26 +16 +4344 +43 43 58 83 81 35 69 15 69 36 +17 +10182 +42 71 58 29 57 47 29 73 46 83 +18 +5648 +56 31 17 75 93 37 44 43 68 65 +19 +10009 +88 36 41 55 67 52 2 62 89 91 +20 +7809 +71 41 56 91 19 3 66 40 48 77 +21 +6970 +86 6 34 44 65 87 25 43 68 62 +22 +6260 +6 28 62 46 49 4 60 96 13 6 +23 +3543 +54 43 81 59 45 50 69 39 36 57 +24 +4215 +92 18 44 11 22 96 44 23 85 87 +25 +7436 +75 64 95 20 92 74 34 79 35 4 +26 +2229 +83 28 50 68 41 68 68 66 25 11 +27 +6742 +2 13 88 3 38 30 77 19 21 60 +28 +1878 +60 7 19 17 26 69 31 41 44 23 +29 +3222 +62 13 50 55 2 17 10 71 40 87 +30 +2189 +83 93 25 59 90 34 57 60 20 50 +31 +9874 +73 93 88 18 79 95 21 72 83 18 +32 +1849 +55 56 1 31 17 3 56 62 76 23 +33 +10057 +3 72 6 84 61 24 36 17 26 24 +34 +7309 +71 71 45 61 81 51 26 25 50 82 +35 +9509 +34 28 29 55 67 55 11 59 98 16 +36 +10403 +40 95 2 46 18 60 6 95 6 96 +37 +4515 +13 96 54 77 1 61 86 47 83 37 +38 +1586 +62 55 71 59 36 15 2 10 51 29 +39 +638 +56 58 81 98 31 38 89 94 46 19 +40 +7434 +28 66 22 23 85 83 28 39 99 26 +41 +9737 +53 3 57 18 92 62 62 53 65 56 +42 +5477 +71 77 16 17 6 84 63 50 46 33 +43 +5976 +5 80 88 70 78 44 52 99 24 53 +44 +3293 +73 2 5 73 83 80 12 63 47 6 +45 +5869 +95 82 52 38 39 48 13 59 24 95 +46 +10358 +23 86 23 13 74 45 43 30 32 63 +47 +4698 +49 16 21 77 77 54 99 67 66 84 +48 +9855 +17 29 21 74 85 71 11 18 48 13 +49 +5305 +81 24 58 79 88 10 70 12 83 6 +50 +8401 +88 89 96 51 25 96 82 9 3 19 +51 +6004 +62 96 37 48 33 23 14 41 74 16 +52 +3369 +35 99 46 16 36 8 39 67 97 80 +53 +10335 +78 15 78 93 32 56 83 52 39 37 +54 +2868 +90 49 87 29 82 35 4 39 80 20 +55 +5297 +36 78 91 28 98 72 86 90 27 62 +56 +3744 +46 48 9 6 3 53 93 25 70 81 +57 +9148 +98 64 96 82 46 13 87 13 65 52 +58 +3270 +75 3 93 40 68 72 82 81 1 14 +59 +7616 +36 63 98 9 11 38 78 3 26 67 +60 +5131 +74 14 31 88 30 1 32 8 46 19 +61 +9674 +86 95 78 51 75 69 82 66 8 86 +62 +940 +67 88 20 48 42 85 24 67 74 1 +63 +6286 +87 9 75 1 93 2 88 51 47 53 +64 +1159 +68 61 18 4 36 28 45 54 19 21 +65 +10410 +1 24 34 77 97 18 48 85 85 33 +66 +3268 +87 38 48 48 1 10 67 10 62 68 +67 +6533 +87 50 49 6 63 70 14 95 33 28 +68 +1984 +7 47 69 1 86 67 34 59 96 25 +69 +2658 +34 42 88 32 54 95 76 64 33 69 +70 +7518 +1 30 30 79 33 72 1 90 5 71 +71 +3280 +91 97 34 40 71 64 51 28 23 60 +72 +8989 +7 49 22 14 1 19 15 48 43 69 +73 +4877 +6 79 81 20 18 60 67 57 63 99 +74 +7608 +46 19 50 86 75 31 57 85 10 53 +75 +4775 +3 80 40 40 55 29 3 78 47 77 +76 +4441 +45 30 73 25 62 43 37 18 73 27 +77 +689 +55 24 91 94 21 17 15 59 1 29 +78 +8408 +92 58 7 73 71 78 50 11 19 83 +79 +2103 +67 43 1 44 80 28 75 67 92 22 +80 +6500 +13 6 71 98 5 47 80 36 31 10 +81 +3906 +30 95 72 94 48 78 3 24 29 42 +82 +4713 +27 43 8 61 87 77 9 59 68 64 +83 +9905 +19 99 68 65 22 92 28 24 31 80 +84 +3660 +51 22 49 44 5 42 44 39 92 73 +85 +2405 +86 99 7 75 71 86 2 1 48 91 +86 +7436 +20 11 47 4 69 6 71 80 87 38 +87 +5400 +95 99 90 17 75 19 89 58 8 60 +88 +8689 +79 60 59 1 72 28 24 76 90 53 +89 +5805 +48 42 39 12 36 18 73 59 57 38 +90 +685 +83 33 49 78 54 4 28 90 40 19 +91 +9892 +91 68 28 51 24 24 98 92 25 14 +92 +9000 +78 78 22 55 55 57 17 3 49 35 +93 +2827 +41 26 10 53 5 82 27 51 26 10 +94 +1779 +61 77 96 96 40 7 90 1 35 44 +95 +2539 +90 1 2 92 56 4 4 55 90 97 +96 +5797 +57 13 88 82 8 94 13 50 99 17 +97 +6740 +4 67 90 20 19 9 83 15 30 50 +98 +5913 +21 87 69 22 7 57 43 31 5 22 +99 +1778 +68 31 44 13 12 82 63 99 52 19 +100 +9256 +87 49 74 40 44 98 68 8 12 70 +101 +1943 +62 90 16 43 66 54 74 44 11 88 +102 +2314 +69 6 90 23 39 2 12 91 72 31 +103 +5964 +79 76 7 30 41 71 69 83 32 7 +104 +2160 +69 94 14 16 60 94 38 75 81 81 +105 +5000 +35 76 47 76 11 69 74 66 21 58 +106 +753 +25 79 48 30 31 51 98 98 81 2 +107 +8317 +68 66 36 59 65 80 86 77 64 89 +108 +9608 +14 51 62 64 16 79 72 8 45 1 +109 +5659 +9 14 1 72 67 85 76 6 4 80 +110 +3727 +74 89 63 61 19 56 53 26 10 52 +111 +878 +61 87 86 13 69 79 94 47 90 15 +112 +5610 +58 1 49 81 56 46 45 55 11 25 +113 +8024 +81 65 48 25 96 71 30 39 88 11 +114 +7993 +52 53 3 90 78 85 39 91 52 97 +115 +7345 +93 19 51 67 36 52 60 78 96 90 +116 +5943 +44 21 80 21 56 42 69 49 92 62 +117 +5637 +57 98 86 70 12 66 12 23 44 69 +118 +3377 +89 90 97 96 37 82 83 92 54 34 +119 +10135 +81 45 4 99 1 91 21 68 28 66 +120 +2394 +69 77 58 64 50 48 25 88 85 54 +121 +6036 +98 54 79 68 43 70 50 9 51 84 +122 +6761 +78 86 28 61 58 21 47 38 21 62 +123 +7860 +70 2 19 36 13 82 43 60 4 71 +124 +8007 +3 3 93 57 55 12 58 2 42 70 +125 +7718 +70 88 88 86 87 94 11 8 43 60 +126 +7598 +62 39 44 10 20 17 63 86 55 54 +127 +3245 +81 56 74 57 84 45 74 62 89 52 +128 +4953 +61 24 18 88 28 68 6 41 4 71 +129 +8163 +65 91 95 59 59 60 23 66 1 9 +130 +8429 +65 86 2 73 65 93 94 94 97 99 +131 +8623 +33 80 22 43 56 30 93 54 65 41 +132 +1742 +62 58 7 25 2 5 26 9 38 30 +133 +1409 +19 54 82 37 36 31 49 75 87 23 +134 +5249 +57 57 52 70 41 30 30 43 58 60 +135 +9063 +82 42 17 97 7 71 50 9 47 1 +136 +7293 +78 32 59 29 23 29 47 10 53 67 +137 +1353 +94 5 42 33 25 82 89 79 51 55 +138 +6480 +65 43 51 99 81 20 43 10 40 64 +139 +8191 +14 80 79 34 6 13 32 97 80 21 +140 +7595 +9 86 93 96 67 94 45 39 20 16 +141 +739 +29 47 65 65 5 47 47 30 24 94 +142 +7977 +70 95 27 90 89 57 68 74 77 11 +143 +8304 +90 86 25 52 71 95 13 52 37 90 +144 +6930 +86 40 60 95 86 8 86 90 13 48 +145 +5996 +12 31 72 3 48 46 97 12 29 85 +146 +2438 +40 61 29 64 50 80 2 61 28 34 +147 +2339 +12 12 55 21 54 32 16 34 18 7 +148 +5848 +64 64 58 16 21 7 27 88 22 79 +149 +4982 +32 17 22 70 83 34 38 27 75 95 +150 +7604 +18 52 58 67 27 33 53 68 24 50 +151 +10491 +11 56 61 13 38 33 37 14 79 78 +152 +8007 +40 35 89 96 79 18 94 88 99 39 +153 +6393 +14 60 67 57 71 29 78 74 35 79 +154 +1948 +22 75 14 7 53 19 84 71 45 69 +155 +8138 +49 10 10 30 2 74 49 14 95 27 +156 +3757 +95 50 40 96 9 58 25 16 46 42 +157 +4120 +82 66 11 98 49 52 59 46 15 15 +158 +4850 +7 53 99 72 79 10 36 47 7 51 +159 +4564 +19 58 7 31 39 70 33 54 24 44 +160 +4171 +95 12 20 11 28 78 15 91 45 71 +161 +669 +39 66 78 36 39 59 36 89 20 32 +162 +4803 +71 81 6 10 70 32 47 59 35 66 +163 +5464 +34 51 71 20 72 20 83 39 61 49 +164 +6219 +89 75 48 26 70 12 24 52 97 8 +165 +2726 +63 71 39 67 38 98 71 91 69 7 +166 +6507 +85 46 58 13 48 18 7 21 78 44 +167 +6446 +60 88 7 60 57 12 6 90 13 1 +168 +3416 +91 58 17 50 11 57 55 58 53 15 +169 +918 +49 73 63 28 38 73 43 74 16 6 +170 +3139 +46 27 73 32 37 91 82 30 94 51 +171 +9351 +10 26 43 49 56 46 40 63 59 91 +172 +7171 +19 38 14 54 64 64 78 19 64 33 +173 +2127 +50 48 66 46 64 92 64 18 72 77 +174 +4461 +65 8 59 15 68 45 96 88 13 69 +175 +799 +41 14 75 49 27 86 27 22 47 28 +176 +6861 +58 58 96 94 36 84 99 43 22 8 +177 +9690 +62 89 28 63 94 15 11 60 9 8 +178 +3180 +45 44 12 96 65 99 91 20 68 48 +179 +2449 +67 16 99 43 89 8 78 32 4 7 +180 +8742 +64 20 63 73 23 87 97 67 67 55 +181 +4503 +6 69 19 19 93 61 23 1 92 51 +182 +10135 +77 67 26 19 14 42 48 42 49 89 +183 +8757 +94 80 8 81 57 25 20 95 23 61 +184 +1192 +24 81 72 82 93 35 99 84 37 82 +185 +8334 +38 82 55 69 60 64 39 37 16 39 +186 +9610 +73 27 67 13 82 74 53 30 39 89 +187 +8681 +59 5 1 85 16 40 3 12 47 47 +188 +8465 +61 44 23 32 69 89 65 87 94 24 +189 +8425 +14 38 35 34 57 4 81 13 71 79 +190 +3227 +59 53 6 57 8 43 47 60 36 86 +191 +4628 +83 16 89 69 52 12 25 92 72 60 +192 +1319 +3 48 93 63 98 28 36 52 67 67 +193 +9629 +46 16 88 49 67 68 44 51 78 10 +194 +4236 +16 31 86 56 19 46 29 91 13 61 +195 +5509 +56 79 37 37 56 23 85 76 68 60 +196 +9597 +40 75 53 54 38 3 26 32 36 68 +197 +8513 +7 14 45 60 75 70 4 81 69 72 +198 +2882 +79 67 32 97 69 81 9 57 28 9 +199 +7268 +55 70 69 44 14 14 59 71 69 47 diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/README b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/README new file mode 100644 index 000000000..7f3c69274 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/benchs/README @@ -0,0 +1 @@ +Further benchmarks for the bi-objective flow-shop scheduling problem are available at http://www.lifl.fr/~liefooga/benchmarks/ \ No newline at end of file diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/make_eval_FlowShop.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/make_eval_FlowShop.h new file mode 100644 index 000000000..680615af7 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/make_eval_FlowShop.h @@ -0,0 +1,81 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MAKE_EVAL_FLOWSHOP_H_ +#define MAKE_EVAL_FLOWSHOP_H_ + + +#include +#include +#include +#include +#include +#include + +/* + * This function creates an eoEvalFuncCounter that can later be used to evaluate an individual. + * @param eoParser& _parser to get user parameters + * @param eoState& _state to store the memory + */ +eoEvalFuncCounter & do_make_eval(eoParser& _parser, eoState& _state) +{ + // benchmark file name + std::string benchmarkFileName = _parser.getORcreateParam(std::string(), "BenchmarkFile", "Benchmark file name (benchmarks are available at www.lifl.fr/~liefooga/benchmarks)", 'B',"Representation", true).value(); + if (benchmarkFileName == "") + { + std::string stmp = "*** Missing name of the benchmark file\n"; + stmp += " Type '-B=the_benchmark_file_name' or '--BenchmarkFile=the_benchmark_file_name'\n"; + stmp += " Benchmarks files are available at www.lifl.fr/~liefooga/benchmarks"; + throw std::runtime_error(stmp.c_str()); + } + // reading of the parameters contained in the benchmark file + FlowShopBenchmarkParser fParser(benchmarkFileName); + unsigned int M = fParser.getM(); + unsigned int N = fParser.getN(); + std::vector< std::vector > p = fParser.getP(); + std::vector d = fParser.getD(); + // build of the initializer (a pointer, stored in the eoState) + FlowShopEval* plainEval = new FlowShopEval(M, N, p, d); + // turn that object into an evaluation counter + eoEvalFuncCounter* eval = new eoEvalFuncCounter (* plainEval); + // store in state + _state.storeFunctor(eval); + // and return a reference + return *eval; +} + +#endif /*MAKE_EVAL_FLOWSHOP_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/make_genotype_FlowShop.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/make_genotype_FlowShop.h new file mode 100644 index 000000000..5487a0f17 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/make_genotype_FlowShop.h @@ -0,0 +1,74 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MAKE_GENOTYPE_FLOWSHOP_H_ +#define MAKE_GENOTYPE_FLOWSHOP_H_ + +#include +#include +#include +#include +#include + +/* + * This function creates an eoInit that can later be used to initialize the population (see make_pop.h). + * @param eoParser& _parser to get user parameters + * @param eoState& _state to store the memory + */ +eoInit & do_make_genotype(eoParser& _parser, eoState& _state) +{ + // benchmark file name + std::string benchmarkFileName = _parser.getORcreateParam(std::string(), "BenchmarkFile", "Benchmark file name (benchmarks are available at www.lifl.fr/~liefooga/benchmarks/)", 'B',"Representation", true).value(); + if (benchmarkFileName == "") + { + std::string stmp = "*** Missing name of the benchmark file\n"; + stmp += " Type '-B=the_benchmark_file_name' or '--BenchmarkFile=the_benchmark_file_name'\n"; + stmp += " Benchmarks files are available at www.lifl.fr/~liefooga/benchmarks"; + throw std::runtime_error(stmp.c_str()); + } + // reading of number of jobs to schedule contained in the benchmark file + FlowShopBenchmarkParser fParser(benchmarkFileName); + unsigned int N = fParser.getN(); + // build of the initializer (a pointer, stored in the eoState) + eoInit* init = new FlowShopInit(N); + // store in state + _state.storeFunctor(init); + // and return a reference + return *init; +} + +#endif /*MAKE_GENOTYPE_FLOWSHOP_H_*/ diff --git a/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/make_op_FlowShop.h b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/make_op_FlowShop.h new file mode 100644 index 000000000..4316f7f65 --- /dev/null +++ b/tags/paradiseo-ix86-1.1/paradiseo-moeo/tutorial/examples/flowshop/make_op_FlowShop.h @@ -0,0 +1,132 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MAKE_OP_FLOWSHOP_H_ +#define MAKE_OP_FLOWSHOP_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This function builds the operators that will be applied to the eoFlowShop + * @param eoParameterLoader& _parser to get user parameters + * @param eoState& _state to store the memory + */ +eoGenOp & do_make_op(eoParameterLoader& _parser, eoState& _state) +{ + + ///////////////////////////// + // Variation operators + //////////////////////////// + + // the crossover + //////////////// + + // a first crossover + eoQuadOp *cross = new FlowShopOpCrossoverQuad; + // store in the state + _state.storeFunctor(cross); + + // relative rate in the combination + double cross1Rate = _parser.createParam(1.0, "crossRate", "Relative rate for the only crossover", 0, "Variation Operators").value(); + // creation of the combined operator with this one + eoPropCombinedQuadOp *propXover = new eoPropCombinedQuadOp(*cross, cross1Rate); + // store in the state + _state.storeFunctor(propXover); + + + // the mutation + /////////////// + + // a first mutation : the shift mutation + eoMonOp *mut = new FlowShopOpMutationShift; + _state.storeFunctor(mut); + // its relative rate in the combination + double mut1Rate = _parser.createParam(0.5, "shiftMutRate", "Relative rate for shift mutation", 0, "Variation Operators").value(); + // creation of the combined operator with this one + eoPropCombinedMonOp *propMutation = new eoPropCombinedMonOp(*mut, mut1Rate); + _state.storeFunctor(propMutation); + + // a second mutation : the exchange mutation + mut = new FlowShopOpMutationExchange; + _state.storeFunctor(mut); + // its relative rate in the combination + double mut2Rate = _parser.createParam(0.5, "exchangeMutRate", "Relative rate for exchange mutation", 0, "Variation Operators").value(); + // addition of this one to the combined operator + propMutation -> add(*mut, mut2Rate); + + // end of crossover and mutation definitions + //////////////////////////////////////////// + + // First read the individual level parameters + eoValueParam& pCrossParam = _parser.createParam(0.25, "pCross", "Probability of Crossover", 'c', "Variation Operators" ); + // minimum check + if ( (pCrossParam.value() < 0) || (pCrossParam.value() > 1) ) + throw std::runtime_error("Invalid pCross"); + + eoValueParam& pMutParam = _parser.createParam(0.35, "pMut", "Probability of Mutation", 'm', "Variation Operators" ); + // minimum check + if ( (pMutParam.value() < 0) || (pMutParam.value() > 1) ) + throw std::runtime_error("Invalid pMut"); + + // the crossover - with probability pCross + eoProportionalOp * propOp = new eoProportionalOp ; + _state.storeFunctor(propOp); + eoQuadOp *ptQuad = new eoQuadCloneOp; + _state.storeFunctor(ptQuad); + propOp -> add(*propXover, pCrossParam.value()); // crossover, with proba pcross + propOp -> add(*ptQuad, 1-pCrossParam.value()); // nothing, with proba 1-pcross + + // now the sequential + eoSequentialOp *op = new eoSequentialOp; + _state.storeFunctor(op); + op -> add(*propOp, 1.0); // always do combined crossover + op -> add(*propMutation, pMutParam.value()); // then mutation, with proba pmut + + // return a reference + return *op; +} + +#endif /*MAKE_OP_FLOWSHOP_H_*/