paradiseo-->peo
git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@598 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
parent
ef7821fa60
commit
dd69a368dc
21 changed files with 377 additions and 562 deletions
|
|
@ -3,9 +3,9 @@
|
||||||
### 0) Preliminary checking: no WIN and libxml2
|
### 0) Preliminary checking: no WIN and libxml2
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
IF(WIN32)
|
#IF(WIN32)
|
||||||
MESSAGE (FATAL_ERROR "ParadisEO-PEO can not be generated on Windows systems")
|
# MESSAGE (FATAL_ERROR "ParadisEO-PEO can not be generated on Windows systems")
|
||||||
ENDIF(WIN32)
|
#ENDIF(WIN32)
|
||||||
|
|
||||||
# check libxml2
|
# check libxml2
|
||||||
FIND_PROGRAM(XML2_CONFIG_PROGRAM NAMES xml2-config PATHS /usr/local/bin /usr/bin DOC "The libxml2 (www.xmlsoft.org) configuration tool")
|
FIND_PROGRAM(XML2_CONFIG_PROGRAM NAMES xml2-config PATHS /usr/local/bin /usr/bin DOC "The libxml2 (www.xmlsoft.org) configuration tool")
|
||||||
|
|
@ -24,7 +24,7 @@ EXECUTE_PROCESS(COMMAND ${XML2_CONFIG_PROGRAM} --libs OUTPUT_VARIABLE XML2_LIBS
|
||||||
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
### 1) If you want to set your variables in moeo-conf.cmake and avoid the cmd line
|
### 1) If you want to set your variables in peo-conf.cmake and avoid the cmd line
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
INCLUDE(peo-conf.cmake OPTIONAL)
|
INCLUDE(peo-conf.cmake OPTIONAL)
|
||||||
|
|
@ -33,12 +33,19 @@ INCLUDE(peo-conf.cmake OPTIONAL)
|
||||||
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
### 2) Main project config
|
### 2) Project properties
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
# set the project name
|
# set the project name
|
||||||
PROJECT(ParadisEO-PEO)
|
PROJECT(ParadisEO-PEO)
|
||||||
|
|
||||||
|
SET(PACKAGE_BUGREPORT "paradiseo-help@lists.gforge.inria.fr" CACHE STRING "Package bug report" FORCE)
|
||||||
|
SET(PACKAGE_NAME "ParadisEO-PEO Moving Objects" CACHE STRING "Package name" FORCE)
|
||||||
|
SET(PACKAGE_STRING "ParadisEO-PEO 1.0" CACHE STRING "Package string full name" FORCE)
|
||||||
|
SET(PACKAGE_VERSION "1.0" CACHE STRING "Package version" FORCE)
|
||||||
|
SET(GLOBAL_VERSION "1.0" CACHE STRING "Global version" FORCE)
|
||||||
|
SET(VERSION "1.0" CACHE STRING "Version" FORCE)
|
||||||
|
|
||||||
# check cmake version compatibility
|
# check cmake version compatibility
|
||||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.4 FATAL_ERROR)
|
CMAKE_MINIMUM_REQUIRED(VERSION 2.4 FATAL_ERROR)
|
||||||
|
|
||||||
|
|
@ -68,83 +75,87 @@ INCLUDE(CheckLibraryExists)
|
||||||
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
### 4) SET main paths (can be defined in peo-conf.cmake)
|
### 4) Include the main configuration variables
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
IF(NOT DEFINED PEO_DIR)
|
# The "config" variable must be provided on the command line
|
||||||
SET(PEO_DIR ${ParadisEO-PEO_SOURCE_DIR} CACHE PATH "ParadisEO-PEO main directory")
|
IF(NOT DEFINED config OR NOT config)
|
||||||
ENDIF(NOT DEFINED PEO_DIR)
|
MESSAGE(FATAL_ERROR "The \"config\" variable must be set on the command line to
|
||||||
|
give the path of the install configuration file. ")
|
||||||
|
ENDIF(NOT DEFINED config OR NOT config)
|
||||||
|
|
||||||
# Need main EO directory path
|
# Need the config file whose full path is given thanks to the "config" variable
|
||||||
IF(NOT DEFINED EO_DIR OR NOT EO_DIR)
|
INCLUDE(${config})
|
||||||
SET(EO_DIR ${EOdir} CACHE PATH "ParadisEO-EO main directory" FORCE) # given on the command line
|
|
||||||
ELSE(NOT DEFINED EO_DIR OR NOT EO_DIR)
|
|
||||||
MESSAGE(STATUS "EOdir already defined as ${EO_DIR}")
|
|
||||||
ENDIF(NOT DEFINED EO_DIR OR NOT EO_DIR)
|
|
||||||
|
|
||||||
# Set the main paths for EO
|
|
||||||
IF(NOT DEFINED EO_SRC_DIR)
|
|
||||||
SET(EO_SRC_DIR "${EO_DIR}/src")
|
|
||||||
ENDIF(NOT DEFINED EO_SRC_DIR)
|
|
||||||
|
|
||||||
# Need main MO directory path
|
|
||||||
IF(NOT DEFINED MO_DIR OR NOT MO_DIR)
|
|
||||||
SET(MO_DIR ${MOdir} CACHE PATH "ParadisMO-MO main directory" FORCE) # given on the command line
|
|
||||||
ELSE(NOT DEFINED MO_DIR OR NOT MO_DIR)
|
|
||||||
MESSAGE(STATUS "MOdir already defined as ${MO_DIR}")
|
|
||||||
ENDIF(NOT DEFINED MO_DIR OR NOT MO_DIR)
|
|
||||||
|
|
||||||
# Set the main paths for MO
|
|
||||||
IF(NOT DEFINED MO_SRC_DIR)
|
|
||||||
SET(MO_SRC_DIR "${MO_DIR}/src")
|
|
||||||
ENDIF(NOT DEFINED MO_SRC_DIR)
|
|
||||||
|
|
||||||
IF(NOT DEFINED PEO_SRC_DIR)
|
|
||||||
SET(PEO_SRC_DIR ${PEO_DIR}/src)
|
|
||||||
ENDIF(NOT DEFINED PEO_SRC_DIR)
|
|
||||||
|
|
||||||
IF(NOT DEFINED PEO_DOC_DIR)
|
|
||||||
SET(PEO_DOC_DIR ${PEO_DIR}/doc)
|
|
||||||
ENDIF(NOT DEFINED PEO_DOC_DIR)
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
### 5) Paths checking
|
### 4) Paths checking
|
||||||
######################################################################################
|
######################################################################################
|
||||||
IF(EXISTS ${EO_DIR})
|
|
||||||
MESSAGE (STATUS "Using ParadisEO-EO path: ${EO_DIR}")
|
|
||||||
ELSE(EXISTS ${EO_DIR})
|
|
||||||
MESSAGE (FATAL_ERROR "Could not find the ParadisEO-EO path: ${EO_DIR}. You should use : cmake . -DEOdir=<your path to paradiseo-eo> -DMOdir=<your path to paradiseo-mo>")
|
|
||||||
ENDIF(EXISTS ${EO_DIR})
|
|
||||||
|
|
||||||
# Is it an absolute path ?
|
IF(WIN32)
|
||||||
SET (ABSOLUTE_PATH_REGEX "^/")
|
SET (ABSOLUTE_PATH_REGEX "^[A-Z]:|^[a-z]:")
|
||||||
IF(NOT ${EO_DIR} MATCHES "${ABSOLUTE_PATH_REGEX}")
|
ELSE(WIN32)
|
||||||
MESSAGE (FATAL_ERROR "${EO_DIR} MUST BE an absolute path")
|
SET (ABSOLUTE_PATH_REGEX "^/")
|
||||||
ENDIF(NOT ${EO_DIR} MATCHES "${ABSOLUTE_PATH_REGEX}")
|
ENDIF(WIN32)
|
||||||
|
|
||||||
SET(EO_LIB_DIR "${EO_DIR}/src")
|
SET(REQUIRED_PATHS "EO_SRC_DIR" "EO_BIN_DIR" "MO_SRC_DIR" "MO_BIN_DIR")
|
||||||
|
FOREACH (path ${REQUIRED_PATHS})
|
||||||
|
IF(EXISTS ${${path}})
|
||||||
IF(EXISTS ${MO_DIR})
|
MESSAGE (STATUS "Using ${path}=${${path}}")
|
||||||
MESSAGE (STATUS "Using ParadisMO-MO path: ${MO_DIR}")
|
ELSE(EXISTS ${${path}})
|
||||||
ELSE(EXISTS ${MO_DIR})
|
MESSAGE (FATAL_ERROR "\n Cannot find \"${${path}}\". Please, fill \"${config}\" with a correct value for ${path} variable")
|
||||||
MESSAGE (FATAL_ERROR "Could not find the ParadisMO-MO path: ${MO_DIR}. You should use : cmake . -DEOdir=<your path to paradiseo-eo> -DMOdir=<your path to paradiseo-mo>")
|
ENDIF(EXISTS ${${path}})
|
||||||
ENDIF(EXISTS ${MO_DIR})
|
|
||||||
|
IF(NOT ${${path}} MATCHES "${ABSOLUTE_PATH_REGEX}")
|
||||||
# Is it an absolute path ?
|
MESSAGE (FATAL_ERROR "${${path}} MUST BE an absolute path")
|
||||||
SET (ABSOLUTE_PATH_REGEX "^/")
|
ENDIF(NOT ${${path}} MATCHES "${ABSOLUTE_PATH_REGEX}")
|
||||||
IF(NOT ${MO_DIR} MATCHES "${ABSOLUTE_PATH_REGEX}")
|
ENDFOREACH (path ${REQUIRED_PATHS})
|
||||||
MESSAGE (FATAL_ERROR "${MO_DIR} MUST BE an absolute path")
|
|
||||||
ENDIF(NOT ${MO_DIR} MATCHES "${ABSOLUTE_PATH_REGEX}")
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
#####################################################################################
|
||||||
|
### 5) Manage the build type
|
||||||
|
#####################################################################################
|
||||||
|
|
||||||
|
# the user should choose the build type on windows environments,excepted under cygwin (default=none)
|
||||||
|
SET(CMAKE_DEFAULT_BUILD_TYPE None CACHE STRING "Variable that stores the default CMake build type" FORCE)
|
||||||
|
|
||||||
|
IF(WIN32 AND NOT CYGWIN)
|
||||||
|
IF(NOT CMAKE_BUILD_TYPE)
|
||||||
|
SET( CMAKE_BUILD_TYPE
|
||||||
|
${CMAKE_DEFAULT_BUILD_TYPE} CACHE STRING
|
||||||
|
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
|
||||||
|
FORCE)
|
||||||
|
ENDIF(NOT CMAKE_BUILD_TYPE)
|
||||||
|
MESSAGE(STATUS "")
|
||||||
|
MESSAGE(STATUS "Warning: The type of build is: ${CMAKE_BUILD_TYPE}.")
|
||||||
|
MESSAGE(STATUS "The available types are: None Debug Release RelWithDebInfo MinSizeRel.")
|
||||||
|
MESSAGE(STATUS "You can choose it with: cmake <path-to-source> -D<build-type>")
|
||||||
|
MESSAGE(STATUS "")
|
||||||
|
ENDIF(WIN32 AND NOT CYGWIN)
|
||||||
|
|
||||||
|
#####################################################################################
|
||||||
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
### 6) Where must cmake go now ?
|
### 6) Where must cmake go now ?
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
SUBDIRS(doc src tutorial)
|
SUBDIRS(doc src test tutorial)
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
### 7) Test config
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
|
#SET(ENABLE_CMAKE_TESTING TRUE CACHE BOOL "Should we test using Dart")
|
||||||
|
|
||||||
|
IF (ENABLE_CMAKE_TESTING)
|
||||||
|
ENABLE_TESTING()
|
||||||
|
ENDIF (ENABLE_CMAKE_TESTING)
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
|
||||||
|
|
@ -1,38 +1,26 @@
|
||||||
|
|
||||||
### ParadisEO-PEO Doc generation using Doxygen ###
|
##########################################################################################
|
||||||
|
### PEO Doc generation using Doxygen
|
||||||
# Find the Doxygen package - will set all the variables required to use Doxygen
|
##########################################################################################
|
||||||
FIND_PACKAGE(Doxygen)
|
|
||||||
|
|
||||||
IF (DOXYGEN_FOUND)
|
IF (DOXYGEN_FOUND)
|
||||||
|
|
||||||
SET(PEO_DOC_COMMENT "ParadisEO-PEO framework documentation")
|
SET(DOC_DIR ${CMAKE_BINARY_DIR}/doc CACHE PATH "PEO documentation directory")
|
||||||
SET(DOXYGEN_INPUT "paradiseo-peo.doxyfile")
|
SET(PEO_DOC_CONFIG_FILE "peo.doxyfile" CACHE PATH "PEO documentation configuration file")
|
||||||
SET(DOXYGEN_OUTPUT "ParadisEO-PEO documentation")
|
# define the doc target
|
||||||
|
IF (DOXYGEN_EXECUTABLE)
|
||||||
ADD_CUSTOM_COMMAND(
|
ADD_CUSTOM_TARGET(doc
|
||||||
OUTPUT ${DOXYGEN_OUTPUT}
|
COMMAND ${DOXYGEN_EXECUTABLE} ${PEO_DOC_CONFIG_FILE}
|
||||||
COMMAND ${CMAKE_COMMAND} -E echo_append "Building documentation from ${PEO_DOC_DIR} ..."
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_INPUT}
|
)
|
||||||
COMMAND ${CMAKE_COMMAND} -E echo "Done."
|
ENDIF (DOXYGEN_EXECUTABLE)
|
||||||
WORKING_DIRECTORY ${PEO_DOC_DIR}
|
|
||||||
COMMENT ${PEO_DOC_COMMENT}
|
# configure doxyfile file
|
||||||
DEPENDS ${DOXYGEN_INPUT}
|
CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/doc/${PEO_DOC_CONFIG_FILE}.cmake"
|
||||||
)
|
"${CMAKE_BINARY_DIR}/doc/${PEO_DOC_CONFIG_FILE}")
|
||||||
|
|
||||||
# The main target launched with "make doc"
|
|
||||||
ADD_CUSTOM_TARGET(doc DEPENDS ${DOXYGEN_OUTPUT})
|
|
||||||
|
|
||||||
# A forced additionnal target that generate the documentation in the current directory
|
|
||||||
ADD_CUSTOM_TARGET(doc_forced
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E echo_append "Building documentation from current directory ..."
|
|
||||||
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_INPUT}
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E echo " Done."
|
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
|
||||||
|
|
||||||
ELSE (DOXYGEN_FOUND)
|
ELSE (DOXYGEN_FOUND)
|
||||||
MESSAGE(STATUS "Unable to generate the document, Doxygen package not found")
|
MESSAGE(STATUS "Unable to generate the documentation, Doxygen package not found")
|
||||||
ENDIF (DOXYGEN_FOUND)
|
ENDIF (DOXYGEN_FOUND)
|
||||||
|
|
||||||
|
##########################################################################################
|
||||||
|
|
||||||
|
|
@ -2,32 +2,23 @@
|
||||||
######################################################################################
|
######################################################################################
|
||||||
######################################################################################
|
######################################################################################
|
||||||
### In this file, you can specify many CMake variables used to build paradisEO-PEO.
|
### In this file, you can specify many CMake variables used to build paradisEO-PEO.
|
||||||
### For example, if you don't want ot give the EO path each time on the command line,
|
|
||||||
### uncomment the line the "SET(EO_DIR...)" and set your path.
|
|
||||||
### The section numbers are the same as those used in the CMakeLists.txt file.
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
### 3) OPTIONNAL - Overwrite default paths
|
### 1) OPTIONNAL
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
# SET(MO_DIR "<your path>" CACHE PATH "ParadisEO-PEO main directory")
|
# SET (MYVAR MYVALUE)
|
||||||
# SET(EO_DIR "<path to ParadisEO-EO>" CACHE PATH "ParadisEO-EO main directory")
|
|
||||||
|
|
||||||
# SET(EO_SRC_DIR "<path to ParadisEO-EO src dir>")
|
|
||||||
# SET(MO_SRC_DIR "<path to ParadisEO-MO src dir>")
|
|
||||||
# SET(MO_DOC_DIR "<path to ParadisEO-MO doc dir>")
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
#####################################################################################
|
#####################################################################################
|
||||||
### 5) OPTIONNAL - Overwrite subdirs
|
### 2) OPTIONNAL - Overwrite subdirs
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
# SUBDIRS(doc src tutorial)
|
# SUBDIRS(doc tutorial)
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
### 1) Include the sources
|
### 1) Include the sources
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(${EO_SRC_DIR})
|
INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src)
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
@ -36,14 +35,43 @@ ADD_LIBRARY(peo STATIC ${CORE_SOURCES})
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
### 3) Optionnal: define your target(s)'s version: no effect for windows
|
### 3) Optionnal: define your target(s)'s version: no effect for windows
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
SET(CORE_VERSION "1.0.beta")
|
SET(CORE_VERSION ${GLOBAL_VERSION})
|
||||||
SET_TARGET_PROPERTIES(peo PROPERTIES VERSION "${CORE_VERSION}")
|
SET_TARGET_PROPERTIES(peo PROPERTIES VERSION "${CORE_VERSION}")
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
### 4) 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)
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
### 5) Where must cmake go now ?
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
|
# nothing to be compiled in the subdirs
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
// "paradiseo"
|
|
||||||
|
|
||||||
// (c) OPAC Team, LIFL, August 2005
|
|
||||||
|
|
||||||
/*
|
|
||||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __paradiseo_
|
|
||||||
#define __paradiseo_
|
|
||||||
|
|
||||||
#include "paradiseo.h"
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,285 +0,0 @@
|
||||||
// "paradiseo.h"
|
|
||||||
|
|
||||||
// (c) OPAC Team, LIFL, August 2005
|
|
||||||
|
|
||||||
/*
|
|
||||||
Contact: paradiseo-help@lists.gforge.inria.fr
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __paradiseo_h_
|
|
||||||
#define __paradiseo_h_
|
|
||||||
|
|
||||||
#include <eo>
|
|
||||||
#include <mo>
|
|
||||||
|
|
||||||
|
|
||||||
//! \mainpage The ParadisEO-PEO Framework
|
|
||||||
//!
|
|
||||||
//! \section intro Introduction
|
|
||||||
//!
|
|
||||||
//! ParadisEO is a white-box object-oriented framework dedicated to the reusable design
|
|
||||||
//! of parallel and distributed metaheuristics (PDM). ParadisEO provides a broad range of features including evolutionary
|
|
||||||
//! algorithms (EA), local searches (LS), the most common parallel and distributed models and hybridization
|
|
||||||
//! mechanisms, etc. This high content and utility encourages its use at European level. ParadisEO is based on a
|
|
||||||
//! clear conceptual separation of the solution methods from the problems they are intended to solve. This separation
|
|
||||||
//! confers to the user a maximum code and design reuse. Furthermore, the fine-grained nature of the classes
|
|
||||||
//! provided by the framework allow a higher flexibility compared to other frameworks. ParadisEO is one of the rare
|
|
||||||
//! frameworks that provide the most common parallel and distributed models. Their implementation is portable on
|
|
||||||
//! distributed-memory machines as well as on shared-memory multiprocessors, as it uses standard libraries such as
|
|
||||||
//! MPI, PVM and PThreads. The models can be exploited in a transparent way, one has just to instantiate their associated
|
|
||||||
//! provided classes. Their experimentation on the radio network design real-world application demonstrate their
|
|
||||||
//! efficiency.
|
|
||||||
//!
|
|
||||||
//! In practice, combinatorial optimization problems are often NP-hard, CPU time-consuming,
|
|
||||||
//! and evolve over time. Unlike exact methods, metaheuristics allow to tackle large-size problems
|
|
||||||
//! instances by delivering satisfactory solutions in a reasonable time. Metaheuristics are
|
|
||||||
//! general-purpose heuristics that split in two categories: evolutionary algorithms (EA) and local
|
|
||||||
//! search methods (LS). These two families have complementary characteristics: EA allow
|
|
||||||
//! a better exploration of the search space, while LS have the power to intensify the search in
|
|
||||||
//! promising regions. Their hybridization allows to deliver robust and better solutions
|
|
||||||
//!
|
|
||||||
//! Although serial metaheuristics have a polynomial temporal complexity, they remain
|
|
||||||
//! unsatisfactory for industrial problems. Parallel and distributed computing is a powerful way
|
|
||||||
//! to deal with the performance issue of these problems. Numerous parallel and distributed
|
|
||||||
//! metaheuristics (PDM) and their implementations have been proposed, and are available on
|
|
||||||
//! theWeb. They can be reused and adapted to his/her own problems. However, the user has to
|
|
||||||
//! deeply examine the code and rewrite its problem-specific sections. The task is tedious, errorprone,
|
|
||||||
//! takes along time and makes harder the produced code maintenance. A better way to
|
|
||||||
//! reuse the code of existing PDM is the reuse through libraries. These are often
|
|
||||||
//! more reliable as they are more tested and documented. They allow a better maintainability
|
|
||||||
//! and efficiency. However, libraries do not allow the reuse of design.
|
|
||||||
//!
|
|
||||||
//! \section parallel_metaheuristics Parallel and distributed metaheuristics
|
|
||||||
//!
|
|
||||||
//! \subsection parallel_distributed Parallel distributed evolutionary algorithms
|
|
||||||
//!
|
|
||||||
//! Evolutionary Algorithms (EA) are based on the iterative improvement of a
|
|
||||||
//! population of solutions. At each step, individuals are selected, paired and recombined in order
|
|
||||||
//! to generate new solutions that replace other ones, and so on. As the algorithm converges,
|
|
||||||
//! the population is mainly composed of individuals well adapted to the "environment", for
|
|
||||||
//! instance the problem. The main features that characterize EA are the way the population is
|
|
||||||
//! initialized, the selection strategy (deterministic/stochastic) by fostering "good" solutions,
|
|
||||||
//! the replacement strategy that discards individuals, and the continuation/stopping criterion
|
|
||||||
//! to decide whether the evolution should go on or not.
|
|
||||||
//!
|
|
||||||
//! Basically, three major parallel and distributed models for EA can been distinguished:
|
|
||||||
//! the island (a)synchronous cooperative model, the parallel evaluation of the
|
|
||||||
//! population, and the distributed evaluation of a single solution.
|
|
||||||
//! <ul>
|
|
||||||
//! <li> <i>Island (a)synchronous cooperative model</i>. Different EA are simultaneously deployed to
|
|
||||||
//! cooperate for computing better and robust solutions. They exchange in an asynchronous
|
|
||||||
//! way genetic stuff to diversify the search. The objective is to allow to delay the global
|
|
||||||
//! convergence, especially when theEAare heterogeneous regarding the variation operators.
|
|
||||||
//! The migration of individuals follows a policy defined by few parameters: the migration
|
|
||||||
//! decision criterion, the exchange topology, the number of emigrants, the emigrants selection
|
|
||||||
//! policy, and the replacement/integration policy.</li>
|
|
||||||
//!
|
|
||||||
//! <li> <i>Parallel evaluation of the population</i>. It is required as it is in general the most timeconsuming.
|
|
||||||
//! The parallel evaluation follows the centralized model. The farmer applies
|
|
||||||
//! the following operations: selection, transformation and replacement as they require a
|
|
||||||
//! global management of the population. At each generation, it distributes the set of new
|
|
||||||
//! solutions between differentworkers. These evaluate and return back the solutions and their
|
|
||||||
//! quality values. An efficient execution is often obtained particularly when the evaluation
|
|
||||||
//! of each solution is costly. The two main advantages of an asynchronous model over
|
|
||||||
//! the synchronous model are: (1) the fault tolerance of the asynchronous model; (2) the
|
|
||||||
//! robustness in case the fitness computation can take very different computation times (e.g.
|
|
||||||
//! for nonlinear numerical optimization). Whereas some time-out detection can be used to
|
|
||||||
//! address the former issue, the latter one can be partially overcome if the grain is set to very
|
|
||||||
//! small values, as individuals will be sent out for evaluations upon request of the workers.</li>
|
|
||||||
//!
|
|
||||||
//! <li> <i>Distributed evaluation of a single solution</i>. The quality of each solution is evaluated in
|
|
||||||
//! a parallel centralized way. That model is particularly interesting when the evaluation
|
|
||||||
//! function can be itself parallelized as it is CPU time-consuming and/or IO intensive. In
|
|
||||||
//! that case, the function can be viewed as an aggregation of a certain number of partial
|
|
||||||
//! functions. The partial functions could also be identical if for example the problem to deal
|
|
||||||
//! with is a data mining one. The evaluation is thus data parallel and the accesses to data
|
|
||||||
//! base are performed in parallel. Furthermore, a reduction operation is performed on the
|
|
||||||
//! results returned by the partial functions. As a summary, for this model the user has to
|
|
||||||
//! indicate a set of partial functions and an aggregation operator of these.</li>
|
|
||||||
//! </ul>
|
|
||||||
//!
|
|
||||||
//! \subsection parallel_ls Parallel distributed local searches
|
|
||||||
//!
|
|
||||||
//! \subsubsection local_searches Local searches
|
|
||||||
//!
|
|
||||||
//! All metaheuristics dedicated to the improvement of a single solution
|
|
||||||
//! are based on the concept of neighborhood. They start from a solution randomly generated or
|
|
||||||
//! obtained from another optimization algorithm, and update it, step by step, by replacing the
|
|
||||||
//! current solution by one of its neighboring candidates. Some criterion have been identified to
|
|
||||||
//! differentiate such searches: the heuristic internal memory, the choice of the initial solution,
|
|
||||||
//! the candidate solutions generator, and the selection strategy of candidate moves. Three main
|
|
||||||
//! algorithms of local search stand out: Hill Climbing (HC), Simulated
|
|
||||||
//! Annealing (SA) and Tabu Search (TS).
|
|
||||||
//!
|
|
||||||
//! \subsubsection parallel_local_searches Parallel local searches
|
|
||||||
//!
|
|
||||||
//! Two parallel distributed models are commonly used in the literature: the parallel distributed
|
|
||||||
//! exploration of neighboring candidate solutions model, and the multi-start model.
|
|
||||||
//! <ul>
|
|
||||||
//! <li><i>Parallel exploration of neighboring candidates</i>. It is a low-level Farmer-Worker model
|
|
||||||
//! that does not alter the behavior of the heuristic. A sequential search computes the same
|
|
||||||
//! results slower.At the beginning of each iteration, the farmer duplicates the current solution
|
|
||||||
//! between distributed nodes. Each one manages some candidates and the results are returned to the farmer.
|
|
||||||
//! The model is efficient if the evaluation of a each solution is time-consuming and/or there are a great
|
|
||||||
//! deal of candidate neighbors to evaluate. This is obviously not applicable to SA since only one candidate
|
|
||||||
//! is evaluated at each iteration. Likewise, the efficiency of the model for HC is not always guaranteed as
|
|
||||||
//! the number of neighboring solutions to process before finding one that improves the current objective function may
|
|
||||||
//! be highly variable.</li>
|
|
||||||
//!
|
|
||||||
//! <li> <i>Multi-start model</i>. It consists in simultaneously launching several local searches. They
|
|
||||||
//! may be heterogeneous, but no information is exchanged between them. The resultswould
|
|
||||||
//! be identical as if the algorithms were sequentially run.Very often deterministic algorithms
|
|
||||||
//! differ by the supplied initial solution and/or some other parameters. This trivial model is
|
|
||||||
//! convenient for low-speed networks of workstations.</li>
|
|
||||||
//! </ul>
|
|
||||||
//!
|
|
||||||
//! \section hybridization Hybridization
|
|
||||||
//!
|
|
||||||
//! Recently, hybrid metaheuristics have gained a considerable interest. For many
|
|
||||||
//! practical or academic optimization problems, the best found solutions are obtained by
|
|
||||||
//! hybrid algorithms. Combinations of different metaheuristics have provided very powerful
|
|
||||||
//! search methods. Two levels and two modes
|
|
||||||
//! of hybridization have been distinguished: Low and High levels, and Relay and Cooperative modes.
|
|
||||||
//! The low-level hybridization addresses the functional composition of a single optimization
|
|
||||||
//! method. A function of a given metaheuristic is replaced by another metaheuristic. On the
|
|
||||||
//! contrary, for high-level hybrid algorithms the different metaheuristics are self-containing,
|
|
||||||
//! meaning no direct relationship to their internal working is considered. On the other hand,
|
|
||||||
//! relay hybridization means a set of metaheuristics is applied in a pipeline way. The output
|
|
||||||
//! of a metaheuristic (except the last) is the input of the following one (except the first).
|
|
||||||
//! Conversely, co-evolutionist hybridization is a cooperative optimization model. Each metaheuristic
|
|
||||||
//! performs a search in a solution space, and exchange solutions with others.
|
|
||||||
//!
|
|
||||||
//! \section paradiseo_goals Paradiseo goals and architecture
|
|
||||||
//!
|
|
||||||
//! The "EO" part of ParadisEO means Evolving Objects. EO is a C++ LGPL open source
|
|
||||||
//! framework and includes a paradigm-free Evolutionary Computation library (EOlib)
|
|
||||||
//! dedicated to the flexible design of EA through evolving objects superseding the most common
|
|
||||||
//! dialects (Genetic Algorithms, Evolution Strategies, Evolutionary Programming and
|
|
||||||
//! Genetic Programming). Furthermore, EO integrates several services including visualization
|
|
||||||
//! facilities, on-line definition of parameters, application check-pointing, etc. ParadisEO is an
|
|
||||||
//! extended version of the EO framework. The extensions include local search methods, hybridization
|
|
||||||
//! mechanisms, parallelism and distribution mechanisms, and other features that
|
|
||||||
//! are not addressed in this paper such as multi-objective optimization and grid computing. In
|
|
||||||
//! the next sections, we present the motivations and goals of ParadisEO, its architecture and
|
|
||||||
//! some of its main implementation details and issues.
|
|
||||||
//!
|
|
||||||
//! \subsection motivation Motivations and goals
|
|
||||||
//!
|
|
||||||
//! A framework is normally intended to be exploited by as many users as possible. Therefore,
|
|
||||||
//! its exploitation could be successful only if some important user criteria are satisfied. The
|
|
||||||
//! following criteria are the major of them and constitute the main objectives of the ParadisEO
|
|
||||||
//! framework:
|
|
||||||
//!
|
|
||||||
//! <ul>
|
|
||||||
//! <li><i>Maximum design and code reuse</i>. The framework must provide for the user a whole
|
|
||||||
//! architecture design of his/her solution method. Moreover, the programmer may redo as
|
|
||||||
//! little code as possible. This objective requires a clear and maximal conceptual separation
|
|
||||||
//! between the solution methods and the problems to be solved, and thus a deep domain
|
|
||||||
//! analysis. The user might therefore develop only the minimal problem-specific code.</li>
|
|
||||||
//!
|
|
||||||
//! <li><i>Flexibility and adaptability</i>. It must be possible for the user to easily add new features/
|
|
||||||
//! metaheuristics or change existing ones without implicating other components. Furthermore,
|
|
||||||
//! as in practice existing problems evolve and new others arise these have to be
|
|
||||||
//! tackled by specializing/adapting the framework components.</li>
|
|
||||||
//!
|
|
||||||
//! <li><i>Utility</i>. The framework must allow the user to cover a broad range of metaheuristics,
|
|
||||||
//! problems, parallel distributed models, hybridization mechanisms, etc.</li>
|
|
||||||
//!
|
|
||||||
//! <li><i>Transparent and easy access to performance and robustness</i>. As the optimization applications
|
|
||||||
//! are often time-consuming the performance issue is crucial. Parallelism and
|
|
||||||
//! distribution are two important ways to achieve high performance execution. In order to
|
|
||||||
//! facilitate its use it is implemented so that the user can deploy his/her parallel algorithms in
|
|
||||||
//! a transparent manner. Moreover, the execution of the algorithms must be robust to guarantee
|
|
||||||
//! the reliability and the quality of the results. The hybridization mechanism allows
|
|
||||||
//! to obtain robust and better solutions.</li>
|
|
||||||
//!
|
|
||||||
//! <li><i>Portability</i>. In order to satisfy a large number of users the framework must support
|
|
||||||
//! different material architectures and their associated operating systems.</li>
|
|
||||||
//! </ul>
|
|
||||||
//!
|
|
||||||
//! \subsection architecture ParadisEO architecture
|
|
||||||
//!
|
|
||||||
//! The architecture of ParadisEO is multi-layer and modular allowing to achieve the objectives
|
|
||||||
//! quoted above. This allows particularly a high flexibility and adaptability, an
|
|
||||||
//! easier hybridization, and more code and design reuse. The architecture has three layers
|
|
||||||
//! identifying three major categories of classes: <i>Solvers</i>, <i>Runners</i> and <i>Helpers</i>.
|
|
||||||
//! <ul>
|
|
||||||
//! <li><i>Helpers</i>. Helpers are low-level classes that perform specific actions related to the evolution
|
|
||||||
//! or search process. They are split in two categories: <i>Evolutionary helpers (EH)</i>
|
|
||||||
//! and <i>Local search helpers (LSH)</i>. EH include mainly the transformation, selection and
|
|
||||||
//! replacement operations, the evaluation function and the stopping criterion. LSH can be
|
|
||||||
//! generic such as the neighborhood explorer class, or specific to the local search metaheuristic
|
|
||||||
//! like the tabu list manager class in the Tabu Search solution method. On the
|
|
||||||
//! other hand, there are some special helpers dedicated to the management of parallel and
|
|
||||||
//! distributed models 2 and 3, such as the communicators that embody the communication
|
|
||||||
//! services.
|
|
||||||
//!
|
|
||||||
//! Helpers cooperate between them and interact with the components of the upper layer
|
|
||||||
//! i.e. the runners. The runners invoke the helpers through function parameters. Indeed,
|
|
||||||
//! helpers have not their own data, but they work on the internal data of the runners.</li>
|
|
||||||
//!
|
|
||||||
//! <li><i>Runners</i>. The Runners layer contains a set of classes that implement the metaheuristics
|
|
||||||
//! themselves. They perform the run of the metaheuristics from the initial state or
|
|
||||||
//! population to the final one. One can distinguish the <i>Evolutionary runners (ER)</i> such as
|
|
||||||
//! genetic algorithms, evolution strategies, etc., and <i>Local search runners (LSR)</i> like tabu
|
|
||||||
//! search, simulated annealing and hill climbing. Runners invoke the helpers to perform
|
|
||||||
//! specific actions on their data. For instance, an ER may ask the fitness function evaluation
|
|
||||||
//! helper to evaluate its population. An LSR asks the movement helper to perform
|
|
||||||
//! a given movement on the current state. Furthermore, runners can be serial or parallel
|
|
||||||
//! distributed.</li>
|
|
||||||
//!
|
|
||||||
//! <li><i>Solvers</i>. Solvers are devoted to control the evolution process and/or the search. They
|
|
||||||
//! generate the initial state (solution or population) and define the strategy for combining
|
|
||||||
//! and sequencing different metaheuristics. Two types of solvers can be distinguished.
|
|
||||||
//! <i>Single metaheuristic solvers (SMS)</i> and <i>Multiple metaheuristics solvers (MMS)</i>. SMSs
|
|
||||||
//! are dedicated to the execution of only one metaheuristic.MMS are more complex as they
|
|
||||||
//! control and sequence several metaheuristics that can be heterogeneous. Solvers interact with
|
|
||||||
//! the user by getting the input data and delivering the output (best solution, statistics,
|
|
||||||
//! etc).</li>
|
|
||||||
//! </ul>
|
|
||||||
//!
|
|
||||||
//! According to the generality of their embedded features, the classes of the architecture split
|
|
||||||
//! in two major categories: <i>Provided classes</i> and <i>Required classes</i>. Provided classes embody
|
|
||||||
//! the factored out part of the metaheuristics. They are generic, implemented in the framework,
|
|
||||||
//! and ensure the control at run time. Required classes are those that must be supplied by the
|
|
||||||
//! user. They encapsulate the problem-specific aspects of the application. These classes are
|
|
||||||
//! fixed but not implemented in ParadisEO. The programmer has the burden to develop them
|
|
||||||
//! using the OO specialization mechanism.
|
|
||||||
//!
|
|
||||||
//! \section tutorials ParadisEO-PEO Tutorials
|
|
||||||
//!
|
|
||||||
//! The basisc of the ParadisEO framework philosophy are exposed in a few simple tutorials:
|
|
||||||
//! <ul>
|
|
||||||
//! <li>
|
|
||||||
//! <a href="lesson1/html/main.html" style="text-decoration:none;"> creating a simple ParadisEO evolutionary algorithm</a>;
|
|
||||||
//! </li>
|
|
||||||
//! </ul>
|
|
||||||
//! All the presented examples have as case study the traveling salesman problem (TSP). Different operators and auxiliary objects were designed,
|
|
||||||
//! standing as a <a href="lsnshared/html/index.html" target="new" style="text-decoration:none;">common shared source code base</a>. While not being
|
|
||||||
//! part of the ParadisEO-PEO framework, it may represent a startpoint for a better understanding of the presented tutorials.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include "core/peo_init.h"
|
|
||||||
#include "core/peo_run.h"
|
|
||||||
#include "core/peo_fin.h"
|
|
||||||
|
|
||||||
#include "core/eoVector_comm.h"
|
|
||||||
|
|
||||||
#include "peoEA.h"
|
|
||||||
|
|
||||||
/* Parallel steps of the E.A. */
|
|
||||||
#include "peoSeqTransform.h"
|
|
||||||
#include "peoParaSGATransform.h"
|
|
||||||
#include "peoSeqPopEval.h"
|
|
||||||
#include "peoParaPopEval.h"
|
|
||||||
|
|
||||||
/* Cooperative island model */
|
|
||||||
#include "core/ring_topo.h"
|
|
||||||
#include "peoAsyncIslandMig.h"
|
|
||||||
#include "peoSyncIslandMig.h"
|
|
||||||
|
|
||||||
/* Synchronous multi-start model */
|
|
||||||
#include "peoSyncMultiStart.h"
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -8,12 +8,11 @@ SET (CMAKE_CXX_COMPILER mpicxx)
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
### 1) Include the sources
|
### 1) Include the sources
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(${EO_SRC_DIR})
|
INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src)
|
||||||
INCLUDE_DIRECTORIES(${XML2_CFLAGS_WITH_WHITESPACE})
|
INCLUDE_DIRECTORIES(${XML2_CFLAGS_WITH_WHITESPACE})
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
@ -21,7 +20,7 @@ INCLUDE_DIRECTORIES(${XML2_CFLAGS_WITH_WHITESPACE})
|
||||||
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
### 2) Define your target(s): just the core library here
|
### 2) Define your target(s): just the rmc_mpi library here
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
SET(RMC_MPI_LIB_OUTPUT_PATH ${ParadisEO-PEO_BINARY_DIR}/lib)
|
SET(RMC_MPI_LIB_OUTPUT_PATH ${ParadisEO-PEO_BINARY_DIR}/lib)
|
||||||
|
|
@ -52,9 +51,45 @@ ADD_DEPENDENCIES(rmc_mpi peo)
|
||||||
### 3) Optionnal: define your lib version:
|
### 3) Optionnal: define your lib version:
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
SET(RMC_MPI_VERSION "1.0.beta")
|
SET(RMC_MPI_VERSION ${GLOBAL_VERSION})
|
||||||
SET_TARGET_PROPERTIES(rmc_mpi PROPERTIES VERSION "${RMC_MPI_VERSION}")
|
SET_TARGET_PROPERTIES(rmc_mpi PROPERTIES VERSION "${RMC_MPI_VERSION}")
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
### 4) Link the librairies for your target(s)
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
|
# No library required
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
### 5) 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)
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
### 6) Where must cmake go now ?
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
|
# nothing to be compiled in the subdirs
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,13 @@ ADD_CUSTOM_COMMAND(
|
||||||
ARGS -E copy_if_different
|
ARGS -E copy_if_different
|
||||||
${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson1/schema.xml
|
${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson1/schema.xml
|
||||||
${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson1)
|
${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson1)
|
||||||
|
ADD_CUSTOM_COMMAND(
|
||||||
|
TARGET install
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND}
|
||||||
|
ARGS -E copy_if_different
|
||||||
|
${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson1/ParadisEO-PEO_Lesson1.pdf
|
||||||
|
${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson1)
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -28,23 +35,23 @@ ADD_CUSTOM_COMMAND(
|
||||||
### 1) Include the sources
|
### 1) Include the sources
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(${EO_SRC_DIR})
|
INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src ${TSP_SRC_DIR})
|
||||||
INCLUDE_DIRECTORIES(${MO_SRC_DIR})
|
|
||||||
INCLUDE_DIRECTORIES(${PEO_SRC_DIR})
|
|
||||||
INCLUDE_DIRECTORIES(${TSP_SRC_DIR})
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
### 2) Specify where CMake can find the libraries (mandatory: before 3) )
|
### 2) Specify where CMake can find the libraries
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
LINK_DIRECTORIES( ${EO_SRC_DIR}
|
IF(NOT WIN32 OR CYGWIN)
|
||||||
${EO_SRC_DIR}/utils
|
LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib ${TSP_BINARY_DIR}/lib)
|
||||||
${ParadisEO-PEO_BINARY_DIR}/lib
|
ENDIF(NOT WIN32 OR CYGWIN)
|
||||||
${TSP_BINARY_DIR}/lib)
|
|
||||||
|
|
||||||
|
# especially for Visual Studio
|
||||||
|
IF(WIN32 AND NOT CYGWIN)
|
||||||
|
LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-PEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${TSP_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE})
|
||||||
|
ENDIF(WIN32 AND NOT CYGWIN)
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -52,20 +59,16 @@ LINK_DIRECTORIES( ${EO_SRC_DIR}
|
||||||
### 3) Define your target(s): just an executable here
|
### 3) Define your target(s): just an executable here
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
# no matter what is the OS, hopefully
|
|
||||||
ADD_EXECUTABLE(tspExample main.cpp)
|
ADD_EXECUTABLE(tspExample main.cpp)
|
||||||
|
ADD_DEPENDENCIES(tspExample tsp peo rmc_mpi)
|
||||||
ADD_DEPENDENCIES(tspExample tsp)
|
|
||||||
ADD_DEPENDENCIES(tspExample peo)
|
|
||||||
ADD_DEPENDENCIES(tspExample rmc_mpi)
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
### 4) Optionnal: define your target(s)'s version: no effect for windows
|
### 4) Optionnal: define properties
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
SET(LESSON1_VERSION "1.0.beta")
|
SET(LESSON1_VERSION ${GLOBAL_VERSION})
|
||||||
SET_TARGET_PROPERTIES(tspExample PROPERTIES VERSION "${LESSON1_VERSION}")
|
SET_TARGET_PROPERTIES(tspExample PROPERTIES VERSION "${LESSON1_VERSION}")
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
@ -74,16 +77,29 @@ SET_TARGET_PROPERTIES(tspExample PROPERTIES VERSION "${LESSON1_VERSION}")
|
||||||
### 5) Link the librairies
|
### 5) Link the librairies
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
TARGET_LINK_LIBRARIES(tspExample ${XML2_LIBS}) # define in CMakeLists.txt at PEO root dir
|
TARGET_LINK_LIBRARIES(tspExample ${XML2_LIBS} tsp peo rmc_mpi eo eoutils)
|
||||||
TARGET_LINK_LIBRARIES(tspExample tsp)
|
|
||||||
TARGET_LINK_LIBRARIES(tspExample peo)
|
|
||||||
TARGET_LINK_LIBRARIES(tspExample rmc_mpi)
|
|
||||||
TARGET_LINK_LIBRARIES(tspExample eo)
|
|
||||||
TARGET_LINK_LIBRARIES(tspExample 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)
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
#include "param.h"
|
#include "param.h"
|
||||||
|
|
||||||
#include <paradiseo>
|
#include <peo>
|
||||||
|
|
||||||
|
|
||||||
#define POP_SIZE 10
|
#define POP_SIZE 10
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,13 @@ ADD_CUSTOM_COMMAND(
|
||||||
ARGS -E copy_if_different
|
ARGS -E copy_if_different
|
||||||
${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson2/schema.xml
|
${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson2/schema.xml
|
||||||
${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson2)
|
${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson2)
|
||||||
|
ADD_CUSTOM_COMMAND(
|
||||||
|
TARGET install
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND}
|
||||||
|
ARGS -E copy_if_different
|
||||||
|
${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson2/ParadisEO-PEO_Lesson2.pdf
|
||||||
|
${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson2)
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -28,23 +35,23 @@ ADD_CUSTOM_COMMAND(
|
||||||
### 1) Include the sources
|
### 1) Include the sources
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(${EO_SRC_DIR})
|
INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src ${TSP_SRC_DIR})
|
||||||
INCLUDE_DIRECTORIES(${MO_SRC_DIR})
|
|
||||||
INCLUDE_DIRECTORIES(${PEO_SRC_DIR})
|
|
||||||
INCLUDE_DIRECTORIES(${TSP_SRC_DIR})
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
### 2) Specify where CMake can find the libraries (mandatory: before 3) )
|
### 2) Specify where CMake can find the libraries
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
LINK_DIRECTORIES( ${EO_SRC_DIR}
|
IF(NOT WIN32 OR CYGWIN)
|
||||||
${EO_SRC_DIR}/utils
|
LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib ${TSP_BINARY_DIR}/lib)
|
||||||
${ParadisEO-PEO_BINARY_DIR}/lib
|
ENDIF(NOT WIN32 OR CYGWIN)
|
||||||
${TSP_BINARY_DIR}/lib)
|
|
||||||
|
# especially for Visual Studio
|
||||||
|
IF(WIN32 AND NOT CYGWIN)
|
||||||
|
LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-PEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${TSP_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE})
|
||||||
|
ENDIF(WIN32 AND NOT CYGWIN)
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -52,21 +59,16 @@ LINK_DIRECTORIES( ${EO_SRC_DIR}
|
||||||
### 3) Define your target(s): just an executable here
|
### 3) Define your target(s): just an executable here
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
# no matter what is the OS, hopefully
|
|
||||||
ADD_EXECUTABLE(tspExample main.cpp)
|
ADD_EXECUTABLE(tspExample main.cpp)
|
||||||
|
ADD_DEPENDENCIES(tspExample tsp peo rmc_mpi)
|
||||||
ADD_DEPENDENCIES(tspExample tsp)
|
|
||||||
ADD_DEPENDENCIES(tspExample peo)
|
|
||||||
ADD_DEPENDENCIES(tspExample rmc_mpi)
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
### 4) Optionnal: define your target(s)'s version: no effect for windows
|
### 4) Optionnal: define properties
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
SET(LESSON2_VERSION "1.0.beta")
|
SET(LESSON2_VERSION ${GLOBAL_VERSION})
|
||||||
SET_TARGET_PROPERTIES(tspExample PROPERTIES VERSION "${LESSON2_VERSION}")
|
SET_TARGET_PROPERTIES(tspExample PROPERTIES VERSION "${LESSON2_VERSION}")
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
@ -75,16 +77,29 @@ SET_TARGET_PROPERTIES(tspExample PROPERTIES VERSION "${LESSON2_VERSION}")
|
||||||
### 5) Link the librairies
|
### 5) Link the librairies
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
TARGET_LINK_LIBRARIES(tspExample ${XML2_LIBS}) # define in CMakeLists.txt at PEO root dir
|
TARGET_LINK_LIBRARIES(tspExample ${XML2_LIBS} tsp peo rmc_mpi eo eoutils)
|
||||||
TARGET_LINK_LIBRARIES(tspExample tsp)
|
|
||||||
TARGET_LINK_LIBRARIES(tspExample peo)
|
|
||||||
TARGET_LINK_LIBRARIES(tspExample rmc_mpi)
|
|
||||||
TARGET_LINK_LIBRARIES(tspExample eo)
|
|
||||||
TARGET_LINK_LIBRARIES(tspExample 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)
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
#include "part_route_eval.h"
|
#include "part_route_eval.h"
|
||||||
|
|
||||||
|
|
||||||
#include <paradiseo>
|
#include <peo>
|
||||||
|
|
||||||
|
|
||||||
#define POP_SIZE 10
|
#define POP_SIZE 10
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
######################################################################################
|
######################################################################################
|
||||||
### 0) Set the compiler and define targets to easily run the lessons
|
### 0) Set the compiler and define targets to easily run the lessons
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
SET (CMAKE_CXX_COMPILER mpicxx)
|
SET (CMAKE_CXX_COMPILER mpicxx)
|
||||||
|
|
||||||
ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson3/lesson.param ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson3/schema.xml)
|
ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson3/lesson.param ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson3/schema.xml)
|
||||||
|
|
@ -20,31 +21,37 @@ ADD_CUSTOM_COMMAND(
|
||||||
ARGS -E copy_if_different
|
ARGS -E copy_if_different
|
||||||
${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson3/schema.xml
|
${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson3/schema.xml
|
||||||
${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson3)
|
${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson3)
|
||||||
|
ADD_CUSTOM_COMMAND(
|
||||||
|
TARGET install
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND}
|
||||||
|
ARGS -E copy_if_different
|
||||||
|
${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson3/ParadisEO-PEO_Lesson3.pdf
|
||||||
|
${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson3)
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
### 1) Include the sources
|
### 1) Include the sources
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(${EO_SRC_DIR})
|
INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src ${TSP_SRC_DIR})
|
||||||
INCLUDE_DIRECTORIES(${MO_SRC_DIR})
|
|
||||||
INCLUDE_DIRECTORIES(${PEO_SRC_DIR})
|
|
||||||
INCLUDE_DIRECTORIES(${TSP_SRC_DIR})
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
### 2) Specify where CMake can find the libraries (mandatory: before 3) )
|
### 2) Specify where CMake can find the libraries
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
LINK_DIRECTORIES( ${EO_SRC_DIR}
|
IF(NOT WIN32 OR CYGWIN)
|
||||||
${EO_SRC_DIR}/utils
|
LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib ${TSP_BINARY_DIR}/lib)
|
||||||
${ParadisEO-PEO_BINARY_DIR}/lib
|
ENDIF(NOT WIN32 OR CYGWIN)
|
||||||
${TSP_BINARY_DIR}/lib)
|
|
||||||
|
|
||||||
|
# especially for Visual Studio
|
||||||
|
IF(WIN32 AND NOT CYGWIN)
|
||||||
|
LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-PEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${TSP_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE})
|
||||||
|
ENDIF(WIN32 AND NOT CYGWIN)
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -52,21 +59,16 @@ LINK_DIRECTORIES( ${EO_SRC_DIR}
|
||||||
### 3) Define your target(s): just an executable here
|
### 3) Define your target(s): just an executable here
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
# no matter what is the OS, hopefully
|
|
||||||
ADD_EXECUTABLE(tspExample main.cpp)
|
ADD_EXECUTABLE(tspExample main.cpp)
|
||||||
|
ADD_DEPENDENCIES(tspExample tsp peo rmc_mpi)
|
||||||
ADD_DEPENDENCIES(tspExample tsp)
|
|
||||||
ADD_DEPENDENCIES(tspExample peo)
|
|
||||||
ADD_DEPENDENCIES(tspExample rmc_mpi)
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
### 4) Optionnal: define your target(s)'s version: no effect for windows
|
### 4) Optionnal: define properties
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
SET(LESSON3_VERSION "1.0.beta")
|
SET(LESSON3_VERSION ${GLOBAL_VERSION})
|
||||||
SET_TARGET_PROPERTIES(tspExample PROPERTIES VERSION "${LESSON3_VERSION}")
|
SET_TARGET_PROPERTIES(tspExample PROPERTIES VERSION "${LESSON3_VERSION}")
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
@ -75,16 +77,29 @@ SET_TARGET_PROPERTIES(tspExample PROPERTIES VERSION "${LESSON3_VERSION}")
|
||||||
### 5) Link the librairies
|
### 5) Link the librairies
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
TARGET_LINK_LIBRARIES(tspExample ${XML2_LIBS}) # define in CMakeLists.txt at PEO root dir
|
TARGET_LINK_LIBRARIES(tspExample ${XML2_LIBS} tsp peo rmc_mpi eo eoutils)
|
||||||
TARGET_LINK_LIBRARIES(tspExample tsp)
|
|
||||||
TARGET_LINK_LIBRARIES(tspExample peo)
|
|
||||||
TARGET_LINK_LIBRARIES(tspExample rmc_mpi)
|
|
||||||
TARGET_LINK_LIBRARIES(tspExample eo)
|
|
||||||
TARGET_LINK_LIBRARIES(tspExample 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)
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
#include "param.h"
|
#include "param.h"
|
||||||
|
|
||||||
|
|
||||||
#include <paradiseo>
|
#include <peo>
|
||||||
|
|
||||||
|
|
||||||
#define POP_SIZE 10
|
#define POP_SIZE 10
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,13 @@ ADD_CUSTOM_COMMAND(
|
||||||
ARGS -E copy_directory
|
ARGS -E copy_directory
|
||||||
${ParadisEO-PEO_SOURCE_DIR}/tutorial/Walkthrough/config
|
${ParadisEO-PEO_SOURCE_DIR}/tutorial/Walkthrough/config
|
||||||
${ParadisEO-PEO_BINARY_DIR}/tutorial/Walkthrough/config)
|
${ParadisEO-PEO_BINARY_DIR}/tutorial/Walkthrough/config)
|
||||||
|
ADD_CUSTOM_COMMAND(
|
||||||
|
TARGET install
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND}
|
||||||
|
ARGS -E copy_if_different
|
||||||
|
${ParadisEO-PEO_SOURCE_DIR}/tutorial/Walkthrough/ParadisEO-PEO_Walkthrough.pdf
|
||||||
|
${ParadisEO-PEO_BINARY_DIR}/tutorial/Walkthrough)
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -21,10 +28,7 @@ ADD_CUSTOM_COMMAND(
|
||||||
### 1) Include the sources
|
### 1) Include the sources
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(${EO_SRC_DIR})
|
INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src ${TSP_SRC_DIR})
|
||||||
INCLUDE_DIRECTORIES(${MO_SRC_DIR})
|
|
||||||
INCLUDE_DIRECTORIES(${PEO_SRC_DIR})
|
|
||||||
INCLUDE_DIRECTORIES(${TSP_SRC_DIR})
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
@ -33,10 +37,14 @@ INCLUDE_DIRECTORIES(${TSP_SRC_DIR})
|
||||||
### 2) Specify where CMake can find the libraries (mandatory: before 3) )
|
### 2) Specify where CMake can find the libraries (mandatory: before 3) )
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
LINK_DIRECTORIES( ${EO_SRC_DIR}
|
IF(NOT WIN32 OR CYGWIN)
|
||||||
${EO_SRC_DIR}/utils
|
LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib ${TSP_BINARY_DIR}/lib)
|
||||||
${PEO_DIR}/build
|
ENDIF(NOT WIN32 OR CYGWIN)
|
||||||
${TSP_BINARY_DIR}/lib)
|
|
||||||
|
# especially for Visual Studio
|
||||||
|
IF(WIN32 AND NOT CYGWIN)
|
||||||
|
LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-PEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${TSP_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE})
|
||||||
|
ENDIF(WIN32 AND NOT CYGWIN)
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
@ -52,32 +60,20 @@ ADD_EXECUTABLE(exampleC exampleC.cpp)
|
||||||
ADD_EXECUTABLE(exampleD exampleD.cpp)
|
ADD_EXECUTABLE(exampleD exampleD.cpp)
|
||||||
ADD_EXECUTABLE(exampleE exampleE.cpp)
|
ADD_EXECUTABLE(exampleE exampleE.cpp)
|
||||||
|
|
||||||
ADD_DEPENDENCIES(exampleA tsp)
|
ADD_DEPENDENCIES(exampleA tsp peo rmc_mpi)
|
||||||
ADD_DEPENDENCIES(exampleB tsp)
|
ADD_DEPENDENCIES(exampleB tsp peo rmc_mpi)
|
||||||
ADD_DEPENDENCIES(exampleC tsp)
|
ADD_DEPENDENCIES(exampleC tsp peo rmc_mpi)
|
||||||
ADD_DEPENDENCIES(exampleD tsp)
|
ADD_DEPENDENCIES(exampleD tsp peo rmc_mpi)
|
||||||
ADD_DEPENDENCIES(exampleE tsp)
|
ADD_DEPENDENCIES(exampleE tsp peo rmc_mpi)
|
||||||
|
|
||||||
ADD_DEPENDENCIES(exampleA peo)
|
|
||||||
ADD_DEPENDENCIES(exampleB peo)
|
|
||||||
ADD_DEPENDENCIES(exampleC peo)
|
|
||||||
ADD_DEPENDENCIES(exampleD peo)
|
|
||||||
ADD_DEPENDENCIES(exampleE peo)
|
|
||||||
|
|
||||||
ADD_DEPENDENCIES(exampleA rmc_mpi)
|
|
||||||
ADD_DEPENDENCIES(exampleB rmc_mpi)
|
|
||||||
ADD_DEPENDENCIES(exampleC rmc_mpi)
|
|
||||||
ADD_DEPENDENCIES(exampleD rmc_mpi)
|
|
||||||
ADD_DEPENDENCIES(exampleE rmc_mpi)
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
### 4) Optionnal: define your target(s)'s version: no effect for windows
|
### 4) Optionnal: define your target's properties
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
SET(WALKTHROUGH_VERSION "1.0.beta")
|
SET(WALKTHROUGH_VERSION ${GLOBAL_VERSION})
|
||||||
SET_TARGET_PROPERTIES(exampleA PROPERTIES VERSION "${WALKTHROUGH_VERSION}")
|
SET_TARGET_PROPERTIES(exampleA PROPERTIES VERSION "${WALKTHROUGH_VERSION}")
|
||||||
SET_TARGET_PROPERTIES(exampleB PROPERTIES VERSION "${WALKTHROUGH_VERSION}")
|
SET_TARGET_PROPERTIES(exampleB PROPERTIES VERSION "${WALKTHROUGH_VERSION}")
|
||||||
SET_TARGET_PROPERTIES(exampleC PROPERTIES VERSION "${WALKTHROUGH_VERSION}")
|
SET_TARGET_PROPERTIES(exampleC PROPERTIES VERSION "${WALKTHROUGH_VERSION}")
|
||||||
|
|
@ -90,40 +86,31 @@ SET_TARGET_PROPERTIES(exampleE PROPERTIES VERSION "${WALKTHROUGH_VERSION}")
|
||||||
### 5) Link the librairies
|
### 5) Link the librairies
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
TARGET_LINK_LIBRARIES(exampleA ${XML2_LIBS}) # define in CMakeLists.txt at PEO root dir
|
TARGET_LINK_LIBRARIES(exampleA ${XML2_LIBS} tsp peo rmc_mpi eo eoutils)
|
||||||
TARGET_LINK_LIBRARIES(exampleB ${XML2_LIBS}) # define in CMakeLists.txt at PEO root dir
|
TARGET_LINK_LIBRARIES(exampleB ${XML2_LIBS} tsp peo rmc_mpi eo eoutils)
|
||||||
TARGET_LINK_LIBRARIES(exampleC ${XML2_LIBS}) # define in CMakeLists.txt at PEO root dir
|
TARGET_LINK_LIBRARIES(exampleC ${XML2_LIBS} tsp peo rmc_mpi eo eoutils)
|
||||||
TARGET_LINK_LIBRARIES(exampleD ${XML2_LIBS}) # define in CMakeLists.txt at PEO root dir
|
TARGET_LINK_LIBRARIES(exampleD ${XML2_LIBS} tsp peo rmc_mpi eo eoutils)
|
||||||
TARGET_LINK_LIBRARIES(exampleE ${XML2_LIBS}) # define in CMakeLists.txt at PEO root dir
|
TARGET_LINK_LIBRARIES(exampleE ${XML2_LIBS} tsp peo rmc_mpi eo eoutils)
|
||||||
|
|
||||||
TARGET_LINK_LIBRARIES(exampleA tsp)
|
|
||||||
TARGET_LINK_LIBRARIES(exampleB tsp)
|
|
||||||
TARGET_LINK_LIBRARIES(exampleC tsp)
|
|
||||||
TARGET_LINK_LIBRARIES(exampleD tsp)
|
|
||||||
TARGET_LINK_LIBRARIES(exampleE tsp)
|
|
||||||
|
|
||||||
TARGET_LINK_LIBRARIES(exampleA peo)
|
|
||||||
TARGET_LINK_LIBRARIES(exampleB peo)
|
|
||||||
TARGET_LINK_LIBRARIES(exampleC peo)
|
|
||||||
TARGET_LINK_LIBRARIES(exampleD peo)
|
|
||||||
TARGET_LINK_LIBRARIES(exampleE peo)
|
|
||||||
|
|
||||||
TARGET_LINK_LIBRARIES(exampleA rmc_mpi)
|
|
||||||
TARGET_LINK_LIBRARIES(exampleB rmc_mpi)
|
|
||||||
TARGET_LINK_LIBRARIES(exampleC rmc_mpi)
|
|
||||||
TARGET_LINK_LIBRARIES(exampleD rmc_mpi)
|
|
||||||
TARGET_LINK_LIBRARIES(exampleE rmc_mpi)
|
|
||||||
|
|
||||||
TARGET_LINK_LIBRARIES(exampleA eo)
|
|
||||||
TARGET_LINK_LIBRARIES(exampleB eo)
|
|
||||||
TARGET_LINK_LIBRARIES(exampleC eo)
|
|
||||||
TARGET_LINK_LIBRARIES(exampleD eo)
|
|
||||||
TARGET_LINK_LIBRARIES(exampleE eo)
|
|
||||||
|
|
||||||
TARGET_LINK_LIBRARIES(exampleA eoutils)
|
|
||||||
TARGET_LINK_LIBRARIES(exampleB eoutils)
|
|
||||||
TARGET_LINK_LIBRARIES(exampleC eoutils)
|
|
||||||
TARGET_LINK_LIBRARIES(exampleD eoutils)
|
|
||||||
TARGET_LINK_LIBRARIES(exampleE 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)
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
#include "two_opt_next.h"
|
#include "two_opt_next.h"
|
||||||
#include "two_opt_incr_eval.h"
|
#include "two_opt_incr_eval.h"
|
||||||
|
|
||||||
#include <paradiseo>
|
#include <peo>
|
||||||
|
|
||||||
#define POP_SIZE 10
|
#define POP_SIZE 10
|
||||||
#define NUM_GEN 10
|
#define NUM_GEN 10
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
#include "two_opt_next.h"
|
#include "two_opt_next.h"
|
||||||
#include "two_opt_incr_eval.h"
|
#include "two_opt_incr_eval.h"
|
||||||
|
|
||||||
#include <paradiseo>
|
#include <peo>
|
||||||
|
|
||||||
#define POP_SIZE 10
|
#define POP_SIZE 10
|
||||||
#define NUM_GEN 10
|
#define NUM_GEN 10
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
#include "two_opt_next.h"
|
#include "two_opt_next.h"
|
||||||
#include "two_opt_incr_eval.h"
|
#include "two_opt_incr_eval.h"
|
||||||
|
|
||||||
#include <paradiseo>
|
#include <peo>
|
||||||
|
|
||||||
#define POP_SIZE 10
|
#define POP_SIZE 10
|
||||||
#define NUM_GEN 10
|
#define NUM_GEN 10
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
#include "two_opt_next.h"
|
#include "two_opt_next.h"
|
||||||
#include "two_opt_incr_eval.h"
|
#include "two_opt_incr_eval.h"
|
||||||
|
|
||||||
#include <paradiseo>
|
#include <peo>
|
||||||
|
|
||||||
#define POP_SIZE 10
|
#define POP_SIZE 10
|
||||||
#define NUM_GEN 10
|
#define NUM_GEN 10
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
#include "two_opt_next.h"
|
#include "two_opt_next.h"
|
||||||
#include "two_opt_incr_eval.h"
|
#include "two_opt_incr_eval.h"
|
||||||
|
|
||||||
#include <paradiseo>
|
#include <peo>
|
||||||
|
|
||||||
#define POP_SIZE 10
|
#define POP_SIZE 10
|
||||||
#define NUM_GEN 10
|
#define NUM_GEN 10
|
||||||
|
|
|
||||||
|
|
@ -19,9 +19,9 @@ ADD_CUSTOM_COMMAND(
|
||||||
### 1) Include the sources
|
### 1) Include the sources
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(${EO_SRC_DIR})
|
INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src)
|
||||||
INCLUDE_DIRECTORIES(${MO_SRC_DIR})
|
INCLUDE_DIRECTORIES(${MO_SRC_DIR}/src)
|
||||||
INCLUDE_DIRECTORIES(${PEO_SRC_DIR})
|
INCLUDE_DIRECTORIES(${ParadisEO-PEO_SOURCE_DIR}/src)
|
||||||
|
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
@ -76,7 +76,35 @@ ADD_LIBRARY(tsp STATIC ${TSP_SOURCES})
|
||||||
### 3) Optionnal: define your lib's version
|
### 3) Optionnal: define your lib's version
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
SET(TSP_VERSION "1.0.beta")
|
SET(TSP_VERSION ${GLOBAL_VERSION})
|
||||||
SET_TARGET_PROPERTIES(tsp PROPERTIES VERSION "${TSP_VERSION}")
|
SET_TARGET_PROPERTIES(tsp PROPERTIES VERSION "${TSP_VERSION}")
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
### 4) 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)
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
### 5) Where must cmake go now ?
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
|
# nothing to be compiled in the subdirs
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# Project related configuration options
|
# Project related configuration options
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
PROJECT_NAME = "ParadisEO-PEO - Lessons"
|
PROJECT_NAME = "@PACKAGE_NAME@ - Lessons"
|
||||||
PROJECT_NUMBER = 0.1
|
PROJECT_NUMBER = @PACKAGE_VERSION@
|
||||||
OUTPUT_DIRECTORY = ../../docs/html/lsnshared
|
OUTPUT_DIRECTORY = @CMAKE_BINARY_DIR@/doc/html/lsnshared
|
||||||
CREATE_SUBDIRS = NO
|
CREATE_SUBDIRS = NO
|
||||||
OUTPUT_LANGUAGE = English
|
OUTPUT_LANGUAGE = English
|
||||||
USE_WINDOWS_ENCODING = NO
|
USE_WINDOWS_ENCODING = NO
|
||||||
|
|
@ -25,7 +25,7 @@ ABBREVIATE_BRIEF = "The $name class" \
|
||||||
ALWAYS_DETAILED_SEC = NO
|
ALWAYS_DETAILED_SEC = NO
|
||||||
INLINE_INHERITED_MEMB = NO
|
INLINE_INHERITED_MEMB = NO
|
||||||
FULL_PATH_NAMES = NO
|
FULL_PATH_NAMES = NO
|
||||||
STRIP_FROM_PATH =
|
STRIP_FROM_PATH = @CMAKE_SOURCE_DIR@
|
||||||
STRIP_FROM_INC_PATH =
|
STRIP_FROM_INC_PATH =
|
||||||
SHORT_NAMES = NO
|
SHORT_NAMES = NO
|
||||||
JAVADOC_AUTOBRIEF = YES
|
JAVADOC_AUTOBRIEF = YES
|
||||||
|
|
@ -76,13 +76,13 @@ QUIET = YES
|
||||||
WARNINGS = YES
|
WARNINGS = YES
|
||||||
WARN_IF_UNDOCUMENTED = YES
|
WARN_IF_UNDOCUMENTED = YES
|
||||||
WARN_IF_DOC_ERROR = YES
|
WARN_IF_DOC_ERROR = YES
|
||||||
WARN_NO_PARAMDOC = NO
|
WARN_NO_PARAMDOC = YES
|
||||||
WARN_FORMAT = "$file:$line: $text"
|
WARN_FORMAT = "$file:$line: $text"
|
||||||
WARN_LOGFILE =
|
WARN_LOGFILE =
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# configuration options related to the input files
|
# configuration options related to the input files
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
INPUT = .
|
INPUT = @CMAKE_CURRENT_SOURCE_DIR@
|
||||||
FILE_PATTERNS = *.cpp \
|
FILE_PATTERNS = *.cpp \
|
||||||
*.h \
|
*.h \
|
||||||
NEWS \
|
NEWS \
|
||||||
|
|
@ -200,10 +200,10 @@ SKIP_FUNCTION_MACROS = YES
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# Configuration::additions related to external references
|
# Configuration::additions related to external references
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
TAGFILES = ../../../paradiseo-mo/docs/eo.doxytag=../../../../paradiseo-mo/docs/html \
|
TAGFILES = @EO_BIN_DIR@/doc/eo.doxytag=http://eodev.sourceforge.net/eo/doc/html \
|
||||||
../../../paradiseo-mo/docs/mo.doxytag=../../../../paradiseo-mo/docs/html \
|
@MO_BIN_DIR@/doc/mo.doxytag=@MO_BIN_DIR@/doc/html \
|
||||||
../../docs/paradiseo-peo.doxytag=../../
|
@ParadisEO-PEO_BINARY_DIR@/doc/peo.doxytag=@ParadisEO-PEO_BINARY_DIR@/doc/html
|
||||||
GENERATE_TAGFILE = ../../docs/paradiseo-peo-lsn-shared.doxytag
|
GENERATE_TAGFILE = @CMAKE_BINARY_DIR@/doc/paradiseo-peo-lsn-shared.doxytag
|
||||||
ALLEXTERNALS = NO
|
ALLEXTERNALS = NO
|
||||||
EXTERNAL_GROUPS = YES
|
EXTERNAL_GROUPS = YES
|
||||||
PERL_PATH = /usr/bin/perl
|
PERL_PATH = /usr/bin/perl
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue