diff --git a/trunk/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp b/trunk/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp index 7bce1942c..4ea979c31 100644 --- a/trunk/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp +++ b/trunk/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp @@ -43,108 +43,108 @@ void manage_configuration_file(eoParser & _parser); int main (int _argc, char* _argv []) { - std::string instancePath, value; - unsigned int seed, maxIterations, tabuListSize; + 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()); + eoParser parser(_argc, _argv); - Route solution; + manage_configuration_file(parser); - RouteInit initializer; - initializer(solution); + 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(); - RouteEval full_evaluation; - full_evaluation(solution); + srand (seed); + Graph::load(instancePath.c_str()); - std :: cout << "[From] " << solution << std :: endl; + Route solution; - /* Tools for an efficient (? :-)) - local search ! */ + RouteInit initializer; + initializer(solution); - TwoOptInit two_opt_initializer; + RouteEval full_evaluation; + full_evaluation(solution); - TwoOptNext two_opt_next_move_generator; + std :: cout << "[From] " << solution << std :: endl; - TwoOptIncrEval two_opt_incremental_evaluation; + /* Tools for an efficient (? :-)) + local search ! */ - moTabuList *tabuList; + TwoOptInit two_opt_initializer; - if(value.compare("TwoOpt")==0) + TwoOptNext two_opt_next_move_generator; + + TwoOptIncrEval two_opt_incremental_evaluation; + + moTabuList *tabuList; + + if (value.compare("TwoOpt")==0) { - tabuList=new TwoOptTabuList(); + tabuList=new TwoOptTabuList(); } - else if (value.compare("SimpleMove")==0) + else if (value.compare("SimpleMove")==0) { - tabuList=new moSimpleMoveTabuList(tabuListSize); + tabuList=new moSimpleMoveTabuList(tabuListSize); } - else if (value.compare("SimpleSolution")==0) + else if (value.compare("SimpleSolution")==0) { - tabuList=new moSimpleSolutionTabuList(tabuListSize); + tabuList=new moSimpleSolutionTabuList(tabuListSize); } - else + else { - throw std::runtime_error("[tabu_search.cpp]: the type of tabu list '"+value+"' is not correct."); + throw std::runtime_error("[tabu_search.cpp]: the type of tabu list '"+value+"' is not correct."); } - moNoAspirCrit aspiration_criterion; + 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); + moGenSolContinue continu (maxIterations); - std :: cout << "[To] " << solution << std :: endl; + moTS tabu_search (two_opt_initializer, two_opt_next_move_generator, + two_opt_incremental_evaluation, *tabuList, aspiration_criterion, continu, full_evaluation); + tabu_search(solution); - delete(tabuList); + std :: cout << "[To] " << solution << std :: endl; - return EXIT_SUCCESS; + delete(tabuList); + + return EXIT_SUCCESS; } void manage_configuration_file(eoParser & _parser) { - std::ofstream os; + std::ofstream os; #ifdef _MSVC - _parser.createParam(std::string("..\examples\tsp\benchs\berlin52.tsp"), "instancePath", "Path to the instance.", - 0, "Configuration", false); + _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); + _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)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)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((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); + _parser.createParam(std::string("TwoOpt"), "tabuListType", "Type of the tabu list: 'TwoOpt', 'SimpleMove' or 'SimpleSolution'.", + 0, "Configuration", false); - if (_parser.userNeedsHelp()) + if (_parser.userNeedsHelp()) { - _parser.printHelp(std::cout); - exit(EXIT_FAILURE); + _parser.printHelp(std::cout); + exit(EXIT_FAILURE); } - - os.open("current_param"); - if(!os.is_open()) + + os.open("current_param"); + if (!os.is_open()) { - throw std::runtime_error("[tabu_search.cpp]: the file current_param cannot be created."); + throw std::runtime_error("[tabu_search.cpp]: the file current_param cannot be created."); } - os <<_parser; - os.close(); + os <<_parser; + os.close(); }