From 2d4038a5526a0dff963cf0ba391448c75669aa38 Mon Sep 17 00:00:00 2001 From: jboisson Date: Tue, 4 Mar 2008 08:33:10 +0000 Subject: [PATCH] There are now 5 lessons: 1=minimize_function, 2=HC, 3=TS, 4=SA and 5=ILS git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@1055 331e1502-861f-0410-8da2-ba01fb791d7f --- trunk/paradiseo-mo/tutorial/CMakeLists.txt | 5 +- .../tutorial/Lesson1/CMakeLists.txt | 21 ++- .../tutorial/Lesson1/hill_climbing.cpp | 139 ---------------- .../tutorial/Lesson1/minimize_function.cpp | 136 ++++++++++++++++ trunk/paradiseo-mo/tutorial/Lesson1/param | 7 +- .../tutorial/Lesson2/CMakeLists.txt | 14 +- trunk/paradiseo-mo/tutorial/Lesson2/param | 8 +- .../tutorial/Lesson2/tabu_search.cpp | 150 ----------------- .../tutorial/Lesson3/CMakeLists.txt | 15 +- trunk/paradiseo-mo/tutorial/Lesson3/param | 13 +- .../tutorial/Lesson3/simulated_annealing.cpp | 153 ------------------ .../tutorial/Lesson4/CMakeLists.txt | 17 +- trunk/paradiseo-mo/tutorial/Lesson4/param | 7 +- .../tutorial/Lesson5/CMakeLists.txt | 68 ++++++++ .../iterated_local_search.cpp | 26 ++- trunk/paradiseo-mo/tutorial/Lesson5/param | 9 ++ .../tutorial/examples/CMakeLists.txt | 2 +- .../tutorial/examples/function/CMakeLists.txt | 36 +++++ .../tutorial/examples/function/affectation.h | 49 ++++++ .../examples/function/affectation_eval.cpp | 53 ++++++ .../examples/function/affectation_eval.h | 54 +++++++ .../examples/function/affectation_init.cpp | 74 +++++++++ .../examples/function/affectation_init.h | 58 +++++++ .../tutorial/examples/function/deviation.cpp | 44 +++++ .../tutorial/examples/function/deviation.h | 50 ++++++ .../examples/function/deviation_incr_eval.cpp | 57 +++++++ .../examples/function/deviation_incr_eval.h | 51 ++++++ .../examples/function/deviation_init.cpp | 56 +++++++ .../examples/function/deviation_init.h | 61 +++++++ .../examples/function/deviation_next.cpp | 95 +++++++++++ .../examples/function/deviation_next.h | 62 +++++++ .../tutorial/examples/function/function | 41 +++++ .../tutorial/examples/function/function.h | 48 ++++++ 33 files changed, 1177 insertions(+), 502 deletions(-) delete mode 100644 trunk/paradiseo-mo/tutorial/Lesson1/hill_climbing.cpp create mode 100644 trunk/paradiseo-mo/tutorial/Lesson1/minimize_function.cpp delete mode 100644 trunk/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp delete mode 100644 trunk/paradiseo-mo/tutorial/Lesson3/simulated_annealing.cpp create mode 100644 trunk/paradiseo-mo/tutorial/Lesson5/CMakeLists.txt rename trunk/paradiseo-mo/tutorial/{Lesson4 => Lesson5}/iterated_local_search.cpp (88%) create mode 100644 trunk/paradiseo-mo/tutorial/Lesson5/param create mode 100644 trunk/paradiseo-mo/tutorial/examples/function/CMakeLists.txt create mode 100644 trunk/paradiseo-mo/tutorial/examples/function/affectation.h create mode 100644 trunk/paradiseo-mo/tutorial/examples/function/affectation_eval.cpp create mode 100644 trunk/paradiseo-mo/tutorial/examples/function/affectation_eval.h create mode 100644 trunk/paradiseo-mo/tutorial/examples/function/affectation_init.cpp create mode 100644 trunk/paradiseo-mo/tutorial/examples/function/affectation_init.h create mode 100644 trunk/paradiseo-mo/tutorial/examples/function/deviation.cpp create mode 100644 trunk/paradiseo-mo/tutorial/examples/function/deviation.h create mode 100644 trunk/paradiseo-mo/tutorial/examples/function/deviation_incr_eval.cpp create mode 100644 trunk/paradiseo-mo/tutorial/examples/function/deviation_incr_eval.h create mode 100644 trunk/paradiseo-mo/tutorial/examples/function/deviation_init.cpp create mode 100644 trunk/paradiseo-mo/tutorial/examples/function/deviation_init.h create mode 100644 trunk/paradiseo-mo/tutorial/examples/function/deviation_next.cpp create mode 100644 trunk/paradiseo-mo/tutorial/examples/function/deviation_next.h create mode 100644 trunk/paradiseo-mo/tutorial/examples/function/function create mode 100644 trunk/paradiseo-mo/tutorial/examples/function/function.h diff --git a/trunk/paradiseo-mo/tutorial/CMakeLists.txt b/trunk/paradiseo-mo/tutorial/CMakeLists.txt index e8d84ac73..2618942fa 100644 --- a/trunk/paradiseo-mo/tutorial/CMakeLists.txt +++ b/trunk/paradiseo-mo/tutorial/CMakeLists.txt @@ -6,12 +6,15 @@ SET(TSP_SRC_DIR ${ParadisEO-MO_SOURCE_DIR}/tutorial/examples/tsp CACHE PATH "TSP src directory") SET(TSP_BINARY_DIR ${ParadisEO-MO_BINARY_DIR}/tutorial/examples/tsp CACHE PATH "TSP binary directory") +SET(FUNCTION_SRC_DIR ${ParadisEO-MO_SOURCE_DIR}/tutorial/examples/function CACHE PATH "FUNCTION src directory") +SET(FUNCTION_BINARY_DIR ${ParadisEO-MO_BINARY_DIR}/tutorial/examples/function CACHE PATH "FUNCTION binary directory") + ###################################################################################### ###################################################################################### ### 2) Where must cmake go now ? ###################################################################################### -SUBDIRS(examples Lesson1 Lesson2 Lesson3 Lesson4) +SUBDIRS(examples Lesson1 Lesson2 Lesson3 Lesson4 Lesson5) ###################################################################################### diff --git a/trunk/paradiseo-mo/tutorial/Lesson1/CMakeLists.txt b/trunk/paradiseo-mo/tutorial/Lesson1/CMakeLists.txt index df2cfa75d..a985fbe93 100644 --- a/trunk/paradiseo-mo/tutorial/Lesson1/CMakeLists.txt +++ b/trunk/paradiseo-mo/tutorial/Lesson1/CMakeLists.txt @@ -1,5 +1,3 @@ - - ###################################################################################### ### 1) Include the sources ###################################################################################### @@ -7,7 +5,8 @@ INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src/utils) INCLUDE_DIRECTORIES(${ParadisEO-MO_SOURCE_DIR}/src) -INCLUDE_DIRECTORIES(${TSP_SRC_DIR}) +INCLUDE_DIRECTORIES(${FUNCTION_SRC_DIR}) + ###################################################################################### ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-MO_SOURCE_DIR}/tutorial/Lesson1/param ) @@ -25,12 +24,12 @@ ADD_CUSTOM_COMMAND( ###################################################################################### IF(NOT WIN32 OR CYGWIN) - LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${TSP_BINARY_DIR}/lib) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${FUNCTION_BINARY_DIR}/lib) ENDIF(NOT WIN32 OR CYGWIN) # especially for Visual Studio IF(WIN32 AND NOT CYGWIN) - LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE}) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE}) ENDIF(WIN32 AND NOT CYGWIN) ###################################################################################### @@ -41,9 +40,10 @@ ENDIF(WIN32 AND NOT CYGWIN) ### 3) Define your target(s): just an executable here ###################################################################################### -ADD_EXECUTABLE(hill_climbing hill_climbing.cpp) +ADD_EXECUTABLE(minimize_function minimize_function.cpp) + +ADD_DEPENDENCIES(minimize_function function) -ADD_DEPENDENCIES(hill_climbing tsp) ###################################################################################### @@ -52,8 +52,8 @@ ADD_DEPENDENCIES(hill_climbing tsp) ### 4) Optionnal: define your target(s)'s version: no effect for windows ###################################################################################### -SET(HILLCLIMBING_VERSION ${GLOBAL_VERSION}) -SET_TARGET_PROPERTIES(hill_climbing PROPERTIES VERSION "${HILLCLIMBING_VERSION}") +SET(MINIMIZEFUNCTION_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(minimize_function PROPERTIES VERSION "${MINIMIZEFUNCTION_VERSION}") ###################################################################################### @@ -62,7 +62,6 @@ SET_TARGET_PROPERTIES(hill_climbing PROPERTIES VERSION "${HILLCLIMBING_VERSION}" ### 5) Link the librairies for your target(s) ###################################################################################### -TARGET_LINK_LIBRARIES(hill_climbing tsp eo eoutils) +TARGET_LINK_LIBRARIES(minimize_function function eo eoutils) ###################################################################################### - diff --git a/trunk/paradiseo-mo/tutorial/Lesson1/hill_climbing.cpp b/trunk/paradiseo-mo/tutorial/Lesson1/hill_climbing.cpp deleted file mode 100644 index 7eb53a749..000000000 --- a/trunk/paradiseo-mo/tutorial/Lesson1/hill_climbing.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/* - - Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 - (C) OPAC Team, LIFL, 2002-2008 - - Sébastien Cahon, Jean-Charles Boisson - - 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 - -void manage_configuration_file(eoParser & _parser); - -int -main (int _argc, char* _argv []) -{ - std::string instancePath, selectionType; - unsigned int seed; - - eoParser parser(_argc, _argv); - - manage_configuration_file(parser); - - seed=atoi( (parser.getParamWithLongName("seed")->getValue()).c_str() ); - instancePath=parser.getParamWithLongName("instancePath")->getValue(); - selectionType=parser.getParamWithLongName("selectionType")->getValue(); - - srand (seed); - Graph::load(instancePath.c_str()); - - Route solution; - - RouteInit initializer; - initializer (solution); - - RouteEval full_evaluation; - full_evaluation (solution); - - std :: cout << "[From] " << solution << std :: endl; - - /* Tools for an efficient (? :-)) - local search ! */ - - TwoOptInit two_opt_initializer; - - TwoOptNext two_opt_next_move_generator; - - TwoOptIncrEval two_opt_incremental_evaluation; - - moMoveSelect* two_opt_selection; - - if (selectionType.compare("Best")==0) - { - two_opt_selection= new moBestImprSelect(); - } - else if (selectionType.compare("First")==0) - { - two_opt_selection= new moFirstImprSelect(); - } - else if (selectionType.compare("Random")==0) - { - two_opt_selection= new moRandImprSelect(); - } - else - { - throw std::runtime_error("[hill_climbing.cpp]: the type of selection '"+selectionType+"' is not correct."); - } - - moHC hill_climbing (two_opt_initializer, two_opt_next_move_generator, two_opt_incremental_evaluation, - *two_opt_selection, full_evaluation); - hill_climbing (solution) ; - - std :: cout << "[To] " << solution << std :: endl; - - delete(two_opt_selection); - - return EXIT_SUCCESS; -} - -void -manage_configuration_file(eoParser & _parser) -{ - std::ofstream os; - -#ifdef _MSVC - _parser.createParam(std::string("..\examples\tsp\benchs\berlin52.tsp"), "instancePath", "Path to the instance.", - 0, "Configuration", false); -#else - _parser.createParam(std::string("../examples/tsp/benchs/berlin52.tsp"), "instancePath", "Path to the instance.", - 0, "Configuration", false); -#endif - - _parser.createParam((unsigned int)time(0), "seed", "Seed for rand.", 0, "Configuration", false); - - _parser.createParam(std::string("Best"), "selectionType", "Type of the selection: 'Best', 'First' or 'Random'.", - 0, "Configuration", false); - - if (_parser.userNeedsHelp()) - { - _parser.printHelp(std::cout); - exit(EXIT_FAILURE); - } - - os.open("current_param"); - if (!os.is_open()) - { - throw std::runtime_error("[hill_climbing.cpp]: the file current_param cannot be created."); - } - os <<_parser; - os.close(); -} diff --git a/trunk/paradiseo-mo/tutorial/Lesson1/minimize_function.cpp b/trunk/paradiseo-mo/tutorial/Lesson1/minimize_function.cpp new file mode 100644 index 000000000..f24786ee7 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/Lesson1/minimize_function.cpp @@ -0,0 +1,136 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson + + 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 + +void manage_configuration_file(eoParser & _parser); + +int +main (int _argc, char* _argv []) +{ + std::string selectionType; + double initialBound, searchBound, searchStep; + eoParser parser(_argc, _argv); + + manage_configuration_file(parser); + + initialBound=atof( (parser.getParamWithLongName("initialBound")->getValue()).c_str() ); + searchBound=atof( (parser.getParamWithLongName("searchBound")->getValue()).c_str() ); + searchStep=atof( (parser.getParamWithLongName("searchStep")->getValue()).c_str() ); + selectionType=parser.getParamWithLongName("selectionType")->getValue(); + + Affectation solution; + + AffectationInit initialize(initialBound); + initialize (solution); + + AffectationEval evaluation; + evaluation (solution); + + std::cout << "Initial affectation : " << std::endl; + std::cout << "\t x1 = " << solution.first << std::endl; + std::cout << "\t x2 = " << solution.second << std::endl; + std::cout << "\t f(x1,x2) = " << solution.fitness() << std::endl; + + DeviationInit deviation_initializer(searchBound); + + DeviationNext deviation_next_move_generator(searchBound, searchStep); + + DeviationIncrEval deviation_incremental_evaluation; + + moMoveSelect* deviation_selection; + + if(selectionType.compare("Best")==0) + { + deviation_selection= new moBestImprSelect(); + } + else if (selectionType.compare("First")==0) + { + deviation_selection= new moFirstImprSelect(); + } + else if (selectionType.compare("Random")==0) + { + deviation_selection= new moRandImprSelect(); + } + else + { + throw std::runtime_error("[minimize_function.cpp]: the type of selection '"+selectionType+"' is not correct."); + } + + moHC hill_climbing (deviation_initializer, deviation_next_move_generator, deviation_incremental_evaluation, + *deviation_selection, evaluation); + hill_climbing (solution) ; + + std::cout << "Final affectation : " << std::endl; + std::cout << "\t x1 = " << solution.first << std::endl; + std::cout << "\t x2 = " << solution.second << std::endl; + std::cout << "\t f(x1,x2) = " << solution.fitness() << std::endl; + + delete(deviation_selection); + + return EXIT_SUCCESS; +} + +void +manage_configuration_file(eoParser & _parser) +{ + std::ofstream os; + + _parser.createParam((double)1, "initialBound", "Bound for the initial affectation.", 0, "Configuration", false); + + _parser.createParam((double)1, "searchBound", "Bound for neighbourhood exploration.", 0, "Configuration", false); + + _parser.createParam((double)0.5, "searchStep", "Step between two values during the neighbourhood exploration.", + 0, "Configuration", false); + + _parser.createParam(std::string("First"), "selectionType", "Type of the selection: 'Best', 'First' or 'Random'.", + 0, "Configuration", false); + + if (_parser.userNeedsHelp()) + { + _parser.printHelp(std::cout); + exit(EXIT_FAILURE); + } + + os.open("current_param"); + if(!os.is_open()) + { + throw std::runtime_error("[minimize_function.cpp]: the file current_param cannot be created."); + } + os <<_parser; + os.close(); +} diff --git a/trunk/paradiseo-mo/tutorial/Lesson1/param b/trunk/paradiseo-mo/tutorial/Lesson1/param index 8bdb97f37..fac431e63 100644 --- a/trunk/paradiseo-mo/tutorial/Lesson1/param +++ b/trunk/paradiseo-mo/tutorial/Lesson1/param @@ -4,6 +4,7 @@ # --stopOnUnknownParam=1 # Stop if unkown param entered ###### Configuration ###### -# --instancePath=../examples/tsp/benchs/berlin52.tsp # Path to the instance. -# --seed=1203517190 # Seed for rand. -# --selectionType=Best # Type of the selection: 'Best', 'First' or 'Random'. +# --initialBound=1 # Bound for the initial affectation. +# --searchBound=1 # Bound for neighbourhood exploration. +# --searchStep=0.5 # Step between two values during the neighbourhood exploration. +# --selectionType=First # Type of the selection: 'Best', 'First' or 'Random'. diff --git a/trunk/paradiseo-mo/tutorial/Lesson2/CMakeLists.txt b/trunk/paradiseo-mo/tutorial/Lesson2/CMakeLists.txt index d98fdac27..cacd22894 100644 --- a/trunk/paradiseo-mo/tutorial/Lesson2/CMakeLists.txt +++ b/trunk/paradiseo-mo/tutorial/Lesson2/CMakeLists.txt @@ -12,7 +12,7 @@ INCLUDE_DIRECTORIES(${TSP_SRC_DIR}) ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-MO_SOURCE_DIR}/tutorial/Lesson2/param ) - ADD_CUSTOM_COMMAND( +ADD_CUSTOM_COMMAND( TARGET install POST_BUILD COMMAND ${CMAKE_COMMAND} @@ -30,7 +30,7 @@ ENDIF(NOT WIN32 OR CYGWIN) # especially for Visual Studio IF(WIN32 AND NOT CYGWIN) - LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE}) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE}) ENDIF(WIN32 AND NOT CYGWIN) ###################################################################################### @@ -41,9 +41,9 @@ ENDIF(WIN32 AND NOT CYGWIN) ### 3) Define your target(s): just an executable here ###################################################################################### -ADD_EXECUTABLE(tabu_search tabu_search.cpp) +ADD_EXECUTABLE(hill_climbing hill_climbing.cpp) -ADD_DEPENDENCIES(tabu_search tsp) +ADD_DEPENDENCIES(hill_climbing tsp) ###################################################################################### @@ -52,8 +52,8 @@ ADD_DEPENDENCIES(tabu_search tsp) ### 4) Optionnal: define your target(s)'s version: no effect for windows ###################################################################################### -SET(TABUSEARCH_VERSION ${GLOBAL_VERSION}) -SET_TARGET_PROPERTIES(tabu_search PROPERTIES VERSION "${TABUSEARCH_VERSION}") +SET(HILLCLIMBING_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(hill_climbing PROPERTIES VERSION "${HILLCLIMBING_VERSION}") ###################################################################################### @@ -62,7 +62,7 @@ SET_TARGET_PROPERTIES(tabu_search PROPERTIES VERSION "${TABUSEARCH_VERSION}") ### 5) Link the librairies for your target(s) ###################################################################################### -TARGET_LINK_LIBRARIES(tabu_search tsp eo eoutils) +TARGET_LINK_LIBRARIES(hill_climbing tsp eo eoutils) ###################################################################################### diff --git a/trunk/paradiseo-mo/tutorial/Lesson2/param b/trunk/paradiseo-mo/tutorial/Lesson2/param index 53d46bed9..8bdb97f37 100644 --- a/trunk/paradiseo-mo/tutorial/Lesson2/param +++ b/trunk/paradiseo-mo/tutorial/Lesson2/param @@ -4,8 +4,6 @@ # --stopOnUnknownParam=1 # Stop if unkown param entered ###### Configuration ###### -# --instancePath=../examples/tsp/benchs/berlin52.tsp # Path to the instance -# --seed=1202917905 # Seed for rand -# --tabuListSize=10 # Size of the tabu list -# --maxIter=1000 # Maximum number of iterations -# --tabuListType=TwoOpt # Type of the tabu list: 'TwoOpt', 'SimpleMove' or 'SimpleSolution' +# --instancePath=../examples/tsp/benchs/berlin52.tsp # Path to the instance. +# --seed=1203517190 # Seed for rand. +# --selectionType=Best # Type of the selection: 'Best', 'First' or 'Random'. diff --git a/trunk/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp b/trunk/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp deleted file mode 100644 index 4ea979c31..000000000 --- a/trunk/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/* - - Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 - (C) OPAC Team, LIFL, 2002-2008 - - Sébastien Cahon, Jean-Charles Boisson - - 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 - -void manage_configuration_file(eoParser & _parser); - -int -main (int _argc, char* _argv []) -{ - std::string instancePath, value; - unsigned int seed, maxIterations, tabuListSize; - - eoParser parser(_argc, _argv); - - manage_configuration_file(parser); - - seed=atoi( (parser.getParamWithLongName("seed")->getValue()).c_str() ); - maxIterations=atoi( (parser.getParamWithLongName("maxIter")->getValue()).c_str() ); - tabuListSize=atoi( (parser.getParamWithLongName("tabuListSize")->getValue()).c_str() ); - instancePath=parser.getParamWithLongName("instancePath")->getValue(); - value=parser.getParamWithLongName("tabuListType")->getValue(); - - srand (seed); - Graph::load(instancePath.c_str()); - - Route solution; - - RouteInit initializer; - initializer(solution); - - RouteEval full_evaluation; - full_evaluation(solution); - - std :: cout << "[From] " << solution << std :: endl; - - /* Tools for an efficient (? :-)) - local search ! */ - - TwoOptInit two_opt_initializer; - - TwoOptNext two_opt_next_move_generator; - - TwoOptIncrEval two_opt_incremental_evaluation; - - moTabuList *tabuList; - - if (value.compare("TwoOpt")==0) - { - tabuList=new TwoOptTabuList(); - } - else if (value.compare("SimpleMove")==0) - { - tabuList=new moSimpleMoveTabuList(tabuListSize); - } - else if (value.compare("SimpleSolution")==0) - { - tabuList=new moSimpleSolutionTabuList(tabuListSize); - } - else - { - throw std::runtime_error("[tabu_search.cpp]: the type of tabu list '"+value+"' is not correct."); - } - - moNoAspirCrit aspiration_criterion; - - moGenSolContinue continu (maxIterations); - - moTS tabu_search (two_opt_initializer, two_opt_next_move_generator, - two_opt_incremental_evaluation, *tabuList, aspiration_criterion, continu, full_evaluation); - tabu_search(solution); - - std :: cout << "[To] " << solution << std :: endl; - - delete(tabuList); - - return EXIT_SUCCESS; -} - -void -manage_configuration_file(eoParser & _parser) -{ - std::ofstream os; - -#ifdef _MSVC - _parser.createParam(std::string("..\examples\tsp\benchs\berlin52.tsp"), "instancePath", "Path to the instance.", - 0, "Configuration", false); -#else - _parser.createParam(std::string("../examples/tsp/benchs/berlin52.tsp"), "instancePath", "Path to the instance.", - 0, "Configuration", false); -#endif - - _parser.createParam((unsigned int)time(0), "seed", "Seed for rand.", 0, "Configuration", false); - - _parser.createParam((unsigned int)10, "tabuListSize", "Size of the tabu list.", 0, "Configuration", false); - - _parser.createParam((unsigned int)1000, "maxIter", "Maximum number of iterations.", 0, "Configuration", false); - - _parser.createParam(std::string("TwoOpt"), "tabuListType", "Type of the tabu list: 'TwoOpt', 'SimpleMove' or 'SimpleSolution'.", - 0, "Configuration", false); - - if (_parser.userNeedsHelp()) - { - _parser.printHelp(std::cout); - exit(EXIT_FAILURE); - } - - os.open("current_param"); - if (!os.is_open()) - { - throw std::runtime_error("[tabu_search.cpp]: the file current_param cannot be created."); - } - os <<_parser; - os.close(); -} diff --git a/trunk/paradiseo-mo/tutorial/Lesson3/CMakeLists.txt b/trunk/paradiseo-mo/tutorial/Lesson3/CMakeLists.txt index 1e77e8e39..3c7e8a761 100644 --- a/trunk/paradiseo-mo/tutorial/Lesson3/CMakeLists.txt +++ b/trunk/paradiseo-mo/tutorial/Lesson3/CMakeLists.txt @@ -12,7 +12,7 @@ INCLUDE_DIRECTORIES(${TSP_SRC_DIR}) ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-MO_SOURCE_DIR}/tutorial/Lesson3/param ) - ADD_CUSTOM_COMMAND( +ADD_CUSTOM_COMMAND( TARGET install POST_BUILD COMMAND ${CMAKE_COMMAND} @@ -20,6 +20,7 @@ ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-MO_SOURCE_DIR}/tutorial/Lesson3/pa ${ParadisEO-MO_SOURCE_DIR}/tutorial/Lesson3/param ${ParadisEO-MO_BINARY_DIR}/tutorial/Lesson3) + ###################################################################################### ### 2) Specify where CMake can find the libraries ###################################################################################### @@ -30,7 +31,7 @@ ENDIF(NOT WIN32 OR CYGWIN) # especially for Visual Studio IF(WIN32 AND NOT CYGWIN) - LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE}) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE}) ENDIF(WIN32 AND NOT CYGWIN) ###################################################################################### @@ -41,9 +42,9 @@ ENDIF(WIN32 AND NOT CYGWIN) ### 3) Define your target(s): just an executable here ###################################################################################### -ADD_EXECUTABLE(simulated_annealing simulated_annealing.cpp) +ADD_EXECUTABLE(tabu_search tabu_search.cpp) -ADD_DEPENDENCIES(simulated_annealing tsp) +ADD_DEPENDENCIES(tabu_search tsp) ###################################################################################### @@ -52,8 +53,8 @@ ADD_DEPENDENCIES(simulated_annealing tsp) ### 4) Optionnal: define your target(s)'s version: no effect for windows ###################################################################################### -SET(SIMULATEDANNEALING_VERSION ${GLOBAL_VERSION}) -SET_TARGET_PROPERTIES(simulated_annealing PROPERTIES VERSION "${SIMULATEDANNEALING_VERSION}") +SET(TABUSEARCH_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(tabu_search PROPERTIES VERSION "${TABUSEARCH_VERSION}") ###################################################################################### @@ -62,7 +63,7 @@ SET_TARGET_PROPERTIES(simulated_annealing PROPERTIES VERSION "${SIMULATEDANNEALI ### 5) Link the librairies for your target(s) ###################################################################################### -TARGET_LINK_LIBRARIES(simulated_annealing tsp eo eoutils) +TARGET_LINK_LIBRARIES(tabu_search tsp eo eoutils) ###################################################################################### diff --git a/trunk/paradiseo-mo/tutorial/Lesson3/param b/trunk/paradiseo-mo/tutorial/Lesson3/param index d80626b17..53d46bed9 100644 --- a/trunk/paradiseo-mo/tutorial/Lesson3/param +++ b/trunk/paradiseo-mo/tutorial/Lesson3/param @@ -4,11 +4,8 @@ # --stopOnUnknownParam=1 # Stop if unkown param entered ###### Configuration ###### -# --instancePath=../examples/tsp/benchs/berlin52.tsp # Path to the instance. -# --seed=1202919978 # Seed for rand. -# --maxIter=1000 # Maximum number of iterations. -# --initialTemp=1000 # Initial temperature. -# --threshold=0.1 # Minimum temperature allowed. -# --expoRatio=0.98 # Ratio used if exponential cooling schedule is chosen. -# --lineaRatio=0.5 # Ratio used if linear cooling schedule is chosen. -# --coolSchedType=Expo # Type the cooling schedule: 'Expo' or 'Linear'. +# --instancePath=../examples/tsp/benchs/berlin52.tsp # Path to the instance +# --seed=1202917905 # Seed for rand +# --tabuListSize=10 # Size of the tabu list +# --maxIter=1000 # Maximum number of iterations +# --tabuListType=TwoOpt # Type of the tabu list: 'TwoOpt', 'SimpleMove' or 'SimpleSolution' diff --git a/trunk/paradiseo-mo/tutorial/Lesson3/simulated_annealing.cpp b/trunk/paradiseo-mo/tutorial/Lesson3/simulated_annealing.cpp deleted file mode 100644 index 313bec11b..000000000 --- a/trunk/paradiseo-mo/tutorial/Lesson3/simulated_annealing.cpp +++ /dev/null @@ -1,153 +0,0 @@ -/* - - Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 - (C) OPAC Team, LIFL, 2002-2008 - - Sébastien Cahon, Jean-Charles Boisson - - 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 - -void manage_configuration_file(eoParser & _parser); - -int -main (int _argc, char* _argv []) -{ - std::string instancePath, value; - unsigned int seed, maxIterations; - double threshold, exponentialRatio, linearRatio, initialTemperature; - - eoParser parser(_argc, _argv); - - manage_configuration_file(parser); - - seed=atoi( (parser.getParamWithLongName("seed")->getValue()).c_str() ); - instancePath=parser.getParamWithLongName("instancePath")->getValue(); - maxIterations=atoi( (parser.getParamWithLongName("maxIter")->getValue()).c_str() ); - initialTemperature=atof( (parser.getParamWithLongName("initialTemp")->getValue()).c_str() ); - threshold=atof( (parser.getParamWithLongName("threshold")->getValue()).c_str() ); - exponentialRatio=atof( (parser.getParamWithLongName("expoRatio")->getValue()).c_str() ); - linearRatio=atof( (parser.getParamWithLongName("lineaRatio")->getValue()).c_str() ); - value=parser.getParamWithLongName("coolSchedType")->getValue(); - - srand (seed); - Graph::load(instancePath.c_str()); - - Route solution; - - RouteInit initializer; - initializer (solution); - - RouteEval full_evaluation; - full_evaluation (solution); - - std :: cout << "[From] " << solution << std :: endl; - - /* Tools for an efficient (? :-)) - local search ! */ - - TwoOptRand two_opt_random_move_generator; - - TwoOptIncrEval two_opt_incremental_evaluation; - - TwoOpt move; - - moCoolingSchedule* coolingSchedule; - - if(value.compare("Expo")==0) - { - coolingSchedule=new moExponentialCoolingSchedule(threshold, exponentialRatio); - } - else if (value.compare("Linear")==0) - { - coolingSchedule=new moLinearCoolingSchedule(threshold, linearRatio); - } - else - { - throw std::runtime_error("[simulated_annealing.cpp]: the type of cooling schedule '"+value+"' is not correct."); - } - - moGenSolContinue continu (maxIterations); - - moSA simulated_annealing (two_opt_random_move_generator, two_opt_incremental_evaluation, - continu, initialTemperature, *coolingSchedule, full_evaluation); - simulated_annealing (solution); - - std :: cout << "[To] " << solution << std :: endl; - - delete(coolingSchedule); - - return EXIT_SUCCESS ; -} - -void -manage_configuration_file(eoParser & _parser) -{ - std::ofstream os; - -#ifdef _MSVC - _parser.createParam(std::string("..\examples\tsp\benchs\berlin52.tsp"), "instancePath", "Path to the instance.", - 0, "Configuration", false); -#else - _parser.createParam(std::string("../examples/tsp/benchs/berlin52.tsp"), "instancePath", "Path to the instance.", - 0, "Configuration", false); -#endif - - _parser.getORcreateParam((unsigned int)time(0), "seed", "Seed for rand.", 0, "Configuration", false); - - _parser.getORcreateParam((unsigned int)1000, "maxIter", "Maximum number of iterations.", 0, "Configuration", false); - - _parser.getORcreateParam((double)1000, "initialTemp", "Initial temperature.", 0, "Configuration", false); - - _parser.getORcreateParam((double)0.1, "threshold", "Minimum temperature allowed.", 0, "Configuration", false); - - _parser.getORcreateParam((double)0.98, "expoRatio", "Ratio used if exponential cooling schedule is chosen.", 0, "Configuration", false); - - _parser.getORcreateParam((double)0.5, "lineaRatio", "Ratio used if linear cooling schedule is chosen.", 0, "Configuration", false); - - _parser.getORcreateParam(std::string("Expo"), "coolSchedType", "Type the cooling schedule: 'Expo' or 'Linear'.", - 0, "Configuration", false); - - if (_parser.userNeedsHelp()) - { - _parser.printHelp(std::cout); - exit(EXIT_FAILURE); - } - - os.open("current_param"); - if(!os.is_open()) - { - throw std::runtime_error("[simulated_annealing.cpp]: the file current_param cannot be created."); - } - os <<_parser; - os.close(); -} diff --git a/trunk/paradiseo-mo/tutorial/Lesson4/CMakeLists.txt b/trunk/paradiseo-mo/tutorial/Lesson4/CMakeLists.txt index ae12142c9..0544cf360 100644 --- a/trunk/paradiseo-mo/tutorial/Lesson4/CMakeLists.txt +++ b/trunk/paradiseo-mo/tutorial/Lesson4/CMakeLists.txt @@ -12,7 +12,7 @@ INCLUDE_DIRECTORIES(${TSP_SRC_DIR}) ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-MO_SOURCE_DIR}/tutorial/Lesson4/param ) - ADD_CUSTOM_COMMAND( +ADD_CUSTOM_COMMAND( TARGET install POST_BUILD COMMAND ${CMAKE_COMMAND} @@ -20,6 +20,7 @@ ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-MO_SOURCE_DIR}/tutorial/Lesson4/pa ${ParadisEO-MO_SOURCE_DIR}/tutorial/Lesson4/param ${ParadisEO-MO_BINARY_DIR}/tutorial/Lesson4) + ###################################################################################### ### 2) Specify where CMake can find the libraries ###################################################################################### @@ -30,7 +31,7 @@ ENDIF(NOT WIN32 OR CYGWIN) # especially for Visual Studio IF(WIN32 AND NOT CYGWIN) - LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE}) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE}) ENDIF(WIN32 AND NOT CYGWIN) ###################################################################################### @@ -41,10 +42,9 @@ ENDIF(WIN32 AND NOT CYGWIN) ### 3) Define your target(s): just an executable here ###################################################################################### -ADD_EXECUTABLE(iterated_local_search iterated_local_search.cpp) - -ADD_DEPENDENCIES(iterated_local_search tsp) +ADD_EXECUTABLE(simulated_annealing simulated_annealing.cpp) +ADD_DEPENDENCIES(simulated_annealing tsp) ###################################################################################### @@ -53,8 +53,8 @@ ADD_DEPENDENCIES(iterated_local_search tsp) ### 4) Optionnal: define your target(s)'s version: no effect for windows ###################################################################################### -SET(ITERATEDLOCALSEARCH_VERSION ${GLOBAL_VERSION}) -SET_TARGET_PROPERTIES(iterated_local_search PROPERTIES VERSION "${ITERATEDLOCALSEARCH_VERSION}") +SET(SIMULATEDANNEALING_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(simulated_annealing PROPERTIES VERSION "${SIMULATEDANNEALING_VERSION}") ###################################################################################### @@ -63,6 +63,7 @@ SET_TARGET_PROPERTIES(iterated_local_search PROPERTIES VERSION "${ITERATEDLOCALS ### 5) Link the librairies for your target(s) ###################################################################################### -TARGET_LINK_LIBRARIES(iterated_local_search tsp eo eoutils) +TARGET_LINK_LIBRARIES(simulated_annealing tsp eo eoutils) ###################################################################################### + diff --git a/trunk/paradiseo-mo/tutorial/Lesson4/param b/trunk/paradiseo-mo/tutorial/Lesson4/param index 91a5284c8..d80626b17 100644 --- a/trunk/paradiseo-mo/tutorial/Lesson4/param +++ b/trunk/paradiseo-mo/tutorial/Lesson4/param @@ -5,5 +5,10 @@ ###### Configuration ###### # --instancePath=../examples/tsp/benchs/berlin52.tsp # Path to the instance. -# --seed=1203080388 # Seed for rand. +# --seed=1202919978 # Seed for rand. # --maxIter=1000 # Maximum number of iterations. +# --initialTemp=1000 # Initial temperature. +# --threshold=0.1 # Minimum temperature allowed. +# --expoRatio=0.98 # Ratio used if exponential cooling schedule is chosen. +# --lineaRatio=0.5 # Ratio used if linear cooling schedule is chosen. +# --coolSchedType=Expo # Type the cooling schedule: 'Expo' or 'Linear'. diff --git a/trunk/paradiseo-mo/tutorial/Lesson5/CMakeLists.txt b/trunk/paradiseo-mo/tutorial/Lesson5/CMakeLists.txt new file mode 100644 index 000000000..8d253ce7b --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/Lesson5/CMakeLists.txt @@ -0,0 +1,68 @@ + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src/utils) +INCLUDE_DIRECTORIES(${ParadisEO-MO_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(${TSP_SRC_DIR}) +###################################################################################### + +ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-MO_SOURCE_DIR}/tutorial/Lesson5/param ) + +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-MO_SOURCE_DIR}/tutorial/Lesson5/param + ${ParadisEO-MO_BINARY_DIR}/tutorial/Lesson5) + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${TSP_BINARY_DIR}/lib) +ENDIF(NOT WIN32 OR CYGWIN) + +# especially for Visual Studio +IF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE}) +ENDIF(WIN32 AND NOT CYGWIN) + +###################################################################################### + + + +###################################################################################### +### 3) Define your target(s): just an executable here +###################################################################################### + +ADD_EXECUTABLE(iterated_local_search iterated_local_search.cpp) + +ADD_DEPENDENCIES(iterated_local_search tsp) + +###################################################################################### + + + +###################################################################################### +### 4) Optionnal: define your target(s)'s version: no effect for windows +###################################################################################### + +SET(ITERATEDLOCALSEARCH_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(iterated_local_search PROPERTIES VERSION "${ITERATEDLOCALSEARCH_VERSION}") +###################################################################################### + + + +###################################################################################### +### 5) Link the librairies for your target(s) +###################################################################################### + +TARGET_LINK_LIBRARIES(iterated_local_search tsp eo eoutils) + +###################################################################################### diff --git a/trunk/paradiseo-mo/tutorial/Lesson4/iterated_local_search.cpp b/trunk/paradiseo-mo/tutorial/Lesson5/iterated_local_search.cpp similarity index 88% rename from trunk/paradiseo-mo/tutorial/Lesson4/iterated_local_search.cpp rename to trunk/paradiseo-mo/tutorial/Lesson5/iterated_local_search.cpp index ffd2c1b4d..6be41e4a9 100644 --- a/trunk/paradiseo-mo/tutorial/Lesson4/iterated_local_search.cpp +++ b/trunk/paradiseo-mo/tutorial/Lesson5/iterated_local_search.cpp @@ -93,15 +93,25 @@ void manage_configuration_file(eoParser & _parser) { std::ofstream os; - -#ifdef _MSVC - _parser.createParam(std::string("..\examples\tsp\benchs\berlin52.tsp"), "instancePath", "Path to the instance.", - 0, "Configuration", false); -#else - _parser.createParam(std::string("../examples/tsp/benchs/berlin52.tsp"), "instancePath", "Path to the instance.", - 0, "Configuration", false); -#endif +#ifdef _MSVC + os.open("..\examples\tsp\benchs\berlin52.tsp"); + if(os.is_open()) + { + _parser.createParam(std::string("..\examples\tsp\benchs\berlin52.tsp"), "instancePath", "Path to the instance.", + 0, "Configuration", false); + } + else + { + _parser.createParam(std::string("..\..\examples\tsp\benchs\berlin52.tsp"), "instancePath", "Path to the instance.", + 0, "Configuration", false); + } + os.close(); +#else + _parser.createParam(std::string("../examples/tsp/benchs/berlin52.tsp"), "instancePath", "Path to the instance.", + 0, "Configuration", false); +#endif + _parser.getORcreateParam((unsigned int)time(0), "seed", "Seed for rand.", 0, "Configuration", false); _parser.getORcreateParam((unsigned int)1000, "maxIter", "Maximum number of iterations.", 0, "Configuration", false); diff --git a/trunk/paradiseo-mo/tutorial/Lesson5/param b/trunk/paradiseo-mo/tutorial/Lesson5/param new file mode 100644 index 000000000..91a5284c8 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/Lesson5/param @@ -0,0 +1,9 @@ + +###### General ###### +# --help=0 # -h : Prints this message +# --stopOnUnknownParam=1 # Stop if unkown param entered + +###### Configuration ###### +# --instancePath=../examples/tsp/benchs/berlin52.tsp # Path to the instance. +# --seed=1203080388 # Seed for rand. +# --maxIter=1000 # Maximum number of iterations. diff --git a/trunk/paradiseo-mo/tutorial/examples/CMakeLists.txt b/trunk/paradiseo-mo/tutorial/examples/CMakeLists.txt index 7d024ee3a..0ef6680a4 100644 --- a/trunk/paradiseo-mo/tutorial/examples/CMakeLists.txt +++ b/trunk/paradiseo-mo/tutorial/examples/CMakeLists.txt @@ -4,7 +4,7 @@ ### 1) Where must cmake go now ? ###################################################################################### -SUBDIRS(tsp) +SUBDIRS(tsp function) ###################################################################################### diff --git a/trunk/paradiseo-mo/tutorial/examples/function/CMakeLists.txt b/trunk/paradiseo-mo/tutorial/examples/function/CMakeLists.txt new file mode 100644 index 000000000..ae46cc44e --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/examples/function/CMakeLists.txt @@ -0,0 +1,36 @@ +###################################################################################### +### 0) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${ParadisEO-MO_SOURCE_DIR}/src) + +###################################################################################### + + +###################################################################################### +### 1) Define your target(s): just the tsp here +###################################################################################### + +SET(FUNCTION_LIB_OUTPUT_PATH ${FUNCTION_BINARY_DIR}/lib) +SET(LIBRARY_OUTPUT_PATH ${FUNCTION_LIB_OUTPUT_PATH}) + +SET (FUNCTION_SOURCES affectation_eval.cpp + affectation_init.cpp + deviation.cpp + deviation_init.cpp + deviation_next.cpp + deviation_incr_eval.cpp ) + +ADD_LIBRARY(function STATIC ${FUNCTION_SOURCES}) + +###################################################################################### + + +###################################################################################### +### 2) Optionnal: define your target(s)'s version: no effect for windows +###################################################################################### + +SET(FUNCTION_VERSION "${GLOBAL_VERSION}") +SET_TARGET_PROPERTIES(function PROPERTIES VERSION "${FUNCTION_VERSION}") +###################################################################################### diff --git a/trunk/paradiseo-mo/tutorial/examples/function/affectation.h b/trunk/paradiseo-mo/tutorial/examples/function/affectation.h new file mode 100644 index 000000000..eabe77ba1 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/examples/function/affectation.h @@ -0,0 +1,49 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* 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 affectation_h +#define affectation_h + +#include +#include + +// A float that has to be minimized. +typedef eoScalarFitness< float, std::greater > functionFitness ; + +class Affectation : public EO, public std::pair +{}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/examples/function/affectation_eval.cpp b/trunk/paradiseo-mo/tutorial/examples/function/affectation_eval.cpp new file mode 100644 index 000000000..ab2d569d7 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/examples/function/affectation_eval.cpp @@ -0,0 +1,53 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* 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 "affectation_eval.h" + +void AffectationEval :: operator () (Affectation & _affectation) +{ + double x1, x2, result; + + //std::cout << "AffectationEval" << std::endl; + + x1=_affectation.first; + x2=_affectation.second; + + result=(2*x1*x1) + (x2*x2) + (x1*x2) - (2*x1) - x2; + + //std::cout << result << std::endl; + + _affectation.fitness(result); +} diff --git a/trunk/paradiseo-mo/tutorial/examples/function/affectation_eval.h b/trunk/paradiseo-mo/tutorial/examples/function/affectation_eval.h new file mode 100644 index 000000000..affa225c9 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/examples/function/affectation_eval.h @@ -0,0 +1,54 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* 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 affectation_eval_h +#define affectation_eval_h + +#include + +#include "affectation.h" + +//! Affectation Evaluator +class AffectationEval : public eoEvalFunc +{ + + public : + + void operator () (Affectation & _affectation) ; + +} ; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/examples/function/affectation_init.cpp b/trunk/paradiseo-mo/tutorial/examples/function/affectation_init.cpp new file mode 100644 index 000000000..6299b6607 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/examples/function/affectation_init.cpp @@ -0,0 +1,74 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* 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 "affectation_init.h" + +AffectationInit::AffectationInit(double _bound): bound(_bound) +{ + if(bound < 0.0) + { + std::cout << "[affectation_init.cpp][AffectationInit]: bound is negative, " << bound << " is tranformed to "; + bound = -bound; + std::cout << bound << "." << std::endl; + } +} + +void AffectationInit::operator()(Affectation & _affectation) +{ + eoBooleanGenerator booleanGenerator; + + eoUniformGenerator doubleGenerator(bound); + + //A value between 0.0 and bound. + _affectation.first = doubleGenerator(); + + //value or -value ? + if(booleanGenerator()) + { + _affectation.first= - _affectation.first; + } + + //A value between 0.0 and bound. + _affectation.second = doubleGenerator(); + + //value or -value ? + if(booleanGenerator()) + { + _affectation.second= - _affectation.second; + } +} diff --git a/trunk/paradiseo-mo/tutorial/examples/function/affectation_init.h b/trunk/paradiseo-mo/tutorial/examples/function/affectation_init.h new file mode 100644 index 000000000..4e01be428 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/examples/function/affectation_init.h @@ -0,0 +1,58 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* 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 affectation_init_h +#define affectation_init_h + +#include + +#include "affectation.h" + +class AffectationInit : public eoInit + { + + public : + + AffectationInit(double _bound); + + void operator () (Affectation & _affectation) ; + + //! A bound for the initial value for the deviations + double bound; + + } ; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/examples/function/deviation.cpp b/trunk/paradiseo-mo/tutorial/examples/function/deviation.cpp new file mode 100644 index 000000000..7c86c6ea5 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/examples/function/deviation.cpp @@ -0,0 +1,44 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* 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 "deviation.h" + +void Deviation::operator () (Affectation & _affectation) +{ + _affectation.first += first; + _affectation.second += second; +} + diff --git a/trunk/paradiseo-mo/tutorial/examples/function/deviation.h b/trunk/paradiseo-mo/tutorial/examples/function/deviation.h new file mode 100644 index 000000000..a575b6235 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/examples/function/deviation.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* 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 deviation_h +#define deviation_h + +#include +#include "affectation.h" + +class Deviation : public moMove , public std :: pair +{ + public : + + void operator () (Affectation & _affectation) ; +} ; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/examples/function/deviation_incr_eval.cpp b/trunk/paradiseo-mo/tutorial/examples/function/deviation_incr_eval.cpp new file mode 100644 index 000000000..28c0c10e2 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/examples/function/deviation_incr_eval.cpp @@ -0,0 +1,57 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* 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 "deviation_incr_eval.h" + +functionFitness DeviationIncrEval :: operator () (const Deviation & _move, const Affectation & _affectation) +{ + double x1, x2, deltaX1, deltaX2; + + x1=_affectation.first; + x2=_affectation.second; + + deltaX1=_move.first; + deltaX2=_move.second; + + /*std::cout << (_affectation.fitness() + + ( 2*deltaX1*deltaX1 ) + ( deltaX2*deltaX2 ) + ( deltaX1*deltaX2 ) - ( 2*deltaX1 ) - deltaX2 + + ( deltaX1 * ( (4*x1) + x2 ) ) + ( x2*deltaX1 )) << std::endl;*/ + + return _affectation.fitness() + + ( 2*deltaX1*deltaX1 ) + ( deltaX2*deltaX2 ) + ( deltaX1*deltaX2 ) - ( 2*deltaX1 ) - deltaX2 + + ( deltaX1 * ( (4*x1) + x2 ) ) + ( x2*deltaX1 ); +} + diff --git a/trunk/paradiseo-mo/tutorial/examples/function/deviation_incr_eval.h b/trunk/paradiseo-mo/tutorial/examples/function/deviation_incr_eval.h new file mode 100644 index 000000000..66530b41b --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/examples/function/deviation_incr_eval.h @@ -0,0 +1,51 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* 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 deviation_incr_eval_h +#define deviation_incr_eval_h + +#include +#include "deviation.h" + +class DeviationIncrEval : public moMoveIncrEval + { + public : + + functionFitness operator () (const Deviation & _move, const Affectation & _route) ; + + } ; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/examples/function/deviation_init.cpp b/trunk/paradiseo-mo/tutorial/examples/function/deviation_init.cpp new file mode 100644 index 000000000..edcfee536 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/examples/function/deviation_init.cpp @@ -0,0 +1,56 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* 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 "deviation_init.h" + +DeviationInit::DeviationInit(double _bound): bound(_bound) +{ + if(bound < 0.0) + { + std::cout << "[deviation_init.cpp][DeviationInit]: bound is negative, " << bound << " is tranformed to "; + bound = -bound; + std::cout << bound << "." << std::endl;; + } +} + +void DeviationInit::operator () (Deviation & _move, const Affectation & _affectation) +{ + //Code only used to avoid compilation warning because _affectation is not used in this procedure. + Affectation affectation(_affectation); + + _move.first=-bound; + _move.second=-bound; +} diff --git a/trunk/paradiseo-mo/tutorial/examples/function/deviation_init.h b/trunk/paradiseo-mo/tutorial/examples/function/deviation_init.h new file mode 100644 index 000000000..48d11839b --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/examples/function/deviation_init.h @@ -0,0 +1,61 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* 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 deviation_init_h +#define deviation_init_h + +#include +#include + +#include "deviation.h" + +/** It sets the first couple of edges */ +class DeviationInit : public moMoveInit + { + + public : + + DeviationInit(double _bound); + + void operator () (Deviation & _move, const Affectation & _affectation) ; + + private : + + //! A bound for the initial value for the deviations + double bound; + } ; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/examples/function/deviation_next.cpp b/trunk/paradiseo-mo/tutorial/examples/function/deviation_next.cpp new file mode 100644 index 000000000..eaad2ae4e --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/examples/function/deviation_next.cpp @@ -0,0 +1,95 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* 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 "deviation_next.h" + +DeviationNext::DeviationNext(double _bound, double _step): bound(_bound), step(_step) +{ + if(bound<0.0) + { + std::cout << "[affectation_next.cpp][DeviationNext]: bound is negative, " << bound << " is tranformed to "; + bound=-bound; + std::cout << bound << "." << std::endl; + } + + if(step<0.0) + { + std::cout << "[affectation_next.cpp][DeviationNext]: step is negative, " << step << " is tranformed to "; + step=-step; + std::cout << step << "." << std::endl; + } + + if(step>bound) + { + std::cout << "[affectation_next.cpp][DeviationNext]: step is higher than bound, " << step << " is tranformed to "; + step = bound / 2; + std::cout << step << "." << std::endl; + } +} + +bool DeviationNext::operator () (Deviation & _move, const Affectation & _affectation) +{ + Affectation affectation(_affectation); + + double deltaX1, deltaX2; + + deltaX1=_move.first; + deltaX2=_move.second; + + //std::cout << "deltaX1 = " << deltaX1 << ", deltaX2 = " << deltaX2 << std::endl; + + if( (deltaX1>=bound) && (deltaX2)>=bound ) + { + return false; + } + + if(deltaX2 >= bound) + { + deltaX1+=step; + deltaX2=-bound; + + _move.first=deltaX1; + _move.second=deltaX2; + + return true; + } + + deltaX2+=step; + + _move.second=deltaX2; + + return true; +} diff --git a/trunk/paradiseo-mo/tutorial/examples/function/deviation_next.h b/trunk/paradiseo-mo/tutorial/examples/function/deviation_next.h new file mode 100644 index 000000000..a28689cf7 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/examples/function/deviation_next.h @@ -0,0 +1,62 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* 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 deviation_next_h +#define deviation_next_h + +#include +#include "deviation.h" + +class DeviationNext : public moNextMove + { + + public : + + DeviationNext (double _bound, double _step); + + bool operator () (Deviation & _move, const Affectation & _affectation) ; + + + private : + + //! A bound for the search in the neighbourhood. + double bound; + + //! A step between two values. + double step; + } ; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/examples/function/function b/trunk/paradiseo-mo/tutorial/examples/function/function new file mode 100644 index 000000000..3d0cb7659 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/examples/function/function @@ -0,0 +1,41 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) +* +* 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 __function +#define __function + +#include "function.h" + +#endif diff --git a/trunk/paradiseo-mo/tutorial/examples/function/function.h b/trunk/paradiseo-mo/tutorial/examples/function/function.h new file mode 100644 index 000000000..d577c546a --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/examples/function/function.h @@ -0,0 +1,48 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) +* +* 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 __function_h +#define __function_h + +#include "affectation.h" +#include "affectation_eval.h" +#include "affectation_init.h" +#include "deviation.h" +#include "deviation_incr_eval.h" +#include "deviation_init.h" +#include "deviation_next.h" + +#endif