moILS has been added, berlin52.tsp too, moComparator, moFitComparator, ...

git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@606 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
jboisson 2007-09-20 09:42:11 +00:00
commit b1520dda65
366 changed files with 12063 additions and 1766 deletions

View file

@ -12,6 +12,6 @@ SET(TSP_BINARY_DIR ${ParadisEO-MO_BINARY_DIR}/tutorial/examples/tsp CACHE PATH "
### 2) Where must cmake go now ?
######################################################################################
SUBDIRS(examples Lesson1 Lesson2 Lesson3)
SUBDIRS(examples Lesson1 Lesson2 Lesson3 Lesson4)
######################################################################################

View file

@ -0,0 +1,81 @@
######################################################################################
### 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})
######################################################################################
######################################################################################
### 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)
######################################################################################
######################################################################################
### 6) Windows advanced config - especially for Microsoft Visual Studio 8
######################################################################################
IF(CMAKE_CXX_COMPILER MATCHES cl)
IF(NOT WITH_SHARED_LIBS)
IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005")
SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy")
SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od")
SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2")
SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2")
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE")
ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005")
ENDIF(NOT WITH_SHARED_LIBS)
ENDIF(CMAKE_CXX_COMPILER MATCHES cl)
######################################################################################

View file

@ -0,0 +1,95 @@
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
// "iterated_local_search.cpp"
// (c) OPAC Team, LIFL, 2003-2007
/* LICENCE TEXT
Contact: paradiseo-help@lists.gforge.inria.fr
*/
#include <mo.h>
#include <graph.h>
#include <route.h>
#include <route_eval.h>
#include <route_init.h>
#include <two_opt.h>
#include <two_opt_init.h>
#include <two_opt_next.h>
#include <two_opt_incr_eval.h>
#include <two_opt_tabu_list.h>
#include <two_opt_rand.h>
#include <city_swap.h>
int
main (int __argc, char * __argv [])
{
if (__argc != 2)
{
std :: cerr << "Usage : ./iterated_local_search [instance]" << std :: endl ;
return 1 ;
}
Graph :: load (__argv [1]) ; // Instance
Route route ; // Solution
RouteInit init ; // Sol. Random Init.
init (route) ;
RouteEval full_eval ; // Full. Eval.
full_eval (route) ;
std :: cout << "[From] " << route << std :: endl ;
/* Tools for an efficient (? :-))
local search ! */
TwoOptInit two_opt_init ; // Init.
TwoOptNext two_opt_next ; // Explorer.
TwoOptIncrEval two_opt_incr_eval ; // Eff. eval.
moBestImprSelect <TwoOpt> two_opt_select ;
//moHC<TwoOpt> hill_climbing (two_opt_init, two_opt_next, two_opt_incr_eval, two_opt_select, full_eval) ;
moGenSolContinue <Route> cont (1000) ;
moFitComparator<Route> comparator;
CitySwap perturbation;
//moILS<TwoOpt> iterated_local_search (hill_climbing, cont, comparator, perturbation, full_eval) ;
//moILS<TwoOpt> iterated_local_search (two_opt_init, two_opt_next, two_opt_incr_eval,
// two_opt_select, cont, comparator, perturbation, full_eval) ;
moGenSolContinue <Route> ts_cont (100) ;
TwoOptTabuList tabu_list ; // Tabu List
moNoAspirCrit <TwoOpt> aspir_crit ; // Aspiration Criterion
//moILS<TwoOpt> iterated_local_search (two_opt_init, two_opt_next, two_opt_incr_eval, tabu_list, aspir_crit, ts_cont,
// cont, comparator, perturbation, full_eval) ;
TwoOptRand two_opt_rand ; // Route Random. Gen.
moExponentialCoolingSchedule cool_sched (0.1, 0.98) ; // Exponential Cooling Schedule
moGenSolContinue <Route> sa_cont (100) ;
moILS<TwoOpt> iterated_local_search (two_opt_rand, two_opt_incr_eval, sa_cont, 100, cool_sched,
cont, comparator, perturbation, full_eval) ;
iterated_local_search(route) ;
std :: cout << "[To] " << route << std :: endl ;
return 0 ;
}

View file

@ -0,0 +1,53 @@
52
565 575
25 185
345 750
945 685
845 655
880 660
25 230
525 1000
580 1175
650 1130
1605 620
1220 580
1465 200
1530 5
845 680
725 370
145 665
415 635
510 875
560 365
300 465
520 585
480 415
835 625
975 580
1215 245
1320 315
1250 400
660 180
410 250
420 555
575 665
1150 1160
700 580
685 595
685 610
770 610
795 645
720 635
760 650
475 960
95 260
875 920
700 500
555 815
830 485
1170 65
830 610
605 625
595 360
1340 725
1740 245