diff --git a/trunk/paradiseo-moeo/tutorial/Lesson3/CMakeLists.txt b/trunk/paradiseo-moeo/tutorial/Lesson3/CMakeLists.txt index ba6339afc..c8b54a7d7 100644 --- a/trunk/paradiseo-moeo/tutorial/Lesson3/CMakeLists.txt +++ b/trunk/paradiseo-moeo/tutorial/Lesson3/CMakeLists.txt @@ -3,13 +3,13 @@ ### 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_TARGET(install DEPENDS ${ParadisEO-MOEO_SOURCE_DIR}/tutorial/Lesson3/FlowShopEA2.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_SOURCE_DIR}/tutorial/Lesson3/FlowShopEA2.param ${ParadisEO-MOEO_BINARY_DIR}/tutorial/Lesson3) ###################################################################################### @@ -41,8 +41,8 @@ LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-MOEO_BINARY_DIR}/lib ${FLOWSHOP_B ### 3) Define your target(s): just an executable here ###################################################################################### -ADD_EXECUTABLE(FlowShopEA FlowShopEA.cpp) -ADD_DEPENDENCIES(FlowShopEA flowshop moeo) +ADD_EXECUTABLE(FlowShopEA2 FlowShopEA2.cpp) +ADD_DEPENDENCIES(FlowShopEA2 flowshop moeo) ###################################################################################### @@ -51,8 +51,8 @@ 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}") +SET(FlowShopEA2_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(FlowShopEA2 PROPERTIES VERSION "${FlowShopEA2_VERSION}") ###################################################################################### @@ -62,6 +62,6 @@ SET_TARGET_PROPERTIES(FlowShopEA PROPERTIES VERSION "${FLOWSHOPEA_VERSION}") ###################################################################################### -TARGET_LINK_LIBRARIES(FlowShopEA moeo flowshop eo eoutils) +TARGET_LINK_LIBRARIES(FlowShopEA2 moeo flowshop eo eoutils) ###################################################################################### diff --git a/trunk/paradiseo-moeo/tutorial/Lesson3/FlowShopEA2.cpp b/trunk/paradiseo-moeo/tutorial/Lesson3/FlowShopEA2.cpp new file mode 100644 index 000000000..bb1d0f09b --- /dev/null +++ b/trunk/paradiseo-moeo/tutorial/Lesson3/FlowShopEA2.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/trunk/paradiseo-moeo/tutorial/Lesson3/FlowShopEA2.param b/trunk/paradiseo-moeo/tutorial/Lesson3/FlowShopEA2.param new file mode 100644 index 000000000..885600e47 --- /dev/null +++ b/trunk/paradiseo-moeo/tutorial/Lesson3/FlowShopEA2.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