diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/AUTHORS b/tags/paradiseo-moeo-1.0-beta-26-06-07/AUTHORS deleted file mode 100644 index ffa751632..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/AUTHORS +++ /dev/null @@ -1,4 +0,0 @@ -Arnaud Liefooghe -Thomas Legrand -Sébastien Cahon -Abdelhakim Deneche diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/ChangeLog b/tags/paradiseo-moeo-1.0-beta-26-06-07/ChangeLog deleted file mode 100644 index e69de29bb..000000000 diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/Makefile.am b/tags/paradiseo-moeo-1.0-beta-26-06-07/Makefile.am deleted file mode 100644 index 1d58ec812..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ -SUBDIRS = doc src tutorial - -clean_all: clean_aux clean_doc - -@make clean - -@(rm -rf aclocal.m4 autom4te.cache configure config.* CO* dep* INST* install-sh miss* mkins* Makefile Makefile.in;\ - cd doc; rm -rf Makefile Makefile.in *.doxytag; cd ../src ; rm -rf Makefile Makefile.in; cd core ; rm -rf Makefile Makefile.in;\ - cd ../../tutorial; rm -rf Makefile Makefile.in; cd Lesson1; rm -rf .deps/ Makefile Makefile.in *.status;\ - cd flowshop; rm -rf .deps/ Makefile Makefile.in; cd ../../Lesson2; rm -rf .deps/ Makefile Makefile.in) - -clean_aux: - -@find . \( -name "*~" -o -name "*.old" -o -name "#*" -o -name "*.bak" \) -print -exec rm -rf \{\} \; - -doc: - -@(cd doc; make doc) - -clean_doc: - -@(cd doc; make clean-local) diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/NEWS b/tags/paradiseo-moeo-1.0-beta-26-06-07/NEWS deleted file mode 100644 index 52e218e1c..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/NEWS +++ /dev/null @@ -1 +0,0 @@ -* release 1.0 diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/README b/tags/paradiseo-moeo-1.0-beta-26-06-07/README deleted file mode 100644 index c7633575f..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/README +++ /dev/null @@ -1,65 +0,0 @@ - PARADISEO-MOEO README FILE -======================================================================= - check latest news at http://paradiseo.gforge.inria.fr/ -======================================================================= - -Welcome to ParadisEO-MOEO, the Multi-Objective Evolving Objects library. -The latest news about ParadisEO-MOEO can be found on the gforge repository at -http://paradiseo.gforge.inria.fr/ -In case of any problem, please e-mail us at -paradiseo-help@lists.gforge.inria.fr - - -================================================================== - BUILDING PARADISEO-MOEO -================================================================== -The basic installation procedure goes the following: - -Go to your build-directory and run - > ./autogen.sh --with-EOdir=$(EO_SRC) - > make - > make doc - -where $(EO_SRC) is the top-level source directory of PARADISEO-EO. - -In case of problems, you can read the INSTALL file - but remember this -is a standard installation file from GNU and that it contains nothing -specific about PARADISEO-MOEO. - -To clean everything, the simply run - > make clean_all - -=================================================================== - DIRECTORY STRUCTURE -=================================================================== -After unpacking the archive file, you should end up with the following -structure: - -.../ The main PARADISEO-MOEO directory, created when unpacking. - | - +-- src SOURCE directory Contains most PARADISEO-MOEO .h files. - | - +-- docs DOCUMENTATION directory (generated by Doxygen). - | | - | +- html HTML files - start at index.html. - | | - | +- latex latex files - use to generate Postcript doc. - | | - | +- man Unix man format documentation. - | - | - +-- tutorials APPLICATIONS - one directory per separate application. - | - +-- lesson1 A bi-objective flow-shop problem example with main algorithms. - | | - | +- flowshop Flow-shop source files - | | - | +- benchmarks Instance files for testing. - | - |-- lesson2 Implement NSGA-II for the SCH1 problem. - -=================================================================== - NOTES -=================================================================== - -Mailing list : paradiseo-help@lists.gforge.inria.fr diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/autogen.sh b/tags/paradiseo-moeo-1.0-beta-26-06-07/autogen.sh deleted file mode 100644 index 293b7972e..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/autogen.sh +++ /dev/null @@ -1,148 +0,0 @@ -#!/bin/sh -# Run this to generate all the initial makefiles, etc. - -srcdir=`dirname $0` -PKG_NAME="the package." - -DIE=0 - -(autoconf --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`autoconf' installed to." - echo "Download the appropriate package for your distribution," - echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" - DIE=1 -} - -(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && { - (libtool --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`libtool' installed." - echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - } -} - -grep "^AM_GNU_GETTEXT" $srcdir/configure.in >/dev/null && { - grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \ - (gettext --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`gettext' installed." - echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - } -} - -grep "^AM_GNOME_GETTEXT" $srcdir/configure.in >/dev/null && { - grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \ - (gettext --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`gettext' installed." - echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - } -} - -(automake --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`automake' installed." - echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - NO_AUTOMAKE=yes -} - - -# if no automake, don't bother testing for aclocal -test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: Missing \`aclocal'. The version of \`automake'" - echo "installed doesn't appear recent enough." - echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 -} - -if test "$DIE" -eq 1; then - exit 1 -fi - -if test -z "$*"; then - echo "**Warning**: I am going to run \`configure' with no arguments." - echo "If you wish to pass any to it, please specify them on the" - echo \`$0\'" command line." - echo -fi - -case $CC in -xlc ) - am_opt=--include-deps;; -esac - -for coin in `find $srcdir -name configure.in -print` -do - dr=`dirname $coin` - if test -f $dr/NO-AUTO-GEN; then - echo skipping $dr -- flagged as no auto-gen - else - echo processing $dr - macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin` - ( cd $dr - aclocalinclude="$ACLOCAL_FLAGS" - for k in $macrodirs; do - if test -d $k; then - aclocalinclude="$aclocalinclude -I $k" - ##else - ## echo "**Warning**: No such directory \`$k'. Ignored." - fi - done - if grep "^AM_GNU_GETTEXT" configure.in >/dev/null; then - if grep "sed.*POTFILES" configure.in >/dev/null; then - : do nothing -- we still have an old unmodified configure.in - else - echo "Creating $dr/aclocal.m4 ..." - test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 - echo "Running gettextize... Ignore non-fatal messages." - echo "no" | gettextize --force --copy - echo "Making $dr/aclocal.m4 writable ..." - test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 - fi - fi - if grep "^AM_GNOME_GETTEXT" configure.in >/dev/null; then - echo "Creating $dr/aclocal.m4 ..." - test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 - echo "Running gettextize... Ignore non-fatal messages." - echo "no" | gettextize --force --copy - echo "Making $dr/aclocal.m4 writable ..." - test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 - fi - if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then - echo "Running libtoolize..." - libtoolize --force --copy - fi - echo "Running aclocal $aclocalinclude ..." - aclocal $aclocalinclude - if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then - echo "Running autoheader..." - autoheader - fi - echo "Running automake --gnu $am_opt ..." - automake --add-missing --gnu $am_opt - echo "Running autoconf ..." - autoconf - ) - fi -done - -#conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c - -if test x$NOCONFIGURE = x; then - echo Running $srcdir/configure $conf_flags "$@" ... - $srcdir/configure $conf_flags "$@" \ - && echo Now type \`make\' to compile $PKG_NAME -else - echo Skipping configure process. -fi diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/configure.in b/tags/paradiseo-moeo-1.0-beta-26-06-07/configure.in deleted file mode 100644 index 89efff8b7..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/configure.in +++ /dev/null @@ -1,45 +0,0 @@ -AC_INIT(configure.in) -AM_INIT_AUTOMAKE(moeo, 0.1) - -AC_ISC_POSIX -AC_PROG_CXX -AM_PROG_CC_STDC -AC_HEADER_STDC -AC_PROG_RANLIB - -AC_PROG_INSTALL -AC_PROG_LN_S -AC_PROG_MAKE_SET - -AC_C_CONST -AC_C_INLINE -AC_TYPE_SIZE_T - -AC_SUBST(EO_DIR) - -dnl EO -AC_ARG_WITH(EOdir, - --with-EOdir : Giving the path of the EO tree., - EO_DIR="$withval" - if test ! -d $EO_DIR - then - echo "" - echo "# --with-EOdir Invalid directory $withval" - exit 1 - fi, - echo "" - echo "# You forgot to give the path of the EO tree !" - echo "# Please write something like ... './configure --with-EOdir=\$HOME/eo'" - exit 1 - ) - -AC_OUTPUT([ -Makefile -src/Makefile -src/core/Makefile -doc/Makefile -tutorial/Makefile -tutorial/Lesson1/Makefile -tutorial/Lesson1/flowshop/Makefile -tutorial/Lesson2/Makefile -]) diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/doc/Makefile.am b/tags/paradiseo-moeo-1.0-beta-26-06-07/doc/Makefile.am deleted file mode 100644 index 254b2661c..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/doc/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -doc: - -@doxygen moeo.doxyfile - -clean-local: - rm -rf html latex man diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/doc/index.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/doc/index.h deleted file mode 100644 index 72ba706bb..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/doc/index.h +++ /dev/null @@ -1,44 +0,0 @@ -/** @mainpage Welcome to ParadisEO-MOEO - -@section intro Introduction - -ParadisEO-MOEO is a white-box object-oriented generic framework dedicated to the flexible design of evolutionary multi-objective algorithms. -This paradigm-free software embeds some features and techniques for Pareto-based resolution and -aims to provide a set of classes allowing to ease and speed up the development of computationally efficient programs. -It is based on a clear conceptual distinction between the solution methods and the multi-objective problems they are intended to solve. -This separation confers a maximum design and code reuse. -ParadisEO-MOEO provides a broad range of archive-related features (such as elitism or performance metrics) -and the most common Pareto-based fitness assignment strategies (MOGA, NSGA, SPEA, IBEA and more). -Furthermore, parallel and distributed models as well as hybridization mechanisms can be applied to an algorithm designed within ParadisEO-MOEO -using the whole version of ParadisEO. - - - -@section tutorials Tutorials - -Tutorials for ParadisEO-MOEO are available here. - - - -@section install Installation - -The installation procedure of the package is detailed in the README file in the top-directory of the source-tree. - - - -@section design Overall Design - -For an introduction to the design of ParadisEO-MOEO, -you can look at the ParadisEO website. -*/ - - - -/** @page webpages Related webpages - -- ParadisEO homepage -- INRIA GForge project page -- README -- NEWS -*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/doc/moeo.doxyfile b/tags/paradiseo-moeo-1.0-beta-26-06-07/doc/moeo.doxyfile deleted file mode 100644 index c5066b5c7..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/doc/moeo.doxyfile +++ /dev/null @@ -1,237 +0,0 @@ -# Doxyfile 1.5.1 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = ParadisEO-MOEO -PROJECT_NUMBER = 1.0 -OUTPUT_DIRECTORY = -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = NO -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = -STRIP_FROM_INC_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = YES -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO -INHERIT_DOCS = YES -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 8 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = NO -OPTIMIZE_OUTPUT_JAVA = NO -BUILTIN_STL_SUPPORT = NO -DISTRIBUTE_GROUP_DOC = NO -SUBGROUPING = YES -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = NO -EXTRACT_PRIVATE = YES -EXTRACT_STATIC = YES -EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO -HIDE_UNDOC_MEMBERS = YES -HIDE_UNDOC_CLASSES = YES -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = NO -CASE_SENSE_NAMES = YES -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = NO -SORT_BRIEF_DOCS = NO -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -SHOW_DIRECTORIES = NO -FILE_VERSION_FILTER = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = YES -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = . ../src -FILE_PATTERNS = *.cpp \ - *.h \ - NEWS README -RECURSIVE = YES -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = * -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = YES -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = YES -REFERENCES_RELATION = YES -REFERENCES_LINK_SOURCE = YES -USE_HTAGS = NO -VERBATIM_HEADERS = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = YES -COLS_IN_ALPHA_INDEX = 3 -IGNORE_PREFIX = moeo -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = YES -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = YES -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = YES -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = NO -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = ../../paradiseo-eo/doc/eo.doxytag=../../../paradiseo-eo/doc/html -GENERATE_TAGFILE = moeo.doxytag -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = NO -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -GROUP_GRAPHS = YES -UML_LOOK = NO -TEMPLATE_RELATIONS = NO -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -CALL_GRAPH = NO -CALLER_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DIRECTORY_GRAPH = YES -DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1024 -MAX_DOT_GRAPH_DEPTH = 0 -DOT_TRANSPARENT = NO -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = YES diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/Makefile.am b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/Makefile.am deleted file mode 100644 index 63f989053..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -SUBDIRS = core diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoAlgo.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoAlgo.h deleted file mode 100644 index 0bc47ee8a..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoAlgo.h +++ /dev/null @@ -1,21 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoAlgo.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOALGO_H_ -#define MOEOALGO_H_ - -/** - * Abstract class for multi-objective algorithms. - */ -class moeoAlgo {}; - -#endif /*MOEOALGO_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoCombinedLS.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoCombinedLS.h deleted file mode 100644 index 78b5b55a7..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoCombinedLS.h +++ /dev/null @@ -1,67 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoCombinedLS.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOCOMBINEDLS_H_ -#define MOEOCOMBINEDLS_H_ - -#include -#include -#include - -/** - * This class allows to embed a set of local searches that are sequentially applied, - * and so working and updating the same archive of non-dominated solutions. - */ -template < class MOEOT, class Type > -class moeoCombinedLS : public moeoLS < MOEOT, Type > -{ -public: - - /** - * Ctor - * @param _first_mols the first multi-objective local search to add - */ - moeoCombinedLS(moeoLS < MOEOT, Type > & _first_mols) - { - combinedLS.push_back (& _first_mols); - } - - /** - * Adds a new local search to combine - * @param _mols the multi-objective local search to add - */ - void add(moeoLS < MOEOT, Type > & _mols) - { - combinedLS.push_back(& _mols); - } - - /** - * Gives a new solution in order to explore the neigborhood. - * The new non-dominated solutions are added to the archive - * @param _type the object to apply the local search to - * @param _arch the archive of non-dominated solutions - */ - void operator () (Type _type, moeoArchive < MOEOT > & _arch) - { - for (unsigned int i=0; i operator()(_type, _arch); - } - - -private: - - /** the vector that contains the combined LS */ - std::vector< moeoLS < MOEOT, Type > * > combinedLS; - -}; - -#endif /*MOEOCOMBINEDLS_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoEA.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoEA.h deleted file mode 100644 index d01264cec..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoEA.h +++ /dev/null @@ -1,25 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoEA.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOEA_H_ -#define MOEOEA_H_ - -#include -#include - -/** - * Abstract class for multi-objective evolutionary algorithms. - */ -template < class MOEOT > -class moeoEA : public moeoAlgo, public eoAlgo < MOEOT > {}; - -#endif /*MOEOEA_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoEasyEA.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoEasyEA.h deleted file mode 100755 index 883a95e76..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoEasyEA.h +++ /dev/null @@ -1,218 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoEasyEA.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef _MOEOEASYEA_H -#define _MOEOEASYEA_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/** - * An easy class to design multi-objective evolutionary algorithms. - */ -template < class MOEOT > -class moeoEasyEA: public moeoEA < MOEOT > -{ -public: - - /** - * Ctor taking a breed and merge. - * @param _continuator the stopping criteria - * @param _eval the evaluation functions - * @param _breed the breeder - * @param _replace the replacement strategy - * @param _fitnessEval the fitness evaluation scheme - * @param _diversityEval the diversity evaluation scheme - * @param _evalFitAndDivBeforeSelection put this parameter to 'true' if you want to re-evalue the fitness and the diversity of the population before the selection process - */ - moeoEasyEA(eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoBreed < MOEOT > & _breed, moeoReplacement < MOEOT > & _replace, - moeoFitnessAssignment < MOEOT > & _fitnessEval, moeoDiversityAssignment < MOEOT > & _diversityEval, bool _evalFitAndDivBeforeSelection = false) - : - continuator(_continuator), eval (_eval), loopEval(_eval), popEval(loopEval), selectTransform(dummySelect, dummyTransform), breed(_breed), mergeReduce(dummyMerge, dummyReduce), replace(_replace), - fitnessEval(_fitnessEval), diversityEval(_diversityEval), evalFitAndDivBeforeSelection(_evalFitAndDivBeforeSelection) - {} - - - /** - * Ctor taking a breed, a merge and a eoPopEval. - * @param _continuator the stopping criteria - * @param _popEval the evaluation functions for the whole population - * @param _breed the breeder - * @param _replace the replacement strategy - * @param _fitnessEval the fitness evaluation scheme - * @param _diversityEval the diversity evaluation scheme - * @param _evalFitAndDivBeforeSelection put this parameter to 'true' if you want to re-evalue the fitness and the diversity of the population before the selection process - */ - moeoEasyEA(eoContinue < MOEOT > & _continuator, eoPopEvalFunc < MOEOT > & _popEval, eoBreed < MOEOT > & _breed, moeoReplacement < MOEOT > & _replace, - moeoFitnessAssignment < MOEOT > & _fitnessEval, moeoDiversityAssignment < MOEOT > & _diversityEval, bool _evalFitAndDivBeforeSelection = false) - : - continuator(_continuator), eval (dummyEval), loopEval(dummyEval), popEval(_popEval), selectTransform(dummySelect, dummyTransform), breed(_breed), mergeReduce(dummyMerge, dummyReduce), replace(_replace), - fitnessEval(_fitnessEval), diversityEval(_diversityEval), evalFitAndDivBeforeSelection(_evalFitAndDivBeforeSelection) - {} - - - /** - * Ctor taking a breed, a merge and a reduce. - * @param _continuator the stopping criteria - * @param _eval the evaluation functions - * @param _breed the breeder - * @param _merge the merge scheme - * @param _reduce the reduce scheme - * @param _fitnessEval the fitness evaluation scheme - * @param _diversityEval the diversity evaluation scheme - * @param _evalFitAndDivBeforeSelection put this parameter to 'true' if you want to re-evalue the fitness and the diversity of the population before the selection process - */ - moeoEasyEA(eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoBreed < MOEOT > & _breed, eoMerge < MOEOT > & _merge, eoReduce< MOEOT > & _reduce, - moeoFitnessAssignment < MOEOT > & _fitnessEval, moeoDiversityAssignment < MOEOT > & _diversityEval, bool _evalFitAndDivBeforeSelection = false) - : - continuator(_continuator), eval(_eval), loopEval(_eval), popEval(loopEval), selectTransform(dummySelect, dummyTransform), breed(_breed), mergeReduce(_merge,_reduce), replace(mergeReduce), - fitnessEval(_fitnessEval), diversityEval(_diversityEval), evalFitAndDivBeforeSelection(_evalFitAndDivBeforeSelection) - {} - - - /** - * Ctor taking a select, a transform and a replacement. - * @param _continuator the stopping criteria - * @param _eval the evaluation functions - * @param _select the selection scheme - * @param _transform the tranformation scheme - * @param _replace the replacement strategy - * @param _fitnessEval the fitness evaluation scheme - * @param _diversityEval the diversity evaluation scheme - * @param _evalFitAndDivBeforeSelection put this parameter to 'true' if you want to re-evalue the fitness and the diversity of the population before the selection process - */ - moeoEasyEA(eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoSelect < MOEOT > & _select, eoTransform < MOEOT > & _transform, moeoReplacement < MOEOT > & _replace, - moeoFitnessAssignment < MOEOT > & _fitnessEval, moeoDiversityAssignment < MOEOT > & _diversityEval, bool _evalFitAndDivBeforeSelection = false) - : - continuator(_continuator), eval(_eval), loopEval(_eval), popEval(loopEval), selectTransform(_select, _transform), breed(selectTransform), mergeReduce(dummyMerge, dummyReduce), replace(_replace), - fitnessEval(_fitnessEval), diversityEval(_diversityEval), evalFitAndDivBeforeSelection(_evalFitAndDivBeforeSelection) - {} - - - /** - * Ctor taking a select, a transform, a merge and a reduce. - * @param _continuator the stopping criteria - * @param _eval the evaluation functions - * @param _select the selection scheme - * @param _transform the tranformation scheme - * @param _merge the merge scheme - * @param _reduce the reduce scheme - * @param _fitnessEval the fitness evaluation scheme - * @param _diversityEval the diversity evaluation scheme - * @param _evalFitAndDivBeforeSelection put this parameter to 'true' if you want to re-evalue the fitness and the diversity of the population before the selection process - */ - moeoEasyEA(eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoSelect < MOEOT > & _select, eoTransform < MOEOT > & _transform, eoMerge < MOEOT > & _merge, eoReduce< MOEOT > & _reduce, - moeoFitnessAssignment < MOEOT > & _fitnessEval, moeoDiversityAssignment < MOEOT > & _diversityEval, bool _evalFitAndDivBeforeSelection = false) - : - continuator(_continuator), eval(_eval), loopEval(_eval), popEval(loopEval), selectTransform(_select, _transform), breed(selectTransform), mergeReduce(_merge,_reduce), replace(mergeReduce), - fitnessEval(_fitnessEval), diversityEval(_diversityEval), evalFitAndDivBeforeSelection(_evalFitAndDivBeforeSelection) - {} - - - /** - * Applies a few generation of evolution to the population _pop. - * @param _pop the population - */ - virtual void operator()(eoPop < MOEOT > & _pop) - { - eoPop < MOEOT > offspring, empty_pop; - popEval(empty_pop, _pop); // A first eval of pop. - bool firstTime = true; - do - { - try - { - unsigned int pSize = _pop.size(); - offspring.clear(); // new offspring - // fitness and diversity assignment (if you want to or if it is the first generation) - if (evalFitAndDivBeforeSelection || firstTime) - { - firstTime = false; - fitnessEval(_pop); - diversityEval(_pop); - } - breed(_pop, offspring); - popEval(_pop, offspring); // eval of parents + offspring if necessary - replace(_pop, offspring); // after replace, the new pop. is in _pop - if (pSize > _pop.size()) - { - throw std::runtime_error("Population shrinking!"); - } - else if (pSize < _pop.size()) - { - throw std::runtime_error("Population growing!"); - } - } - catch (std::exception& e) - { - std::string s = e.what(); - s.append( " in moeoEasyEA"); - throw std::runtime_error( s ); - } - } while (continuator(_pop)); - } - - -protected: - - /** the stopping criteria */ - eoContinue < MOEOT > & continuator; - /** the evaluation functions */ - eoEvalFunc < MOEOT > & eval; - /** to evaluate the whole population */ - eoPopLoopEval < MOEOT > loopEval; - /** to evaluate the whole population */ - eoPopEvalFunc < MOEOT > & popEval; - /** breed: a select followed by a transform */ - eoSelectTransform < MOEOT > selectTransform; - /** the breeder */ - eoBreed < MOEOT > & breed; - /** replacement: a merge followed by a reduce */ - eoMergeReduce < MOEOT > mergeReduce; - /** the replacment strategy */ - moeoReplacement < MOEOT > & replace; - /** the fitness assignment strategy */ - moeoFitnessAssignment < MOEOT > & fitnessEval; - /** the diversity assignment strategy */ - moeoDiversityAssignment < MOEOT > & diversityEval; - /** if this parameter is set to 'true', the fitness and the diversity of the whole population will be re-evaluated before the selection process */ - bool evalFitAndDivBeforeSelection; - /** a dummy eval */ - class eoDummyEval : public eoEvalFunc < MOEOT > - { public: /** the dummy functor */ - void operator()(MOEOT &) {}} dummyEval; - /** a dummy select */ - class eoDummySelect : public eoSelect < MOEOT > - { public: /** the dummy functor */ - void operator()(const eoPop < MOEOT > &, eoPop < MOEOT > &) {} } dummySelect; - /** a dummy transform */ - class eoDummyTransform : public eoTransform < MOEOT > - { public: /** the dummy functor */ - void operator()(eoPop < MOEOT > &) {} } dummyTransform; - /** a dummy merge */ - eoNoElitism < MOEOT > dummyMerge; - /** a dummy reduce */ - eoTruncate < MOEOT > dummyReduce; - -}; - -#endif /*MOEOEASYEA_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoHybridLS.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoHybridLS.h deleted file mode 100644 index 3f2d6fd6f..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoHybridLS.h +++ /dev/null @@ -1,76 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoHybridLS.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOHYBRIDLS_H_ -#define MOEOHYBRIDLS_H_ - -#include -#include -#include -#include -#include -#include - -/** - * This class allows to apply a multi-objective local search to a number of selected individuals contained in the archive - * at every generation until a stopping criteria is verified. - */ -template < class MOEOT > -class moeoHybridLS : public eoUpdater -{ -public: - - /** - * Ctor - * @param _term stopping criteria - * @param _select selector - * @param _mols a multi-objective local search - * @param _arch the archive - */ - moeoHybridLS (eoContinue < MOEOT > & _term, eoSelect < MOEOT > & _select, moeoLS < MOEOT, MOEOT > & _mols, moeoArchive < MOEOT > & _arch) : - term(_term), select(_select), mols(_mols), arch(_arch) - {} - - - /** - * Applies the multi-objective local search to selected individuals contained in the archive if the stopping criteria is not verified - */ - void operator () () - { - if (! term (arch)) - { - // selection of solutions - eoPop < MOEOT > selectedSolutions; - select(arch, selectedSolutions); - // apply the local search to every selected solution - for (unsigned int i=0; i & term; - /** selector */ - eoSelect < MOEOT > & select; - /** multi-objective local search */ - moeoLS < MOEOT, MOEOT > & mols; - /** archive */ - moeoArchive < MOEOT > & arch; - -}; - -#endif /*MOEOHYBRIDLS_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoIBEA.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoIBEA.h deleted file mode 100644 index 9f9d2efef..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoIBEA.h +++ /dev/null @@ -1,168 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoIBEA.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOIBEA_H_ -#define MOEOIBEA_H_ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/** - * IBEA (Indicator-Based Evolutionary Algorithm) as described in: - * E. Zitzler, S. Künzli, "Indicator-Based Selection in Multiobjective Search", Proc. 8th International Conference on Parallel Problem Solving from Nature (PPSN VIII), pp. 832-842, Birmingham, UK (2004). - * This class builds the IBEA algorithm only by using the fine-grained components of the ParadisEO-MOEO framework. - */ -template < class MOEOT > -class moeoIBEA : public moeoEA < MOEOT > -{ -public: - - /** The type of objective vector */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * Simple ctor with a eoGenOp. - * @param _maxGen number of generations before stopping - * @param _eval evaluation function - * @param _op variation operator - * @param _metric metric - * @param _kappa scaling factor kappa - */ - moeoIBEA (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op, moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric, const double _kappa=0.05) : - defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2), - fitnessAssignment(_metric, _kappa), replace(fitnessAssignment, dummyDiversityAssignment), genBreed(select, _op), breed(genBreed) - {} - - - /** - * Simple ctor with a eoTransform. - * @param _maxGen number of generations before stopping - * @param _eval evaluation function - * @param _op variation operator - * @param _metric metric - * @param _kappa scaling factor kappa - */ - moeoIBEA (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op, moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric, const double _kappa=0.05) : - defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2), - fitnessAssignment(_metric, _kappa), replace(fitnessAssignment, dummyDiversityAssignment), genBreed(select, _op), breed(genBreed) - {} - - - /** - * Ctor with a crossover, a mutation and their corresponding rates. - * @param _maxGen number of generations before stopping - * @param _eval evaluation function - * @param _crossover crossover - * @param _pCross crossover probability - * @param _mutation mutation - * @param _pMut mutation probability - * @param _metric metric - * @param _kappa scaling factor kappa - */ - moeoIBEA (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoQuadOp < MOEOT > & _crossover, double _pCross, eoMonOp < MOEOT > & _mutation, double _pMut, moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric, const double _kappa=0.05) : - defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select (2), - fitnessAssignment(_metric, _kappa), replace (fitnessAssignment, dummyDiversityAssignment), defaultSGAGenOp(_crossover, _pCross, _mutation, _pMut), - genBreed (select, defaultSGAGenOp), breed (genBreed) - {} - - - /** - * Ctor with a continuator (instead of _maxGen) and a eoGenOp. - * @param _continuator stopping criteria - * @param _eval evaluation function - * @param _op variation operator - * @param _metric metric - * @param _kappa scaling factor kappa - */ - moeoIBEA (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op, moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric, const double _kappa=0.05) : - continuator(_continuator), popEval(_eval), select(2), - fitnessAssignment(_metric, _kappa), replace(fitnessAssignment, dummyDiversityAssignment), genBreed(select, _op), breed(genBreed) - {} - - - /** - * Ctor with a continuator (instead of _maxGen) and a eoTransform. - * @param _continuator stopping criteria - * @param _eval evaluation function - * @param _op variation operator - * @param _metric metric - * @param _kappa scaling factor kappa - */ - moeoIBEA (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op, moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric, const double _kappa=0.05) : - continuator(_continuator), popEval(_eval), select(2), - fitnessAssignment(_metric, _kappa), replace(fitnessAssignment, dummyDiversityAssignment), genBreed(select, _op), breed(genBreed) - {} - - - /** - * Apply a few generation of evolution to the population _pop until the stopping criteria is verified. - * @param _pop the population - */ - virtual void operator () (eoPop < MOEOT > &_pop) - { - eoPop < MOEOT > offspring, empty_pop; - popEval (empty_pop, _pop); // a first eval of _pop - // evaluate fitness and diversity - fitnessAssignment(_pop); - dummyDiversityAssignment(_pop); - do - { - // generate offspring, worths are recalculated if necessary - breed (_pop, offspring); - // eval of offspring - popEval (_pop, offspring); - // after replace, the new pop is in _pop. Worths are recalculated if necessary - replace (_pop, offspring); - } while (continuator (_pop)); - } - - -protected: - - /** a continuator based on the number of generations (used as default) */ - eoGenContinue < MOEOT > defaultGenContinuator; - /** stopping criteria */ - eoContinue < MOEOT > & continuator; - /** evaluation function used to evaluate the whole population */ - eoPopLoopEval < MOEOT > popEval; - /** binary tournament selection */ - moeoDetTournamentSelect < MOEOT > select; - /** fitness assignment used in IBEA */ - moeoIndicatorBasedFitnessAssignment < MOEOT > fitnessAssignment; - /** dummy diversity assignment */ - moeoDummyDiversityAssignment < MOEOT > dummyDiversityAssignment; - /** elitist replacement */ - moeoEnvironmentalReplacement < MOEOT > replace; - /** an object for genetic operators (used as default) */ - eoSGAGenOp < MOEOT > defaultSGAGenOp; - /** general breeder */ - eoGeneralBreeder < MOEOT > genBreed; - /** breeder */ - eoBreed < MOEOT > & breed; - -}; - -#endif /*MOEOIBEA_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoIBMOLS.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoIBMOLS.h deleted file mode 100755 index e34a459fc..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoIBMOLS.h +++ /dev/null @@ -1,280 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoIBMOLS.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOIBMOLS_H_ -#define MOEOIBMOLS_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/** - * Indicator-Based Multi-Objective Local Search (IBMOLS) as described in - * Basseur M., Burke K. : "Indicator-Based Multi-Objective Local Search" (2007). - */ -template < class MOEOT, class Move > -class moeoIBMOLS : public moeoLS < MOEOT, eoPop < MOEOT > & > -{ -public: - - /** The type of objective vector */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * Ctor. - * @param _moveInit the move initializer - * @param _nextMove the neighborhood explorer - * @param _eval the full evaluation - * @param _moveIncrEval the incremental evaluation - * @param _fitnessAssignment the fitness assignment strategy - * @param _continuator the stopping criteria - */ - moeoIBMOLS( - moMoveInit < Move > & _moveInit, - moNextMove < Move > & _nextMove, - eoEvalFunc < MOEOT > & _eval, - moeoMoveIncrEval < Move > & _moveIncrEval, - moeoIndicatorBasedFitnessAssignment < MOEOT > & _fitnessAssignment, - eoContinue < MOEOT > & _continuator - ) : - moveInit(_moveInit), - nextMove(_nextMove), - eval(_eval), - moveIncrEval(_moveIncrEval), - fitnessAssignment (_fitnessAssignment), - continuator (_continuator) - {} - - - /** - * Apply the local search until a local archive does not change or - * another stopping criteria is met and update the archive _arch with new non-dominated solutions. - * @param _pop the initial population - * @param _arch the (updated) archive - */ - void operator() (eoPop < MOEOT > & _pop, moeoArchive < MOEOT > & _arch) - { - // evaluation of the objective values - /* - for (unsigned int i=0; i<_pop.size(); i++) - { - eval(_pop[i]); - } - */ - // fitness assignment for the whole population - fitnessAssignment(_pop); - // creation of a local archive - moeoArchive < MOEOT > archive; - // creation of another local archive (for the stopping criteria) - moeoArchive < MOEOT > previousArchive; - // update the archive with the initial population - archive.update(_pop); - do - { - previousArchive.update(archive); - oneStep(_pop); - archive.update(_pop); - } while ( (! archive.equals(previousArchive)) && (continuator(_arch)) ); - _arch.update(archive); - } - - -private: - - /** the move initializer */ - moMoveInit < Move > & moveInit; - /** the neighborhood explorer */ - moNextMove < Move > & nextMove; - /** the full evaluation */ - eoEvalFunc < MOEOT > & eval; - /** the incremental evaluation */ - moeoMoveIncrEval < Move > & moveIncrEval; - /** the fitness assignment strategy */ - moeoIndicatorBasedFitnessAssignment < MOEOT > & fitnessAssignment; - /** the stopping criteria */ - eoContinue < MOEOT > & continuator; - - - /** - * Apply one step of the local search to the population _pop - * @param _pop the population - */ - void oneStep (eoPop < MOEOT > & _pop) - { -//////////////////////////////////////////// - int ext_0_idx, ext_1_idx; - ObjectiveVector ext_0_objVec, ext_1_objVec; -/////////////////////////////////////////// - // the move - Move move; - // the objective vector and the fitness of the current solution - ObjectiveVector x_objVec; - double x_fitness; - // the index, the objective vector and the fitness of the worst solution in the population (-1 implies that the worst is the newly created one) - int worst_idx; - ObjectiveVector worst_objVec; - double worst_fitness; - // the index current of the current solution to be explored - unsigned int i=0; - // initilization of the move for the first individual - moveInit(move, _pop[i]); - while (i<_pop.size() && continuator(_pop)) - { - // x = one neigbour of pop[i] - // evaluate x in the objective space - x_objVec = moveIncrEval(move, _pop[i]); - // update every fitness values to take x into account and compute the fitness of x - x_fitness = fitnessAssignment.updateByAdding(_pop, x_objVec); - -//////////////////////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////////////////////////////// -// qui sont les extremes ? (=> min only !!!) - ext_0_idx = -1; - ext_0_objVec = x_objVec; - ext_1_idx = -1; - ext_1_objVec = x_objVec; - for (unsigned int k=0; k<_pop.size(); k++) - { - // ext_0 - if (_pop[k].objectiveVector()[0] < ext_0_objVec[0]) - { - ext_0_idx = k; - ext_0_objVec = _pop[k].objectiveVector(); - } - else if ( (_pop[k].objectiveVector()[0] == ext_0_objVec[0]) && (_pop[k].objectiveVector()[1] < ext_0_objVec[1]) ) - { - ext_0_idx = k; - ext_0_objVec = _pop[k].objectiveVector(); - } - // ext_1 - else if (_pop[k].objectiveVector()[1] < ext_1_objVec[1]) - { - ext_1_idx = k; - ext_1_objVec = _pop[k].objectiveVector(); - } - else if ( (_pop[k].objectiveVector()[1] == ext_1_objVec[1]) && (_pop[k].objectiveVector()[0] < ext_1_objVec[0]) ) - { - ext_1_idx = k; - ext_1_objVec = _pop[k].objectiveVector(); - } - } -// worst init - if (ext_0_idx == -1) - { - unsigned int ind = 0; - while (ind == ext_1_idx) - { - ind++; - } - worst_idx = ind; - worst_objVec = _pop[ind].objectiveVector(); - worst_fitness = _pop[ind].fitness(); - } - else if (ext_1_idx == -1) - { - unsigned int ind = 0; - while (ind == ext_0_idx) - { - ind++; - } - worst_idx = ind; - worst_objVec = _pop[ind].objectiveVector(); - worst_fitness = _pop[ind].fitness(); - } - else - { - worst_idx = -1; - worst_objVec = x_objVec; - worst_fitness = x_fitness; - } -//////////////////////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////////////////////////////// - - // who is the worst ? - for (unsigned int j=0; j<_pop.size(); j++) - { - if ( (j!=ext_0_idx) && (j!=ext_1_idx) ) - { - if (_pop[j].fitness() < worst_fitness) - { - worst_idx = j; - worst_objVec = _pop[j].objectiveVector(); - worst_fitness = _pop[j].fitness(); - } - } - } - // if the worst solution is the new one - if (worst_idx == -1) - { - // if all its neighbours have been explored, - // let's explore the neighborhoud of the next individual - if (! nextMove(move, _pop[i])) - { - i++; - if (i<_pop.size()) - { - // initilization of the move for the next individual - moveInit(move, _pop[i]); - } - } - } - // if the worst solution is located before _pop[i] - else if (worst_idx <= i) - { - // the new solution takes place insteed of _pop[worst_idx] - _pop[worst_idx] = _pop[i]; - move(_pop[worst_idx]); - _pop[worst_idx].objectiveVector(x_objVec); - _pop[worst_idx].fitness(x_fitness); - // let's explore the neighborhoud of the next individual - i++; - if (i<_pop.size()) - { - // initilization of the move for the next individual - moveInit(move, _pop[i]); - } - } - // if the worst solution is located after _pop[i] - else if (worst_idx > i) - { - // the new solution takes place insteed of _pop[i+1] and _pop[worst_idx] is deleted - _pop[worst_idx] = _pop[i+1]; - _pop[i+1] = _pop[i]; - move(_pop[i+1]); - _pop[i+1].objectiveVector(x_objVec); - _pop[i+1].fitness(x_fitness); - // let's explore the neighborhoud of the individual _pop[i+2] - i += 2; - if (i<_pop.size()) - { - // initilization of the move for the next individual - moveInit(move, _pop[i]); - } - } - // update fitness values - fitnessAssignment.updateByDeleting(_pop, worst_objVec); - } - } - -}; - -#endif /*MOEOIBMOLS_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoIteratedIBMOLS.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoIteratedIBMOLS.h deleted file mode 100755 index c70fd27b2..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoIteratedIBMOLS.h +++ /dev/null @@ -1,215 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoIteratedIBMOLS.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOITERATEDIBMOLS_H_ -#define MOEOITERATEDIBMOLS_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - - -//#include - - - -/** - * Iterated version of IBMOLS as described in - * Basseur M., Burke K. : "Indicator-Based Multi-Objective Local Search" (2007). - */ -template < class MOEOT, class Move > -class moeoIteratedIBMOLS : public moeoLS < MOEOT, eoPop < MOEOT > & > -{ -public: - - /** The type of objective vector */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * Ctor. - * @param _moveInit the move initializer - * @param _nextMove the neighborhood explorer - * @param _eval the full evaluation - * @param _moveIncrEval the incremental evaluation - * @param _fitnessAssignment the fitness assignment strategy - * @param _continuator the stopping criteria - * @param _monOp the monary operator - * @param _randomMonOp the random monary operator (or random initializer) - * @param _nNoiseIterations the number of iterations to apply the random noise - */ - moeoIteratedIBMOLS( - moMoveInit < Move > & _moveInit, - moNextMove < Move > & _nextMove, - eoEvalFunc < MOEOT > & _eval, - moeoMoveIncrEval < Move > & _moveIncrEval, - moeoIndicatorBasedFitnessAssignment < MOEOT > & _fitnessAssignment, - eoContinue < MOEOT > & _continuator, - eoMonOp < MOEOT > & _monOp, - eoMonOp < MOEOT > & _randomMonOp, - unsigned int _nNoiseIterations=1 - ) : - ibmols(_moveInit, _nextMove, _eval, _moveIncrEval, _fitnessAssignment, _continuator), - eval(_eval), - continuator(_continuator), - monOp(_monOp), - randomMonOp(_randomMonOp), - nNoiseIterations(_nNoiseIterations) - {} - - - /** - * Apply the local search iteratively until the stopping criteria is met. - * @param _pop the initial population - * @param _arch the (updated) archive - */ - void operator() (eoPop < MOEOT > & _pop, moeoArchive < MOEOT > & _arch) - { - _arch.update(_pop); - ibmols(_pop, _arch); - while (continuator(_arch)) - { - // generate new solutions from the archive - generateNewSolutions(_pop, _arch); - // apply the local search (the global archive is updated in the sub-function) - ibmols(_pop, _arch); - } - } - - -private: - - /** the local search to iterate */ - moeoIBMOLS < MOEOT, Move > ibmols; - /** the full evaluation */ - eoEvalFunc < MOEOT > & eval; - /** the stopping criteria */ - eoContinue < MOEOT > & continuator; - /** the monary operator */ - eoMonOp < MOEOT > & monOp; - /** the random monary operator (or random initializer) */ - eoMonOp < MOEOT > & randomMonOp; - /** the number of iterations to apply the random noise */ - unsigned int nNoiseIterations; - - - /** - * Creates new population randomly initialized and/or initialized from the archive _arch. - * @param _pop the output population - * @param _arch the archive - */ - void generateNewSolutions(eoPop < MOEOT > & _pop, const moeoArchive < MOEOT > & _arch) - { - // shuffle vector for the random selection of individuals - vector shuffle; - shuffle.resize(std::max(_pop.size(), _arch.size())); - // init shuffle - for (unsigned int i=0; i gen; - std::random_shuffle(shuffle.begin(), shuffle.end(), gen); - // start the creation of new solutions - for (unsigned int i=0; i<_pop.size(); i++) - { - if (shuffle[i] < _arch.size()) - // the given archive contains the individual i - { - // add it to the resulting pop - _pop[i] = _arch[shuffle[i]]; - // then, apply the operator nIterationsNoise times - for (unsigned int j=0; j & _pop, const moeoArchive < MOEOT > & _arch) - { - // here, we must have a QuadOp ! - //eoQuadOp < MOEOT > quadOp; - rsCrossQuad quadOp; - // shuffle vector for the random selection of individuals - vector shuffle; - shuffle.resize(_arch.size()); - // init shuffle - for (unsigned int i=0; i gen; - std::random_shuffle(shuffle.begin(), shuffle.end(), gen); - // start the creation of new solutions - unsigned int i=0; - while ((i<_pop.size()-1) && (i<_arch.size()-1)) - { - _pop[i] = _arch[shuffle[i]]; - _pop[i+1] = _arch[shuffle[i+1]]; - // then, apply the operator nIterationsNoise times - for (unsigned int j=0; j -#include -#include - -/** - * Abstract class for local searches applied to multi-objective optimization. - * Starting from a Type (i.e.: an individual, a pop, an archive...), it produces a set of new non-dominated solutions. - */ -template < class MOEOT, class Type > -class moeoLS: public moeoAlgo, public eoBF < Type, moeoArchive < MOEOT > &, void > {}; - -#endif /*MOEOLS_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoNSGA.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoNSGA.h deleted file mode 100644 index b1bd71076..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoNSGA.h +++ /dev/null @@ -1,158 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoNSGA.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEONSGA_H_ -#define MOEONSGA_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/** - * NSGA (Non-dominated Sorting Genetic Algorithm) as described in: - * N. Srinivas, K. Deb, "Multiobjective Optimization Using Nondominated Sorting in Genetic Algorithms". - * Evolutionary Computation, Vol. 2(3), No 2, pp. 221-248 (1994). - * This class builds the NSGA algorithm only by using the fine-grained components of the ParadisEO-MOEO framework. - */ -template < class MOEOT > -class moeoNSGA: public moeoEA < MOEOT > -{ -public: - - /** - * Simple ctor with a eoGenOp. - * @param _maxGen number of generations before stopping - * @param _eval evaluation function - * @param _op variation operator - * @param _nicheSize niche size - */ - moeoNSGA (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op, double _nicheSize = 0.5) : - defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2), - diversityAssignment(_nicheSize), replace(fitnessAssignment, diversityAssignment), genBreed(select, _op), breed(genBreed) - {} - - - /** - * Simple ctor with a eoTransform. - * @param _maxGen number of generations before stopping - * @param _eval evaluation function - * @param _op variation operator - * @param _nicheSize niche size - */ - moeoNSGA (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op, double _nicheSize = 0.5) : - defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2), - diversityAssignment(_nicheSize), replace(fitnessAssignment, diversityAssignment), genBreed(select, _op), breed(genBreed) - {} - - - /** - * Ctor with a crossover, a mutation and their corresponding rates. - * @param _maxGen number of generations before stopping - * @param _eval evaluation function - * @param _crossover crossover - * @param _pCross crossover probability - * @param _mutation mutation - * @param _pMut mutation probability - * @param _nicheSize niche size - */ - moeoNSGA (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoQuadOp < MOEOT > & _crossover, double _pCross, eoMonOp < MOEOT > & _mutation, double _pMut, double _nicheSize = 0.5) : - defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select (2), - diversityAssignment(_nicheSize), replace (fitnessAssignment, diversityAssignment), - defaultSGAGenOp(_crossover, _pCross, _mutation, _pMut), genBreed (select, defaultSGAGenOp), breed (genBreed) - {} - - - /** - * Ctor with a continuator (instead of _maxGen) and a eoGenOp. - * @param _continuator stopping criteria - * @param _eval evaluation function - * @param _op variation operator - * @param _nicheSize niche size - */ - moeoNSGA (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op, double _nicheSize = 0.5) : - continuator(_continuator), popEval(_eval), select(2), - diversityAssignment(_nicheSize), replace(fitnessAssignment, diversityAssignment), genBreed(select, _op), breed(genBreed) - {} - - - /** - * Ctor with a continuator (instead of _maxGen) and a eoTransform. - * @param _continuator stopping criteria - * @param _eval evaluation function - * @param _op variation operator - * @param _nicheSize niche size - */ - moeoNSGA (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op, double _nicheSize = 0.5) : - continuator(_continuator), popEval(_eval), select(2), - diversityAssignment(_nicheSize), replace(fitnessAssignment, diversityAssignment), genBreed(select, _op), breed(genBreed) - {} - - - /** - * Apply a few generation of evolution to the population _pop until the stopping criteria is verified. - * @param _pop the population - */ - virtual void operator () (eoPop < MOEOT > &_pop) - { - eoPop < MOEOT > offspring, empty_pop; - popEval (empty_pop, _pop); // a first eval of _pop - // evaluate fitness and diversity - fitnessAssignment(_pop); - diversityAssignment(_pop); - do - { - // generate offspring, worths are recalculated if necessary - breed (_pop, offspring); - // eval of offspring - popEval (_pop, offspring); - // after replace, the new pop is in _pop. Worths are recalculated if necessary - replace (_pop, offspring); - } while (continuator (_pop)); - } - - -protected: - - /** a continuator based on the number of generations (used as default) */ - eoGenContinue < MOEOT > defaultGenContinuator; - /** stopping criteria */ - eoContinue < MOEOT > & continuator; - /** evaluation function used to evaluate the whole population */ - eoPopLoopEval < MOEOT > popEval; - /** binary tournament selection */ - moeoDetTournamentSelect < MOEOT > select; - /** fitness assignment used in NSGA-II */ - moeoFastNonDominatedSortingFitnessAssignment < MOEOT > fitnessAssignment; - /** diversity assignment used in NSGA-II */ - moeoFrontByFrontSharingDiversityAssignment < MOEOT > diversityAssignment; - /** elitist replacement */ - moeoElitistReplacement < MOEOT > replace; - /** an object for genetic operators (used as default) */ - eoSGAGenOp < MOEOT > defaultSGAGenOp; - /** general breeder */ - eoGeneralBreeder < MOEOT > genBreed; - /** breeder */ - eoBreed < MOEOT > & breed; - -}; - -#endif /*MOEONSGAII_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoNSGAII.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoNSGAII.h deleted file mode 100644 index 0c27bfd15..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/algo/moeoNSGAII.h +++ /dev/null @@ -1,153 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoNSGAII.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEONSGAII_H_ -#define MOEONSGAII_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/** - * NSGA-II (Non-dominated Sorting Genetic Algorithm II) as described in: - * Deb, K., S. Agrawal, A. Pratap, and T. Meyarivan : "A fast elitist non-dominated sorting genetic algorithm for multi-objective optimization: NSGA-II". - * In IEEE Transactions on Evolutionary Computation, Vol. 6, No 2, pp 182-197 (April 2002). - * This class builds the NSGA-II algorithm only by using the fine-grained components of the ParadisEO-MOEO framework. - */ -template < class MOEOT > -class moeoNSGAII: public moeoEA < MOEOT > -{ -public: - - /** - * Simple ctor with a eoGenOp. - * @param _maxGen number of generations before stopping - * @param _eval evaluation function - * @param _op variation operator - */ - moeoNSGAII (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op) : - defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2), - replace(fitnessAssignment, diversityAssignment), genBreed(select, _op), breed(genBreed) - {} - - - /** - * Simple ctor with a eoTransform. - * @param _maxGen number of generations before stopping - * @param _eval evaluation function - * @param _op variation operator - */ - moeoNSGAII (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op) : - defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2), - replace(fitnessAssignment, diversityAssignment), genBreed(select, _op), breed(genBreed) - {} - - - /** - * Ctor with a crossover, a mutation and their corresponding rates. - * @param _maxGen number of generations before stopping - * @param _eval evaluation function - * @param _crossover crossover - * @param _pCross crossover probability - * @param _mutation mutation - * @param _pMut mutation probability - */ - moeoNSGAII (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoQuadOp < MOEOT > & _crossover, double _pCross, eoMonOp < MOEOT > & _mutation, double _pMut) : - defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select (2), - replace (fitnessAssignment, diversityAssignment), defaultSGAGenOp(_crossover, _pCross, _mutation, _pMut), - genBreed (select, defaultSGAGenOp), breed (genBreed) - {} - - - /** - * Ctor with a continuator (instead of _maxGen) and a eoGenOp. - * @param _continuator stopping criteria - * @param _eval evaluation function - * @param _op variation operator - */ - moeoNSGAII (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op) : - continuator(_continuator), popEval(_eval), select(2), - replace(fitnessAssignment, diversityAssignment), genBreed(select, _op), breed(genBreed) - {} - - - /** - * Ctor with a continuator (instead of _maxGen) and a eoTransform. - * @param _continuator stopping criteria - * @param _eval evaluation function - * @param _op variation operator - */ - moeoNSGAII (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op) : - continuator(_continuator), popEval(_eval), select(2), - replace(fitnessAssignment, diversityAssignment), genBreed(select, _op), breed(genBreed) - {} - - - /** - * Apply a few generation of evolution to the population _pop until the stopping criteria is verified. - * @param _pop the population - */ - virtual void operator () (eoPop < MOEOT > &_pop) - { - eoPop < MOEOT > offspring, empty_pop; - popEval (empty_pop, _pop); // a first eval of _pop - // evaluate fitness and diversity - fitnessAssignment(_pop); - diversityAssignment(_pop); - do - { - // generate offspring, worths are recalculated if necessary - breed (_pop, offspring); - // eval of offspring - popEval (_pop, offspring); - // after replace, the new pop is in _pop. Worths are recalculated if necessary - replace (_pop, offspring); - } while (continuator (_pop)); - } - - -protected: - - /** a continuator based on the number of generations (used as default) */ - eoGenContinue < MOEOT > defaultGenContinuator; - /** stopping criteria */ - eoContinue < MOEOT > & continuator; - /** evaluation function used to evaluate the whole population */ - eoPopLoopEval < MOEOT > popEval; - /** binary tournament selection */ - moeoDetTournamentSelect < MOEOT > select; - /** fitness assignment used in NSGA-II */ - moeoFastNonDominatedSortingFitnessAssignment < MOEOT > fitnessAssignment; - /** diversity assignment used in NSGA-II */ - moeoFrontByFrontCrowdingDistanceDiversityAssignment < MOEOT > diversityAssignment; - /** elitist replacement */ - moeoElitistReplacement < MOEOT > replace; - /** an object for genetic operators (used as default) */ - eoSGAGenOp < MOEOT > defaultSGAGenOp; - /** general breeder */ - eoGeneralBreeder < MOEOT > genBreed; - /** breeder */ - eoBreed < MOEOT > & breed; - -}; - -#endif /*MOEONSGAII_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/archive/moeoArchive.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/archive/moeoArchive.h deleted file mode 100644 index 9338799d8..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/archive/moeoArchive.h +++ /dev/null @@ -1,180 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoArchive.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOARCHIVE_H_ -#define MOEOARCHIVE_H_ - -#include -#include -#include - -/** - * An archive is a secondary population that stores non-dominated solutions. - */ -template < class MOEOT > -class moeoArchive : public eoPop < MOEOT > -{ -public: - - using eoPop < MOEOT > :: size; - using eoPop < MOEOT > :: operator[]; - using eoPop < MOEOT > :: back; - using eoPop < MOEOT > :: pop_back; - - - /** - * The type of an objective vector for a solution - */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * Default ctor. - * The moeoObjectiveVectorComparator used to compare solutions is based on Pareto dominance - */ - moeoArchive() : eoPop < MOEOT >(), comparator(paretoComparator) - {} - - - /** - * Ctor - * @param _comparator the moeoObjectiveVectorComparator used to compare solutions - */ - moeoArchive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator) : eoPop < MOEOT >(), comparator(_comparator) - {} - - - /** - * Returns true if the current archive dominates _objectiveVector according to the moeoObjectiveVectorComparator given in the constructor - * @param _objectiveVector the objective vector to compare with the current archive - */ - bool dominates (const ObjectiveVector & _objectiveVector) const - { - for (unsigned int i = 0; i & _pop) - { - for (unsigned int i=0; i<_pop.size(); i++) - { - update(_pop[i]); - } - } - - - /** - * Returns true if the current archive contains the same objective vectors than the given archive _arch - * @param _arch the given archive - */ - bool equals (const moeoArchive < MOEOT > & _arch) - { - for (unsigned int i=0; i & comparator; - /** A moeoObjectiveVectorComparator based on Pareto dominance (used as default) */ - moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; - -}; - -#endif /*MOEOARCHIVE_H_ */ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoAggregativeComparator.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoAggregativeComparator.h deleted file mode 100644 index a217bd52d..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoAggregativeComparator.h +++ /dev/null @@ -1,55 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoAggregativeComparator.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOAGGREGATIVECOMPARATOR_H_ -#define MOEOAGGREGATIVECOMPARATOR_H_ - -#include - -/** - * Functor allowing to compare two solutions according to their fitness and diversity values, each according to its aggregative value. - */ -template < class MOEOT > -class moeoAggregativeComparator : public moeoComparator < MOEOT > -{ -public: - - /** - * Ctor. - * @param _weightFitness the weight for fitness - * @param _weightDiversity the weight for diversity - */ - moeoAggregativeComparator(double _weightFitness = 1.0, double _weightDiversity = 1.0) : weightFitness(_weightFitness), weightDiversity(_weightDiversity) - {} - - - /** - * Returns true if _moeo1 < _moeo2 according to the aggregation of their fitness and diversity values - * @param _moeo1 the first solution - * @param _moeo2 the second solution - */ - const bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) - { - return ( weightFitness * _moeo1.fitness() + weightDiversity * _moeo1.diversity() ) < ( weightFitness * _moeo2.fitness() + weightDiversity * _moeo2.diversity() ); - } - - -private: - - /** the weight for fitness */ - double weightFitness; - /** the weight for diversity */ - double weightDiversity; - -}; - -#endif /*MOEOAGGREGATIVECOMPARATOR_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoComparator.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoComparator.h deleted file mode 100644 index 9243a57bc..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoComparator.h +++ /dev/null @@ -1,24 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoComparator.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOCOMPARATOR_H_ -#define MOEOCOMPARATOR_H_ - -#include - -/** - * Functor allowing to compare two solutions. - */ -template < class MOEOT > -class moeoComparator : public eoBF < const MOEOT &, const MOEOT &, const bool > {}; - -#endif /*MOEOCOMPARATOR_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoDiversityThenFitnessComparator.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoDiversityThenFitnessComparator.h deleted file mode 100644 index 54df59b82..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoDiversityThenFitnessComparator.h +++ /dev/null @@ -1,45 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoDiversityThenFitnessComparator.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEODIVERSITYTHENFITNESSCOMPARATOR_H_ -#define MOEODIVERSITYTHENFITNESSCOMPARATOR_H_ - -#include - -/** - * Functor allowing to compare two solutions according to their diversity values, then according to their fitness values. - */ -template < class MOEOT > -class moeoDiversityThenFitnessComparator : public moeoComparator < MOEOT > -{ -public: - - /** - * Returns true if _moeo1 < _moeo2 according to their diversity values, then according to their fitness values - * @param _moeo1 the first solution - * @param _moeo2 the second solution - */ - const bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) - { - if (_moeo1.diversity() == _moeo2.diversity()) - { - return _moeo1.fitness() < _moeo2.fitness(); - } - else - { - return _moeo1.diversity() < _moeo2.diversity(); - } - } - -}; - -#endif /*MOEODIVERSITYTHENFITNESSCOMPARATOR_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoFitnessThenDiversityComparator.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoFitnessThenDiversityComparator.h deleted file mode 100644 index 5baf10097..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoFitnessThenDiversityComparator.h +++ /dev/null @@ -1,45 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoFitnessThenDiversityComparator.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOFITNESSTHENDIVERSITYCOMPARATOR_H_ -#define MOEOFITNESSTHENDIVERSITYCOMPARATOR_H_ - -#include - -/** - * Functor allowing to compare two solutions according to their fitness values, then according to their diversity values. - */ -template < class MOEOT > -class moeoFitnessThenDiversityComparator : public moeoComparator < MOEOT > -{ -public: - - /** - * Returns true if _moeo1 < _moeo2 according to their fitness values, then according to their diversity values - * @param _moeo1 the first solution - * @param _moeo2 the second solution - */ - const bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) - { - if (_moeo1.fitness() == _moeo2.fitness()) - { - return _moeo1.diversity() < _moeo2.diversity(); - } - else - { - return _moeo1.fitness() < _moeo2.fitness(); - } - } - -}; - -#endif /*MOEOFITNESSTHENDIVERSITYCOMPARATOR_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoGDominanceObjectiveVectorComparator.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoGDominanceObjectiveVectorComparator.h deleted file mode 100644 index 006d1c4f2..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoGDominanceObjectiveVectorComparator.h +++ /dev/null @@ -1,102 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoGDominanceObjectiveVectorComparator.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOGDOMINANCEOBJECTIVEVECTORCOMPARATOR_H_ -#define MOEOGDOMINANCEOBJECTIVEVECTORCOMPARATOR_H_ - -#include - -/** - * This functor class allows to compare 2 objective vectors according to g-dominance. - * The concept of g-dominance as been introduced in: - * J. Molina, L. V. Santana, A. G. Hernandez-Diaz, C. A. Coello Coello, R. Caballero, - * "g-dominance: Reference point based dominance" (2007) - */ -template < class ObjectiveVector > -class moeoGDominanceObjectiveVectorComparator : public moeoObjectiveVectorComparator < ObjectiveVector > -{ -public: - - /** - * Ctor. - * @param _ref the reference point - */ - moeoGDominanceObjectiveVectorComparator(ObjectiveVector & _ref) : ref(_ref) - {} - - - /** - * Returns true if _objectiveVector1 is g-dominated by _objectiveVector2. - * @param _objectiveVector1 the first objective vector - * @param _objectiveVector2 the second objective vector - */ - const bool operator()(const ObjectiveVector & _objectiveVector1, const ObjectiveVector & _objectiveVector2) - { - unsigned int flag1 = flag(_objectiveVector1); - unsigned int flag2 = flag(_objectiveVector2); - if (flag2==0) - { - // cannot dominate - return false; - } - else if ( (flag2==1) && (flag1==0) ) - { - // is dominated - return true; - } - else // (flag1==1) && (flag2==1) - { - // both are on the good region, so let's use the classical Pareto dominance - return paretoComparator(_objectiveVector1, _objectiveVector2); - } - } - - -private: - - /** the reference point */ - ObjectiveVector & ref; - /** Pareto comparator */ - moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; - - - /** - * Returns the flag of _objectiveVector according to the reference point - * @param _objectiveVector the first objective vector - */ - unsigned int flag(const ObjectiveVector & _objectiveVector) - { - unsigned int result=1; - for (unsigned int i=0; i ref[i]) - { - result=0; - } - } - if (result==0) - { - result=1; - for (unsigned int i=0; i - -/** - * Functor allowing to compare two objective vectors according to their first objective value, then their second, and so on. - */ -template < class ObjectiveVector > -class moeoObjectiveObjectiveVectorComparator : public moeoObjectiveVectorComparator < ObjectiveVector > -{ -public: - - /** - * Returns true if _objectiveVector1 < _objectiveVector2 on the first objective, then on the second, and so on - * @param _objectiveVector1 the first objective vector - * @param _objectiveVector2 the second objective vector - */ - const bool operator()(const ObjectiveVector & _objectiveVector1, const ObjectiveVector & _objectiveVector2) - { - for (unsigned int i=0; i ObjectiveVector::Traits::tolerance() ) - { - if (_objectiveVector1[i] < _objectiveVector2[i]) - { - return true; - } - else - { - return false; - } - } - } - return false; - } - -}; - -#endif /*MOEOOBJECTIVEOBJECTIVEVECTORCOMPARATOR_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoObjectiveVectorComparator.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoObjectiveVectorComparator.h deleted file mode 100644 index 75608ad12..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoObjectiveVectorComparator.h +++ /dev/null @@ -1,26 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoObjectiveVectorComparator.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOOBJECTIVEVECTORCOMPARATOR_H_ -#define MOEOOBJECTIVEVECTORCOMPARATOR_H_ - -#include -#include - -/** - * Abstract class allowing to compare 2 objective vectors. - * The template argument ObjectiveVector have to be a moeoObjectiveVector. - */ -template < class ObjectiveVector > -class moeoObjectiveVectorComparator : public eoBF < const ObjectiveVector &, const ObjectiveVector &, const bool > {}; - -#endif /*MOEOOBJECTIVEVECTORCOMPARATOR_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoOneObjectiveComparator.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoOneObjectiveComparator.h deleted file mode 100644 index 74be47bb3..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoOneObjectiveComparator.h +++ /dev/null @@ -1,57 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoOneObjectiveComparator.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOONEOBJECTIVECOMPARATOR_H_ -#define MOEOONEOBJECTIVECOMPARATOR_H_ - -#include - -/** - * Functor allowing to compare two solutions according to one objective. - */ -template < class MOEOT > -class moeoOneObjectiveComparator : public moeoComparator < MOEOT > -{ -public: - - /** - * Ctor. - * @param _obj the index of objective - */ - moeoOneObjectiveComparator(unsigned int _obj) : obj(_obj) - { - if (obj > MOEOT::ObjectiveVector::nObjectives()) - { - throw std::runtime_error("Problem with the index of objective in moeoOneObjectiveComparator"); - } - } - - - /** - * Returns true if _moeo1 < _moeo2 on the obj objective - * @param _moeo1 the first solution - * @param _moeo2 the second solution - */ - const bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) - { - return _moeo1.objectiveVector()[obj] < _moeo2.objectiveVector()[obj]; - } - - -private: - - /** the index of objective */ - unsigned int obj; - -}; - -#endif /*MOEOONEOBJECTIVECOMPARATOR_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoParetoObjectiveVectorComparator.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoParetoObjectiveVectorComparator.h deleted file mode 100644 index c9f8e8260..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/comparator/moeoParetoObjectiveVectorComparator.h +++ /dev/null @@ -1,70 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoParetoObjectiveVectorComparator.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOPARETOOBJECTIVEVECTORCOMPARATOR_H_ -#define MOEOPARETOOBJECTIVEVECTORCOMPARATOR_H_ - -#include - -/** - * This functor class allows to compare 2 objective vectors according to Pareto dominance. - */ -template < class ObjectiveVector > -class moeoParetoObjectiveVectorComparator : public moeoObjectiveVectorComparator < ObjectiveVector > -{ -public: - - /** - * Returns true if _objectiveVector1 is dominated by _objectiveVector2 - * @param _objectiveVector1 the first objective vector - * @param _objectiveVector2 the second objective vector - */ - const bool operator()(const ObjectiveVector & _objectiveVector1, const ObjectiveVector & _objectiveVector2) - { - bool dom = false; - for (unsigned int i=0; i ObjectiveVector::Traits::tolerance() ) - { - // if the ith objective have to be minimized... - if (ObjectiveVector::minimizing(i)) - { - if (_objectiveVector1[i] > _objectiveVector2[i]) - { - dom = true; //_objectiveVector1[i] is not better than _objectiveVector2[i] - } - else - { - return false; //_objectiveVector2 cannot dominate _objectiveVector1 - } - } - // if the ith objective have to be maximized... - else if (ObjectiveVector::maximizing(i)) - { - if (_objectiveVector1[i] > _objectiveVector2[i]) - { - dom = true; //_objectiveVector1[i] is not better than _objectiveVector2[i] - } - else - { - return false; //_objectiveVector2 cannot dominate _objectiveVector1 - } - } - } - } - return dom; - } - -}; - -#endif /*MOEOPARETOOBJECTIVEVECTORCOMPARATOR_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/MOEO.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/MOEO.h deleted file mode 100644 index ed288facc..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/MOEO.h +++ /dev/null @@ -1,291 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// MOEO.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEO_H_ -#define MOEO_H_ - -#include -#include -#include -#include - -/** - * Base class allowing to represent a solution (an individual) for multi-objective optimization. - * The template argument MOEOObjectiveVector allows to represent the solution in the objective space (it can be a moeoObjectiveVector object). - * The template argument MOEOFitness is an object reflecting the quality of the solution in term of convergence (the fitness of a solution is always to be maximized). - * The template argument MOEODiversity is an object reflecting the quality of the solution in term of diversity (the diversity of a solution is always to be maximized). - * All template arguments must have a void and a copy constructor. - * Using some specific representations, you will have to define a copy constructor if the default one is not what you want. - * In the same cases, you will also have to define the affectation operator (operator=). - * Then, you will explicitly have to call the parent copy constructor and the parent affectation operator at the beginning of the corresponding implementation. - * Besides, note that, contrary to the mono-objective case (and to EO) where the fitness value of a solution is confused with its objective value, - * the fitness value differs of the objectives values in the multi-objective case. - */ -template < class MOEOObjectiveVector, class MOEOFitness, class MOEODiversity > -class MOEO : public EO < MOEOObjectiveVector > -{ -public: - - /** the objective vector type of a solution */ - typedef MOEOObjectiveVector ObjectiveVector; - - /** the fitness type of a solution */ - typedef MOEOFitness Fitness; - - /** the diversity type of a solution */ - typedef MOEODiversity Diversity; - - - /** - * Ctor - */ - MOEO() - { - // default values for every parameters - objectiveVectorValue = ObjectiveVector(); - fitnessValue = Fitness(); - diversityValue = Diversity(); - // invalidate all - invalidate(); - } - - - /** - * Virtual dtor - */ - virtual ~MOEO() {}; - - - /** - * Returns the objective vector of the current solution - */ - ObjectiveVector objectiveVector() const - { - if ( invalidObjectiveVector() ) - { - throw std::runtime_error("invalid objective vector in MOEO"); - } - return objectiveVectorValue; - } - - - /** - * Sets the objective vector of the current solution - * @param _objectiveVectorValue the new objective vector - */ - void objectiveVector(const ObjectiveVector & _objectiveVectorValue) - { - objectiveVectorValue = _objectiveVectorValue; - invalidObjectiveVectorValue = false; - } - - - /** - * Sets the objective vector as invalid - */ - void invalidateObjectiveVector() - { - invalidObjectiveVectorValue = true; - } - - - /** - * Returns true if the objective vector is invalid, false otherwise - */ - bool invalidObjectiveVector() const - { - return invalidObjectiveVectorValue; - } - - - /** - * Returns the fitness value of the current solution - */ - Fitness fitness() const - { - if ( invalidFitness() ) - { - throw std::runtime_error("invalid fitness in MOEO"); - } - return fitnessValue; - } - - - /** - * Sets the fitness value of the current solution - * @param _fitnessValue the new fitness value - */ - void fitness(const Fitness & _fitnessValue) - { - fitnessValue = _fitnessValue; - invalidFitnessValue = false; - } - - - /** - * Sets the fitness value as invalid - */ - void invalidateFitness() - { - invalidFitnessValue = true; - } - - - /** - * Returns true if the fitness value is invalid, false otherwise - */ - bool invalidFitness() const - { - return invalidFitnessValue; - } - - - /** - * Returns the diversity value of the current solution - */ - Diversity diversity() const - { - if ( invalidDiversity() ) - { - throw std::runtime_error("invalid diversity in MOEO"); - } - return diversityValue; - } - - - /** - * Sets the diversity value of the current solution - * @param _diversityValue the new diversity value - */ - void diversity(const Diversity & _diversityValue) - { - diversityValue = _diversityValue; - invalidDiversityValue = false; - } - - - /** - * Sets the diversity value as invalid - */ - void invalidateDiversity() - { - invalidDiversityValue = true; - } - - - /** - * Returns true if the diversity value is invalid, false otherwise - */ - bool invalidDiversity() const - { - return invalidDiversityValue; - } - - - /** - * Sets the objective vector, the fitness value and the diversity value as invalid - */ - void invalidate() - { - invalidateObjectiveVector(); - invalidateFitness(); - invalidateDiversity(); - } - - - /** - * Returns true if the fitness value is invalid, false otherwise - */ - bool invalid() const - { - return invalidObjectiveVector(); - } - - - /** - * Returns true if the objective vector of the current solution is smaller than the objective vector of _other on the first objective, - * then on the second, and so on (can be usefull for sorting/printing). - * You should implement another function in the sub-class of MOEO to have another sorting mecanism. - * @param _other the other MOEO object to compare with - */ - bool operator<(const MOEO & _other) const - { - return objectiveVector() < _other.objectiveVector(); - } - - - /** - * Return the class id (the class name as a std::string) - */ - virtual std::string className() const - { - return "MOEO"; - } - - - /** - * Writing object - * @param _os output stream - */ - virtual void printOn(std::ostream & _os) const - { - if ( invalidObjectiveVector() ) - { - _os << "INVALID\t"; - } - else - { - _os << objectiveVectorValue << '\t'; - } - } - - - /** - * Reading object - * @param _is input stream - */ - virtual void readFrom(std::istream & _is) - { - std::string objectiveVector_str; - int pos = _is.tellg(); - _is >> objectiveVector_str; - if (objectiveVector_str == "INVALID") - { - invalidateObjectiveVector(); - } - else - { - invalidObjectiveVectorValue = false; - _is.seekg(pos); // rewind - _is >> objectiveVectorValue; - } - } - - -private: - - /** the objective vector of this solution */ - ObjectiveVector objectiveVectorValue; - /** true if the objective vector is invalid */ - bool invalidObjectiveVectorValue; - /** the fitness value of this solution */ - Fitness fitnessValue; - /** true if the fitness value is invalid */ - bool invalidFitnessValue; - /** the diversity value of this solution */ - Diversity diversityValue; - /** true if the diversity value is invalid */ - bool invalidDiversityValue; - -}; - -#endif /*MOEO_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/Makefile.am b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/Makefile.am deleted file mode 100644 index 8e2a6f0cd..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -lib_LIBRARIES = libmoeo.a - -libmoeo_a_SOURCES = moeoObjectiveVectorTraits.cpp - -pkginclude_HEADERS = moeoObjectiveVectorTraits.h - -INCLUDES = -I$(EO_DIR)/src/ -I$(top_srcdir)/src/ - -AM_CXXFLAGS = -Wall -ansi -pedantic diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoBitVector.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoBitVector.h deleted file mode 100644 index 61ed4b7ed..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoBitVector.h +++ /dev/null @@ -1,74 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoBitVector.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOBITVECTOR_H_ -#define MOEOBITVECTOR_H_ - -#include - -/** - * This class is an implementationeo of a simple bit-valued moeoVector. - */ -template < class MOEOObjectiveVector, class MOEOFitness, class MOEODiversity > -class moeoBitVector : public moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool > -{ -public: - - using moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool > :: begin; - using moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool > :: end; - using moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool > :: resize; - using moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool > :: size; - - - /** - * Ctor - * @param _size Length of vector (default is 0) - * @param _value Initial value of all elements (default is default value of type GeneType) - */ - moeoBitVector(unsigned int _size = 0, bool _value = false) : moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool >(_size, _value) - {} - - - /** - * Writing object - * @param _os output stream - */ - virtual void printOn(std::ostream & _os) const - { - MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >::printOn(_os); - _os << ' '; - _os << size() << ' '; - std::copy(begin(), end(), std::ostream_iterator(_os)); - } - - - /** - * Reading object - * @param _is input stream - */ - virtual void readFrom(std::istream & _is) - { - MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >::readFrom(_is); - unsigned int s; - _is >> s; - std::string bits; - _is >> bits; - if (_is) - { - resize(bits.size()); - std::transform(bits.begin(), bits.end(), begin(), std::bind2nd(std::equal_to(), '1')); - } - } - -}; - -#endif /*MOEOBITVECTOR_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoEvalFunc.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoEvalFunc.h deleted file mode 100644 index 1f6b7544d..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoEvalFunc.h +++ /dev/null @@ -1,24 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoEvalFunc.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOEVALFUNC_H_ -#define MOEOEVALFUNC_H_ - -#include - -/* - * Functor that evaluates one MOEO by setting all its objective values. - */ -template < class MOEOT > -class moeoEvalFunc : public eoEvalFunc< MOEOT > {}; - -#endif /*MOEOEVALFUNC_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoObjectiveVector.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoObjectiveVector.h deleted file mode 100644 index 867f6a3d3..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoObjectiveVector.h +++ /dev/null @@ -1,91 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoObjectiveVector.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOOBJECTIVEVECTOR_H_ -#define MOEOOBJECTIVEVECTOR_H_ - -#include - -/** - * Abstract class allowing to represent a solution in the objective space (phenotypic representation). - * The template argument ObjectiveVectorTraits defaults to moeoObjectiveVectorTraits, - * but it can be replaced at will by any other class that implements the static functions defined therein. - * Some static funtions to access to the traits characteristics are re-defined in order not to write a lot of typedef's. - */ -template < class ObjectiveVectorTraits, class ObjectiveVectorType > -class moeoObjectiveVector : public std::vector < ObjectiveVectorType > -{ -public: - - /** The traits of objective vectors */ - typedef ObjectiveVectorTraits Traits; - /** The type of an objective value */ - typedef ObjectiveVectorType Type; - - - /** - * Ctor - */ - moeoObjectiveVector(Type _value = Type()) : std::vector < Type > (ObjectiveVectorTraits::nObjectives(), _value) - {} - - - /** - * Ctor from a vector of Type - * @param _v the std::vector < Type > - */ - moeoObjectiveVector(std::vector < Type > & _v) : std::vector < Type > (_v) - {} - - - /** - * Parameters setting (for the objective vector of any solution) - * @param _nObjectives the number of objectives - * @param _bObjectives the min/max vector (true = min / false = max) - */ - static void setup(unsigned int _nObjectives, std::vector < bool > & _bObjectives) - { - ObjectiveVectorTraits::setup(_nObjectives, _bObjectives); - } - - - /** - * Returns the number of objectives - */ - static unsigned int nObjectives() - { - return ObjectiveVectorTraits::nObjectives(); - } - - - /** - * Returns true if the _ith objective have to be minimized - * @param _i the index - */ - static bool minimizing(unsigned int _i) - { - return ObjectiveVectorTraits::minimizing(_i); - } - - - /** - * Returns true if the _ith objective have to be maximized - * @param _i the index - */ - static bool maximizing(unsigned int _i) - { - return ObjectiveVectorTraits::maximizing(_i); - } - -}; - -#endif /*MOEOOBJECTIVEVECTOR_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoObjectiveVectorDouble.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoObjectiveVectorDouble.h deleted file mode 100644 index 6b296a69c..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoObjectiveVectorDouble.h +++ /dev/null @@ -1,166 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoObjectiveVectorDouble.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOOBJECTIVEVECTORDOUBLE_H_ -#define MOEOOBJECTIVEVECTORDOUBLE_H_ - -#include -#include -#include -#include -#include - -/** - * This class allows to represent a solution in the objective space (phenotypic representation) by a std::vector of doubles, - * i.e. that an objective value is represented using a double, and this for any objective. - */ -template < class ObjectiveVectorTraits > -class moeoObjectiveVectorDouble : public moeoObjectiveVector < ObjectiveVectorTraits, double > -{ -public: - - using moeoObjectiveVector < ObjectiveVectorTraits, double >::size; - using moeoObjectiveVector < ObjectiveVectorTraits, double >::operator[]; - - /** - * Ctor - */ - moeoObjectiveVectorDouble(double _value = 0.0) : moeoObjectiveVector < ObjectiveVectorTraits, double > (_value) - {} - - - /** - * Ctor from a vector of doubles - * @param _v the std::vector < double > - */ - moeoObjectiveVectorDouble(std::vector < double > & _v) : moeoObjectiveVector < ObjectiveVectorTraits, double > (_v) - {} - - - /** - * Returns true if the current objective vector dominates _other according to the Pareto dominance relation - * (but it's better to use a moeoObjectiveVectorComparator object to compare solutions) - * @param _other the other moeoObjectiveVectorDouble object to compare with - */ - bool dominates(const moeoObjectiveVectorDouble < ObjectiveVectorTraits > & _other) const - { - moeoParetoObjectiveVectorComparator < moeoObjectiveVectorDouble > comparator; - return comparator(_other, *this); - } - - - /** - * Returns true if the current objective vector is equal to _other (according to a tolerance value) - * @param _other the other moeoObjectiveVectorDouble object to compare with - */ - bool operator==(const moeoObjectiveVectorDouble < ObjectiveVectorTraits > & _other) const - { - for (unsigned int i=0; i < size(); i++) - { - if ( fabs(operator[](i) - _other[i]) > ObjectiveVectorTraits::tolerance() ) - { - return false; - } - } - return true; - } - - - /** - * Returns true if the current objective vector is different than _other (according to a tolerance value) - * @param _other the other moeoObjectiveVectorDouble object to compare with - */ - bool operator!=(const moeoObjectiveVectorDouble < ObjectiveVectorTraits > & _other) const - { - return ! operator==(_other); - } - - - /** - * Returns true if the current objective vector is smaller than _other on the first objective, then on the second, and so on - * (can be usefull for sorting/printing) - * @param _other the other moeoObjectiveVectorDouble object to compare with - */ - bool operator<(const moeoObjectiveVectorDouble < ObjectiveVectorTraits > & _other) const - { - moeoObjectiveObjectiveVectorComparator < moeoObjectiveVectorDouble < ObjectiveVectorTraits > > cmp; - return cmp(*this, _other); - } - - - /** - * Returns true if the current objective vector is greater than _other on the first objective, then on the second, and so on - * (can be usefull for sorting/printing) - * @param _other the other moeoObjectiveVectorDouble object to compare with - */ - bool operator>(const moeoObjectiveVectorDouble < ObjectiveVectorTraits > & _other) const - { - return _other < *this; - } - - - /** - * Returns true if the current objective vector is smaller than or equal to _other on the first objective, then on the second, and so on - * (can be usefull for sorting/printing) - * @param _other the other moeoObjectiveVectorDouble object to compare with - */ - bool operator<=(const moeoObjectiveVectorDouble < ObjectiveVectorTraits > & _other) const - { - return operator==(_other) || operator<(_other); - } - - - /** - * Returns true if the current objective vector is greater than or equal to _other on the first objective, then on the second, and so on - * (can be usefull for sorting/printing) - * @param _other the other moeoObjectiveVectorDouble object to compare with - */ - bool operator>=(const moeoObjectiveVectorDouble < ObjectiveVectorTraits > & _other) const - { - return operator==(_other) || operator>(_other); - } - -}; - - -/** - * Output for a moeoObjectiveVectorDouble object - * @param _os output stream - * @param _objectiveVector the objective vector to write - */ -template < class ObjectiveVectorTraits > -std::ostream & operator<<(std::ostream & _os, const moeoObjectiveVectorDouble < ObjectiveVectorTraits > & _objectiveVector) -{ - for (unsigned int i=0; i<_objectiveVector.size(); i++) - { - _os << _objectiveVector[i] << '\t'; - } - return _os; -} - -/** - * Input for a moeoObjectiveVectorDouble object - * @param _is input stream - * @param _objectiveVector the objective vector to read - */ -template < class ObjectiveVectorTraits > -std::istream & operator>>(std::istream & _is, moeoObjectiveVectorDouble < ObjectiveVectorTraits > & _objectiveVector) -{ - _objectiveVector = moeoObjectiveVectorDouble < ObjectiveVectorTraits > (); - for (unsigned int i=0; i<_objectiveVector.size(); i++) - { - _is >> _objectiveVector[i]; - } - return _is; -} - -#endif /*MOEOOBJECTIVEVECTORDOUBLE_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoObjectiveVectorTraits.cpp b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoObjectiveVectorTraits.cpp deleted file mode 100644 index 84d507fca..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoObjectiveVectorTraits.cpp +++ /dev/null @@ -1,17 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoObjectiveVectorTraits.cpp -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#include - -// The static variables of the moeoObjectiveVectorTraits class need to be allocated -unsigned int moeoObjectiveVectorTraits::nObj; -std::vector < bool > moeoObjectiveVectorTraits::bObj; diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoObjectiveVectorTraits.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoObjectiveVectorTraits.h deleted file mode 100644 index 9c51c7463..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoObjectiveVectorTraits.h +++ /dev/null @@ -1,103 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoObjectiveVectorTraits.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOOBJECTIVEVECTORTRAITS_H_ -#define MOEOOBJECTIVEVECTORTRAITS_H_ - -#include -#include -#include - -/** - * A traits class for moeoObjectiveVector to specify the number of objectives and which ones have to be minimized or maximized. - */ -class moeoObjectiveVectorTraits -{ -public: - - /** - * Parameters setting - * @param _nObjectives the number of objectives - * @param _bObjectives the min/max vector (true = min / false = max) - */ - static void setup(unsigned int _nObjectives, std::vector < bool > & _bObjectives) - { - // in case the number of objectives was already set to a different value - if ( nObj && (nObj != _nObjectives) ) { - std::cout << "WARNING\n"; - std::cout << "WARNING : the number of objectives are changing\n"; - std::cout << "WARNING : Make sure all existing objects are destroyed\n"; - std::cout << "WARNING\n"; - } - // number of objectives - nObj = _nObjectives; - // min/max vector - bObj = _bObjectives; - // in case the number of objectives and the min/max vector size don't match - if (nObj != bObj.size()) - throw std::runtime_error("Number of objectives and min/max size don't match in moeoObjectiveVectorTraits::setup"); - } - - - /** - * Returns the number of objectives - */ - static unsigned int nObjectives() - { - // in case the number of objectives would not be assigned yet - if (! nObj) - throw std::runtime_error("Number of objectives not assigned in moeoObjectiveVectorTraits"); - return nObj; - } - - - /** - * Returns true if the _ith objective have to be minimized - * @param _i the index - */ - static bool minimizing(unsigned int _i) - { - // in case there would be a wrong index - if (_i >= bObj.size()) - throw std::runtime_error("Wrong index in moeoObjectiveVectorTraits"); - return bObj[_i]; - } - - - /** - * Returns true if the _ith objective have to be maximized - * @param _i the index - */ - static bool maximizing(unsigned int _i) { - return (! minimizing(_i)); - } - - - /** - * Returns the tolerance value (to compare solutions) - */ - static double tolerance() - { - return 1e-6; - } - - -private: - - /** The number of objectives */ - static unsigned int nObj; - /** The min/max vector */ - static std::vector < bool > bObj; - -}; - -#endif /*MOEOOBJECTIVEVECTORTRAITS_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoRealVector.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoRealVector.h deleted file mode 100644 index 9c2816e18..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoRealVector.h +++ /dev/null @@ -1,36 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoRealVector.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOREALVECTOR_H_ -#define MOEOREALVECTOR_H_ - -#include - -/** - * This class is an implementation of a simple double-valued moeoVector. - */ -template < class MOEOObjectiveVector, class MOEOFitness, class MOEODiversity > -class moeoRealVector : public moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, double > -{ -public: - - /** - * Ctor - * @param _size Length of vector (default is 0) - * @param _value Initial value of all elements (default is default value of type GeneType) - */ - moeoRealVector(unsigned int _size = 0, double _value = 0.0) : moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double >(_size, _value) - {} - -}; - -#endif /*MOEOREALVECTOR_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoVector.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoVector.h deleted file mode 100644 index 680306ff6..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/core/moeoVector.h +++ /dev/null @@ -1,143 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoVector.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOVECTOR_H_ -#define MOEOVECTOR_H_ - -#include -#include -#include - -/** - * Base class for fixed length chromosomes, just derives from MOEO and std::vector and redirects the smaller than operator to MOEO (objective vector based comparison). - * GeneType must have the following methods: void ctor (needed for the std::vector<>), copy ctor. - */ -template < class MOEOObjectiveVector, class MOEOFitness, class MOEODiversity, class GeneType > -class moeoVector : public MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >, public std::vector < GeneType > -{ -public: - - using MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity > :: invalidate; - using std::vector < GeneType > :: operator[]; - using std::vector < GeneType > :: begin; - using std::vector < GeneType > :: end; - using std::vector < GeneType > :: resize; - using std::vector < GeneType > :: size; - - /** the atomic type */ - typedef GeneType AtomType; - /** the container type */ - typedef std::vector < GeneType > ContainerType; - - - /** - * Default ctor. - * @param _size Length of vector (default is 0) - * @param _value Initial value of all elements (default is default value of type GeneType) - */ - moeoVector(unsigned int _size = 0, GeneType _value = GeneType()) : - MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >(), std::vector(_size, _value) - {} - - - /** - * We can't have a Ctor from a std::vector as it would create ambiguity with the copy Ctor. - * @param _v a vector of GeneType - */ - void value(const std::vector < GeneType > & _v) - { - if (_v.size() != size()) // safety check - { - if (size()) // NOT an initial empty std::vector - { - std::cout << "Warning: Changing size in moeoVector assignation"<::operator< - * @param _moeo the object to compare with - */ - bool operator<(const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType> & _moeo) const - { - return MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >::operator<(_moeo); - } - - - /** - * Writing object - * @param _os output stream - */ - virtual void printOn(std::ostream & _os) const - { - MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >::printOn(_os); - _os << ' '; - _os << size() << ' '; - std::copy(begin(), end(), std::ostream_iterator(_os, " ")); - } - - - /** - * Reading object - * @param _is input stream - */ - virtual void readFrom(std::istream & _is) - { - MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >::readFrom(_is); - unsigned int sz; - _is >> sz; - resize(sz); - unsigned int i; - for (i = 0; i < sz; ++i) - { - AtomType atom; - _is >> atom; - operator[](i) = atom; - } - } - -}; - - -/** - * To avoid conflicts between MOEO::operator< and std::vector::operator< - * @param _moeo1 the first object to compare - * @param _moeo2 the second object to compare - */ -template < class MOEOObjectiveVector, class MOEOFitness, class MOEODiversity, class GeneType > -bool operator<(const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType> & _moeo1, const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType> & _moeo2) -{ - return _moeo1.operator<(_moeo2); -} - - -/** - * To avoid conflicts between MOEO::operator> and std::vector::operator> - * @param _moeo1 the first object to compare - * @param _moeo2 the second object to compare - */ -template < class MOEOObjectiveVector, class MOEOFitness, class MOEODiversity, class GeneType > -bool operator>(const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType> & _moeo1, const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType> & _moeo2) -{ - return _moeo1.operator>(_moeo2); -} - -#endif /*MOEOVECTOR_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/distance/moeoDistance.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/distance/moeoDistance.h deleted file mode 100644 index 61b8fb670..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/distance/moeoDistance.h +++ /dev/null @@ -1,54 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoDistance.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEODISTANCE_H_ -#define MOEODISTANCE_H_ - -#include - -/** - * The base class for distance computation. - */ -template < class MOEOT , class Type > -class moeoDistance : public eoBF < const MOEOT &, const MOEOT &, const Type > -{ -public: - - /** - * Nothing to do - * @param _pop the population - */ - virtual void setup(const eoPop < MOEOT > & _pop) - {} - - - /** - * Nothing to do - * @param _min lower bound - * @param _max upper bound - * @param _obj the objective index - */ - virtual void setup(double _min, double _max, unsigned int _obj) - {} - - - /** - * Nothing to do - * @param _realInterval the eoRealInterval object - * @param _obj the objective index - */ - virtual void setup(eoRealInterval _realInterval, unsigned int _obj) - {} - -}; - -#endif /*MOEODISTANCE_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/distance/moeoDistanceMatrix.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/distance/moeoDistanceMatrix.h deleted file mode 100644 index b9a9e924e..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/distance/moeoDistanceMatrix.h +++ /dev/null @@ -1,76 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoDistanceMatrix.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEODISTANCEMATRIX_H_ -#define MOEODISTANCEMATRIX_H_ - -#include -#include -#include - -/** - * A matrix to compute distances between every pair of individuals contained in a population. - */ -template < class MOEOT , class Type > -class moeoDistanceMatrix : public eoUF < const eoPop < MOEOT > &, void > , public std::vector< std::vector < Type > > -{ -public: - - using std::vector< std::vector < Type > > :: size; - using std::vector< std::vector < Type > > :: operator[]; - - - /** - * Ctor - * @param _size size for every dimension of the matrix - * @param _distance the distance to use - */ - moeoDistanceMatrix (unsigned int _size, moeoDistance < MOEOT , Type > & _distance) : distance(_distance) - { - this->resize(_size); - for (unsigned int i=0; i<_size; i++) - { - this->operator[](i).resize(_size); - } - } - - - /** - * Sets the distance between every pair of individuals contained in the population _pop - * @param _pop the population - */ - void operator()(const eoPop < MOEOT > & _pop) - { - // 1 - setup the bounds (if necessary) - distance.setup(_pop); - // 2 - compute distances - this->operator[](0).operator[](0) = Type(); - for (unsigned int i=0; ioperator[](i).operator[](i) = Type(); - for (unsigned int j=0; joperator[](i).operator[](j) = distance(_pop[i], _pop[j]); - this->operator[](j).operator[](i) = this->operator[](i).operator[](j); - } - } - } - - -private: - - /** the distance to use */ - moeoDistance < MOEOT , Type > & distance; - -}; - -#endif /*MOEODISTANCEMATRIX_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/distance/moeoEuclideanDistance.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/distance/moeoEuclideanDistance.h deleted file mode 100644 index 2d8d8ec49..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/distance/moeoEuclideanDistance.h +++ /dev/null @@ -1,58 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoEuclideanDistance.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOEUCLIDEANDISTANCE_H_ -#define MOEOEUCLIDEANDISTANCE_H_ - -#include -#include - -/** - * A class allowing to compute an euclidian distance between two solutions in the objective space with normalized objective values (i.e. between 0 and 1). - * A distance value then lies between 0 and sqrt(nObjectives). - */ -template < class MOEOT > -class moeoEuclideanDistance : public moeoNormalizedDistance < MOEOT > -{ -public: - - /** the objective vector type of the solutions */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * Returns the euclidian distance between _moeo1 and _moeo2 in the objective space - * @param _moeo1 the first solution - * @param _moeo2 the second solution - */ - const double operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) - { - double result = 0.0; - double tmp1, tmp2; - for (unsigned int i=0; i :: bounds; - -}; - -#endif /*MOEOEUCLIDEANDISTANCE_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/distance/moeoManhattanDistance.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/distance/moeoManhattanDistance.h deleted file mode 100644 index f4c145fe7..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/distance/moeoManhattanDistance.h +++ /dev/null @@ -1,58 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoManhattanDistance.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOMANHATTANDISTANCE_H_ -#define MOEOMANHATTANDISTANCE_H_ - -#include -#include - -/** - * A class allowing to compute the Manhattan distance between two solutions in the objective space normalized objective values (i.e. between 0 and 1). - * A distance value then lies between 0 and nObjectives. - */ -template < class MOEOT > -class moeoManhattanDistance : public moeoNormalizedDistance < MOEOT > -{ -public: - - /** the objective vector type of the solutions */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * Returns the Manhattan distance between _moeo1 and _moeo2 in the objective space - * @param _moeo1 the first solution - * @param _moeo2 the second solution - */ - const double operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) - { - double result = 0.0; - double tmp1, tmp2; - for (unsigned int i=0; i :: bounds; - -}; - -#endif /*MOEOMANHATTANDISTANCE_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/distance/moeoNormalizedDistance.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/distance/moeoNormalizedDistance.h deleted file mode 100644 index ee1a2caa8..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/distance/moeoNormalizedDistance.h +++ /dev/null @@ -1,112 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoNormalizedDistance.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEONORMALIZEDDISTANCE_H_ -#define MOEONORMALIZEDDISTANCE_H_ - -#include -#include -#include - -/** - * The base class for double distance computation with normalized objective values (i.e. between 0 and 1). - */ -template < class MOEOT , class Type = double > -class moeoNormalizedDistance : public moeoDistance < MOEOT , Type > -{ -public: - - /** the objective vector type of the solutions */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * Default ctr - */ - moeoNormalizedDistance() - { - bounds.resize(ObjectiveVector::Traits::nObjectives()); - // initialize bounds in case someone does not want to use them - for (unsigned int i=0; i & _pop) - { - double min, max; - for (unsigned int i=0; i bounds; - -}; - -#endif /*MOEONORMALIZEDDISTANCE_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/diversity/moeoCrowdingDistanceDiversityAssignment.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/diversity/moeoCrowdingDistanceDiversityAssignment.h deleted file mode 100755 index bece3da4f..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/diversity/moeoCrowdingDistanceDiversityAssignment.h +++ /dev/null @@ -1,122 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoCrowdingDistanceDiversityAssignment.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOCROWDINGDISTANCEDIVERSITYASSIGNMENT_H_ -#define MOEOCROWDINGDISTANCEDIVERSITYASSIGNMENT_H_ - -#include -#include -#include - -/** - * Diversity assignment sheme based on crowding distance proposed in: - * K. Deb, A. Pratap, S. Agarwal, T. Meyarivan, "A Fast and Elitist Multi-Objective Genetic Algorithm: NSGA-II", IEEE Transactions on Evolutionary Computation, vol. 6, no. 2 (2002). - */ -template < class MOEOT > -class moeoCrowdingDistanceDiversityAssignment : public moeoDiversityAssignment < MOEOT > -{ -public: - - /** the objective vector type of the solutions */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * Returns a big value (regarded as infinite) - */ - double inf() const - { - return std::numeric_limits::max(); - } - - - /** - * Returns a very small value that can be used to avoid extreme cases (where the min bound == the max bound) - */ - double tiny() const - { - return 1e-6; - } - - - /** - * Computes diversity values for every solution contained in the population _pop - * @param _pop the population - */ - void operator()(eoPop < MOEOT > & _pop) - { - if (_pop.size() <= 2) - { - for (unsigned int i=0; i<_pop.size(); i++) - { - _pop[i].diversity(inf()); - } - } - else - { - setDistances(_pop); - } - } - - - /** - * @warning NOT IMPLEMENTED, DO NOTHING ! - * Updates the diversity values of the whole population _pop by taking the deletion of the objective vector _objVec into account. - * @param _pop the population - * @param _objVec the objective vector - * @warning NOT IMPLEMENTED, DO NOTHING ! - */ - void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) - { - std::cout << "WARNING : updateByDeleting not implemented in moeoCrowdingDiversityAssignment" << std::endl; - } - - -protected: - - /** - * Sets the distance values - * @param _pop the population - */ - virtual void setDistances (eoPop < MOEOT > & _pop) - { - double min, max, distance; - unsigned int nObjectives = MOEOT::ObjectiveVector::nObjectives(); - // set diversity to 0 - for (unsigned int i=0; i<_pop.size(); i++) - { - _pop[i].diversity(0); - } - // for each objective - for (unsigned int obj=0; obj objComp(obj); - // sort - std::sort(_pop.begin(), _pop.end(), objComp); - // min & max - min = _pop[0].objectiveVector()[obj]; - max = _pop[_pop.size()-1].objectiveVector()[obj]; - // set the diversity value to infiny for min and max - _pop[0].diversity(inf()); - _pop[_pop.size()-1].diversity(inf()); - for (unsigned int i=1; i<_pop.size()-1; i++) - { - distance = (_pop[i+1].objectiveVector()[obj] - _pop[i-1].objectiveVector()[obj]) / (max-min); - _pop[i].diversity(_pop[i].diversity() + distance); - } - } - } - -}; - -#endif /*MOEOCROWDINGDISTANCEDIVERSITYASSIGNMENT_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/diversity/moeoDiversityAssignment.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/diversity/moeoDiversityAssignment.h deleted file mode 100644 index 05151be7a..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/diversity/moeoDiversityAssignment.h +++ /dev/null @@ -1,51 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoDiversityAssignment.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEODIVERSITYASSIGNMENT_H_ -#define MOEODIVERSITYASSIGNMENT_H_ - -#include -#include - -/** - * Functor that sets the diversity values of a whole population. - */ -template < class MOEOT > -class moeoDiversityAssignment : public eoUF < eoPop < MOEOT > &, void > -{ -public: - - /** The type for objective vector */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * Updates the diversity values of the whole population _pop by taking the deletion of the objective vector _objVec into account. - * @param _pop the population - * @param _objVec the objective vector - */ - virtual void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) = 0; - - - /** - * Updates the diversity values of the whole population _pop by taking the deletion of the individual _moeo into account. - * @param _pop the population - * @param _moeo the individual - */ - void updateByDeleting(eoPop < MOEOT > & _pop, MOEOT & _moeo) - { - updateByDeleting(_pop, _moeo.objectiveVector()); - } - -}; - -#endif /*MOEODIVERSITYASSIGNMENT_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/diversity/moeoDummyDiversityAssignment.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/diversity/moeoDummyDiversityAssignment.h deleted file mode 100644 index b7305801c..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/diversity/moeoDummyDiversityAssignment.h +++ /dev/null @@ -1,59 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoDummyDiversityAssignment.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEODUMMYDIVERSITYASSIGNMENT_H_ -#define MOEODUMMYDIVERSITYASSIGNMENT_H_ - -#include - -/** - * moeoDummyDiversityAssignment is a moeoDiversityAssignment that gives the value '0' as the individual's diversity for a whole population if it is invalid. - */ -template < class MOEOT > -class moeoDummyDiversityAssignment : public moeoDiversityAssignment < MOEOT > -{ -public: - - /** The type for objective vector */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * Sets the diversity to '0' for every individuals of the population _pop if it is invalid - * @param _pop the population - */ - void operator () (eoPop < MOEOT > & _pop) - { - for (unsigned int idx = 0; idx<_pop.size (); idx++) - { - if (_pop[idx].invalidDiversity()) - { - // set the diversity to 0 - _pop[idx].diversity(0.0); - } - } - } - - - /** - * Updates the diversity values of the whole population _pop by taking the deletion of the objective vector _objVec into account. - * @param _pop the population - * @param _objVec the objective vector - */ - void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) - { - // nothing to do... ;-) - } - -}; - -#endif /*MOEODUMMYDIVERSITYASSIGNMENT_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/diversity/moeoFrontByFrontCrowdingDistanceDiversityAssignment.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/diversity/moeoFrontByFrontCrowdingDistanceDiversityAssignment.h deleted file mode 100644 index b4d35ac6e..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/diversity/moeoFrontByFrontCrowdingDistanceDiversityAssignment.h +++ /dev/null @@ -1,133 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoFrontByFrontCrowdingDistanceDiversityAssignment.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOFRONTBYFRONTCROWDINGDISTANCEDIVERSITYASSIGNMENT_H_ -#define MOEOFRONTBYFRONTCROWDINGDISTANCEDIVERSITYASSIGNMENT_H_ - -#include -#include - -/** - * Diversity assignment sheme based on crowding distance proposed in: - * K. Deb, A. Pratap, S. Agarwal, T. Meyarivan, "A Fast and Elitist Multi-Objective Genetic Algorithm: NSGA-II", IEEE Transactions on Evolutionary Computation, vol. 6, no. 2 (2002). - * Tis strategy assigns diversity values FRONT BY FRONT. It is, for instance, used in NSGA-II. - */ -template < class MOEOT > -class moeoFrontByFrontCrowdingDistanceDiversityAssignment : public moeoCrowdingDistanceDiversityAssignment < MOEOT > -{ -public: - - /** the objective vector type of the solutions */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * @warning NOT IMPLEMENTED, DO NOTHING ! - * Updates the diversity values of the whole population _pop by taking the deletion of the objective vector _objVec into account. - * @param _pop the population - * @param _objVec the objective vector - * @warning NOT IMPLEMENTED, DO NOTHING ! - */ - void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) - { - std::cout << "WARNING : updateByDeleting not implemented in moeoFrontByFrontCrowdingDistanceDiversityAssignment" << std::endl; - } - - -private: - - using moeoCrowdingDistanceDiversityAssignment < MOEOT >::inf; - using moeoCrowdingDistanceDiversityAssignment < MOEOT >::tiny; - - /** - * Sets the distance values - * @param _pop the population - */ - void setDistances (eoPop < MOEOT > & _pop) - { - unsigned int a,b; - double min, max, distance; - unsigned int nObjectives = MOEOT::ObjectiveVector::nObjectives(); - // set diversity to 0 for every individual - for (unsigned int i=0; i<_pop.size(); i++) - { - _pop[i].diversity(0.0); - } - // sort the whole pop according to fitness values - moeoFitnessThenDiversityComparator < MOEOT > fitnessComparator; - std::sort(_pop.begin(), _pop.end(), fitnessComparator); - // compute the crowding distance values for every individual "front" by "front" (front : from a to b) - a = 0; // the front starts at a - while (a < _pop.size()) - { - b = lastIndex(_pop,a); // the front ends at b - // if there is less than 2 individuals in the front... - if ((b-a) < 2) - { - for (unsigned int i=a; i<=b; i++) - { - _pop[i].diversity(inf()); - } - } - // else... - else - { - // for each objective - for (unsigned int obj=0; obj objComp(obj); - std::sort(_pop.begin()+a, _pop.begin()+b+1, objComp); - // min & max - min = _pop[b].objectiveVector()[obj]; - max = _pop[a].objectiveVector()[obj]; - // avoid extreme case - if (min == max) - { - min -= tiny(); - max += tiny(); - } - // set the diversity value to infiny for min and max - _pop[a].diversity(inf()); - _pop[b].diversity(inf()); - // set the diversity values for the other individuals - for (unsigned int i=a+1; i & _pop, unsigned int _start) - { - unsigned int i=_start; - while ( (i<_pop.size()-1) && (_pop[i].fitness()==_pop[i+1].fitness()) ) - { - i++; - } - return i; - } - -}; - -#endif /*MOEOFRONTBYFRONTCROWDINGDISTANCEDIVERSITYASSIGNMENT_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/diversity/moeoFrontByFrontSharingDiversityAssignment.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/diversity/moeoFrontByFrontSharingDiversityAssignment.h deleted file mode 100644 index dea3b342d..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/diversity/moeoFrontByFrontSharingDiversityAssignment.h +++ /dev/null @@ -1,106 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoFrontByFrontSharingDiversityAssignment.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOFRONTBYFRONTSHARINGDIVERSITYASSIGNMENT_H_ -#define MOEOFRONTBYFRONTSHARINGDIVERSITYASSIGNMENT_H_ - -#include - -/** - * Sharing assignment scheme on the way it is used in NSGA. - */ -template < class MOEOT > -class moeoFrontByFrontSharingDiversityAssignment : public moeoSharingDiversityAssignment < MOEOT > -{ -public: - - /** the objective vector type of the solutions */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * Ctor - * @param _distance the distance used to compute the neighborhood of solutions (can be related to the decision space or the objective space) - * @param _nicheSize neighborhood size in terms of radius distance (closely related to the way the distances are computed) - * @param _alpha parameter used to regulate the shape of the sharing function - */ - moeoFrontByFrontSharingDiversityAssignment(moeoDistance & _distance, double _nicheSize = 0.5, double _alpha = 2.0) : moeoSharingDiversityAssignment < MOEOT >(_distance, _nicheSize, _alpha) - {} - - - /** - * Ctor with an euclidean distance (with normalized objective values) in the objective space is used as default - * @param _nicheSize neighborhood size in terms of radius distance (closely related to the way the distances are computed) - * @param _alpha parameter used to regulate the shape of the sharing function - */ - moeoFrontByFrontSharingDiversityAssignment(double _nicheSize = 0.5, double _alpha = 2.0) : moeoSharingDiversityAssignment < MOEOT >(_nicheSize, _alpha) - {} - - - /** - * @warning NOT IMPLEMENTED, DO NOTHING ! - * Updates the diversity values of the whole population _pop by taking the deletion of the objective vector _objVec into account. - * @param _pop the population - * @param _objVec the objective vector - * @warning NOT IMPLEMENTED, DO NOTHING ! - */ - void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) - { - std::cout << "WARNING : updateByDeleting not implemented in moeoSharingDiversityAssignment" << std::endl; - } - - -private: - - using moeoSharingDiversityAssignment < MOEOT >::distance; - using moeoSharingDiversityAssignment < MOEOT >::nicheSize; - using moeoSharingDiversityAssignment < MOEOT >::sh; - using moeoSharingDiversityAssignment < MOEOT >::operator(); - - - /** - * Sets similarities FRONT BY FRONT for every solution contained in the population _pop - * @param _pop the population - */ - void setSimilarities(eoPop < MOEOT > & _pop) - { - // compute distances between every individuals - moeoDistanceMatrix < MOEOT , double > dMatrix (_pop.size(), distance); - dMatrix(_pop); - // sets the distance to bigger than the niche size for every couple of solutions that do not belong to the same front - for (unsigned int i=0; i<_pop.size(); i++) - { - for (unsigned int j=0; j -#include -#include -#include -#include -#include - -/** - * Sharing assignment scheme originally porposed by: - * D. E. Goldberg, "Genetic Algorithms in Search, Optimization and Machine Learning", Addision-Wesley, MA, USA (1989). - */ -template < class MOEOT > -class moeoSharingDiversityAssignment : public moeoDiversityAssignment < MOEOT > -{ -public: - - /** the objective vector type of the solutions */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * Ctor - * @param _distance the distance used to compute the neighborhood of solutions (can be related to the decision space or the objective space) - * @param _nicheSize neighborhood size in terms of radius distance (closely related to the way the distances are computed) - * @param _alpha parameter used to regulate the shape of the sharing function - */ - moeoSharingDiversityAssignment(moeoDistance & _distance, double _nicheSize = 0.5, double _alpha = 1.0) : distance(_distance), nicheSize(_nicheSize), alpha(_alpha) - {} - - - /** - * Ctor with an euclidean distance (with normalized objective values) in the objective space is used as default - * @param _nicheSize neighborhood size in terms of radius distance (closely related to the way the distances are computed) - * @param _alpha parameter used to regulate the shape of the sharing function - */ - moeoSharingDiversityAssignment(double _nicheSize = 0.5, double _alpha = 1.0) : distance(defaultDistance), nicheSize(_nicheSize), alpha(_alpha) - {} - - - /** - * Sets diversity values for every solution contained in the population _pop - * @param _pop the population - */ - void operator()(eoPop < MOEOT > & _pop) - { - // 1 - set simuilarities - setSimilarities(_pop); - // 2 - a higher diversity is better, so the values need to be inverted - moeoDiversityThenFitnessComparator < MOEOT > divComparator; - double max = std::max_element(_pop.begin(), _pop.end(), divComparator)->diversity(); - for (unsigned int i=0 ; i<_pop.size() ; i++) - { - _pop[i].diversity(max - _pop[i].diversity()); - } - } - - - /** - * @warning NOT IMPLEMENTED, DO NOTHING ! - * Updates the diversity values of the whole population _pop by taking the deletion of the objective vector _objVec into account. - * @param _pop the population - * @param _objVec the objective vector - * @warning NOT IMPLEMENTED, DO NOTHING ! - */ - void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) - { - std::cout << "WARNING : updateByDeleting not implemented in moeoSharingDiversityAssignment" << std::endl; - } - - -protected: - - /** the distance used to compute the neighborhood of solutions */ - moeoDistance < MOEOT , double > & distance; - /** euclidean distancein the objective space (can be used as default) */ - moeoEuclideanDistance < MOEOT > defaultDistance; - /** neighborhood size in terms of radius distance */ - double nicheSize; - /** parameter used to regulate the shape of the sharing function */ - double alpha; - - - /** - * Sets similarities for every solution contained in the population _pop - * @param _pop the population - */ - virtual void setSimilarities(eoPop < MOEOT > & _pop) - { - // compute distances between every individuals - moeoDistanceMatrix < MOEOT , double > dMatrix (_pop.size(), distance); - dMatrix(_pop); - // compute similarities - double sum; - for (unsigned int i=0; i<_pop.size(); i++) - { - sum = 0.0; - for (unsigned int j=0; j<_pop.size(); j++) - { - sum += sh(dMatrix[i][j]); - } - _pop[i].diversity(sum); - } - } - - - /** - * Sharing function - * @param _dist the distance value - */ - double sh(double _dist) - { - double result; - if (_dist < nicheSize) - { - result = 1.0 - pow(_dist / nicheSize, alpha); - } - else - { - result = 0.0; - } - return result; - } - -}; - - -#endif /*MOEOSHARINGDIVERSITYASSIGNMENT_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/do/make_checkpoint_moeo.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/do/make_checkpoint_moeo.h deleted file mode 100755 index 14ea4a336..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/do/make_checkpoint_moeo.h +++ /dev/null @@ -1,176 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// make_checkpoint_moeo.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MAKE_CHECKPOINT_MOEO_H_ -#define MAKE_CHECKPOINT_MOEO_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -bool testDirRes(std::string _dirName, bool _erase); - -/** - * This functions allows to build an eoCheckPoint for multi-objective optimization from the parser (partly taken from make_checkpoint_pareto.h) - * @param _parser the parser - * @param _state to store allocated objects - * @param _eval the funtions evaluator - * @param _continue the stopping crietria - * @param _pop the population - * @param _archive the archive of non-dominated solutions - */ -template < class MOEOT > -eoCheckPoint < MOEOT > & do_make_checkpoint_moeo (eoParser & _parser, eoState & _state, eoEvalFuncCounter < MOEOT > & _eval, eoContinue < MOEOT > & _continue, eoPop < MOEOT > & _pop, moeoArchive < MOEOT > & _archive) -{ - eoCheckPoint < MOEOT > & checkpoint = _state.storeFunctor(new eoCheckPoint < MOEOT > (_continue)); - /* the objective vector type */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - /////////////////// - // Counters - ////////////////// - // is nb Eval to be used as counter? - //bool useEval = _parser.getORcreateParam(true, "useEval", "Use nb of eval. as counter (vs nb of gen.)", '\0', "Output").value(); - // Create anyway a generation-counter parameter - eoValueParam *generationCounter = new eoValueParam(0, "Gen."); - // Create an incrementor (sub-class of eoUpdater). - eoIncrementor & increment = _state.storeFunctor( new eoIncrementor(generationCounter->value()) ); - // Add it to the checkpoint - checkpoint.add(increment); - // dir for DISK output - std::string & dirName = _parser.getORcreateParam(std::string("Res"), "resDir", "Directory to store DISK outputs", '\0', "Output").value(); - // shoudl we empty it if exists - eoValueParam& eraseParam = _parser.getORcreateParam(true, "eraseDir", "erase files in dirName if any", '\0', "Output"); - bool dirOK = false; // not tested yet - - // Dump of the whole population - //----------------------------- - bool printPop = _parser.getORcreateParam(false, "printPop", "Print sorted pop. every gen.", '\0', "Output").value(); - eoSortedPopStat * popStat; - if ( printPop ) // we do want pop dump - { - popStat = & _state.storeFunctor(new eoSortedPopStat); - checkpoint.add(*popStat); - } - - ////////////////////////////////// - // State savers - ////////////////////////////// - // feed the state to state savers - // save state every N generation - eoValueParam& saveFrequencyParam = _parser.createParam((unsigned int)(0), "saveFrequency", "Save every F generation (0 = only final state, absent = never)", '\0', "Persistence" ); - if (_parser.isItThere(saveFrequencyParam)) - { - // first make sure dirName is OK - if (! dirOK ) - dirOK = testDirRes(dirName, eraseParam.value()); // TRUE - unsigned int freq = (saveFrequencyParam.value()>0 ? saveFrequencyParam.value() : UINT_MAX ); -#ifdef _MSVC - std::string stmp = dirName + "\generations"; -#else - std::string stmp = dirName + "/generations"; -#endif - eoCountedStateSaver *stateSaver1 = new eoCountedStateSaver(freq, _state, stmp); - _state.storeFunctor(stateSaver1); - checkpoint.add(*stateSaver1); - } - // save state every T seconds - eoValueParam& saveTimeIntervalParam = _parser.getORcreateParam((unsigned int)(0), "saveTimeInterval", "Save every T seconds (0 or absent = never)", '\0',"Persistence" ); - if (_parser.isItThere(saveTimeIntervalParam) && saveTimeIntervalParam.value()>0) - { - // first make sure dirName is OK - if (! dirOK ) - dirOK = testDirRes(dirName, eraseParam.value()); // TRUE -#ifdef _MSVC - std::string stmp = dirName + "\time"; -#else - std::string stmp = dirName + "/time"; -#endif - eoTimedStateSaver *stateSaver2 = new eoTimedStateSaver(saveTimeIntervalParam.value(), _state, stmp); - _state.storeFunctor(stateSaver2); - checkpoint.add(*stateSaver2); - } - - /////////////////// - // Archive - ////////////////// - // update the archive every generation - bool updateArch = _parser.getORcreateParam(true, "updateArch", "Update the archive at each gen.", '\0', "Evolution Engine").value(); - if (updateArch) - { - moeoArchiveUpdater < MOEOT > * updater = new moeoArchiveUpdater < MOEOT > (_archive, _pop); - _state.storeFunctor(updater); - checkpoint.add(*updater); - } - // store the objective vectors contained in the archive every generation - bool storeArch = _parser.getORcreateParam(false, "storeArch", "Store the archive's objective vectors at each gen.", '\0', "Output").value(); - if (storeArch) - { - if (! dirOK ) - dirOK = testDirRes(dirName, eraseParam.value()); // TRUE -#ifdef _MSVC - std::string stmp = dirName + "\arch"; -#else - std::string stmp = dirName + "/arch"; -#endif - moeoArchiveObjectiveVectorSavingUpdater < MOEOT > * save_updater = new moeoArchiveObjectiveVectorSavingUpdater < MOEOT > (_archive, stmp); - _state.storeFunctor(save_updater); - checkpoint.add(*save_updater); - } - // store the contribution of the non-dominated solutions - bool cont = _parser.getORcreateParam(false, "contribution", "Store the contribution of the archive at each gen.", '\0', "Output").value(); - if (cont) - { - if (! dirOK ) - dirOK = testDirRes(dirName, eraseParam.value()); // TRUE -#ifdef _MSVC - std::string stmp = dirName + "\contribution"; -#else - std::string stmp = dirName + "/contribution"; -#endif - moeoContributionMetric < ObjectiveVector > * contribution = new moeoContributionMetric < ObjectiveVector >; - moeoBinaryMetricSavingUpdater < MOEOT > * contribution_updater = new moeoBinaryMetricSavingUpdater < MOEOT > (*contribution, _archive, stmp); - _state.storeFunctor(contribution_updater); - checkpoint.add(*contribution_updater); - } - // store the entropy of the non-dominated solutions - bool ent = _parser.getORcreateParam(false, "entropy", "Store the entropy of the archive at each gen.", '\0', "Output").value(); - if (ent) - { - if (! dirOK ) - dirOK = testDirRes(dirName, eraseParam.value()); // TRUE -#ifdef _MSVC - std::string stmp = dirName + "\entropy"; -#else - std::string stmp = dirName + "/entropy"; -#endif - moeoEntropyMetric < ObjectiveVector > * entropy = new moeoEntropyMetric < ObjectiveVector >; - moeoBinaryMetricSavingUpdater < MOEOT > * entropy_updater = new moeoBinaryMetricSavingUpdater < MOEOT > (*entropy, _archive, stmp); - _state.storeFunctor(entropy_updater); - checkpoint.add(*entropy_updater); - } - - // and that's it for the (control and) output - return checkpoint; -} - -#endif /*MAKE_CHECKPOINT_MOEO_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/do/make_continue_moeo.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/do/make_continue_moeo.h deleted file mode 100755 index 66ebf0501..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/do/make_continue_moeo.h +++ /dev/null @@ -1,106 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// make_continue_moeo.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MAKE_CONTINUE_MOEO_H_ -#define MAKE_CONTINUE_MOEO_H_ - -#include -#include -#include -#include -#include -#ifndef _MSC_VER -#include -#endif -#include -#include - - -/** - * Helper function - * @param _combined the eoCombinedContinue object - * @param _cont the eoContinue to add - */ -template -eoCombinedContinue * make_combinedContinue(eoCombinedContinue *_combined, eoContinue *_cont) -{ - if (_combined) // already exists - _combined->add(*_cont); - else - _combined = new eoCombinedContinue(*_cont); - return _combined; -} - - -/** - * This functions allows to build a eoContinue for multi-objective optimization from the parser (partly taken from make_continue_pareto.h) - * @param _parser the parser - * @param _state to store allocated objects - * @param _eval the funtions evaluator - */ -template -eoContinue & do_make_continue_moeo(eoParser& _parser, eoState& _state, eoEvalFuncCounter & _eval) -{ - // the combined continue - to be filled - eoCombinedContinue *continuator = NULL; - // First the eoGenContinue - need a default value so you can run blind - // but we also need to be able to avoid it <--> 0 - eoValueParam& maxGenParam = _parser.createParam((unsigned int)(100), "maxGen", "Maximum number of generations (0 = none)",'G',"Stopping criterion"); - if (maxGenParam.value()) // positive: -> define and store - { - eoGenContinue *genCont = new eoGenContinue(maxGenParam.value()); - _state.storeFunctor(genCont); - // and "add" to combined - continuator = make_combinedContinue(continuator, genCont); - } - // maxEval - eoValueParam& maxEvalParam = _parser.getORcreateParam((unsigned long)(0), "maxEval", "Maximum number of evaluations (0 = none)", 'E', "Stopping criterion"); - if (maxEvalParam.value()) - { - eoEvalContinue *evalCont = new eoEvalContinue(_eval, maxEvalParam.value()); - _state.storeFunctor(evalCont); - // and "add" to combined - continuator = make_combinedContinue(continuator, evalCont); - } - // maxTime - eoValueParam& maxTimeParam = _parser.getORcreateParam((unsigned long)(0), "maxTime", "Maximum running time in seconds (0 = none)", 'T', "Stopping criterion"); - if (maxTimeParam.value()) // positive: -> define and store - { - eoTimeContinue *timeCont = new eoTimeContinue(maxTimeParam.value()); - _state.storeFunctor(timeCont); - // and "add" to combined - continuator = make_combinedContinue(continuator, timeCont); - } - // CtrlC -#ifndef _MSC_VER - // the CtrlC interception (Linux only I'm afraid) - eoCtrlCContinue *ctrlCCont; - eoValueParam& ctrlCParam = _parser.createParam(true, "CtrlC", "Terminate current generation upon Ctrl C",'C', "Stopping criterion"); - if (_parser.isItThere(ctrlCParam)) - { - ctrlCCont = new eoCtrlCContinue; - // store - _state.storeFunctor(ctrlCCont); - // add to combinedContinue - continuator = make_combinedContinue(continuator, ctrlCCont); - } -#endif - // now check that there is at least one! - if (!continuator) - throw std::runtime_error("You MUST provide a stopping criterion"); - // OK, it's there: store in the eoState - _state.storeFunctor(continuator); - // and return - return *continuator; -} - -#endif /*MAKE_CONTINUE_MOEO_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/do/make_ea_moeo.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/do/make_ea_moeo.h deleted file mode 100755 index bd624cc17..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/do/make_ea_moeo.h +++ /dev/null @@ -1,272 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// make_ea_moeo.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MAKE_EA_MOEO_H_ -#define MAKE_EA_MOEO_H_ - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -/** - * This functions allows to build a moeoEA from the parser - * @param _parser the parser - * @param _state to store allocated objects - * @param _eval the funtions evaluator - * @param _continue the stopping crietria - * @param _op the variation operators - * @param _archive the archive of non-dominated solutions - */ -template < class MOEOT > -moeoEA < MOEOT > & do_make_ea_moeo(eoParser & _parser, eoState & _state, eoEvalFunc < MOEOT > & _eval, eoContinue < MOEOT > & _continue, eoGenOp < MOEOT > & _op, moeoArchive < MOEOT > & _archive) -{ - - /* the objective vector type */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /* the fitness assignment strategy */ - std::string & fitnessParam = _parser.createParam(std::string("FastNonDominatedSorting"), "fitness", - "Fitness assignment scheme: Dummy, FastNonDominatedSorting or IndicatorBased", 'F', - "Evolution Engine").value(); - std::string & indicatorParam = _parser.createParam(std::string("Epsilon"), "indicator", - "Binary indicator for IndicatorBased: Epsilon, Hypervolume", 'i', - "Evolution Engine").value(); - double rho = _parser.createParam(1.1, "rho", "reference point for the hypervolume indicator", 'r', - "Evolution Engine").value(); - double kappa = _parser.createParam(0.05, "kappa", "Scaling factor kappa for IndicatorBased", 'k', - "Evolution Engine").value(); - moeoFitnessAssignment < MOEOT > * fitnessAssignment; - if (fitnessParam == std::string("Dummy")) - { - fitnessAssignment = new moeoDummyFitnessAssignment < MOEOT> (); - } - else if (fitnessParam == std::string("FastNonDominatedSorting")) - { - fitnessAssignment = new moeoFastNonDominatedSortingFitnessAssignment < MOEOT> (); - } - else if (fitnessParam == std::string("IndicatorBased")) - { - // metric - moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > *metric; - if (indicatorParam == std::string("Epsilon")) - { - metric = new moeoAdditiveEpsilonBinaryMetric < ObjectiveVector >; - } - else if (indicatorParam == std::string("Hypervolume")) - { - metric = new moeoHypervolumeBinaryMetric < ObjectiveVector > (rho); - } - else - { - std::string stmp = std::string("Invalid binary quality indicator: ") + indicatorParam; - throw std::runtime_error(stmp.c_str()); - } - fitnessAssignment = new moeoIndicatorBasedFitnessAssignment < MOEOT > (*metric, kappa); - } - else - { - std::string stmp = std::string("Invalid fitness assignment strategy: ") + fitnessParam; - throw std::runtime_error(stmp.c_str()); - } - _state.storeFunctor(fitnessAssignment); - - - /* the diversity assignment strategy */ - eoValueParam & diversityParam = _parser.createParam(eoParamParamType("Dummy"), "diversity", - "Diversity assignment scheme: Dummy, Sharing(nicheSize) or Crowding", 'D', "Evolution Engine"); - eoParamParamType & diversityParamValue = diversityParam.value(); - moeoDiversityAssignment < MOEOT > * diversityAssignment; - if (diversityParamValue.first == std::string("Dummy")) - { - diversityAssignment = new moeoDummyDiversityAssignment < MOEOT> (); - } - else if (diversityParamValue.first == std::string("Sharing")) - { - double nicheSize; - if (!diversityParamValue.second.size()) // no parameter added - { - std::cerr << "WARNING, no niche size given for Sharing, using 0.5" << std::endl; - nicheSize = 0.5; - diversityParamValue.second.push_back(std::string("0.5")); - } - else - { - nicheSize = atoi(diversityParamValue.second[0].c_str()); - } - diversityAssignment = new moeoFrontByFrontSharingDiversityAssignment < MOEOT> (nicheSize); - } - else if (diversityParamValue.first == std::string("Crowding")) - { - diversityAssignment = new moeoFrontByFrontCrowdingDistanceDiversityAssignment < MOEOT> (); - } - else - { - std::string stmp = std::string("Invalid diversity assignment strategy: ") + diversityParamValue.first; - throw std::runtime_error(stmp.c_str()); - } - _state.storeFunctor(diversityAssignment); - - - /* the comparator strategy */ - std::string & comparatorParam = _parser.createParam(std::string("FitnessThenDiversity"), "comparator", - "Comparator scheme: FitnessThenDiversity, DiversityThenFitness or Aggregative", 'C', "Evolution Engine").value(); - moeoComparator < MOEOT > * comparator; - if (comparatorParam == std::string("FitnessThenDiversity")) - { - comparator = new moeoFitnessThenDiversityComparator < MOEOT> (); - } - else if (comparatorParam == std::string("DiversityThenFitness")) - { - comparator = new moeoDiversityThenFitnessComparator < MOEOT> (); - } - else if (comparatorParam == std::string("Aggregative")) - { - comparator = new moeoAggregativeComparator < MOEOT> (); - } - else - { - std::string stmp = std::string("Invalid comparator strategy: ") + comparatorParam; - throw std::runtime_error(stmp.c_str()); - } - _state.storeFunctor(comparator); - - - /* the selection strategy */ - eoValueParam < eoParamParamType > & selectionParam = _parser.createParam(eoParamParamType("DetTour(2)"), "selection", - "Selection scheme: DetTour(T), StochTour(t) or Random", 'S', "Evolution Engine"); - eoParamParamType & ppSelect = selectionParam.value(); - moeoSelectOne < MOEOT > * select; - if (ppSelect.first == std::string("DetTour")) - { - unsigned int tSize; - if (!ppSelect.second.size()) // no parameter added - { - std::cerr << "WARNING, no parameter passed to DetTour, using 2" << std::endl; - tSize = 2; - // put back 2 in parameter for consistency (and status file) - ppSelect.second.push_back(std::string("2")); - } - else // parameter passed by user as DetTour(T) - { - tSize = atoi(ppSelect.second[0].c_str()); - } - select = new moeoDetTournamentSelect < MOEOT > (*comparator, tSize); - } - else if (ppSelect.first == std::string("StochTour")) - { - double tRate; - if (!ppSelect.second.size()) // no parameter added - { - std::cerr << "WARNING, no parameter passed to StochTour, using 1" << std::endl; - tRate = 1; - // put back 1 in parameter for consistency (and status file) - ppSelect.second.push_back(std::string("1")); - } - else // parameter passed by user as StochTour(T) - { - tRate = atof(ppSelect.second[0].c_str()); - } - select = new moeoStochTournamentSelect < MOEOT > (*comparator, tRate); - } - /* - else if (ppSelect.first == string("Roulette")) - { - // TO DO ! - // ... - } - */ - else if (ppSelect.first == std::string("Random")) - { - select = new moeoRandomSelect (); - } - else - { - std::string stmp = std::string("Invalid selection strategy: ") + ppSelect.first; - throw std::runtime_error(stmp.c_str()); - } - _state.storeFunctor(select); - - - /* the replacement strategy */ - std::string & replacementParam = _parser.createParam(std::string("Elitist"), "replacement", - "Replacement scheme: Elitist, Environmental or Generational", 'R', "Evolution Engine").value(); - moeoReplacement < MOEOT > * replace; - if (replacementParam == std::string("Elitist")) - { - replace = new moeoElitistReplacement < MOEOT> (*fitnessAssignment, *diversityAssignment, *comparator); - } - else if (replacementParam == std::string("Environmental")) - { - replace = new moeoEnvironmentalReplacement < MOEOT> (*fitnessAssignment, *diversityAssignment, *comparator); - } - else if (replacementParam == std::string("Generational")) - { - replace = new moeoGenerationalReplacement < MOEOT> (); - } - else - { - std::string stmp = std::string("Invalid replacement strategy: ") + replacementParam; - throw std::runtime_error(stmp.c_str()); - } - _state.storeFunctor(replace); - - - /* the number of offspring */ - eoValueParam < eoHowMany > & offspringRateParam = _parser.createParam(eoHowMany(1.0), "nbOffspring", - "Number of offspring (percentage or absolute)", 'O', "Evolution Engine"); - - - // the general breeder - eoGeneralBreeder < MOEOT > * breed = new eoGeneralBreeder < MOEOT > (*select, _op, offspringRateParam.value()); - _state.storeFunctor(breed); - // the eoEasyEA - moeoEA < MOEOT > * algo = new moeoEasyEA < MOEOT > (_continue, _eval, *breed, *replace, *fitnessAssignment, *diversityAssignment); - _state.storeFunctor(algo); - return *algo; - -} - -#endif /*MAKE_EA_MOEO_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/do/make_ls_moeo.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/do/make_ls_moeo.h deleted file mode 100755 index 6742adeaa..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/do/make_ls_moeo.h +++ /dev/null @@ -1,120 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// make_ls_moeo.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MAKE_LS_MOEO_H_ -#define MAKE_LS_MOEO_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/** - * This functions allows to build a moeoLS from the parser - * @param _parser the parser - * @param _state to store allocated objects - * @param _eval the funtions evaluator - * @param _moveIncrEval the incremental evaluation - * @param _continue the stopping crietria - * @param _op the variation operators - * @param _opInit the initilization operator - * @param _moveInit the move initializer - * @param _nextMove the move incrementor - * @param _archive the archive of non-dominated solutions - */ -template < class MOEOT, class Move > -moeoLS < MOEOT, eoPop & > & do_make_ls_moeo ( - eoParser & _parser, - eoState & _state, - eoEvalFunc < MOEOT > & _eval, - moeoMoveIncrEval < Move > & _moveIncrEval, - eoContinue < MOEOT > & _continue, - eoMonOp < MOEOT > & _op, - eoMonOp < MOEOT > & _opInit, - moMoveInit < Move > & _moveInit, - moNextMove < Move > & _nextMove, - moeoArchive < MOEOT > & _archive -) -{ - /* the objective vector type */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - /* the fitness assignment strategy */ - std::string & fitnessParam = _parser.getORcreateParam(std::string("IndicatorBased"), "fitness", - "Fitness assignment strategy parameter: IndicatorBased...", 'F', - "Evolution Engine").value(); - std::string & indicatorParam = _parser.getORcreateParam(std::string("Epsilon"), "indicator", - "Binary indicator to use with the IndicatorBased assignment: Epsilon, Hypervolume", 'i', - "Evolution Engine").value(); - double rho = _parser.getORcreateParam(1.1, "rho", "reference point for the hypervolume indicator", - 'r', "Evolution Engine").value(); - double kappa = _parser.getORcreateParam(0.05, "kappa", "Scaling factor kappa for IndicatorBased", - 'k', "Evolution Engine").value(); - moeoIndicatorBasedFitnessAssignment < MOEOT > * fitnessAssignment; - if (fitnessParam == std::string("IndicatorBased")) - { - // metric - moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > *metric; - if (indicatorParam == std::string("Epsilon")) - { - metric = new moeoAdditiveEpsilonBinaryMetric < ObjectiveVector >; - } - else if (indicatorParam == std::string("Hypervolume")) - { - metric = new moeoHypervolumeBinaryMetric < ObjectiveVector > (rho); - } - else - { - std::string stmp = std::string("Invalid binary quality indicator: ") + indicatorParam; - throw std::runtime_error(stmp.c_str()); - } - fitnessAssignment = new moeoIndicatorBasedFitnessAssignment < MOEOT> (*metric, kappa); - } - else - { - std::string stmp = std::string("Invalid fitness assignment strategy: ") + fitnessParam; - throw std::runtime_error(stmp.c_str()); - } - _state.storeFunctor(fitnessAssignment); - // number of iterations - unsigned int n = _parser.getORcreateParam(1, "n", "Number of iterations for population Initialization", 'n', "Evolution Engine").value(); - // LS - std::string & lsParam = _parser.getORcreateParam(std::string("I-IBMOLS"), "ls", - "Local Search: IBMOLS, I-IBMOLS (Iterated-IBMOLS)...", 'L', - "Evolution Engine").value(); - moeoLS < MOEOT, eoPop & > * ls; - if (lsParam == std::string("IBMOLS")) - { - ls = new moeoIBMOLS < MOEOT, Move > (_moveInit, _nextMove, _eval, _moveIncrEval, *fitnessAssignment, _continue);; - } - else if (lsParam == std::string("I-IBMOLS")) - { - ls = new moeoIteratedIBMOLS < MOEOT, Move > (_moveInit, _nextMove, _eval, _moveIncrEval, *fitnessAssignment, _continue, _op, _opInit, n); - } - else - { - std::string stmp = std::string("Invalid fitness assignment strategy: ") + fitnessParam; - throw std::runtime_error(stmp.c_str()); - } - _state.storeFunctor(ls); - // that's it ! - return *ls; -} - -#endif /*MAKE_LS_MOEO_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/fitness/moeoAchievementFitnessAssignment.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/fitness/moeoAchievementFitnessAssignment.h deleted file mode 100644 index 7cd5c4bba..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/fitness/moeoAchievementFitnessAssignment.h +++ /dev/null @@ -1,145 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoAchievementFitnessAssignment.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOACHIEVEMENTFITNESSASSIGNMENT_H_ -#define MOEOACHIEVEMENTFITNESSASSIGNMENT_H_ - -#include -#include -#include - -/** - * Fitness assignment sheme based on the achievement scalarizing function propozed by Wiersbicki (1980). - */ -template < class MOEOT > -class moeoAchievementFitnessAssignment : public moeoScalarFitnessAssignment < MOEOT > -{ -public: - - /** the objective vector type of the solutions */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * Default ctor - * @param _reference reference point vector - * @param _lambdas weighted coefficients vector - * @param _spn arbitrary small positive number (0 < _spn << 1) - */ - moeoAchievementFitnessAssignment(ObjectiveVector & _reference, std::vector < double > & _lambdas, double _spn=0.0001) : reference(_reference), lambdas(_lambdas), spn(_spn) - { - // consistency check - if ((spn < 0.0) || (spn > 1.0)) - { - std::cout << "Warning, the arbitrary small positive number should be > 0 and <<1, adjusted to 0.0001\n"; - spn = 0.0001; - } - } - - - /** - * Ctor with default values for lambdas (1/nObjectives) - * @param _reference reference point vector - * @param _spn arbitrary small positive number (0 < _spn << 1) - */ - moeoAchievementFitnessAssignment(ObjectiveVector & _reference, double _spn=0.0001) : reference(_reference), spn(_spn) - { - // compute the default values for lambdas - lambdas = std::vector < double > (ObjectiveVector::nObjectives()); - for (unsigned int i=0 ; i 1.0)) - { - std::cout << "Warning, the arbitrary small positive number should be > 0 and <<1, adjusted to 0.0001\n"; - spn = 0.0001; - } - } - - - /** - * Sets the fitness values for every solution contained in the population _pop - * @param _pop the population - */ - virtual void operator()(eoPop < MOEOT > & _pop) - { - for (unsigned int i=0; i<_pop.size() ; i++) - { - compute(_pop[i]); - } - } - - - /** - * Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account (nothing to do). - * @param _pop the population - * @param _objVec the objective vector - */ - void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) - { - // nothing to do ;-) - } - - - /** - * Sets the reference point - * @param _reference the new reference point - */ - void setReference(const ObjectiveVector & _reference) - { - reference = _reference; - } - - -private: - - /** the reference point */ - ObjectiveVector reference; - /** the weighted coefficients vector */ - std::vector < double > lambdas; - /** an arbitrary small positive number (0 < _spn << 1) */ - double spn; - - - /** - * Returns a big value (regarded as infinite) - */ - double inf() const - { - return std::numeric_limits::max(); - } - - - /** - * Computes the fitness value for a solution - * @param _moeo the solution - */ - void compute(MOEOT & _moeo) - { - unsigned int nobj = MOEOT::ObjectiveVector::nObjectives(); - double temp; - double min = inf(); - double sum = 0; - for (unsigned int obj=0; obj - -/** - * moeoCriterionBasedFitnessAssignment is a moeoFitnessAssignment for criterion-based strategies. - */ -template < class MOEOT > -class moeoCriterionBasedFitnessAssignment : public moeoFitnessAssignment < MOEOT > {}; - -#endif /*MOEOCRITERIONBASEDFITNESSASSIGNMENT_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/fitness/moeoDummyFitnessAssignment.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/fitness/moeoDummyFitnessAssignment.h deleted file mode 100644 index e82436b4b..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/fitness/moeoDummyFitnessAssignment.h +++ /dev/null @@ -1,59 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoDummyFitnessAssignment.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEODUMMYFITNESSASSIGNMENT_H_ -#define MOEODUMMYFITNESSASSIGNMENT_H_ - -#include - -/** - * moeoDummyFitnessAssignment is a moeoFitnessAssignment that gives the value '0' as the individual's fitness for a whole population if it is invalid. - */ -template < class MOEOT > -class moeoDummyFitnessAssignment : public moeoFitnessAssignment < MOEOT > -{ -public: - - /** The type for objective vector */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * Sets the fitness to '0' for every individuals of the population _pop if it is invalid - * @param _pop the population - */ - void operator () (eoPop < MOEOT > & _pop) - { - for (unsigned int idx = 0; idx<_pop.size (); idx++) - { - if (_pop[idx].invalidFitness()) - { - // set the diversity to 0 - _pop[idx].fitness(0.0); - } - } - } - - - /** - * Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account. - * @param _pop the population - * @param _objVec the objective vector - */ - void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) - { - // nothing to do... ;-) - } - -}; - -#endif /*MOEODUMMYFITNESSASSIGNMENT_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/fitness/moeoFastNonDominatedSortingFitnessAssignment.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/fitness/moeoFastNonDominatedSortingFitnessAssignment.h deleted file mode 100644 index c379eb5ef..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/fitness/moeoFastNonDominatedSortingFitnessAssignment.h +++ /dev/null @@ -1,239 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoFastNonDominatedSortingFitnessAssignment.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOFASTNONDOMINATEDSORTINGFITNESSASSIGNMENT_H_ -#define MOEOFASTNONDOMINATEDSORTINGFITNESSASSIGNMENT_H_ - -#include -#include -#include -#include -#include -#include - - -/** - * Fitness assignment sheme based on Pareto-dominance count proposed in: - * N. Srinivas, K. Deb, "Multiobjective Optimization Using Nondominated Sorting in Genetic Algorithms", Evolutionary Computation vol. 2, no. 3, pp. 221-248 (1994) - * and in: - * K. Deb, A. Pratap, S. Agarwal, T. Meyarivan, "A Fast and Elitist Multi-Objective Genetic Algorithm: NSGA-II", IEEE Transactions on Evolutionary Computation, vol. 6, no. 2 (2002). - * This strategy is, for instance, used in NSGA and NSGA-II. - */ -template < class MOEOT > -class moeoFastNonDominatedSortingFitnessAssignment : public moeoParetoBasedFitnessAssignment < MOEOT > -{ -public: - - /** the objective vector type of the solutions */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * Default ctor - */ - moeoFastNonDominatedSortingFitnessAssignment() : comparator(paretoComparator) - {} - - - /** - * Ctor where you can choose your own way to compare objective vectors - * @param _comparator the functor used to compare objective vectors - */ - moeoFastNonDominatedSortingFitnessAssignment(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator) : comparator(_comparator) - {} - - - /** - * Sets the fitness values for every solution contained in the population _pop - * @param _pop the population - */ - void operator()(eoPop < MOEOT > & _pop) - { - // number of objectives for the problem under consideration - unsigned int nObjectives = MOEOT::ObjectiveVector::nObjectives(); - if (nObjectives == 1) - { - // one objective - oneObjective(_pop); - } - else if (nObjectives == 2) - { - // two objectives (the two objectives function is still to implement) - mObjectives(_pop); - } - else if (nObjectives > 2) - { - // more than two objectives - mObjectives(_pop); - } - else - { - // problem with the number of objectives - throw std::runtime_error("Problem with the number of objectives in moeoNonDominatedSortingFitnessAssignment"); - } - // a higher fitness is better, so the values need to be inverted - double max = _pop[0].fitness(); - for (unsigned int i=1 ; i<_pop.size() ; i++) - { - max = std::max(max, _pop[i].fitness()); - } - for (unsigned int i=0 ; i<_pop.size() ; i++) - { - _pop[i].fitness(max - _pop[i].fitness()); - } - } - - - /** - * Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account. - * @param _pop the population - * @param _objVec the objective vector - */ - void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) - { - for (unsigned int i=0; i<_pop.size(); i++) - { - // if _pop[i] is dominated by _objVec - if ( comparator(_pop[i].objectiveVector(), _objVec) ) - { - _pop[i].fitness(_pop[i].fitness()+1); - } - } - } - - -private: - - /** Functor to compare two objective vectors */ - moeoObjectiveVectorComparator < ObjectiveVector > & comparator; - /** Functor to compare two objective vectors according to Pareto dominance relation */ - moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; - /** Functor allowing to compare two solutions according to their first objective value, then their second, and so on. */ - class ObjectiveComparator : public moeoComparator < MOEOT > - { - public: - /** - * Returns true if _moeo1 < _moeo2 on the first objective, then on the second, and so on - * @param _moeo1 the first solution - * @param _moeo2 the second solution - */ - const bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) - { - return cmp(_moeo1.objectiveVector(), _moeo2.objectiveVector()); - } - private: - /** the corresponding comparator for objective vectors */ - moeoObjectiveObjectiveVectorComparator < ObjectiveVector > cmp; - } objComparator; - - - /** - * Sets the fitness values for mono-objective problems - * @param _pop the population - */ - void oneObjective (eoPop < MOEOT > & _pop) - { - // sorts the population in the ascending order - std::sort(_pop.begin(), _pop.end(), objComparator); - // assign fitness values - unsigned int rank = 1; - _pop[_pop.size()-1].fitness(rank); - for (unsigned int i=_pop.size()-2; i>=0; i--) - { - if (_pop[i].objectiveVector() != _pop[i+1].objectiveVector()) - { - rank++; - } - _pop[i].fitness(rank); - } - } - - - /** - * Sets the fitness values for bi-objective problems with a complexity of O(n log n), where n stands for the population size - * @param _pop the population - */ - void twoObjectives (eoPop < MOEOT > & _pop) - { - //... TO DO ! - } - - - /** - * Sets the fitness values for problems with more than two objectives with a complexity of O(n² log n), where n stands for the population size - * @param _pop the population - */ - void mObjectives (eoPop < MOEOT > & _pop) - { - // S[i] = indexes of the individuals dominated by _pop[i] - std::vector < std::vector > S(_pop.size()); - // n[i] = number of individuals that dominate the individual _pop[i] - std::vector < unsigned int > n(_pop.size(), 0); - // fronts: F[i] = indexes of the individuals contained in the ith front - std::vector < std::vector > F(_pop.size()+2); - // used to store the number of the first front - F[1].reserve(_pop.size()); - for (unsigned int p=0; p<_pop.size(); p++) - { - for (unsigned int q=0; q<_pop.size(); q++) - { - // if q is dominated by p - if ( comparator(_pop[q].objectiveVector(), _pop[p].objectiveVector()) ) - { - // add q to the set of solutions dominated by p - S[p].push_back(q); - } - // if p is dominated by q - else if ( comparator(_pop[p].objectiveVector(), _pop[q].objectiveVector()) ) - { - // increment the domination counter of p - n[p]++; - } - } - // if no individual dominates p - if (n[p] == 0) - { - // p belongs to the first front - _pop[p].fitness(1); - F[1].push_back(p); - } - } - // front counter - unsigned int counter=1; - unsigned int p,q; - while (! F[counter].empty()) - { - // used to store the number of the next front - F[counter+1].reserve(_pop.size()); - for (unsigned int i=0; i -#include - -/** - * Functor that sets the fitness values of a whole population. - */ -template < class MOEOT > -class moeoFitnessAssignment : public eoUF < eoPop < MOEOT > &, void > -{ -public: - - /** The type for objective vector */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account. - * @param _pop the population - * @param _objVec the objective vector - */ - virtual void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) = 0; - - - /** - * Updates the fitness values of the whole population _pop by taking the deletion of the individual _moeo into account. - * @param _pop the population - * @param _moeo the individual - */ - void updateByDeleting(eoPop < MOEOT > & _pop, MOEOT & _moeo) - { - updateByDeleting(_pop, _moeo.objectiveVector()); - } - -}; - -#endif /*MOEOFITNESSASSIGNMENT_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/fitness/moeoIndicatorBasedFitnessAssignment.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/fitness/moeoIndicatorBasedFitnessAssignment.h deleted file mode 100644 index 54b183ec3..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/fitness/moeoIndicatorBasedFitnessAssignment.h +++ /dev/null @@ -1,202 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoIndicatorBasedFitnessAssignment.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOINDICATORBASEDFITNESSASSIGNMENT_H_ -#define MOEOINDICATORBASEDFITNESSASSIGNMENT_H_ - -#include -#include -#include -#include -#include -#include - -/** - * Fitness assignment sheme based an Indicator proposed in: - * E. Zitzler, S. Künzli, "Indicator-Based Selection in Multiobjective Search", Proc. 8th International Conference on Parallel Problem Solving from Nature (PPSN VIII), pp. 832-842, Birmingham, UK (2004). - * This strategy is, for instance, used in IBEA. - */ -template < class MOEOT > -class moeoIndicatorBasedFitnessAssignment : public moeoFitnessAssignment < MOEOT > -{ -public: - - /** The type of objective vector */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * Ctor. - * @param _metric the quality indicator - * @param _kappa the scaling factor - */ - moeoIndicatorBasedFitnessAssignment(moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric, const double _kappa = 0.05) : metric(_metric), kappa(_kappa) - {} - - - /** - * Sets the fitness values for every solution contained in the population _pop - * @param _pop the population - */ - void operator()(eoPop < MOEOT > & _pop) - { - // 1 - setting of the bounds - setup(_pop); - // 2 - computing every indicator values - computeValues(_pop); - // 3 - setting fitnesses - setFitnesses(_pop); - } - - - /** - * Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account. - * @param _pop the population - * @param _objVec the objective vector - */ - void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) - { - std::vector < double > v; - v.resize(_pop.size()); - for (unsigned int i=0; i<_pop.size(); i++) - { - v[i] = metric(_objVec, _pop[i].objectiveVector()); - } - for (unsigned int i=0; i<_pop.size(); i++) - { - _pop[i].fitness( _pop[i].fitness() + exp(-v[i]/kappa) ); - } - } - - - /** - * Updates the fitness values of the whole population _pop by taking the adding of the objective vector _objVec into account - * and returns the fitness value of _objVec. - * @param _pop the population - * @param _objVec the objective vector - */ - double updateByAdding(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) - { - std::vector < double > v; - // update every fitness values to take the new individual into account - v.resize(_pop.size()); - for (unsigned int i=0; i<_pop.size(); i++) - { - v[i] = metric(_objVec, _pop[i].objectiveVector()); - } - for (unsigned int i=0; i<_pop.size(); i++) - { - _pop[i].fitness( _pop[i].fitness() - exp(-v[i]/kappa) ); - } - // compute the fitness of the new individual - v.clear(); - v.resize(_pop.size()); - for (unsigned int i=0; i<_pop.size(); i++) - { - v[i] = metric(_pop[i].objectiveVector(), _objVec); - } - double result = 0; - for (unsigned int i=0; i & metric; - /** the scaling factor */ - double kappa; - /** the computed indicator values */ - std::vector < std::vector > values; - - - /** - * Sets the bounds for every objective using the min and the max value for every objective vector of _pop - * @param _pop the population - */ - void setup(const eoPop < MOEOT > & _pop) - { - double min, max; - for (unsigned int i=0; i & _pop) - { - values.clear(); - values.resize(_pop.size()); - for (unsigned int i=0; i<_pop.size(); i++) - { - values[i].resize(_pop.size()); - for (unsigned int j=0; j<_pop.size(); j++) - { - if (i != j) - { - values[i][j] = metric(_pop[i].objectiveVector(), _pop[j].objectiveVector()); - } - } - } - } - - - /** - * Sets the fitness value of the whple population - * @param _pop the population - */ - void setFitnesses(eoPop < MOEOT > & _pop) - { - for (unsigned int i=0; i<_pop.size(); i++) - { - _pop[i].fitness(computeFitness(i)); - } - } - - - /** - * Returns the fitness value of the _idx th individual of the population - * @param _idx the index - */ - double computeFitness(const unsigned int _idx) - { - double result = 0; - for (unsigned int i=0; i - -/** - * moeoParetoBasedFitnessAssignment is a moeoFitnessAssignment for Pareto-based strategies. - */ -template < class MOEOT > -class moeoParetoBasedFitnessAssignment : public moeoFitnessAssignment < MOEOT > {}; - -#endif /*MOEOPARETOBASEDFITNESSASSIGNMENT_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/fitness/moeoReferencePointIndicatorBasedFitnessAssignment.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/fitness/moeoReferencePointIndicatorBasedFitnessAssignment.h deleted file mode 100755 index 027cc9ea3..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/fitness/moeoReferencePointIndicatorBasedFitnessAssignment.h +++ /dev/null @@ -1,109 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoReferencePointIndicatorBasedFitnessAssignment.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOREFERENCEPOINTINDICATORBASEDFITNESSASSIGNMENT_H_ -#define MOEOREFERENCEPOINTINDICATORBASEDFITNESSASSIGNMENT_H_ - -#include -#include -#include -#include - -/** - * Fitness assignment sheme based a Reference Point and a Quality Indicator. - */ -template < class MOEOT > -class moeoReferencePointIndicatorBasedFitnessAssignment : public moeoFitnessAssignment < MOEOT > -{ -public: - - /** The type of objective vector */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - /** - * Ctor - * @param _refPoint the reference point - * @param _metric the quality indicator - */ - moeoReferencePointIndicatorBasedFitnessAssignment (ObjectiveVector & _refPoint, moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric) : - refPoint(_refPoint), metric(_metric) - {} - - - /** - * Sets the fitness values for every solution contained in the population _pop - * @param _pop the population - */ - void operator()(eoPop < MOEOT > & _pop) - { - // 1 - setting of the bounds - setup(_pop); - // 2 - setting fitnesses - setFitnesses(_pop); - } - - - /** - * Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account. - * @param _pop the population - * @param _objVec the objective vector - */ - void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) - { - // nothing to do ;-) - } - - -protected: - - /** the reference point */ - ObjectiveVector & refPoint; - /** the quality indicator */ - moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & metric; - - - /** - * Sets the bounds for every objective using the min and the max value for every objective vector of _pop (and the reference point) - * @param _pop the population - */ - void setup(const eoPop < MOEOT > & _pop) - { - double min, max; - for (unsigned int i=0; i & _pop) - { - for (unsigned int i=0; i<_pop.size(); i++) - { - _pop[i].fitness(- metric(_pop[i].objectiveVector(), refPoint) ); - } - } - -}; - -#endif /*MOEOREFERENCEPOINTINDICATORBASEDFITNESSASSIGNMENT_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/fitness/moeoScalarFitnessAssignment.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/fitness/moeoScalarFitnessAssignment.h deleted file mode 100644 index d2e8508f3..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/fitness/moeoScalarFitnessAssignment.h +++ /dev/null @@ -1,24 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoScalarFitnessAssignment.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOSCALARFITNESSASSIGNMENT_H_ -#define MOEOSCALARFITNESSASSIGNMENT_H_ - -#include - -/** - * moeoScalarFitnessAssignment is a moeoFitnessAssignment for scalar strategies. - */ -template < class MOEOT > -class moeoScalarFitnessAssignment : public moeoFitnessAssignment < MOEOT > {}; - -#endif /*MOEOSCALARFITNESSASSIGNMENT_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/metric/moeoAdditiveEpsilonBinaryMetric.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/metric/moeoAdditiveEpsilonBinaryMetric.h deleted file mode 100644 index 95304becb..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/metric/moeoAdditiveEpsilonBinaryMetric.h +++ /dev/null @@ -1,84 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoAdditiveEpsilonBinaryMetric.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOADDITIVEEPSILONBINARYMETRIC_H_ -#define MOEOADDITIVEEPSILONBINARYMETRIC_H_ - -#include - -/** - * Additive epsilon binary metric allowing to compare two objective vectors as proposed in - * Zitzler E., Thiele L., Laumanns M., Fonseca C. M., Grunert da Fonseca V.: - * Performance Assessment of Multiobjective Optimizers: An Analysis and Review. IEEE Transactions on Evolutionary Computation 7(2), pp.117–132 (2003). - */ -template < class ObjectiveVector > -class moeoAdditiveEpsilonBinaryMetric : public moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > -{ -public: - - /** - * Returns the minimal distance by which the objective vector _o1 must be translated in all objectives - * so that it weakly dominates the objective vector _o2 - * @warning don't forget to set the bounds for every objective before the call of this function - * @param _o1 the first objective vector - * @param _o2 the second objective vector - */ - double operator()(const ObjectiveVector & _o1, const ObjectiveVector & _o2) - { - // computation of the epsilon value for the first objective - double result = epsilon(_o1, _o2, 0); - // computation of the epsilon value for the other objectives - double tmp; - for (unsigned int i=1; i :: bounds; - - - /** - * Returns the epsilon value by which the objective vector _o1 must be translated in the objective _obj - * so that it dominates the objective vector _o2 - * @param _o1 the first objective vector - * @param _o2 the second objective vector - * @param _obj the index of the objective - */ - double epsilon(const ObjectiveVector & _o1, const ObjectiveVector & _o2, const unsigned int _obj) - { - double result; - // if the objective _obj have to be minimized - if (ObjectiveVector::Traits::minimizing(_obj)) - { - // _o1[_obj] - _o2[_obj] - result = ( (_o1[_obj] - bounds[_obj].minimum()) / bounds[_obj].range() ) - ( (_o2[_obj] - bounds[_obj].minimum()) / bounds[_obj].range() ); - } - // if the objective _obj have to be maximized - else - { - // _o2[_obj] - _o1[_obj] - result = ( (_o2[_obj] - bounds[_obj].minimum()) / bounds[_obj].range() ) - ( (_o1[_obj] - bounds[_obj].minimum()) / bounds[_obj].range() ); - } - return result; - } - -}; - -#endif /*MOEOADDITIVEEPSILONBINARYMETRIC_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/metric/moeoContributionMetric.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/metric/moeoContributionMetric.h deleted file mode 100644 index 28736427c..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/metric/moeoContributionMetric.h +++ /dev/null @@ -1,107 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoContributionMetric.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOCONTRIBUTIONMETRIC_H_ -#define MOEOCONTRIBUTIONMETRIC_H_ - -#include -#include - -/** - * The contribution metric evaluates the proportion of non-dominated solutions given by a Pareto set relatively to another Pareto set - * (Meunier, Talbi, Reininger: 'A multiobjective genetic algorithm for radio network optimization', in Proc. of the 2000 Congress on Evolutionary Computation, IEEE Press, pp. 317-324) - */ -template < class ObjectiveVector > -class moeoContributionMetric : public moeoVectorVsVectorBinaryMetric < ObjectiveVector, double > -{ -public: - - /** - * Returns the contribution of the Pareto set '_set1' relatively to the Pareto set '_set2' - * @param _set1 the first Pareto set - * @param _set2 the second Pareto set - */ - double operator()(const std::vector < ObjectiveVector > & _set1, const std::vector < ObjectiveVector > & _set2) { - unsigned int c = card_C(_set1, _set2); - unsigned int w1 = card_W(_set1, _set2); - unsigned int n1 = card_N(_set1, _set2); - unsigned int w2 = card_W(_set2, _set1); - unsigned int n2 = card_N(_set2, _set1); - return (double) (c / 2.0 + w1 + n1) / (c + w1 + n1 + w2 + n2); - } - - -private: - - /** Functor to compare two objective vectors according to Pareto dominance relation */ - moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; - - - /** - * Returns the number of solutions both in '_set1' and '_set2' - * @param _set1 the first Pareto set - * @param _set2 the second Pareto set - */ - unsigned int card_C (const std::vector < ObjectiveVector > & _set1, const std::vector < ObjectiveVector > & _set2) { - unsigned int c=0; - for (unsigned int i=0; i<_set1.size(); i++) - for (unsigned int j=0; j<_set2.size(); j++) - if (_set1[i] == _set2[j]) { - c++; - break; - } - return c; - } - - - /** - * Returns the number of solutions in '_set1' dominating at least one solution of '_set2' - * @param _set1 the first Pareto set - * @param _set2 the second Pareto set - */ - unsigned int card_W (const std::vector < ObjectiveVector > & _set1, const std::vector < ObjectiveVector > & _set2) { - unsigned int w=0; - for (unsigned int i=0; i<_set1.size(); i++) - for (unsigned int j=0; j<_set2.size(); j++) - if (paretoComparator(_set2[j], _set1[i])) - { - w++; - break; - } - return w; - } - - - /** - * Returns the number of solutions in '_set1' having no relation of dominance with those from '_set2' - * @param _set1 the first Pareto set - * @param _set2 the second Pareto set - */ - unsigned int card_N (const std::vector < ObjectiveVector > & _set1, const std::vector < ObjectiveVector > & _set2) { - unsigned int n=0; - for (unsigned int i=0; i<_set1.size(); i++) { - bool domin_rel = false; - for (unsigned int j=0; j<_set2.size(); j++) - if ( (paretoComparator(_set2[j], _set1[i])) || (paretoComparator(_set1[i], _set2[j])) ) - { - domin_rel = true; - break; - } - if (! domin_rel) - n++; - } - return n; - } - -}; - -#endif /*MOEOCONTRIBUTIONMETRIC_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/metric/moeoEntropyMetric.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/metric/moeoEntropyMetric.h deleted file mode 100644 index a19e029f8..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/metric/moeoEntropyMetric.h +++ /dev/null @@ -1,182 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoEntropyMetric.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOENTROPYMETRIC_H_ -#define MOEOENTROPYMETRIC_H_ - -#include -#include -#include - -/** - * The entropy gives an idea of the diversity of a Pareto set relatively to another - * (Basseur, Seynhaeve, Talbi: 'Design of Multi-objective Evolutionary Algorithms: Application to the Flow-shop Scheduling Problem', in Proc. of the 2002 Congress on Evolutionary Computation, IEEE Press, pp. 1155-1156) - */ -template < class ObjectiveVector > -class moeoEntropyMetric : public moeoVectorVsVectorBinaryMetric < ObjectiveVector, double > -{ -public: - - /** - * Returns the entropy of the Pareto set '_set1' relatively to the Pareto set '_set2' - * @param _set1 the first Pareto set - * @param _set2 the second Pareto set - */ - double operator()(const std::vector < ObjectiveVector > & _set1, const std::vector < ObjectiveVector > & _set2) { - // normalization - std::vector< ObjectiveVector > set1 = _set1; - std::vector< ObjectiveVector > set2= _set2; - removeDominated (set1); - removeDominated (set2); - prenormalize (set1); - normalize (set1); - normalize (set2); - - // making of PO* - std::vector< ObjectiveVector > star; // rotf :-) - computeUnion (set1, set2, star); - removeDominated (star); - - // making of PO1 U PO* - std::vector< ObjectiveVector > union_set1_star; // rotf again ... - computeUnion (set1, star, union_set1_star); - - unsigned int C = union_set1_star.size(); - float omega=0; - float entropy=0; - - for (unsigned int i=0 ; i 0) { - omega += 1.0 / N_i; - entropy += (float) n_i / (N_i * C) * log (((float) n_i / C) / log (2.0)); - } - } - entropy /= - log (omega); - entropy *= log (2.0); - return entropy; - } - - -private: - - /** vector of min values */ - std::vector vect_min_val; - /** vector of max values */ - std::vector vect_max_val; - /** Functor to compare two objective vectors according to Pareto dominance relation */ - moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; - - - /** - * Removes the dominated individuals contained in _f - * @param _f a Pareto set - */ - void removeDominated(std::vector < ObjectiveVector > & _f) { - for (unsigned int i=0 ; i<_f.size(); i++) { - bool dom = false; - for (unsigned int j=0; j<_f.size(); j++) - if (i != j && paretoComparator(_f[i],_f[j])) - { - dom = true; - break; - } - if (dom) { - _f[i] = _f.back(); - _f.pop_back(); - i--; - } - } - } - - - /** - * Prenormalization - * @param _f a Pareto set - */ - void prenormalize (const std::vector< ObjectiveVector > & _f) { - vect_min_val.clear(); - vect_max_val.clear(); - - for (unsigned int i=0 ; imax_val) - max_val = _f[j][i]; - } - vect_min_val.push_back(min_val); - vect_max_val.push_back (max_val); - } - } - - - /** - * Normalization - * @param _f a Pareto set - */ - void normalize (std::vector< ObjectiveVector > & _f) { - for (unsigned int i=0 ; i & _f1, const std::vector< ObjectiveVector > & _f2, std::vector< ObjectiveVector > & _f) { - _f = _f1 ; - for (unsigned int i=0; i<_f2.size(); i++) { - bool b = false; - for (unsigned int j=0; j<_f1.size(); j ++) - if (_f1[j] == _f2[i]) { - b = true; - break; - } - if (! b) - _f.push_back(_f2[i]); - } - } - - - /** - * How many in niche - */ - unsigned int howManyInNicheOf (const std::vector< ObjectiveVector > & _f, const ObjectiveVector & _s, unsigned int _size) { - unsigned int n=0; - for (unsigned int i=0 ; i<_f.size(); i++) { - if (euclidianDistance(_f[i], _s) < (_s.size() / (double) _size)) - n++; - } - return n; - } - - - /** - * Euclidian distance - */ - double euclidianDistance (const ObjectiveVector & _set1, const ObjectiveVector & _to, unsigned int _deg = 2) { - double dist=0; - for (unsigned int i=0; i<_set1.size(); i++) - dist += pow(fabs(_set1[i] - _to[i]), (int)_deg); - return pow(dist, 1.0 / _deg); - } - -}; - -#endif /*MOEOENTROPYMETRIC_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/metric/moeoHypervolumeBinaryMetric.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/metric/moeoHypervolumeBinaryMetric.h deleted file mode 100644 index 39c51ec63..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/metric/moeoHypervolumeBinaryMetric.h +++ /dev/null @@ -1,141 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoHypervolumeBinaryMetric.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOHYPERVOLUMEBINARYMETRIC_H_ -#define MOEOHYPERVOLUMEBINARYMETRIC_H_ - -#include -#include -#include - -/** - * Hypervolume binary metric allowing to compare two objective vectors as proposed in - * Zitzler E., Künzli S.: Indicator-Based Selection in Multiobjective Search. In Parallel Problem Solving from Nature (PPSN VIII). - * Lecture Notes in Computer Science 3242, Springer, Birmingham, UK pp.832–842 (2004). - * This indicator is based on the hypervolume concept introduced in - * Zitzler, E., Thiele, L.: Multiobjective Optimization Using Evolutionary Algorithms - A Comparative Case Study. - * Parallel Problem Solving from Nature (PPSN-V), pp.292-301 (1998). - */ -template < class ObjectiveVector > -class moeoHypervolumeBinaryMetric : public moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > -{ -public: - - /** - * Ctor - * @param _rho value used to compute the reference point from the worst values for each objective (default : 1.1) - */ - moeoHypervolumeBinaryMetric(double _rho = 1.1) : rho(_rho) - { - // not-a-maximization problem check - for (unsigned int i=0; i :: bounds; - /** Functor to compare two objective vectors according to Pareto dominance relation */ - moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; - - - /** - * Returns the volume of the space that is dominated by _o2 but not by _o1 with respect to a reference point computed using rho for the objective _obj. - * @param _o1 the first objective vector - * @param _o2 the second objective vector - * @param _obj the objective index - * @param _flag used for iteration, if _flag=true _o2 is not talen into account (default : false) - */ - double hypervolume(const ObjectiveVector & _o1, const ObjectiveVector & _o2, const unsigned int _obj, const bool _flag = false) - { - double result; - double range = rho * bounds[_obj].range(); - double max = bounds[_obj].minimum() + range; - // value of _1 for the objective _obj - double v1 = _o1[_obj]; - // value of _2 for the objective _obj (if _flag=true, v2=max) - double v2; - if (_flag) - { - v2 = max; - } - else - { - v2 = _o2[_obj]; - } - // computation of the volume - if (_obj == 0) - { - if (v1 < v2) - { - result = (v2 - v1) / range; - } - else - { - result = 0; - } - } - else - { - if (v1 < v2) - { - result = ( hypervolume(_o1, _o2, _obj-1, true) * (v2 - v1) / range ) + ( hypervolume(_o1, _o2, _obj-1) * (max - v2) / range ); - } - else - { - result = hypervolume(_o1, _o2, _obj-1) * (max - v2) / range; - } - } - return result; - } - -}; - -#endif /*MOEOHYPERVOLUMEBINARYMETRIC_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/metric/moeoMetric.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/metric/moeoMetric.h deleted file mode 100644 index 6678e9a1d..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/metric/moeoMetric.h +++ /dev/null @@ -1,67 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoMetric.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOMETRIC_H_ -#define MOEOMETRIC_H_ - -#include -#include - -/** - * Base class for performance metrics (also known as quality indicators). - */ -class moeoMetric : public eoFunctorBase {}; - - -/** - * Base class for unary metrics. - */ -template < class A, class R > -class moeoUnaryMetric : public eoUF < A, R >, public moeoMetric {}; - - -/** - * Base class for binary metrics. - */ -template < class A1, class A2, class R > -class moeoBinaryMetric : public eoBF < A1, A2, R >, public moeoMetric {}; - - -/** - * Base class for unary metrics dedicated to the performance evaluation of a single solution's objective vector. - */ -template < class ObjectiveVector, class R > -class moeoSolutionUnaryMetric : public moeoUnaryMetric < const ObjectiveVector &, R > {}; - - -/** - * Base class for unary metrics dedicated to the performance evaluation of a Pareto set (a vector of objective vectors) - */ -template < class ObjectiveVector, class R > -class moeoVectorUnaryMetric : public moeoUnaryMetric < const std::vector < ObjectiveVector > &, R > {}; - - -/** - * Base class for binary metrics dedicated to the performance comparison between two solutions's objective vectors. - */ -template < class ObjectiveVector, class R > -class moeoSolutionVsSolutionBinaryMetric : public moeoBinaryMetric < const ObjectiveVector &, const ObjectiveVector &, R > {}; - - -/** - * Base class for binary metrics dedicated to the performance comparison between two Pareto sets (two vectors of objective vectors) - */ -template < class ObjectiveVector, class R > -class moeoVectorVsVectorBinaryMetric : public moeoBinaryMetric < const std::vector < ObjectiveVector > &, const std::vector < ObjectiveVector > &, R > {}; - - -#endif /*MOEOMETRIC_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/metric/moeoNormalizedSolutionVsSolutionBinaryMetric.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/metric/moeoNormalizedSolutionVsSolutionBinaryMetric.h deleted file mode 100644 index e3e390a7e..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/metric/moeoNormalizedSolutionVsSolutionBinaryMetric.h +++ /dev/null @@ -1,88 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoNormalizedSolutionVsSolutionBinaryMetric.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEONORMALIZEDSOLUTIONVSSOLUTIONBINARYMETRIC_H_ -#define MOEONORMALIZEDSOLUTIONVSSOLUTIONBINARYMETRIC_H_ - -#include -#include -#include - -/** - * Base class for binary metrics dedicated to the performance comparison between two solutions's objective vectors using normalized values. - * Then, indicator values lie in the interval [-1,1]. - * Note that you have to set the bounds for every objective before using the operator(). - */ -template < class ObjectiveVector, class R > -class moeoNormalizedSolutionVsSolutionBinaryMetric : public moeoSolutionVsSolutionBinaryMetric < ObjectiveVector, R > -{ -public: - - /** - * Default ctr for any moeoNormalizedSolutionVsSolutionBinaryMetric object - */ - moeoNormalizedSolutionVsSolutionBinaryMetric() - { - bounds.resize(ObjectiveVector::Traits::nObjectives()); - // initialize bounds in case someone does not want to use them - for (unsigned int i=0; i bounds; - -}; - -#endif /*MOEONORMALIZEDSOLUTIONVSSOLUTIONBINARYMETRIC_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/moeo b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/moeo deleted file mode 100644 index 3e95d3f0a..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/moeo +++ /dev/null @@ -1,100 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeo -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEO_ -#define MOEO_ - -#include - -#include -#include -#include -#include -#include -#include -//#include -//#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -//#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - - -#endif /*MOEO_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/move/moeoMoveIncrEval.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/move/moeoMoveIncrEval.h deleted file mode 100644 index 120bfbdc1..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/move/moeoMoveIncrEval.h +++ /dev/null @@ -1,11 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -#ifndef _MOEOMOVEINCREVAL_H -#define _MOEOMOVEINCREVAL_H - -#include - -template < class Move > -class moeoMoveIncrEval : public eoBF < const Move &, const typename Move::EOType &, typename Move::EOType::ObjectiveVector > {}; - -#endif diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/replacement/moeoElitistReplacement.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/replacement/moeoElitistReplacement.h deleted file mode 100644 index b6bb9807d..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/replacement/moeoElitistReplacement.h +++ /dev/null @@ -1,130 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoElitistReplacement.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOELITISTREPLACEMENT_H_ -#define MOEOELITISTREPLACEMENT_H_ - -#include -#include -#include -#include -#include -#include - -/** - * Elitist replacement strategy that consists in keeping the N best individuals. - */ -template < class MOEOT > class moeoElitistReplacement:public moeoReplacement < MOEOT > -{ -public: - - /** - * Full constructor. - * @param _fitnessAssignment the fitness assignment strategy - * @param _diversityAssignment the diversity assignment strategy - * @param _comparator the comparator (used to compare 2 individuals) - */ - moeoElitistReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment, moeoDiversityAssignment < MOEOT > & _diversityAssignment, moeoComparator < MOEOT > & _comparator) : - fitnessAssignment (_fitnessAssignment), diversityAssignment (_diversityAssignment), comparator (_comparator) - {} - - - /** - * Constructor without comparator. A moeoFitThenDivComparator is used as default. - * @param _fitnessAssignment the fitness assignment strategy - * @param _diversityAssignment the diversity assignment strategy - */ - moeoElitistReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment, moeoDiversityAssignment < MOEOT > & _diversityAssignment) : - fitnessAssignment (_fitnessAssignment), diversityAssignment (_diversityAssignment), comparator (defaultComparator) - {} - - - /** - * Constructor without moeoDiversityAssignement. A dummy diversity is used as default. - * @param _fitnessAssignment the fitness assignment strategy - * @param _comparator the comparator (used to compare 2 individuals) - */ - moeoElitistReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment, moeoComparator < MOEOT > & _comparator) : - fitnessAssignment (_fitnessAssignment), diversityAssignment (defaultDiversity), comparator (_comparator) - {} - - - /** - * Constructor without moeoDiversityAssignement nor moeoComparator. - * A moeoFitThenDivComparator and a dummy diversity are used as default. - * @param _fitnessAssignment the fitness assignment strategy - */ - moeoElitistReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment) : - fitnessAssignment (_fitnessAssignment), diversityAssignment (defaultDiversity), comparator (defaultComparator) - {} - - - /** - * Replaces the first population by adding the individuals of the second one, sorting with a moeoComparator and resizing the whole population obtained. - * @param _parents the population composed of the parents (the population you want to replace) - * @param _offspring the offspring population - */ - void operator () (eoPop < MOEOT > &_parents, eoPop < MOEOT > &_offspring) - { - unsigned int sz = _parents.size (); - // merges offspring and parents into a global population - _parents.reserve (_parents.size () + _offspring.size ()); - std::copy (_offspring.begin (), _offspring.end (), back_inserter (_parents)); - // evaluates the fitness and the diversity of this global population - fitnessAssignment (_parents); - diversityAssignment (_parents); - // sorts the whole population according to the comparator - std::sort(_parents.begin(), _parents.end(), comparator); - // finally, resize this global population - _parents.resize (sz); - // and clear the offspring population - _offspring.clear (); - } - - -protected: - - /** the fitness assignment strategy */ - moeoFitnessAssignment < MOEOT > & fitnessAssignment; - /** the diversity assignment strategy */ - moeoDiversityAssignment < MOEOT > & diversityAssignment; - /** a dummy diversity assignment can be used as default */ - moeoDummyDiversityAssignment < MOEOT > defaultDiversity; - /** a fitness then diversity comparator can be used as default */ - moeoFitnessThenDiversityComparator < MOEOT > defaultComparator; - /** this object is used to compare solutions in order to sort the population */ - class Cmp - { - public: - /** - * Ctor. - * @param _comp the comparator - */ - Cmp(moeoComparator < MOEOT > & _comp) : comp(_comp) - {} - /** - * Returns true if _moeo1 is greater than _moeo2 according to the comparator - * _moeo1 the first individual - * _moeo2 the first individual - */ - bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) - { - return comp(_moeo2,_moeo1); - } - private: - /** the comparator */ - moeoComparator < MOEOT > & comp; - } comparator; - -}; - -#endif /*MOEOELITISTREPLACEMENT_H_ */ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/replacement/moeoEnvironmentalReplacement.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/replacement/moeoEnvironmentalReplacement.h deleted file mode 100755 index 68bc032c1..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/replacement/moeoEnvironmentalReplacement.h +++ /dev/null @@ -1,146 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoEnvironmentalReplacement.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOENVIRONMENTALREPLACEMENT_H_ -#define MOEOENVIRONMENTALREPLACEMENT_H_ - -#include -#include -#include -#include -#include - -/** - * Environmental replacement strategy that consists in keeping the N best individuals by deleting individuals 1 by 1 - * and by updating the fitness and diversity values after each deletion. - */ -template < class MOEOT > class moeoEnvironmentalReplacement:public moeoReplacement < MOEOT > -{ -public: - - /** The type for objective vector */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * Full constructor. - * @param _fitnessAssignment the fitness assignment strategy - * @param _diversityAssignment the diversity assignment strategy - * @param _comparator the comparator (used to compare 2 individuals) - */ - moeoEnvironmentalReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment, moeoDiversityAssignment < MOEOT > & _diversityAssignment, moeoComparator < MOEOT > & _comparator) : - fitnessAssignment (_fitnessAssignment), diversityAssignment (_diversityAssignment), comparator (_comparator) - {} - - - /** - * Constructor without comparator. A moeoFitThenDivComparator is used as default. - * @param _fitnessAssignment the fitness assignment strategy - * @param _diversityAssignment the diversity assignment strategy - */ - moeoEnvironmentalReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment, moeoDiversityAssignment < MOEOT > & _diversityAssignment) : - fitnessAssignment (_fitnessAssignment), diversityAssignment (_diversityAssignment), comparator (defaultComparator) - {} - - - /** - * Constructor without moeoDiversityAssignement. A dummy diversity is used as default. - * @param _fitnessAssignment the fitness assignment strategy - * @param _comparator the comparator (used to compare 2 individuals) - */ - moeoEnvironmentalReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment, moeoComparator < MOEOT > & _comparator) : - fitnessAssignment (_fitnessAssignment), diversityAssignment (defaultDiversity), comparator (_comparator) - {} - - - /** - * Constructor without moeoDiversityAssignement nor moeoComparator. - * A moeoFitThenDivComparator and a dummy diversity are used as default. - * @param _fitnessAssignment the fitness assignment strategy - */ - moeoEnvironmentalReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment) : - fitnessAssignment (_fitnessAssignment), diversityAssignment (defaultDiversity), comparator (defaultComparator) - {} - - - /** - * Replaces the first population by adding the individuals of the second one, sorting with a moeoComparator and resizing the whole population obtained. - * @param _parents the population composed of the parents (the population you want to replace) - * @param _offspring the offspring population - */ - void operator () (eoPop < MOEOT > &_parents, eoPop < MOEOT > &_offspring) - { - unsigned int sz = _parents.size(); - // merges offspring and parents into a global population - _parents.reserve (_parents.size() + _offspring.size()); - std::copy (_offspring.begin(), _offspring.end(), back_inserter(_parents)); - // evaluates the fitness and the diversity of this global population - fitnessAssignment (_parents); - diversityAssignment (_parents); - // remove individuals 1 by 1 and update the fitness values - unsigned int worstIdx; - ObjectiveVector worstObjVec; - while (_parents.size() > sz) - { - // the individual to delete - worstIdx = std::min_element(_parents.begin(), _parents.end(), comparator) - _parents.begin(); - worstObjVec = _parents[worstIdx].objectiveVector(); - // remove the woorst individual - _parents[worstIdx] = _parents.back(); - _parents.pop_back(); - // update of the fitness and diversity values - fitnessAssignment.updateByDeleting(_parents, worstObjVec); - diversityAssignment.updateByDeleting(_parents, worstObjVec); - - } - // clear the offspring population - _offspring.clear (); - } - - -protected: - - /** the fitness assignment strategy */ - moeoFitnessAssignment < MOEOT > & fitnessAssignment; - /** the diversity assignment strategy */ - moeoDiversityAssignment < MOEOT > & diversityAssignment; - /** a dummy diversity assignment can be used as default */ - moeoDummyDiversityAssignment < MOEOT > defaultDiversity; - /** a fitness then diversity comparator can be used as default */ - moeoFitnessThenDiversityComparator < MOEOT > defaultComparator; - /** this object is used to compare solutions in order to sort the population */ - class Cmp - { - public: - /** - * Ctor. - * @param _comp the comparator - */ - Cmp(moeoComparator < MOEOT > & _comp) : comp(_comp) - {} - /** - * Returns true if _moeo1 is greater than _moeo2 according to the comparator - * _moeo1 the first individual - * _moeo2 the first individual - */ - bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) - { - return comp(_moeo1,_moeo2); - } - private: - /** the comparator */ - moeoComparator < MOEOT > & comp; - } comparator; - -}; - -#endif /*MOEOENVIRONMENTALREPLACEMENT_H_ */ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/replacement/moeoGenerationalReplacement.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/replacement/moeoGenerationalReplacement.h deleted file mode 100644 index e3d1f6235..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/replacement/moeoGenerationalReplacement.h +++ /dev/null @@ -1,39 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoGenerationalReplacement.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOGENERATIONALREPLACEMENT_H_ -#define MOEOGENERATIONALREPLACEMENT_H_ - -#include -#include - -/** - * Generational replacement: only the new individuals are preserved. - */ -template < class MOEOT > -class moeoGenerationalReplacement : public moeoReplacement < MOEOT >, public eoGenerationalReplacement < MOEOT > -{ -public: - - /** - * Swaps _parents and _offspring - * @param _parents the parents population - * @param _offspring the offspring population - */ - void operator()(eoPop < MOEOT > & _parents, eoPop < MOEOT > & _offspring) - { - eoGenerationalReplacement < MOEOT >::operator ()(_parents, _offspring); - } - -}; - -#endif /*MOEOGENERATIONALREPLACEMENT_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/replacement/moeoReplacement.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/replacement/moeoReplacement.h deleted file mode 100644 index aa0631754..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/replacement/moeoReplacement.h +++ /dev/null @@ -1,24 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoReplacement.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOREPLACEMENT_H_ -#define MOEOREPLACEMENT_H_ - -#include - -/** - * Replacement strategy for multi-objective optimization. - */ -template < class MOEOT > -class moeoReplacement : public eoReplacement < MOEOT > {}; - -#endif /*MOEOREPLACEMENT_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoDetTournamentSelect.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoDetTournamentSelect.h deleted file mode 100644 index e60709c5b..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoDetTournamentSelect.h +++ /dev/null @@ -1,83 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoDetTournamentSelect.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEODETTOURNAMENTSELECT_H_ -#define MOEODETTOURNAMENTSELECT_H_ - -#include -#include -#include -#include - -/** - * Selection strategy that selects ONE individual by deterministic tournament. - */ -template < class MOEOT > class moeoDetTournamentSelect:public moeoSelectOne < MOEOT > -{ -public: - - /** - * Full Ctor. - * @param _comparator the comparator (used to compare 2 individuals) - * @param _tSize the number of individuals in the tournament (default: 2) - */ - moeoDetTournamentSelect (moeoComparator < MOEOT > & _comparator, unsigned int _tSize = 2) : comparator (_comparator), tSize (_tSize) - { - // consistency check - if (tSize < 2) - { - std:: - cout << "Warning, Tournament size should be >= 2\nAdjusted to 2\n"; - tSize = 2; - } - } - - - /** - * Ctor without comparator. A moeoFitnessThenDiversityComparator is used as default. - * @param _tSize the number of individuals in the tournament (default: 2) - */ - moeoDetTournamentSelect (unsigned int _tSize = 2) : comparator (defaultComparator), tSize (_tSize) - { - // consistency check - if (tSize < 2) - { - std:: - cout << "Warning, Tournament size should be >= 2\nAdjusted to 2\n"; - tSize = 2; - } - } - - - /** - * Apply the tournament to the given population - * @param _pop the population - */ - const MOEOT & operator() (const eoPop < MOEOT > &_pop) - { - // use the selector - return mo_deterministic_tournament (_pop, tSize, comparator); - } - - -protected: - - /** the comparator (used to compare 2 individuals) */ - moeoComparator < MOEOT > & comparator; - /** a fitness then diversity comparator can be used as default */ - moeoFitnessThenDiversityComparator < MOEOT > defaultComparator; - /** the number of individuals in the tournament */ - unsigned int tSize; - -}; - -#endif /*MOEODETTOURNAMENTSELECT_H_ */ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoRandomSelect.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoRandomSelect.h deleted file mode 100644 index 2b5bbd088..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoRandomSelect.h +++ /dev/null @@ -1,43 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoRandomSelect.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEORANDOMSELECT_H_ -#define MOEORANDOMSELECT_H_ - -#include -#include - - -/** - * Selection strategy that selects only one element randomly from a whole population. - */ -template < class MOEOT > class moeoRandomSelect:public moeoSelectOne < MOEOT >, public eoRandomSelect -{ -public: - - /** - * Ctor. - */ - moeoRandomSelect(){} - - - /** - * Return one individual at random by using an eoRandomSelect. - */ - const MOEOT & operator () (const eoPop < MOEOT > &_pop) - { - return eoRandomSelect < MOEOT >::operator ()(_pop); - } - -}; - -#endif /*MOEORANDOMSELECT_H_ */ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoRouletteSelect.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoRouletteSelect.h deleted file mode 100644 index e53b82cfc..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoRouletteSelect.h +++ /dev/null @@ -1,62 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoRouletteSelect.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOROULETTESELECT_H_ -#define MOEOROULETTESELECT_H_ - -#include -#include - -/** - * Selection strategy that selects ONE individual by using roulette wheel process. - * @WARNING This selection only uses fitness values (and not diversity values). - */ -template < class MOEOT > -class moeoRouletteSelect:public moeoSelectOne < MOEOT > -{ -public: - - /** - * Ctor. - * @param _tSize the number of individuals in the tournament (default: 2) - */ - moeoRouletteSelect (unsigned int _tSize = 2) : tSize (_tSize) - { - // consistency check - if (tSize < 2) - { - std:: - cout << "Warning, Tournament size should be >= 2\nAdjusted to 2\n"; - tSize = 2; - } - } - - - /** - * Apply the tournament to the given population - * @param _pop the population - */ - const MOEOT & operator () (const eoPop < MOEOT > & _pop) - { - // use the selector - return mo_roulette_wheel(_pop,tSize); - } - - -protected: - - /** size */ - double & tSize; - -}; - -#endif /*MOEOROULETTESELECT_H_ */ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoSelectFromPopAndArch.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoSelectFromPopAndArch.h deleted file mode 100644 index 078a51c19..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoSelectFromPopAndArch.h +++ /dev/null @@ -1,92 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoSelectFormPopAndArch.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOSELECTONEFROMPOPANDARCH_H_ -#define MOEOSELECTONEFROMPOPANDARCH_H_ - -#include -#include -#include -#include -#include - -/** - * Elitist selection process that consists in choosing individuals in the archive as well as in the current population. - */ -template < class MOEOT > -class moeoSelectFromPopAndArch : public moeoSelectOne < MOEOT > -{ -public: - - /** - * Ctor - * @param _popSelectOne the population's selection operator - * @param _archSelectOne the archive's selection operator - * @param _arch the archive - * @param _ratioFromPop the ratio of selected individuals from the population - */ - moeoSelectFromPopAndArch (moeoSelectOne < MOEOT > & _popSelectOne, moeoSelectOne < MOEOT > _archSelectOne, moeoArchive < MOEOT > & _arch, double _ratioFromPop=0.5) - : popSelectOne(_popSelectOne), archSelectOne(_archSelectOne), arch(_arch), ratioFromPop(_ratioFromPop) - {} - - - /** - * Defaulr ctor - the archive's selection operator is a random selector - * @param _popSelectOne the population's selection operator - * @param _arch the archive - * @param _ratioFromPop the ratio of selected individuals from the population - */ - moeoSelectFromPopAndArch (moeoSelectOne < MOEOT > & _popSelectOne, moeoArchive < MOEOT > & _arch, double _ratioFromPop=0.5) - : popSelectOne(_popSelectOne), archSelectOne(randomSelectOne), arch(_arch), ratioFromPop(_ratioFromPop) - {} - - - /** - * The selection process - */ - virtual const MOEOT & operator () (const eoPop < MOEOT > & pop) - { - if (arch.size() > 0) - if (rng.flip(ratioFromPop)) - return popSelectOne(pop); - else - return archSelectOne(arch); - else - return popSelectOne(pop); - } - - - /** - * Setups some population stats - */ - virtual void setup (const eoPop < MOEOT > & _pop) - { - popSelectOne.setup(_pop); - } - - -private: - - /** The population's selection operator */ - moeoSelectOne < MOEOT > & popSelectOne; - /** The archive's selection operator */ - moeoSelectOne < MOEOT > & archSelectOne; - /** The archive */ - moeoArchive < MOEOT > & arch; - /** The ratio of selected individuals from the population*/ - double ratioFromPop; - /** A random selection operator (used as default for archSelectOne) */ - moeoRandomSelect < MOEOT > randomSelectOne; - -}; - -#endif /*MOEOSELECTONEFROMPOPANDARCH_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoSelectOne.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoSelectOne.h deleted file mode 100644 index 7f4129b99..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoSelectOne.h +++ /dev/null @@ -1,24 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoSelectOne.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOSELECTONE_H_ -#define MOEOSELECTONE_H_ - -#include - -/** - * Selection strategy for multi-objective optimization that selects only one element from a whole population. - */ -template < class MOEOT > -class moeoSelectOne : public eoSelectOne < MOEOT > {}; - -#endif /*MOEOSELECTONE_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoSelectors.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoSelectors.h deleted file mode 100644 index 35f913ae4..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoSelectors.h +++ /dev/null @@ -1,158 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoSelectors.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOSELECTORS_H_ -#define MOEOSELECTORS_H_ - -#include - - -template -It mo_deterministic_tournament(It _begin, It _end, unsigned int _t_size,moeoComparator& _comparator ,eoRng& _gen = rng) -{ - It best = _begin + _gen.random(_end - _begin); - - for (unsigned int i = 0; i < _t_size - 1; ++i) - { - It competitor = _begin + _gen.random(_end - _begin); - // compare the two individuals by using the comparator - if (_comparator(*best, *competitor)) - // best "better" than competitor - best=competitor; - } - return best; -} - - -template -const MOEOT& mo_deterministic_tournament(const eoPop& _pop, unsigned int _t_size,moeoComparator& _comparator, eoRng& _gen = rng) -{ - return *mo_deterministic_tournament(_pop.begin(), _pop.end(),_t_size,_comparator, _gen); -} - - -template -MOEOT& mo_deterministic_tournament(eoPop& _pop, unsigned int _t_size,moeoComparator& _comparator,eoRng& _gen = rng) -{ - return *mo_deterministic_tournament(_pop.begin(), _pop.end(), _t_size,_comparator, _gen); -} - - -template -It mo_stochastic_tournament(It _begin, It _end, double _t_rate,moeoComparator& _comparator ,eoRng& _gen = rng) -{ - It i1 = _begin + _gen.random(_end - _begin); - It i2 = _begin + _gen.random(_end - _begin); - - bool return_better = _gen.flip(_t_rate); - - if (_comparator(*i1, *i2)) - { - if (return_better) return i2; - // else - - return i1; - } - else - { - if (return_better) return i1; - // else - } - // else - - return i2; -} - - -template -const MOEOT& mo_stochastic_tournament(const eoPop& _pop, double _t_rate,moeoComparator& _comparator, eoRng& _gen = rng) -{ - return *mo_stochastic_tournament(_pop.begin(), _pop.end(), _t_rate,_comparator, _gen); -} - - -template -MOEOT& mo_stochastic_tournament(eoPop& _pop, double _t_rate, eoRng& _gen = rng) -{ - return *mo_stochastic_tournament(_pop.begin(), _pop.end(), _t_rate, _gen); -} - - -template -It mo_roulette_wheel(It _begin, It _end, double total, eoRng& _gen = rng) -{ - - float roulette = _gen.uniform(total); - - if (roulette == 0.0) // covers the case where total==0.0 - return _begin + _gen.random(_end - _begin); // uniform choice - - It i = _begin; - - while (roulette > 0.0) - { - roulette -= static_cast(*(i++)); - } - - return --i; -} - - -template -const MOEOT& mo_roulette_wheel(const eoPop& _pop, double total, eoRng& _gen = rng) -{ - float roulette = _gen.uniform(total); - - if (roulette == 0.0) // covers the case where total==0.0 - return _pop[_gen.random(_pop.size())]; // uniform choice - - typename eoPop::const_iterator i = _pop.begin(); - - while (roulette > 0.0) - { - roulette -= static_cast((i++)->fitness()); - } - - return *--i; -} - - -template -MOEOT& mo_roulette_wheel(eoPop& _pop, double total, eoRng& _gen = rng) -{ - float roulette = _gen.uniform(total); - - if (roulette == 0.0) // covers the case where total==0.0 - return _pop[_gen.random(_pop.size())]; // uniform choice - - typename eoPop::iterator i = _pop.begin(); - - while (roulette > 0.0) - { - // fitness only - roulette -= static_cast((i++)->fitness()); - } - - return *--i; -} - - -#endif /*MOEOSELECTORS_H_*/ - - - - - - - - - diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoStochTournamentSelect.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoStochTournamentSelect.h deleted file mode 100644 index 61365c038..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/selection/moeoStochTournamentSelect.h +++ /dev/null @@ -1,91 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoStochTournamentSelect.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOSTOCHTOURNAMENTSELECT_H_ -#define MOEOSTOCHTOURNAMENTSELECT_H_ - -#include -#include -#include -#include - -/** - * Selection strategy that selects ONE individual by stochastic tournament. - */ -template < class MOEOT > class moeoStochTournamentSelect:public moeoSelectOne -{ -public: - - /** - * Full Ctor - * @param _comparator the comparator (used to compare 2 individuals) - * @param _tRate the tournament rate - */ - moeoStochTournamentSelect (moeoComparator < MOEOT > & _comparator, double _tRate = 1.0) : comparator (_comparator), tRate (_tRate) - { - // consistency checks - if (tRate < 0.5) - { - std::cerr << "Warning, Tournament rate should be > 0.5\nAdjusted to 0.55\n"; - tRate = 0.55; - } - if (tRate > 1) - { - std::cerr << "Warning, Tournament rate should be < 1\nAdjusted to 1\n"; - tRate = 1; - } - } - - - /** - * Ctor without comparator. A moeoFitnessThenDiversityComparator is used as default. - * @param _tRate the tournament rate - */ - moeoStochTournamentSelect (double _tRate = 1.0) : comparator (defaultComparator), tRate (_tRate) - { - // consistency checks - if (tRate < 0.5) - { - std::cerr << "Warning, Tournament rate should be > 0.5\nAdjusted to 0.55\n"; - tRate = 0.55; - } - if (tRate > 1) - { - std::cerr << "Warning, Tournament rate should be < 1\nAdjusted to 1\n"; - tRate = 1; - } - } - - - /** - * Apply the tournament to the given population - * @param _pop the population - */ - const MOEOT & operator() (const eoPop < MOEOT > &_pop) - { - // use the selector - return mo_stochastic_tournament(_pop,tRate,comparator); - } - - -protected: - - /** the comparator (used to compare 2 individuals) */ - moeoComparator < MOEOT > & comparator; - /** a fitness then diversity comparator can be used as default */ - moeoFitnessThenDiversityComparator < MOEOT > defaultComparator; - /** the tournament rate */ - double tRate; - -}; - -#endif /*MOEOSTOCHTOURNAMENTSELECT_H_ */ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/utils/moeoArchiveObjectiveVectorSavingUpdater.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/utils/moeoArchiveObjectiveVectorSavingUpdater.h deleted file mode 100644 index 3c6035e16..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/utils/moeoArchiveObjectiveVectorSavingUpdater.h +++ /dev/null @@ -1,94 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoArchiveObjectiveVectorSavingUpdater.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOARCHIVEOBJECTIVEVECTORSAVINGUPDATER_H_ -#define MOEOARCHIVEOBJECTIVEVECTORSAVINGUPDATER_H_ - -#include -#include -#include -#include -#include - -#define MAX_BUFFER_SIZE 1000 - -/** - * This class allows to save the objective vectors of the solutions contained in an archive into a file at each generation. - */ -template < class MOEOT > -class moeoArchiveObjectiveVectorSavingUpdater : public eoUpdater -{ -public: - - /** - * Ctor - * @param _arch local archive - * @param _filename target filename - * @param _count put this variable to true if you want a new file to be created each time () is called and to false if you only want the file to be updated - * @param _id own ID - */ - moeoArchiveObjectiveVectorSavingUpdater (moeoArchive & _arch, const std::string & _filename, bool _count = false, int _id = -1) : - arch(_arch), filename(_filename), count(_count), counter(0), id(_id) - {} - - - /** - * Saves the fitness of the archive's members into the file - */ - void operator()() { - char buff[MAX_BUFFER_SIZE]; - if (count) - { - if (id == -1) - { - sprintf (buff, "%s.%u", filename.c_str(), counter ++); - } - else - { - sprintf (buff, "%s.%u.%u", filename.c_str(), id, counter ++); - } - } - else - { - if (id == -1) - { - sprintf (buff, "%s", filename.c_str()); - } - else - { - sprintf (buff, "%s.%u", filename.c_str(), id); - } - counter ++; - } - std::ofstream f(buff); - for (unsigned int i = 0; i < arch.size (); i++) - f << arch[i].objectiveVector() << std::endl; - f.close (); - } - - -private: - - /** local archive */ - moeoArchive & arch; - /** target filename */ - std::string filename; - /** this variable is set to true if a new file have to be created each time () is called and to false if the file only HAVE to be updated */ - bool count; - /** counter */ - unsigned int counter; - /** own ID */ - int id; - -}; - -#endif /*MOEOARCHIVEOBJECTIVEVECTORSAVINGUPDATER_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/utils/moeoArchiveUpdater.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/utils/moeoArchiveUpdater.h deleted file mode 100644 index 6596940c2..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/utils/moeoArchiveUpdater.h +++ /dev/null @@ -1,54 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoArchiveUpdater.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOARCHIVEUPDATER_H_ -#define MOEOARCHIVEUPDATER_H_ - -#include -#include -#include - -/** - * This class allows to update the archive at each generation with newly found non-dominated solutions. - */ -template < class MOEOT > -class moeoArchiveUpdater : public eoUpdater -{ -public: - - /** - * Ctor - * @param _arch an archive of non-dominated solutions - * @param _pop the main population - */ - moeoArchiveUpdater(moeoArchive < MOEOT > & _arch, const eoPop < MOEOT > & _pop) : arch(_arch), pop(_pop) - {} - - - /** - * Updates the archive with newly found non-dominated solutions contained in the main population - */ - void operator()() { - arch.update(pop); - } - - -private: - - /** the archive of non-dominated solutions */ - moeoArchive < MOEOT > & arch; - /** the main population */ - const eoPop < MOEOT > & pop; - -}; - -#endif /*MOEOARCHIVEUPDATER_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/utils/moeoBinaryMetricSavingUpdater.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/utils/moeoBinaryMetricSavingUpdater.h deleted file mode 100644 index 237ea4909..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/utils/moeoBinaryMetricSavingUpdater.h +++ /dev/null @@ -1,90 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoBinaryMetricSavingUpdater.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOBINARYMETRICSAVINGUPDATER_H_ -#define MOEOBINARYMETRICSAVINGUPDATER_H_ - -#include -#include -#include -#include -#include -#include - -/** - * This class allows to save the progression of a binary metric comparing the objective vectors of the current population (or archive) - * with the objective vectors of the population (or archive) of the generation (n-1) into a file - */ -template < class MOEOT > -class moeoBinaryMetricSavingUpdater : public eoUpdater -{ -public: - - /** The objective vector type of a solution */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * Ctor - * @param _metric the binary metric comparing two Pareto sets - * @param _pop the main population - * @param _filename the target filename - */ - moeoBinaryMetricSavingUpdater (moeoVectorVsVectorBinaryMetric < ObjectiveVector, double > & _metric, const eoPop < MOEOT > & _pop, std::string _filename) : - metric(_metric), pop(_pop), filename(_filename), counter(1) - {} - - - /** - * Saves the metric's value for the current generation - */ - void operator()() { - if (pop.size()) { - if (firstGen) { - firstGen = false; - } - else { - // creation of the two Pareto sets - std::vector < ObjectiveVector > from; - std::vector < ObjectiveVector > to; - for (unsigned int i=0; i & metric; - /** main population */ - const eoPop < MOEOT > & pop; - /** (n-1) population */ - eoPop< MOEOT > oldPop; - /** target filename */ - std::string filename; - /** is it the first generation ? */ - bool firstGen; - /** counter */ - unsigned int counter; - -}; - -#endif /*MOEOBINARYMETRICSAVINGUPDATER_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/utils/moeoConvertPopToObjectiveVectors.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/src/utils/moeoConvertPopToObjectiveVectors.h deleted file mode 100644 index ca25cd7a5..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/src/utils/moeoConvertPopToObjectiveVectors.h +++ /dev/null @@ -1,44 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// moeoConvertPopToObjectiveVectors.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MOEOPOPTOOBJECTIVEVECTORS_H_ -#define MOEOPOPTOOBJECTIVEVECTORS_H_ - -#include -#include - -/** - * Functor allowing to get a vector of objective vectors from a population - */ -template < class MOEOT, class ObjectiveVector = typename MOEOT::ObjectiveVector > -class moeoConvertPopToObjectiveVectors : public eoUF < const eoPop < MOEOT >, const std::vector < ObjectiveVector > > -{ -public: - - /** - * Returns a vector of the objective vectors from the population _pop - * @param _pop the population - */ - const std::vector < ObjectiveVector > operator()(const eoPop < MOEOT > _pop) - { - std::vector < ObjectiveVector > result; - result.resize(_pop.size()); - for (unsigned int i=0; i<_pop.size(); i++) - { - result.push_back(_pop[i].objectiveVector()); - } - return result; - } - -}; - -#endif /*MOEOPOPTOOBJECTIVEVECTORS_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/FlowShopEA.cpp b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/FlowShopEA.cpp deleted file mode 100644 index 7e01baabc..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/FlowShopEA.cpp +++ /dev/null @@ -1,107 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// FlowShopEA.cpp -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - - -// moeo general include -#include -// for the creation of an evaluator -#include -// for the creation of an initializer -#include -// for the creation of the variation operators -#include -// how to initialize the population -#include -// the stopping criterion -#include -// outputs (stats, population dumps, ...) -#include -// evolution engine (selection and replacement) -#include -// simple call to the algo -#include -// checks for help demand, and writes the status file and make_help; in libutils -void make_help(eoParser & _parser); -// definition of the representation -#include - - -using namespace std; - - -int main(int argc, char* argv[]) -{ - try - { - - eoParser parser(argc, argv); // for user-parameter reading - eoState state; // to keep all things allocated - - - /*** the representation-dependent things ***/ - - // The fitness evaluation - eoEvalFuncCounter& eval = do_make_eval(parser, state); - // the genotype (through a genotype initializer) - eoInit& init = do_make_genotype(parser, state); - // the variation operators - eoGenOp& op = do_make_op(parser, state); - - - /*** the representation-independent things ***/ - - // initialization of the population - eoPop& pop = do_make_pop(parser, state, init); - // definition of the archive - moeoArchive arch; - // stopping criteria - eoContinue& term = do_make_continue_moeo(parser, state, eval); - // output - eoCheckPoint& checkpoint = do_make_checkpoint_moeo(parser, state, eval, term, pop, arch); - // algorithm - eoAlgo& algo = do_make_ea_moeo(parser, state, eval, checkpoint, op, arch); - - - /*** Go ! ***/ - - // help ? - make_help(parser); - - // first evalution - apply(eval, pop); - - // printing of the initial population - cout << "Initial Population\n"; - pop.sortedPrintOn(cout); - cout << endl; - - // run the algo - do_run(algo, pop); - - // printing of the final population - cout << "Final Population\n"; - pop.sortedPrintOn(cout); - cout << endl; - - // printing of the final archive - cout << "Final Archive\n"; - arch.sortedPrintOn(cout); - cout << endl; - - - } - catch (exception& e) - { - cout << e.what() << endl; - } - return EXIT_SUCCESS; -} diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/FlowShopEA.param b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/FlowShopEA.param deleted file mode 100644 index b1a0a118a..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/FlowShopEA.param +++ /dev/null @@ -1,49 +0,0 @@ - -###### General ###### ---help=0 # -h : Prints this message ---stopOnUnknownParam=1 # Stop if unkown param entered -# --seed=1182849833 # -S : Random number seed - -###### Evolution Engine ###### ---popSize=20 # -P : Population Size ---updateArch=1 # Update the archive at each gen. ---fitness=FastNonDominatedSorting # -F : Fitness assignment scheme: Dummy, FastNonDominatedSorting or IndicatorBased ---indicator=Epsilon # -i : Binary indicator for IndicatorBased: Epsilon, Hypervolume ---rho=1.1 # -r : reference point for the hypervolume indicator ---kappa=0.05 # -k : Scaling factor kappa for IndicatorBased ---diversity=Dummy # -D : Diversity assignment scheme: Dummy, Sharing(nicheSize) or Crowding ---comparator=FitnessThenDiversity # -C : Comparator scheme: FitnessThenDiversity, DiversityThenFitness or Aggregative ---selection=DetTour(2) # -S : Selection scheme: DetTour(T), StochTour(t) or Random ---replacement=Elitist # -R : Replacement scheme: Elitist, Environmental or Generational ---nbOffspring=100% # -O : Number of offspring (percentage or absolute) - -###### Output ###### ---resDir=Res # Directory to store DISK outputs ---eraseDir=1 # erase files in dirName if any ---printPop=0 # Print sorted pop. every gen. ---storeArch=0 # Store the archive's objective vectors at each gen. ---contribution=0 # Store the contribution of the archive at each gen. ---entropy=0 # Store the entropy of the archive at each gen. - -###### Persistence ###### ---Load= # -L : A save file to restart from ---recomputeFitness=0 # -r : Recompute the fitness after re-loading the pop.? ---saveFrequency=0 # Save every F generation (0 = only final state, absent = never) ---saveTimeInterval=0 # Save every T seconds (0 or absent = never) ---status=./FlowShopEA.status # Status file - -###### Representation ###### ---BenchmarkFile=benchmarks/020_10_01.txt # -B : Benchmark file name (benchmarks are available at www.lifl.fr/~liefooga/benchmarks) REQUIRED - -###### Stopping criterion ###### ---maxGen=100 # -G : Maximum number of generations (0 = none) ---maxEval=0 # -E : Maximum number of evaluations (0 = none) ---maxTime=0 # -T : Maximum running time in seconds (0 = none) ---CtrlC=1 # -C : Terminate current generation upon Ctrl C - -###### Variation Operators ###### ---crossRate=1 # Relative rate for the only crossover ---shiftMutRate=0.5 # Relative rate for shift mutation ---exchangeMutRate=0.5 # Relative rate for exchange mutation ---pCross=0.25 # -c : Probability of Crossover ---pMut=0.35 # -m : Probability of Mutation diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/Makefile.am b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/Makefile.am deleted file mode 100644 index d2994a37a..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -SUBDIRS = flowshop - -noinst_PROGRAMS = FlowShopEA - -FlowShopEA_SOURCES = FlowShopEA.cpp - -LDADD = ${EO_DIR}/src/libeo.a ${EO_DIR}/src/utils/libeoutils.a $(top_srcdir)/src/core/libmoeo.a flowshop/libflowshop.a - -INCLUDES = -Iflowshop -I${EO_DIR}/src/ -I$(top_srcdir)/src/ - -AM_CXXFLAGS = -Wall -ansi -pedantic diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/020_05_01.txt b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/020_05_01.txt deleted file mode 100644 index 2c2f78d86..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/020_05_01.txt +++ /dev/null @@ -1,63 +0,0 @@ -20 -5 -873654221 -0 -468 -54 79 16 66 58 -1 -325 -83 3 89 58 56 -2 -923 -15 11 49 31 20 -3 -513 -71 99 15 68 85 -4 -1070 -77 56 89 78 53 -5 -690 -36 70 45 91 35 -6 -602 -53 99 60 13 53 -7 -289 -38 60 23 59 41 -8 -873 -27 5 57 49 69 -9 -342 -87 56 64 85 13 -10 -764 -76 3 7 85 86 -11 -268 -91 61 1 9 72 -12 -1158 -14 73 63 39 8 -13 -646 -29 75 41 41 49 -14 -1111 -12 47 63 56 47 -15 -965 -77 14 47 40 87 -16 -703 -32 21 26 54 58 -17 -1205 -87 86 75 77 18 -18 -334 -68 5 77 51 68 -19 -1111 -94 77 40 31 28 diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/020_05_02.txt b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/020_05_02.txt deleted file mode 100644 index c82c2d033..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/020_05_02.txt +++ /dev/null @@ -1,63 +0,0 @@ -20 -5 -379008056 -0 -517 -26 59 78 88 69 -1 -461 -38 62 90 54 30 -2 -832 -27 44 64 47 61 -3 -653 -88 10 49 83 35 -4 -933 -95 23 47 84 53 -5 -811 -55 64 20 9 98 -6 -966 -54 47 61 30 94 -7 -448 -63 68 93 11 33 -8 -577 -23 54 36 92 77 -9 -1122 -45 9 47 63 31 -10 -666 -86 30 70 62 54 -11 -1189 -43 31 54 75 71 -12 -470 -43 92 87 48 78 -13 -475 -40 7 13 23 9 -14 -462 -37 14 40 85 79 -15 -866 -54 95 34 23 51 -16 -392 -35 76 55 4 76 -17 -310 -59 82 13 31 56 -18 -719 -43 91 11 13 80 -19 -1221 -50 37 5 98 72 diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/020_10_01.txt b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/020_10_01.txt deleted file mode 100644 index 96bca095d..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/020_10_01.txt +++ /dev/null @@ -1,63 +0,0 @@ -20 -10 -587595453 -0 -1250 -74 28 89 60 54 92 9 4 25 15 -1 -1371 -21 3 52 88 66 11 8 18 15 84 -2 -637 -58 27 56 26 12 54 88 25 91 8 -3 -616 -4 61 13 58 57 97 72 28 49 30 -4 -917 -21 34 7 76 70 57 27 95 56 95 -5 -937 -28 76 32 98 82 53 22 51 10 79 -6 -1435 -58 64 32 29 99 65 50 84 62 9 -7 -1197 -83 87 98 47 84 77 2 18 70 91 -8 -1301 -31 54 46 79 16 51 49 6 76 76 -9 -637 -61 98 60 26 41 36 82 90 99 26 -10 -749 -94 76 23 19 23 53 93 69 58 42 -11 -1223 -44 41 87 48 11 19 96 61 83 66 -12 -887 -97 70 7 95 68 54 43 57 84 70 -13 -1316 -94 43 36 78 58 86 13 5 64 91 -14 -1330 -66 42 26 77 30 40 60 75 74 67 -15 -1380 -6 79 85 90 5 56 11 4 14 3 -16 -767 -37 88 7 24 5 79 37 38 18 98 -17 -574 -22 15 34 10 39 74 91 28 48 4 -18 -1398 -99 49 36 85 58 24 84 4 96 71 -19 -1179 -83 72 48 55 31 3 67 80 86 62 diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/020_10_02.txt b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/020_10_02.txt deleted file mode 100644 index bf23361f5..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/020_10_02.txt +++ /dev/null @@ -1,63 +0,0 @@ -20 -10 -1401007982 -0 -1279 -80 59 59 31 30 53 93 90 65 64 -1 -1481 -13 83 70 64 88 19 79 92 97 38 -2 -1157 -64 85 76 11 14 99 88 35 27 44 -3 -1391 -77 85 10 9 22 62 77 13 25 46 -4 -763 -17 70 65 32 93 88 94 75 61 66 -5 -1456 -78 35 19 58 48 93 39 55 24 31 -6 -900 -82 2 77 98 10 34 74 80 97 48 -7 -1047 -4 76 86 95 7 72 46 67 61 27 -8 -1355 -72 46 21 25 14 42 17 3 75 82 -9 -1262 -93 72 75 4 91 65 30 93 92 51 -10 -1329 -68 69 96 45 5 39 62 54 73 90 -11 -562 -25 46 3 60 43 79 77 67 21 63 -12 -684 -67 3 50 87 30 9 43 25 29 85 -13 -567 -80 57 57 31 79 26 98 77 3 36 -14 -765 -43 71 66 1 39 72 48 38 96 69 -15 -808 -93 77 84 96 34 29 14 98 51 67 -16 -999 -21 33 98 22 77 36 45 96 26 81 -17 -548 -33 49 55 95 81 48 25 20 44 18 -18 -577 -14 59 70 73 11 57 98 15 56 81 -19 -704 -30 82 32 77 10 95 30 36 31 72 diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/020_20_01.txt b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/020_20_01.txt deleted file mode 100644 index 2ef8f0bee..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/020_20_01.txt +++ /dev/null @@ -1,63 +0,0 @@ -20 -20 -479340445 -0 -1696 -50 78 36 85 9 75 46 73 71 7 49 3 60 12 75 31 70 20 88 9 -1 -1273 -90 56 43 88 92 64 94 3 49 40 49 53 88 47 19 61 78 78 30 41 -2 -1546 -39 9 10 60 98 96 6 56 36 33 15 59 15 46 60 47 41 38 34 22 -3 -1882 -34 43 19 98 44 95 19 73 87 64 18 7 26 17 87 32 9 26 33 34 -4 -1117 -66 84 55 4 51 22 20 80 8 5 65 65 11 43 27 34 47 64 21 83 -5 -1181 -81 73 48 99 8 41 51 82 25 25 55 58 16 16 48 69 94 62 7 55 -6 -1416 -27 66 85 53 31 26 85 36 76 89 1 24 55 91 72 32 26 11 94 3 -7 -1635 -48 38 70 21 15 33 92 98 73 95 79 55 59 94 88 1 65 38 10 8 -8 -1723 -46 83 82 33 47 68 43 90 80 58 10 26 81 73 48 1 17 68 73 75 -9 -1932 -68 57 39 53 31 9 75 46 6 83 37 40 53 89 59 80 42 37 85 30 -10 -1219 -48 97 91 63 80 81 70 10 6 28 77 89 92 12 74 19 59 74 82 57 -11 -1521 -92 52 82 18 83 28 70 46 33 35 80 94 23 58 86 57 80 9 62 65 -12 -1322 -78 77 85 45 20 61 36 65 79 74 79 51 55 25 49 98 7 65 99 89 -13 -1057 -84 13 17 29 84 69 31 83 10 5 84 74 79 24 94 37 75 16 67 60 -14 -1922 -93 12 6 43 69 37 76 75 93 6 93 54 13 55 15 31 63 38 61 90 -15 -1130 -39 2 54 41 49 57 63 47 65 9 21 86 89 1 95 51 96 85 10 84 -16 -1411 -43 65 87 80 93 36 89 61 26 3 85 22 2 67 41 66 7 50 4 74 -17 -1840 -1 93 85 4 39 80 46 28 73 2 64 83 17 3 94 38 10 62 70 17 -18 -1741 -65 39 4 31 13 96 25 59 42 35 46 19 97 1 15 62 47 39 31 2 -19 -1377 -87 1 72 19 88 74 88 22 18 41 35 44 41 71 71 72 38 97 49 19 diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/050_05_01.txt b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/050_05_01.txt deleted file mode 100644 index 5f4b46f37..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/050_05_01.txt +++ /dev/null @@ -1,153 +0,0 @@ -50 -5 -1328042058 -0 -1290 -75 26 48 26 77 -1 -2352 -87 37 4 67 94 -2 -362 -13 25 92 4 9 -3 -305 -11 95 92 14 57 -4 -262 -41 49 72 93 29 -5 -1250 -43 12 45 54 79 -6 -2170 -93 59 5 21 55 -7 -1601 -69 17 98 20 73 -8 -2039 -80 46 93 6 65 -9 -1628 -13 20 17 18 86 -10 -483 -24 52 79 75 25 -11 -285 -72 44 11 25 39 -12 -1092 -38 92 16 16 76 -13 -936 -81 75 89 77 24 -14 -2349 -83 95 81 28 38 -15 -473 -88 33 92 24 5 -16 -2325 -26 10 45 15 91 -17 -747 -6 45 61 77 29 -18 -970 -89 2 39 36 22 -19 -434 -67 62 28 16 27 -20 -1258 -70 62 94 32 39 -21 -2405 -30 82 87 46 31 -22 -862 -89 29 23 21 46 -23 -298 -30 29 1 81 18 -24 -2014 -68 94 55 28 93 -25 -2608 -21 20 91 70 58 -26 -1737 -78 42 67 89 85 -27 -2214 -46 80 91 54 58 -28 -1910 -99 94 4 96 97 -29 -2245 -10 35 60 62 10 -30 -2211 -17 8 38 46 79 -31 -547 -23 41 25 60 93 -32 -2237 -83 65 90 19 2 -33 -1327 -47 4 93 97 87 -34 -700 -86 71 13 13 17 -35 -1011 -18 30 65 7 18 -36 -2001 -67 14 25 44 10 -37 -1230 -46 32 34 7 50 -38 -1020 -4 50 47 73 8 -39 -1918 -14 30 98 15 26 -40 -1001 -4 27 91 66 14 -41 -1383 -20 98 11 70 21 -42 -1229 -88 39 46 97 15 -43 -2594 -50 84 50 33 10 -44 -403 -84 65 77 97 85 -45 -1515 -58 12 5 64 46 -46 -431 -93 58 14 73 42 -47 -1971 -76 45 47 28 18 -48 -939 -50 49 80 4 36 -49 -2028 -30 15 45 87 2 diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/050_10_01.txt b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/050_10_01.txt deleted file mode 100644 index 17f3cb117..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/050_10_01.txt +++ /dev/null @@ -1,153 +0,0 @@ -50 -10 -1958948863 -0 -793 -46 61 3 51 37 79 83 22 27 24 -1 -2280 -52 87 1 24 16 93 87 29 92 47 -2 -939 -79 51 58 21 42 68 38 99 75 39 -3 -2591 -45 25 85 57 47 75 38 25 94 66 -4 -1540 -97 73 33 69 94 37 86 98 18 41 -5 -2386 -10 93 71 51 14 44 67 55 41 46 -6 -812 -44 28 58 50 94 34 23 80 37 24 -7 -2524 -24 90 56 51 34 39 19 82 58 23 -8 -1370 -85 94 64 21 72 76 97 33 56 68 -9 -1319 -75 59 43 19 36 62 78 68 20 50 -10 -2388 -66 64 48 63 88 74 66 47 2 93 -11 -961 -49 2 69 91 51 28 67 74 39 22 -12 -2831 -95 16 96 11 41 78 7 26 91 64 -13 -2790 -61 35 35 6 71 43 23 61 81 81 -14 -2076 -19 53 82 31 94 98 67 95 33 94 -15 -2519 -47 40 53 63 99 83 8 55 14 97 -16 -1981 -84 81 64 36 11 91 77 11 88 54 -17 -695 -13 26 11 39 97 27 71 42 22 82 -18 -2133 -11 85 61 57 44 6 85 72 36 11 -19 -1871 -19 4 36 47 77 82 29 14 65 91 -20 -1495 -98 4 53 56 69 60 49 8 79 23 -21 -754 -2 10 87 65 91 44 3 98 23 32 -22 -783 -85 63 88 59 38 43 94 90 66 26 -23 -984 -44 96 10 4 25 76 76 36 5 22 -24 -2004 -7 55 32 10 87 99 95 75 15 12 -25 -2269 -73 71 38 12 7 66 48 69 51 23 -26 -1771 -19 66 25 62 66 11 4 26 2 34 -27 -2030 -69 94 24 43 54 35 37 24 81 87 -28 -2603 -12 7 90 49 86 52 82 55 12 59 -29 -2150 -73 15 7 54 49 8 57 98 40 2 -30 -2157 -85 11 11 87 3 40 61 86 59 38 -31 -2187 -23 99 49 29 48 62 6 30 32 84 -32 -937 -53 37 2 2 44 25 97 92 16 62 -33 -728 -16 50 76 18 93 24 5 94 87 10 -34 -510 -88 56 17 75 37 30 27 66 78 11 -35 -2786 -8 69 32 39 82 1 95 47 41 93 -36 -2134 -26 22 39 77 31 73 46 3 43 57 -37 -1046 -42 56 9 69 59 27 92 41 94 81 -38 -2849 -58 67 83 15 78 16 46 41 1 10 -39 -1956 -63 63 69 78 33 91 52 47 93 40 -40 -2456 -7 96 67 68 36 33 8 89 22 62 -41 -1105 -2 74 28 37 3 11 11 28 93 49 -42 -1560 -44 4 88 22 58 99 7 39 62 90 -43 -1745 -38 42 23 41 10 2 54 80 53 34 -44 -2216 -24 40 91 92 98 60 72 47 30 11 -45 -1157 -76 30 71 67 6 90 57 57 34 81 -46 -1317 -85 93 3 24 44 36 85 74 27 51 -47 -2372 -61 36 26 87 62 62 22 38 30 21 -48 -777 -32 25 41 91 24 15 87 59 54 39 -49 -972 -90 87 96 31 94 3 65 5 77 27 diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/050_20_01.txt b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/050_20_01.txt deleted file mode 100644 index 23ccddab3..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/050_20_01.txt +++ /dev/null @@ -1,153 +0,0 @@ -50 -20 -1539989115 -0 -2509 -52 63 82 16 63 94 79 22 80 96 53 54 71 27 95 3 92 80 61 74 -1 -2039 -95 99 21 26 55 34 21 6 13 3 19 67 90 93 53 80 62 38 86 38 -2 -3096 -42 69 79 46 59 89 93 24 64 50 99 25 59 49 54 78 11 55 16 4 -3 -2950 -75 70 95 66 35 62 32 55 77 57 62 77 82 63 22 32 83 34 42 31 -4 -1249 -44 53 46 76 21 47 8 48 17 66 88 38 22 65 84 53 87 85 14 62 -5 -2481 -57 21 23 31 59 66 45 57 78 84 93 98 88 34 54 43 66 44 92 39 -6 -3193 -89 10 40 36 78 76 37 78 82 98 34 96 35 10 2 85 98 47 67 97 -7 -3253 -53 31 95 8 25 15 78 5 4 55 72 20 49 56 80 19 42 66 77 57 -8 -2123 -84 80 87 37 30 18 26 50 72 70 42 15 78 51 84 48 23 19 46 9 -9 -2390 -62 18 37 21 38 54 98 83 93 32 65 36 69 97 66 49 45 66 41 54 -10 -1764 -91 5 24 3 78 24 17 70 68 31 39 65 76 52 25 66 52 61 78 13 -11 -2940 -14 18 24 76 79 55 25 21 25 64 79 97 2 46 16 22 6 60 3 47 -12 -1635 -95 17 65 67 58 96 21 71 67 11 9 27 14 16 79 37 3 98 72 6 -13 -3171 -89 71 62 5 44 10 28 58 80 9 26 25 3 50 90 51 64 82 95 70 -14 -2670 -4 90 19 47 38 12 68 36 43 32 72 61 22 96 51 82 55 79 53 19 -15 -2932 -95 93 67 72 76 96 24 50 93 58 29 24 26 85 29 59 97 71 59 97 -16 -2054 -2 14 66 66 70 53 62 31 21 98 36 97 44 61 29 88 83 28 34 41 -17 -3238 -97 49 6 56 72 92 89 86 33 95 48 61 1 76 90 77 42 74 66 1 -18 -2466 -68 52 65 95 85 77 60 29 14 25 57 75 4 30 83 19 81 27 42 57 -19 -2384 -20 7 59 49 8 6 64 30 30 4 95 92 16 90 83 32 92 33 63 60 -20 -3473 -33 78 2 47 10 91 38 93 59 45 93 73 55 42 19 52 68 13 27 62 -21 -3290 -51 57 67 26 84 14 90 49 83 60 79 21 43 88 95 9 46 9 92 14 -22 -2086 -98 41 82 81 42 41 87 83 85 87 88 29 87 37 87 96 56 12 8 90 -23 -2560 -8 75 90 56 67 30 1 89 85 31 77 3 35 43 12 23 88 51 65 76 -24 -3253 -85 98 30 76 20 85 99 44 70 1 94 96 76 88 34 64 50 16 34 12 -25 -3205 -86 93 63 66 24 17 34 38 35 96 39 51 98 91 23 22 13 49 6 89 -26 -2534 -73 33 5 36 75 23 9 62 2 22 74 26 78 14 44 37 23 83 42 37 -27 -2039 -4 75 93 53 23 60 22 45 76 95 46 44 81 63 30 3 13 48 39 35 -28 -2273 -40 68 53 26 33 76 74 22 46 73 17 56 48 65 82 52 49 13 2 91 -29 -2062 -98 33 85 52 60 39 14 85 72 77 30 31 25 74 83 44 18 78 7 69 -30 -1909 -12 60 81 29 20 85 14 39 69 30 62 64 81 71 42 11 50 96 85 55 -31 -2432 -59 82 73 36 75 10 84 98 46 88 77 38 27 8 56 21 94 77 32 48 -32 -2624 -44 24 34 68 83 65 75 56 3 14 43 44 84 39 89 85 71 68 14 56 -33 -3325 -46 99 74 21 26 15 37 68 57 22 98 46 59 95 38 6 64 88 74 84 -34 -3427 -2 4 13 71 92 55 32 84 71 93 48 66 98 82 96 40 31 77 59 22 -35 -1318 -41 97 78 61 29 41 29 77 77 48 14 31 14 17 10 68 21 76 95 51 -36 -1539 -28 24 35 71 39 28 32 67 33 10 45 48 32 38 3 30 2 73 48 43 -37 -3223 -83 50 20 69 14 93 89 53 49 7 25 27 95 69 53 35 63 92 37 50 -38 -1703 -28 55 16 28 74 88 12 46 59 14 98 82 30 17 97 58 58 72 59 62 -39 -1051 -21 91 48 86 66 27 47 24 82 91 30 51 13 24 11 31 36 87 4 61 -40 -1512 -80 46 12 27 86 77 19 52 59 5 90 90 68 66 65 11 64 66 42 10 -41 -2589 -71 58 11 41 10 81 97 96 70 43 92 63 19 75 47 11 52 98 93 87 -42 -3248 -4 17 80 86 27 19 7 2 76 30 35 85 57 52 76 6 8 40 32 99 -43 -2047 -60 47 9 55 8 76 12 88 10 79 13 36 65 59 22 59 94 31 30 40 -44 -3333 -34 82 24 17 7 55 43 33 65 39 75 69 13 4 17 64 51 75 16 91 -45 -1760 -55 6 76 62 97 67 89 27 19 34 55 67 63 73 14 65 36 45 95 64 -46 -2333 -53 15 32 96 84 65 14 49 77 77 80 81 26 56 11 23 82 98 58 62 -47 -2400 -96 91 35 59 56 8 33 78 86 81 67 18 96 19 69 80 30 90 12 53 -48 -2142 -37 74 66 53 61 18 56 82 21 11 3 81 53 39 91 75 17 4 95 33 -49 -1231 -37 42 48 93 9 56 57 65 75 10 93 72 94 51 53 63 21 23 21 16 diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/100_05_01.txt b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/100_05_01.txt deleted file mode 100644 index f0d8d9b38..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/100_05_01.txt +++ /dev/null @@ -1,303 +0,0 @@ -100 -5 -896678084 -0 -1682 -73 34 8 62 10 -1 -4503 -84 46 37 86 60 -2 -1249 -57 97 38 46 34 -3 -4984 -52 88 30 3 96 -4 -2923 -66 52 20 22 79 -5 -2401 -67 49 68 33 62 -6 -1978 -33 88 4 90 6 -7 -5318 -62 15 78 94 15 -8 -4769 -65 55 41 98 94 -9 -2093 -7 6 2 9 39 -10 -2438 -6 77 62 84 85 -11 -3143 -31 49 38 69 17 -12 -698 -42 46 95 26 55 -13 -621 -82 14 82 22 59 -14 -2463 -48 35 96 49 48 -15 -3865 -45 40 56 90 11 -16 -1563 -79 1 61 81 63 -17 -1461 -86 70 34 12 98 -18 -2285 -10 46 1 54 33 -19 -4381 -47 28 9 53 49 -20 -1057 -67 73 57 18 41 -21 -3190 -86 24 80 56 82 -22 -4493 -64 44 58 43 12 -23 -4604 -38 55 7 50 61 -24 -1592 -13 94 56 82 94 -25 -4645 -69 52 31 18 80 -26 -2729 -4 40 92 89 84 -27 -1925 -21 76 84 49 18 -28 -3843 -25 92 25 20 68 -29 -4188 -74 22 20 76 6 -30 -2635 -11 46 65 90 98 -31 -3773 -85 19 36 64 47 -32 -269 -50 18 67 89 6 -33 -307 -21 50 96 16 55 -34 -907 -93 31 35 3 73 -35 -288 -98 41 59 12 70 -36 -5211 -91 51 76 45 56 -37 -331 -26 73 66 67 46 -38 -1499 -4 22 83 97 50 -39 -1119 -28 21 37 80 90 -40 -4399 -61 79 33 97 89 -41 -1306 -8 93 2 92 88 -42 -1149 -55 98 95 56 50 -43 -3919 -68 89 20 50 99 -44 -3875 -30 44 84 95 41 -45 -3485 -26 64 43 25 36 -46 -2800 -81 93 4 52 16 -47 -1893 -95 66 44 21 84 -48 -2341 -49 14 74 47 98 -49 -874 -6 10 92 4 44 -50 -3355 -82 36 55 67 42 -51 -345 -71 36 98 62 43 -52 -1530 -61 69 8 63 62 -53 -3516 -84 79 30 25 49 -54 -3194 -29 90 18 3 22 -55 -985 -44 51 28 55 16 -56 -1638 -83 81 54 87 14 -57 -2970 -12 16 68 84 55 -58 -4265 -54 28 42 28 45 -59 -3494 -19 26 28 73 20 -60 -5134 -52 97 12 8 35 -61 -3520 -59 33 57 38 89 -62 -3570 -74 77 81 80 7 -63 -1335 -42 68 19 53 64 -64 -313 -60 28 16 70 36 -65 -1031 -43 46 88 9 5 -66 -4360 -80 16 75 87 63 -67 -2814 -34 96 11 33 8 -68 -571 -74 59 57 11 76 -69 -538 -46 56 99 65 95 -70 -2856 -40 4 4 92 40 -71 -747 -27 52 51 34 51 -72 -3321 -79 89 26 64 98 -73 -612 -1 84 6 96 77 -74 -4517 -98 42 16 67 92 -75 -1532 -44 37 71 54 35 -76 -2848 -8 90 52 26 3 -77 -4701 -55 51 96 32 56 -78 -263 -55 84 89 10 1 -79 -5340 -27 16 79 91 17 -80 -3979 -69 39 91 90 70 -81 -4804 -79 16 57 31 45 -82 -1574 -97 37 2 7 87 -83 -3644 -39 19 33 6 37 -84 -1512 -54 15 42 77 70 -85 -4445 -75 68 1 91 84 -86 -3253 -88 7 40 42 69 -87 -5334 -87 58 76 5 7 -88 -2338 -97 47 85 46 5 -89 -1071 -4 27 99 54 97 -90 -2398 -79 82 65 56 47 -91 -1675 -59 72 98 1 12 -92 -4974 -7 1 78 24 54 -93 -1785 -89 7 61 62 84 -94 -3391 -61 22 83 47 49 -95 -4517 -42 40 30 63 89 -96 -2909 -79 59 14 39 86 -97 -2733 -85 16 62 63 37 -98 -853 -66 7 41 95 52 -99 -4261 -99 72 91 45 85 diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/100_10_01.txt b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/100_10_01.txt deleted file mode 100644 index 480d6be62..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/100_10_01.txt +++ /dev/null @@ -1,303 +0,0 @@ -100 -10 -1539989115 -0 -3490 -52 82 63 79 80 53 71 95 92 61 -1 -2540 -95 21 55 21 13 19 90 53 62 86 -2 -4675 -42 79 59 93 64 99 59 54 11 16 -3 -4381 -75 95 35 32 77 62 82 22 83 42 -4 -945 -44 46 21 8 17 88 22 84 87 14 -5 -3435 -57 23 59 45 78 93 88 54 66 92 -6 -4873 -89 40 78 37 82 34 35 2 98 67 -7 -4993 -53 95 25 78 4 72 49 80 42 77 -8 -2710 -84 87 30 26 72 42 78 84 23 46 -9 -3251 -62 37 38 98 93 65 69 66 45 41 -10 -1985 -91 24 78 17 68 39 76 25 52 78 -11 -4361 -14 24 79 25 25 79 2 16 6 3 -12 -1726 -95 65 58 21 67 9 14 79 3 72 -13 -4828 -89 62 44 28 80 26 3 90 64 95 -14 -3816 -4 19 38 68 43 72 22 51 55 53 -15 -4345 -95 67 76 24 93 29 26 29 97 59 -16 -2572 -2 66 70 62 21 36 44 29 83 34 -17 -4963 -97 6 72 89 33 48 1 90 42 66 -18 -3403 -68 65 85 60 14 57 4 83 81 42 -19 -3238 -20 59 8 64 30 95 16 83 92 63 -20 -5437 -33 2 10 38 59 93 55 19 68 27 -21 -5068 -51 67 84 90 83 79 43 95 46 92 -22 -2635 -98 82 42 87 85 88 87 87 56 8 -23 -3593 -8 90 67 1 85 77 35 12 88 65 -24 -4993 -85 30 20 99 70 94 76 34 50 34 -25 -4897 -86 63 24 34 35 39 98 23 13 6 -26 -3542 -73 5 75 9 2 74 78 44 23 42 -27 -2541 -4 93 23 22 76 46 81 30 13 39 -28 -3014 -40 53 33 74 46 17 48 82 49 2 -29 -2587 -98 85 60 14 72 30 25 83 18 7 -30 -2278 -12 81 20 14 69 62 81 42 50 85 -31 -3336 -59 73 75 84 46 77 27 56 94 32 -32 -3723 -44 34 83 75 3 43 84 89 71 14 -33 -5138 -46 74 26 37 57 98 59 38 64 74 -34 -5345 -2 13 92 32 71 48 98 96 31 59 -35 -1084 -41 78 29 29 77 14 14 10 21 95 -36 -1531 -28 35 39 32 33 45 32 3 2 48 -37 -4932 -83 20 14 89 49 25 95 53 63 37 -38 -1863 -28 16 74 12 59 98 30 97 58 59 -39 -545 -21 48 66 47 82 30 13 11 36 4 -40 -1477 -80 12 86 19 59 90 68 65 64 42 -41 -3653 -71 11 10 97 70 92 19 47 52 93 -42 -4983 -4 80 27 7 76 35 57 76 8 32 -43 -2558 -60 9 8 12 10 13 65 22 94 30 -44 -5156 -34 24 7 43 65 75 13 17 51 16 -45 -1977 -55 76 97 89 19 55 63 14 36 95 -46 -3136 -53 32 84 14 77 80 26 11 82 58 -47 -3271 -96 35 56 33 86 67 96 69 30 12 -48 -2748 -37 66 61 56 21 3 53 91 17 95 -49 -909 -37 48 9 57 75 93 94 53 21 21 -50 -4366 -63 16 94 22 96 54 27 3 80 74 -51 -4943 -99 26 34 6 3 67 93 80 38 38 -52 -4596 -69 46 89 24 50 25 49 78 55 4 -53 -1793 -70 66 62 55 57 77 63 32 34 31 -54 -4596 -53 76 47 48 66 38 65 53 85 62 -55 -3717 -21 31 66 57 84 98 34 43 44 39 -56 -4624 -10 36 76 78 98 96 10 85 47 97 -57 -5212 -31 8 15 5 55 20 56 19 66 57 -58 -5604 -80 37 18 50 70 15 51 48 19 9 -59 -2110 -18 21 54 83 32 36 97 49 66 54 -60 -2568 -5 3 24 70 31 65 52 66 61 13 -61 -5330 -18 76 55 21 64 97 46 22 60 47 -62 -676 -17 67 96 71 11 27 16 37 98 6 -63 -1603 -71 5 10 58 9 25 50 51 82 70 -64 -1085 -90 47 12 36 32 61 96 82 79 19 -65 -5128 -93 72 96 50 58 24 85 59 71 97 -66 -938 -14 66 53 31 98 97 61 88 28 41 -67 -4778 -49 56 92 86 95 61 76 77 74 1 -68 -1986 -52 95 77 29 25 75 30 19 27 57 -69 -2115 -7 49 6 30 4 92 90 32 33 60 -70 -616 -78 47 91 93 45 73 42 52 13 62 -71 -534 -57 26 14 49 60 21 88 9 9 14 -72 -1231 -41 81 41 83 87 29 37 96 12 90 -73 -3376 -75 56 30 89 31 3 43 23 51 76 -74 -2922 -98 76 85 44 1 96 88 64 16 12 -75 -2152 -93 66 17 38 96 51 91 22 49 89 -76 -1813 -33 36 23 62 22 26 14 37 83 37 -77 -3561 -75 53 60 45 95 44 63 3 48 35 -78 -4603 -68 26 76 22 73 56 65 52 13 91 -79 -2813 -33 52 39 85 77 31 74 44 78 69 -80 -528 -60 29 85 39 30 64 71 11 96 55 -81 -1112 -82 36 10 98 88 38 8 21 77 48 -82 -4387 -24 68 65 56 14 44 39 85 68 56 -83 -4573 -99 21 15 68 22 46 95 6 88 84 -84 -5585 -4 71 55 84 93 66 82 40 77 22 -85 -2680 -97 61 41 77 48 31 17 68 76 51 -86 -3262 -24 71 28 67 10 48 38 30 73 43 -87 -3913 -50 69 93 53 7 27 69 35 92 50 -88 -1749 -55 28 88 46 14 82 17 58 72 62 -89 -2369 -91 86 27 24 91 51 24 31 87 61 -90 -888 -46 27 77 52 5 90 66 11 66 10 -91 -3107 -58 41 81 96 43 63 75 11 98 87 -92 -4964 -17 86 19 2 30 85 52 6 40 99 -93 -5249 -47 55 76 88 79 36 59 59 31 40 -94 -5632 -82 17 55 33 39 69 4 64 75 91 -95 -893 -6 62 67 27 34 67 73 65 45 64 -96 -3432 -15 96 65 49 77 81 56 23 98 62 -97 -5507 -91 59 8 78 81 18 19 80 90 53 -98 -2007 -74 53 18 82 11 81 39 75 4 33 -99 -5336 -42 93 56 65 10 72 51 63 23 16 diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/100_20_01.txt b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/100_20_01.txt deleted file mode 100644 index f063c0f7c..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/100_20_01.txt +++ /dev/null @@ -1,303 +0,0 @@ -100 -20 -450926852 -0 -1420 -12 27 24 42 5 27 51 48 42 31 48 51 8 1 1 28 4 44 6 57 -1 -1890 -72 97 57 16 42 69 9 44 18 49 92 84 37 77 59 81 40 6 49 88 -2 -5212 -29 53 68 44 47 38 22 73 31 78 43 28 33 92 53 96 5 18 84 88 -3 -2835 -16 16 58 75 47 66 15 95 18 23 35 63 4 57 22 99 37 51 72 43 -4 -4466 -22 36 76 32 47 21 84 72 55 37 7 86 8 46 10 79 80 77 39 25 -5 -5004 -61 28 70 66 78 65 38 12 82 34 51 99 38 75 48 97 46 47 51 81 -6 -1562 -69 50 72 31 94 3 71 30 64 43 85 27 97 2 94 15 14 27 77 3 -7 -1927 -71 41 56 6 18 7 11 22 36 7 66 24 75 14 46 6 81 17 59 3 -8 -2807 -86 42 56 6 14 10 45 25 48 69 87 36 76 14 57 77 16 42 97 78 -9 -2057 -16 86 55 52 97 11 48 92 74 97 71 83 93 79 55 98 10 84 5 97 -10 -5762 -54 2 89 7 54 41 29 5 17 15 16 24 69 64 66 5 79 3 83 74 -11 -5182 -53 45 23 92 73 64 31 44 60 38 40 54 10 8 69 51 35 69 51 71 -12 -5558 -64 86 42 45 94 9 14 90 18 80 22 34 25 73 7 51 41 3 9 50 -13 -2591 -96 43 26 70 17 15 56 35 88 78 12 49 40 15 13 60 83 6 9 70 -14 -4353 -79 92 87 72 97 71 59 24 37 89 2 43 88 71 64 17 13 94 59 23 -15 -4442 -68 73 17 48 7 86 35 64 29 95 90 5 90 6 83 98 93 58 30 43 -16 -2375 -98 99 38 86 94 2 7 82 19 1 63 70 57 54 39 46 55 65 86 51 -17 -3311 -87 84 24 63 94 26 20 7 51 18 52 56 39 59 46 87 48 36 49 97 -18 -2369 -40 83 82 61 68 57 48 34 20 11 15 71 29 49 59 44 35 28 46 57 -19 -4728 -74 61 55 92 4 78 88 91 7 11 6 12 97 38 36 18 75 68 13 77 -20 -5437 -22 7 47 73 60 84 54 59 43 92 18 30 51 21 69 71 66 73 45 90 -21 -3616 -23 8 7 49 70 20 30 5 77 99 87 77 97 60 47 93 82 81 51 58 -22 -4472 -47 62 99 53 68 21 81 47 95 81 66 55 5 8 83 97 3 12 68 75 -23 -2738 -55 3 89 20 22 3 2 96 92 79 7 92 75 35 25 44 79 89 82 4 -24 -1604 -21 21 20 97 17 39 1 7 27 53 43 78 91 81 12 18 78 53 6 12 -25 -3121 -90 50 65 58 59 64 78 53 70 47 27 79 80 96 28 59 48 14 99 2 -26 -2296 -68 71 3 59 98 51 8 60 91 48 78 52 81 61 30 9 99 88 12 4 -27 -2107 -14 95 45 29 55 83 8 77 74 32 80 19 60 89 49 45 91 78 8 28 -28 -5637 -42 70 89 98 76 12 71 61 62 58 73 16 97 58 81 78 29 63 36 54 -29 -1686 -41 60 96 61 3 16 60 14 80 33 86 21 14 32 56 67 87 81 24 39 -30 -2186 -40 4 16 83 21 3 41 88 85 65 82 37 2 59 96 65 27 29 82 30 -31 -5311 -63 58 42 8 10 1 39 97 8 86 33 85 55 89 89 50 2 15 73 71 -32 -3210 -23 16 70 83 11 88 8 92 39 60 92 56 97 99 73 87 48 81 66 89 -33 -1223 -75 30 69 73 44 80 96 65 85 47 8 29 60 7 52 29 33 84 69 33 -34 -2856 -4 80 77 2 29 77 3 73 83 89 87 56 8 79 12 80 92 36 71 85 -35 -4618 -31 71 46 56 43 2 79 19 76 40 64 23 30 38 98 14 15 8 70 2 -36 -1981 -87 59 20 7 60 14 48 99 31 72 7 19 87 1 12 70 55 60 61 69 -37 -2755 -25 75 71 15 14 60 23 92 12 54 26 52 42 67 40 10 24 24 42 20 -38 -1976 -47 52 91 55 46 45 38 19 69 29 79 39 16 63 70 30 59 57 77 64 -39 -1153 -70 25 8 3 3 39 85 66 26 57 49 4 56 42 35 19 41 87 10 94 -40 -5686 -1 86 34 73 60 32 32 25 54 93 71 46 86 3 58 51 49 61 2 3 -41 -4817 -49 48 72 13 72 97 69 79 91 65 72 59 4 29 95 4 88 57 6 41 -42 -1305 -59 53 40 47 90 98 56 36 61 39 69 22 30 23 41 23 67 85 24 37 -43 -4539 -11 54 82 76 1 65 99 10 27 8 30 76 15 21 71 9 49 45 97 36 -44 -4894 -93 98 60 15 42 86 51 23 88 87 28 34 24 25 90 62 81 69 15 74 -45 -2853 -38 36 59 43 74 6 59 37 53 57 46 63 23 48 3 30 89 15 91 53 -46 -1815 -5 9 59 44 54 14 47 76 47 5 75 32 57 33 68 20 43 7 32 49 -47 -5816 -43 78 43 13 41 99 79 83 39 56 78 72 81 92 5 69 24 87 68 77 -48 -5297 -82 80 72 16 15 93 67 58 14 80 34 92 77 2 18 88 70 58 17 13 -49 -4830 -33 88 10 18 38 54 83 99 78 2 4 72 43 12 26 22 74 61 1 37 -50 -4903 -26 52 63 16 24 54 58 29 90 17 23 26 82 32 2 43 44 82 49 34 -51 -3618 -89 30 67 18 91 92 49 35 90 84 69 46 97 38 21 63 23 73 25 31 -52 -4572 -86 62 12 3 49 57 50 49 50 86 33 30 3 67 86 67 89 84 46 15 -53 -5078 -10 8 41 11 23 39 19 89 64 65 11 49 46 93 8 22 96 63 37 32 -54 -1714 -16 45 5 98 63 13 64 79 94 53 5 3 86 80 33 82 80 14 56 45 -55 -1214 -72 77 25 9 88 70 5 82 79 5 54 81 62 75 88 41 44 73 50 50 -56 -2317 -96 90 67 28 1 73 5 92 10 16 42 4 26 59 33 69 69 84 9 81 -57 -1939 -47 52 95 44 30 16 52 45 18 58 12 46 56 51 65 81 7 9 62 46 -58 -4684 -9 39 46 14 85 43 15 42 7 60 40 95 67 7 8 21 10 38 10 93 -59 -2148 -56 95 37 39 22 9 26 21 26 78 30 20 87 65 89 54 15 67 89 13 -60 -4555 -8 86 41 76 94 2 67 51 51 25 51 56 46 6 46 42 55 76 66 47 -61 -5302 -69 15 2 92 39 76 11 30 23 71 94 57 66 59 76 53 27 18 98 50 -62 -1794 -87 98 25 59 70 38 77 70 43 93 24 85 53 30 57 52 55 70 10 70 -63 -2125 -84 59 99 95 85 66 74 2 95 99 28 31 34 67 51 26 2 69 70 21 -64 -3571 -62 22 48 11 7 21 88 20 57 6 84 44 52 41 58 69 82 4 92 41 -65 -5197 -52 43 24 55 65 32 83 82 30 62 69 1 81 32 62 80 42 58 36 12 -66 -1470 -82 85 18 56 43 78 96 13 86 60 44 11 68 63 59 46 88 66 82 18 -67 -2420 -66 93 10 16 4 41 73 92 80 33 98 72 48 7 71 10 84 11 54 28 -68 -4451 -67 6 23 56 60 52 59 91 55 57 36 6 4 8 12 81 38 1 34 22 -69 -1234 -33 46 66 23 90 88 94 2 76 79 21 68 25 89 11 99 69 51 34 60 -70 -1487 -3 51 82 84 73 76 15 80 12 7 9 62 76 51 82 6 31 38 5 69 -71 -5745 -53 97 84 22 21 14 50 38 91 69 48 18 46 81 56 90 5 16 12 49 -72 -1472 -95 79 14 32 25 86 20 54 95 82 30 21 13 9 57 79 3 81 3 38 -73 -5132 -42 46 13 40 33 35 54 45 28 26 15 48 72 13 53 34 37 39 56 80 -74 -3842 -59 71 88 47 48 81 16 19 12 41 21 32 72 27 45 56 14 56 44 52 -75 -3269 -77 18 7 92 25 32 33 65 18 52 43 42 82 74 96 75 35 83 41 45 -76 -4366 -38 33 40 61 27 75 9 35 80 38 91 79 32 59 31 54 61 27 14 34 -77 -4912 -12 13 20 51 37 38 74 66 32 21 49 74 25 98 39 94 43 29 25 3 -78 -3383 -1 3 68 74 63 55 11 26 67 84 86 82 58 31 12 84 38 93 78 61 -79 -4632 -66 32 22 85 28 96 21 18 2 74 36 3 17 98 13 55 48 70 25 96 -80 -2775 -24 28 92 6 88 19 97 32 4 76 41 64 99 48 8 64 89 64 89 99 -81 -5614 -17 48 53 13 27 35 15 51 30 16 10 90 54 74 49 14 86 22 83 49 -82 -3465 -58 8 16 32 94 41 43 23 64 75 75 10 81 76 4 18 37 84 78 78 -83 -1004 -71 42 10 8 20 77 2 18 69 75 56 72 73 75 33 6 20 25 23 34 -84 -1425 -88 26 23 43 54 36 1 87 76 36 70 2 93 78 22 27 33 73 51 78 -85 -1759 -63 26 88 30 17 24 74 74 92 79 73 49 73 11 30 20 1 81 7 79 -86 -5341 -60 95 65 53 74 52 37 10 50 71 57 88 79 71 34 54 8 10 20 64 -87 -1080 -86 44 11 24 35 60 61 76 35 82 51 53 54 54 19 30 61 46 30 55 -88 -4906 -8 74 89 2 15 43 3 31 20 70 34 59 72 10 24 58 41 32 30 63 -89 -2859 -8 82 78 11 53 30 75 31 23 22 62 88 37 96 56 35 40 38 30 24 -90 -5588 -44 28 94 33 64 86 41 93 52 39 3 97 68 97 96 66 10 68 63 58 -91 -5551 -99 4 32 27 38 6 86 61 25 8 34 98 22 75 35 85 10 40 82 25 -92 -5376 -80 42 64 35 79 8 51 26 82 22 27 94 94 41 43 78 75 33 40 93 -93 -5672 -76 81 42 40 45 31 65 39 18 79 29 95 37 30 8 15 9 79 39 73 -94 -5671 -94 56 74 40 67 80 42 83 2 90 25 93 15 73 5 29 81 64 37 45 -95 -4086 -75 38 87 96 93 82 50 11 29 55 97 95 31 84 65 31 40 36 44 93 -96 -1806 -63 50 63 69 16 2 48 57 70 77 30 6 46 22 64 45 13 62 2 37 -97 -5810 -57 12 94 23 59 59 88 81 7 3 28 1 33 8 20 41 10 82 27 64 -98 -1083 -76 43 87 32 47 47 52 40 36 20 48 15 82 98 54 84 53 44 71 92 -99 -1887 -34 51 72 13 95 21 46 97 96 61 99 66 75 68 38 51 28 99 45 59 diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/200_10_01.txt b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/200_10_01.txt deleted file mode 100644 index d1bccf9b0..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/200_10_01.txt +++ /dev/null @@ -1,603 +0,0 @@ -200 -10 -471503978 -0 -7166 -17 30 28 15 52 5 53 55 81 47 -1 -7478 -37 26 82 67 82 44 43 65 44 51 -2 -4344 -22 2 88 57 17 2 43 38 46 44 -3 -3004 -71 29 33 64 66 98 56 76 3 27 -4 -4783 -79 98 69 23 62 27 48 45 93 76 -5 -4813 -37 67 28 9 57 10 83 99 14 4 -6 -1411 -69 92 92 1 58 25 34 84 86 76 -7 -4573 -53 51 66 2 91 27 93 67 23 49 -8 -7480 -59 53 92 43 42 41 95 40 59 5 -9 -4429 -64 82 30 73 69 59 48 93 47 25 -10 -841 -11 86 67 94 48 89 63 70 76 23 -11 -9418 -67 47 53 96 46 36 93 45 45 67 -12 -8849 -27 36 93 78 18 62 91 75 64 55 -13 -5306 -64 23 45 14 94 29 94 91 10 40 -14 -4634 -59 34 7 32 83 17 32 21 4 58 -15 -9336 -31 66 70 23 48 37 81 72 29 26 -16 -4344 -43 43 58 83 81 35 69 15 69 36 -17 -10182 -42 71 58 29 57 47 29 73 46 83 -18 -5648 -56 31 17 75 93 37 44 43 68 65 -19 -10009 -88 36 41 55 67 52 2 62 89 91 -20 -7809 -71 41 56 91 19 3 66 40 48 77 -21 -6970 -86 6 34 44 65 87 25 43 68 62 -22 -6260 -6 28 62 46 49 4 60 96 13 6 -23 -3543 -54 43 81 59 45 50 69 39 36 57 -24 -4215 -92 18 44 11 22 96 44 23 85 87 -25 -7436 -75 64 95 20 92 74 34 79 35 4 -26 -2229 -83 28 50 68 41 68 68 66 25 11 -27 -6742 -2 13 88 3 38 30 77 19 21 60 -28 -1878 -60 7 19 17 26 69 31 41 44 23 -29 -3222 -62 13 50 55 2 17 10 71 40 87 -30 -2189 -83 93 25 59 90 34 57 60 20 50 -31 -9874 -73 93 88 18 79 95 21 72 83 18 -32 -1849 -55 56 1 31 17 3 56 62 76 23 -33 -10057 -3 72 6 84 61 24 36 17 26 24 -34 -7309 -71 71 45 61 81 51 26 25 50 82 -35 -9509 -34 28 29 55 67 55 11 59 98 16 -36 -10403 -40 95 2 46 18 60 6 95 6 96 -37 -4515 -13 96 54 77 1 61 86 47 83 37 -38 -1586 -62 55 71 59 36 15 2 10 51 29 -39 -638 -56 58 81 98 31 38 89 94 46 19 -40 -7434 -28 66 22 23 85 83 28 39 99 26 -41 -9737 -53 3 57 18 92 62 62 53 65 56 -42 -5477 -71 77 16 17 6 84 63 50 46 33 -43 -5976 -5 80 88 70 78 44 52 99 24 53 -44 -3293 -73 2 5 73 83 80 12 63 47 6 -45 -5869 -95 82 52 38 39 48 13 59 24 95 -46 -10358 -23 86 23 13 74 45 43 30 32 63 -47 -4698 -49 16 21 77 77 54 99 67 66 84 -48 -9855 -17 29 21 74 85 71 11 18 48 13 -49 -5305 -81 24 58 79 88 10 70 12 83 6 -50 -8401 -88 89 96 51 25 96 82 9 3 19 -51 -6004 -62 96 37 48 33 23 14 41 74 16 -52 -3369 -35 99 46 16 36 8 39 67 97 80 -53 -10335 -78 15 78 93 32 56 83 52 39 37 -54 -2868 -90 49 87 29 82 35 4 39 80 20 -55 -5297 -36 78 91 28 98 72 86 90 27 62 -56 -3744 -46 48 9 6 3 53 93 25 70 81 -57 -9148 -98 64 96 82 46 13 87 13 65 52 -58 -3270 -75 3 93 40 68 72 82 81 1 14 -59 -7616 -36 63 98 9 11 38 78 3 26 67 -60 -5131 -74 14 31 88 30 1 32 8 46 19 -61 -9674 -86 95 78 51 75 69 82 66 8 86 -62 -940 -67 88 20 48 42 85 24 67 74 1 -63 -6286 -87 9 75 1 93 2 88 51 47 53 -64 -1159 -68 61 18 4 36 28 45 54 19 21 -65 -10410 -1 24 34 77 97 18 48 85 85 33 -66 -3268 -87 38 48 48 1 10 67 10 62 68 -67 -6533 -87 50 49 6 63 70 14 95 33 28 -68 -1984 -7 47 69 1 86 67 34 59 96 25 -69 -2658 -34 42 88 32 54 95 76 64 33 69 -70 -7518 -1 30 30 79 33 72 1 90 5 71 -71 -3280 -91 97 34 40 71 64 51 28 23 60 -72 -8989 -7 49 22 14 1 19 15 48 43 69 -73 -4877 -6 79 81 20 18 60 67 57 63 99 -74 -7608 -46 19 50 86 75 31 57 85 10 53 -75 -4775 -3 80 40 40 55 29 3 78 47 77 -76 -4441 -45 30 73 25 62 43 37 18 73 27 -77 -689 -55 24 91 94 21 17 15 59 1 29 -78 -8408 -92 58 7 73 71 78 50 11 19 83 -79 -2103 -67 43 1 44 80 28 75 67 92 22 -80 -6500 -13 6 71 98 5 47 80 36 31 10 -81 -3906 -30 95 72 94 48 78 3 24 29 42 -82 -4713 -27 43 8 61 87 77 9 59 68 64 -83 -9905 -19 99 68 65 22 92 28 24 31 80 -84 -3660 -51 22 49 44 5 42 44 39 92 73 -85 -2405 -86 99 7 75 71 86 2 1 48 91 -86 -7436 -20 11 47 4 69 6 71 80 87 38 -87 -5400 -95 99 90 17 75 19 89 58 8 60 -88 -8689 -79 60 59 1 72 28 24 76 90 53 -89 -5805 -48 42 39 12 36 18 73 59 57 38 -90 -685 -83 33 49 78 54 4 28 90 40 19 -91 -9892 -91 68 28 51 24 24 98 92 25 14 -92 -9000 -78 78 22 55 55 57 17 3 49 35 -93 -2827 -41 26 10 53 5 82 27 51 26 10 -94 -1779 -61 77 96 96 40 7 90 1 35 44 -95 -2539 -90 1 2 92 56 4 4 55 90 97 -96 -5797 -57 13 88 82 8 94 13 50 99 17 -97 -6740 -4 67 90 20 19 9 83 15 30 50 -98 -5913 -21 87 69 22 7 57 43 31 5 22 -99 -1778 -68 31 44 13 12 82 63 99 52 19 -100 -9256 -87 49 74 40 44 98 68 8 12 70 -101 -1943 -62 90 16 43 66 54 74 44 11 88 -102 -2314 -69 6 90 23 39 2 12 91 72 31 -103 -5964 -79 76 7 30 41 71 69 83 32 7 -104 -2160 -69 94 14 16 60 94 38 75 81 81 -105 -5000 -35 76 47 76 11 69 74 66 21 58 -106 -753 -25 79 48 30 31 51 98 98 81 2 -107 -8317 -68 66 36 59 65 80 86 77 64 89 -108 -9608 -14 51 62 64 16 79 72 8 45 1 -109 -5659 -9 14 1 72 67 85 76 6 4 80 -110 -3727 -74 89 63 61 19 56 53 26 10 52 -111 -878 -61 87 86 13 69 79 94 47 90 15 -112 -5610 -58 1 49 81 56 46 45 55 11 25 -113 -8024 -81 65 48 25 96 71 30 39 88 11 -114 -7993 -52 53 3 90 78 85 39 91 52 97 -115 -7345 -93 19 51 67 36 52 60 78 96 90 -116 -5943 -44 21 80 21 56 42 69 49 92 62 -117 -5637 -57 98 86 70 12 66 12 23 44 69 -118 -3377 -89 90 97 96 37 82 83 92 54 34 -119 -10135 -81 45 4 99 1 91 21 68 28 66 -120 -2394 -69 77 58 64 50 48 25 88 85 54 -121 -6036 -98 54 79 68 43 70 50 9 51 84 -122 -6761 -78 86 28 61 58 21 47 38 21 62 -123 -7860 -70 2 19 36 13 82 43 60 4 71 -124 -8007 -3 3 93 57 55 12 58 2 42 70 -125 -7718 -70 88 88 86 87 94 11 8 43 60 -126 -7598 -62 39 44 10 20 17 63 86 55 54 -127 -3245 -81 56 74 57 84 45 74 62 89 52 -128 -4953 -61 24 18 88 28 68 6 41 4 71 -129 -8163 -65 91 95 59 59 60 23 66 1 9 -130 -8429 -65 86 2 73 65 93 94 94 97 99 -131 -8623 -33 80 22 43 56 30 93 54 65 41 -132 -1742 -62 58 7 25 2 5 26 9 38 30 -133 -1409 -19 54 82 37 36 31 49 75 87 23 -134 -5249 -57 57 52 70 41 30 30 43 58 60 -135 -9063 -82 42 17 97 7 71 50 9 47 1 -136 -7293 -78 32 59 29 23 29 47 10 53 67 -137 -1353 -94 5 42 33 25 82 89 79 51 55 -138 -6480 -65 43 51 99 81 20 43 10 40 64 -139 -8191 -14 80 79 34 6 13 32 97 80 21 -140 -7595 -9 86 93 96 67 94 45 39 20 16 -141 -739 -29 47 65 65 5 47 47 30 24 94 -142 -7977 -70 95 27 90 89 57 68 74 77 11 -143 -8304 -90 86 25 52 71 95 13 52 37 90 -144 -6930 -86 40 60 95 86 8 86 90 13 48 -145 -5996 -12 31 72 3 48 46 97 12 29 85 -146 -2438 -40 61 29 64 50 80 2 61 28 34 -147 -2339 -12 12 55 21 54 32 16 34 18 7 -148 -5848 -64 64 58 16 21 7 27 88 22 79 -149 -4982 -32 17 22 70 83 34 38 27 75 95 -150 -7604 -18 52 58 67 27 33 53 68 24 50 -151 -10491 -11 56 61 13 38 33 37 14 79 78 -152 -8007 -40 35 89 96 79 18 94 88 99 39 -153 -6393 -14 60 67 57 71 29 78 74 35 79 -154 -1948 -22 75 14 7 53 19 84 71 45 69 -155 -8138 -49 10 10 30 2 74 49 14 95 27 -156 -3757 -95 50 40 96 9 58 25 16 46 42 -157 -4120 -82 66 11 98 49 52 59 46 15 15 -158 -4850 -7 53 99 72 79 10 36 47 7 51 -159 -4564 -19 58 7 31 39 70 33 54 24 44 -160 -4171 -95 12 20 11 28 78 15 91 45 71 -161 -669 -39 66 78 36 39 59 36 89 20 32 -162 -4803 -71 81 6 10 70 32 47 59 35 66 -163 -5464 -34 51 71 20 72 20 83 39 61 49 -164 -6219 -89 75 48 26 70 12 24 52 97 8 -165 -2726 -63 71 39 67 38 98 71 91 69 7 -166 -6507 -85 46 58 13 48 18 7 21 78 44 -167 -6446 -60 88 7 60 57 12 6 90 13 1 -168 -3416 -91 58 17 50 11 57 55 58 53 15 -169 -918 -49 73 63 28 38 73 43 74 16 6 -170 -3139 -46 27 73 32 37 91 82 30 94 51 -171 -9351 -10 26 43 49 56 46 40 63 59 91 -172 -7171 -19 38 14 54 64 64 78 19 64 33 -173 -2127 -50 48 66 46 64 92 64 18 72 77 -174 -4461 -65 8 59 15 68 45 96 88 13 69 -175 -799 -41 14 75 49 27 86 27 22 47 28 -176 -6861 -58 58 96 94 36 84 99 43 22 8 -177 -9690 -62 89 28 63 94 15 11 60 9 8 -178 -3180 -45 44 12 96 65 99 91 20 68 48 -179 -2449 -67 16 99 43 89 8 78 32 4 7 -180 -8742 -64 20 63 73 23 87 97 67 67 55 -181 -4503 -6 69 19 19 93 61 23 1 92 51 -182 -10135 -77 67 26 19 14 42 48 42 49 89 -183 -8757 -94 80 8 81 57 25 20 95 23 61 -184 -1192 -24 81 72 82 93 35 99 84 37 82 -185 -8334 -38 82 55 69 60 64 39 37 16 39 -186 -9610 -73 27 67 13 82 74 53 30 39 89 -187 -8681 -59 5 1 85 16 40 3 12 47 47 -188 -8465 -61 44 23 32 69 89 65 87 94 24 -189 -8425 -14 38 35 34 57 4 81 13 71 79 -190 -3227 -59 53 6 57 8 43 47 60 36 86 -191 -4628 -83 16 89 69 52 12 25 92 72 60 -192 -1319 -3 48 93 63 98 28 36 52 67 67 -193 -9629 -46 16 88 49 67 68 44 51 78 10 -194 -4236 -16 31 86 56 19 46 29 91 13 61 -195 -5509 -56 79 37 37 56 23 85 76 68 60 -196 -9597 -40 75 53 54 38 3 26 32 36 68 -197 -8513 -7 14 45 60 75 70 4 81 69 72 -198 -2882 -79 67 32 97 69 81 9 57 28 9 -199 -7268 -55 70 69 44 14 14 59 71 69 47 diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/README b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/README deleted file mode 100644 index 7f3c69274..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/benchmarks/README +++ /dev/null @@ -1 +0,0 @@ -Further benchmarks for the bi-objective flow-shop scheduling problem are available at http://www.lifl.fr/~liefooga/benchmarks/ \ No newline at end of file diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShop.cpp b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShop.cpp deleted file mode 100644 index 1ee6b9d0d..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShop.cpp +++ /dev/null @@ -1,18 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// FlowShop.cpp -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#include - -std::string FlowShop::className() const -{ - return "FlowShop"; -} diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShop.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShop.h deleted file mode 100644 index 232ff8b64..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShop.h +++ /dev/null @@ -1,33 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// FlowShop.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef FLOWSHOP_H_ -#define FLOWSHOP_H_ - -#include -#include - -/** - * Structure of the genotype for the flow-shop scheduling problem: a vector of unsigned int int. - */ -class FlowShop: public moeoVector < FlowShopObjectiveVector , double , double , unsigned int > -{ -public: - - /** - * class name - */ - std::string className() const; - -}; - -#endif /*FLOWSHOP_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopBenchmarkParser.cpp b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopBenchmarkParser.cpp deleted file mode 100644 index 0ca8c857e..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopBenchmarkParser.cpp +++ /dev/null @@ -1,101 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// FlowShopBenchmarkParser.cpp -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#include -#include - -FlowShopBenchmarkParser::FlowShopBenchmarkParser(const std::string _benchmarkFileName) -{ - init(_benchmarkFileName); -} - - -const unsigned int FlowShopBenchmarkParser::getM() -{ - return M; -} - - -const unsigned int FlowShopBenchmarkParser::getN() -{ - return N; -} - - -const std::vector< std::vector > FlowShopBenchmarkParser::getP() -{ - return p; -} - - -const std::vector FlowShopBenchmarkParser::getD() -{ - return d; -} - - -void FlowShopBenchmarkParser::printOn(std::ostream & _os) const -{ - _os << "M=" << M << " N=" << N << std::endl; - _os << "*** processing times" << std::endl; - for (unsigned int i=0; i > (M,N); - d = std::vector (N); - // for each job... - for (unsigned int j=0 ; j j) - getline(inputFile, buffer, '\n'); - // due-date of the job j - getline(inputFile, buffer, '\n'); - d[j] = atoi(buffer.data()); - // processing times of the job j on each machine - getline(inputFile, buffer, '\n'); - start = buffer.find_first_not_of(" "); - for (unsigned int i=0 ; i -#include - -/** - * Class to handle parameters of a flow-shop instance from a benchmark file - */ -class FlowShopBenchmarkParser -{ -public: - - /** - * Ctor - * @param _benchmarkFileName the name of the benchmark file - */ - FlowShopBenchmarkParser(const std::string _benchmarkFileName); - - - /** - * the number of machines - */ - const unsigned int getM(); - - - /** - * the number of jobs - */ - const unsigned int getN(); - - - /** - * the processing times - */ - const std::vector < std::vector < unsigned int > > getP(); - - - /** - * the due-dates - */ - const std::vector < unsigned int > getD(); - - - /** - * printing... - */ - void printOn(std::ostream & _os) const; - - -private: - - /** number of machines */ - unsigned int M; - /** number of jobs */ - unsigned int N; - /** p[i][j] = processing time of job j on machine i */ - std::vector < std::vector < unsigned int > > p; - /** d[j] = due-date of the job j */ - std::vector < unsigned int > d; - - - /** - * Initialisation of the parameters with the data contained in the benchmark file - * @param _benchmarkFileName the name of the benchmark file - */ - void init(const std::string _benchmarkFileName); - -}; - -#endif /*FLOWSHOPBENCHMARKPARSER_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopEval.cpp b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopEval.cpp deleted file mode 100644 index 579d0bfc8..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopEval.cpp +++ /dev/null @@ -1,64 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// FlowShopEval.cpp -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#include - - -FlowShopEval::FlowShopEval(unsigned int _M, unsigned int _N, const std::vector< std::vector > & _p, const std::vector & _d) : - M(_M), N (_N), p(_p), d(_d) -{} - - -void FlowShopEval::operator()(FlowShop & _flowshop) -{ - FlowShopObjectiveVector objVector; - objVector[0] = makespan(_flowshop); - objVector[1] = tardiness(_flowshop); - _flowshop.objectiveVector(objVector); -} - - - -double FlowShopEval::makespan(const FlowShop & _flowshop) -{ - // completion times computation for each job on each machine - // C[i][j] = completion of the jth job of the scheduling on the ith machine - std::vector< std::vector > C = completionTime(_flowshop); - return C[M-1][_flowshop[N-1]]; -} - - -double FlowShopEval::tardiness(const FlowShop & _flowshop) -{ - // completion times computation for each job on each machine - // C[i][j] = completion of the jth job of the scheduling on the ith machine - std::vector< std::vector > C = completionTime(_flowshop); - // tardiness computation - unsigned int long sum = 0; - for (unsigned int j=0 ; j > FlowShopEval::completionTime(const FlowShop & _flowshop) { - std::vector< std::vector > C(M,N); - C[0][_flowshop[0]] = p[0][_flowshop[0]]; - for (unsigned int j=1; j -#include -#include - -/** - * Evaluation of the objective vector a (multi-objective) FlowShop object - */ -class FlowShopEval : public moeoEvalFunc -{ -public: - - /** - * Ctor - * @param _M the number of machines - * @param _N the number of jobs to schedule - * @param _p the processing times - * @param _d the due dates - */ - FlowShopEval(unsigned int _M, unsigned int _N, const std::vector< std::vector > & _p, const std::vector & _d); - - - /** - * computation of the multi-objective evaluation of a FlowShop object - * @param _flowshop the FlowShop object to evaluate - */ - void operator()(FlowShop & _flowshop); - - -private: - - /** number of machines */ - unsigned int M; - /** number of jobs */ - unsigned int N; - /** p[i][j] = processing time of job j on machine i */ - std::vector< std::vector < unsigned int > > p; - /** d[j] = due-date of the job j */ - std::vector < unsigned int > d; - - - /** - * computation of the makespan - * @param _flowshop the genotype to evaluate - */ - double makespan(const FlowShop & _flowshop); - - - /** - * computation of the tardiness - * @param _flowshop the genotype to evaluate - */ - double tardiness(const FlowShop & _flowshop); - - - /** - * computation of the completion times of a scheduling (for each job on each machine) - * C[i][j] = completion of the jth job of the scheduling on the ith machine - * @param _flowshop the genotype to evaluate - */ - std::vector< std::vector > completionTime (const FlowShop & _flowshop); - -}; - -#endif /*FLOWSHOPEVAL_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopInit.cpp b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopInit.cpp deleted file mode 100644 index d3877fb64..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopInit.cpp +++ /dev/null @@ -1,39 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// FlowShopInit.cpp -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#include - - -FlowShopInit::FlowShopInit(unsigned int _N) : N(_N) -{} - - -void FlowShopInit::operator()(FlowShop & _flowshop) -{ - // scheduling vector - std::vector scheduling(N); - // initialisation of possible values - std::vector possibles(N); - for (unsigned int i=0 ; i -#include - -/** - * Initialization of a random genotype built by the default constructor of the FlowShop class - */ -class FlowShopInit : public eoInit -{ -public: - - /** - * Ctor - * @param _N the number of jobs to schedule - */ - FlowShopInit(unsigned int _N); - - - /** - * builds a random genotype - * @param _flowshop a genotype that has been default-constructed - */ - void operator()(FlowShop & _flowshop); - - -private: - - /** the number of jobs (size of a scheduling vector) */ - unsigned int N; - -}; - -#endif /*FLOWSHOPINIT_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopObjectiveVector.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopObjectiveVector.h deleted file mode 100644 index 53006f43e..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopObjectiveVector.h +++ /dev/null @@ -1,24 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// FlowShopObjectiveVector.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef FLOWSHOPOBJECTIVEVECTOR_H_ -#define FLOWSHOPOBJECTIVEVECTOR_H_ - -#include -#include - -/** - * Definition of the objective vector for multi-objective flow-shop problems: a vector of doubles - */ -typedef moeoObjectiveVectorDouble < FlowShopObjectiveVectorTraits > FlowShopObjectiveVector; - -#endif /*FLOWSHOPOBJECTIVEVECTOR_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopObjectiveVectorTraits.cpp b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopObjectiveVectorTraits.cpp deleted file mode 100644 index b12d33aae..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopObjectiveVectorTraits.cpp +++ /dev/null @@ -1,27 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// FlowShopObjectiveVectorTraits.cpp -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#include - - -bool FlowShopObjectiveVectorTraits::minimizing (int _i) -{ - // minimizing both - return true; -} - - -unsigned int FlowShopObjectiveVectorTraits::nObjectives () -{ - // 2 objectives - return 2; -} diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopObjectiveVectorTraits.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopObjectiveVectorTraits.h deleted file mode 100644 index dac46aab0..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopObjectiveVectorTraits.h +++ /dev/null @@ -1,39 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// FlowShopObjectiveVectorTraits.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef FLOWSHOPOBJECTIVEVECTORTRAITS_H_ -#define FLOWSHOPOBJECTIVEVECTORTRAITS_H_ - -#include - -/** - * Definition of the objective vector traits for multi-objective flow-shop problems - */ -class FlowShopObjectiveVectorTraits : public moeoObjectiveVectorTraits -{ -public: - - /** - * Returns true if the _ith objective have to be minimzed - * @param _i index of the objective - */ - static bool minimizing (int _i); - - - /** - * Returns the number of objectives - */ - static unsigned int nObjectives (); - -}; - -#endif /*FLOWSHOPOBJECTIVEVECTORTRAITS_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopOpCrossoverQuad.cpp b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopOpCrossoverQuad.cpp deleted file mode 100644 index d1aee2351..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopOpCrossoverQuad.cpp +++ /dev/null @@ -1,84 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// FlowShopOpCrossoverQuad.cpp -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#include - - -std::string FlowShopOpCrossoverQuad::className() const -{ - return "FlowShopOpCrossoverQuad"; -} - - -bool FlowShopOpCrossoverQuad::operator()(FlowShop & _flowshop1, FlowShop & _flowshop2) -{ - bool oneAtLeastIsModified; - // computation of the 2 random points - unsigned int point1, point2; - do - { - point1 = rng.random(std::min(_flowshop1.size(), _flowshop2.size())); - point2 = rng.random(std::min(_flowshop1.size(), _flowshop2.size())); - } while (fabs((double) point1-point2) <= 2); - // computation of the offspring - FlowShop offspring1 = generateOffspring(_flowshop1, _flowshop2, point1, point2); - FlowShop offspring2 = generateOffspring(_flowshop2, _flowshop1, point1, point2); - // does at least one genotype has been modified ? - if ((_flowshop1 != offspring1) || (_flowshop2 != offspring2)) - { - // update - _flowshop1.value(offspring1); - _flowshop2.value(offspring2); - // at least one genotype has been modified - oneAtLeastIsModified = true; - } - else - { - // no genotype has been modified - oneAtLeastIsModified = false; - } - // return 'true' if at least one genotype has been modified - return oneAtLeastIsModified; -} - - -FlowShop FlowShopOpCrossoverQuad::generateOffspring(const FlowShop & _parent1, const FlowShop & _parent2, unsigned int _point1, unsigned int _point2) -{ - FlowShop result = _parent1; - std::vector taken_values(result.size(), false); - if (_point1 > _point2) - std::swap(_point1, _point2); - /* first parent */ - for (unsigned int i=0 ; i<=_point1 ; i++) - { - // result[i] == _parent1[i] - taken_values[_parent1[i]] = true; - } - for (unsigned int i=_point2 ; i -#include - -/** - * Quadratic crossover operator for flow-shop (modify the both genotypes) - */ -class FlowShopOpCrossoverQuad : public eoQuadOp < FlowShop > -{ -public: - - /** - * the class name (used to display statistics) - */ - std::string className() const; - - - /** - * eoQuad crossover - _flowshop1 and _flowshop2 are the (future) offspring, i.e. _copies_ of the parents - * @param _flowshop1 the first parent - * @param _flowshop2 the second parent - */ - bool operator()(FlowShop & _flowshop1, FlowShop & _flowshop2); - - -private: - - /** - * generation of an offspring by a 2 points crossover - * @param _parent1 the first parent - * @param _parent2 the second parent - * @param _point1 the first point - * @param _point2 the second point - */ - FlowShop generateOffspring(const FlowShop & _parent1, const FlowShop & _parent2, unsigned int _point1, unsigned int _point2); - -}; - -#endif /*FLOWSHOPOPCROSSOVERQUAD_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopOpMutationExchange.cpp b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopOpMutationExchange.cpp deleted file mode 100644 index b99535c53..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopOpMutationExchange.cpp +++ /dev/null @@ -1,50 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// FlowShopOpCrossoverQuad.cpp -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#include - - -std::string FlowShopOpMutationExchange::className() const -{ - return "FlowShopOpMutationExchange"; -} - - -bool FlowShopOpMutationExchange::operator()(FlowShop & _flowshop) -{ - bool isModified; - FlowShop result = _flowshop; - // computation of the 2 random points - unsigned int point1, point2; - do - { - point1 = rng.random(result.size()); - point2 = rng.random(result.size()); - } while (point1 == point2); - // swap - std::swap (result[point1], result[point2]); - // update (if necessary) - if (result != _flowshop) - { - // update - _flowshop.value(result); - // the genotype has been modified - isModified = true; - } - else - { - // the genotype has not been modified - isModified = false; - } - // return 'true' if the genotype has been modified - return isModified; -} diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopOpMutationExchange.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopOpMutationExchange.h deleted file mode 100644 index e63a3884b..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopOpMutationExchange.h +++ /dev/null @@ -1,40 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// FlowShopOpCrossoverQuad.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef FLOWSHOPOPMUTATIONEXCHANGE_H_ -#define FLOWSHOPOPMUTATIONEXCHANGE_H_ - -#include -#include - -/** - * Exchange mutation operator for the flow-shop - */ -class FlowShopOpMutationExchange : public eoMonOp -{ -public: - - /** - * the class name (used to display statistics) - */ - std::string className() const; - - - /** - * modifies the parent with an exchange mutation - * @param _flowshop the parent genotype (will be modified) - */ - bool operator()(FlowShop & _flowshop); - -}; - -#endif /*FLOWSHOPOPMUTATIONEXCHANGE_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopOpMutationShift.cpp b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopOpMutationShift.cpp deleted file mode 100644 index 4da8d0b09..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopOpMutationShift.cpp +++ /dev/null @@ -1,60 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// FlowShopOpMutationShift.cpp -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#include - - -std::string FlowShopOpMutationShift::className() const -{ - return "FlowShopOpMutationShift"; -} - - -bool FlowShopOpMutationShift::operator()(FlowShop & _flowshop) -{ - bool isModified; - int direction; - unsigned int tmp; - FlowShop result = _flowshop; - // computation of the 2 random points - unsigned int point1, point2; - do - { - point1 = rng.random(result.size()); - point2 = rng.random(result.size()); - } while (point1 == point2); - // direction - if (point1 < point2) - direction = 1; - else - direction = -1; - // mutation - tmp = result[point1]; - for (unsigned int i=point1 ; i!=point2 ; i+=direction) - result[i] = result[i+direction]; - result[point2] = tmp; - // update (if necessary) - if (result != _flowshop) - { - // update - _flowshop.value(result); - // the genotype has been modified - isModified = true; - } - else - { - // the genotype has not been modified - isModified = false; - } - // return 'true' if the genotype has been modified - return isModified; -} diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopOpMutationShift.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopOpMutationShift.h deleted file mode 100644 index cc6ecdeee..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/FlowShopOpMutationShift.h +++ /dev/null @@ -1,40 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// FlowShopOpMutationShift.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef FLOWSHOPOPMUTATIONSHIFT_H_ -#define FLOWSHOPOPMUTATIONSHIFT_H_ - -#include -#include - -/** - * Shift mutation operator for flow-shop - */ -class FlowShopOpMutationShift : public eoMonOp < FlowShop > -{ -public: - - /** - * the class name (used to display statistics) - */ - std::string className() const; - - - /** - * modifies the parent with a shift mutation - * @param _flowshop the parent genotype (will be modified) - */ - bool operator()(FlowShop & _flowshop); - -}; - -#endif /*FLOWSHOPOPMUTATIONSHIFT_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/Makefile.am b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/Makefile.am deleted file mode 100644 index 6845a342d..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/Makefile.am +++ /dev/null @@ -1,26 +0,0 @@ -lib_LIBRARIES = libflowshop.a - -libflowshop_a_SOURCES = \ - FlowShop.cpp \ - FlowShopBenchmarkParser.cpp \ - FlowShopEval.cpp \ - FlowShopInit.cpp \ - FlowShopObjectiveVectorTraits.cpp \ - FlowShopOpCrossoverQuad.cpp \ - FlowShopOpMutationExchange.cpp \ - FlowShopOpMutationShift.cpp - -pkginclude_HEADERS = \ - FlowShop.h \ - FlowShopBenchmarkParser.h \ - FlowShopEval.h \ - FlowShopInit.h \ - FlowShopObjectiveVector.h \ - FlowShopObjectiveVectorTraits.h \ - FlowShopOpCrossoverQuad.h \ - FlowShopOpMutationExchange.h \ - FlowShopOpMutationShift.h - -INCLUDES = -I$(EO_DIR)/src/ -I$(top_srcdir)/src/ - -AM_CXXFLAGS = -Wall -ansi -pedantic diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/make_eval_FlowShop.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/make_eval_FlowShop.h deleted file mode 100644 index 3ab516109..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/make_eval_FlowShop.h +++ /dev/null @@ -1,55 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// make_eval_FlowShop.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MAKE_EVAL_FLOWSHOP_H_ -#define MAKE_EVAL_FLOWSHOP_H_ - - -#include -#include -#include -#include -#include -#include - -/* - * This function creates an eoEvalFuncCounter that can later be used to evaluate an individual. - * @param eoParser& _parser to get user parameters - * @param eoState& _state to store the memory - */ -eoEvalFuncCounter & do_make_eval(eoParser& _parser, eoState& _state) -{ - // benchmark file name - std::string benchmarkFileName = _parser.getORcreateParam(std::string(), "BenchmarkFile", "Benchmark file name (benchmarks are available at www.lifl.fr/~liefooga/benchmarks)", 'B',"Representation", true).value(); - if (benchmarkFileName == "") { - std::string stmp = "*** Missing name of the benchmark file\n"; - stmp += " Type '-B=the_benchmark_file_name' or '--BenchmarkFile=the_benchmark_file_name'\n"; - stmp += " Benchmarks files are available at www.lifl.fr/~liefooga/benchmarks"; - throw std::runtime_error(stmp.c_str()); - } - // reading of the parameters contained in the benchmark file - FlowShopBenchmarkParser fParser(benchmarkFileName); - unsigned int M = fParser.getM(); - unsigned int N = fParser.getN(); - std::vector< std::vector > p = fParser.getP(); - std::vector d = fParser.getD(); - // build of the initializer (a pointer, stored in the eoState) - FlowShopEval* plainEval = new FlowShopEval(M, N, p, d); - // turn that object into an evaluation counter - eoEvalFuncCounter* eval = new eoEvalFuncCounter (* plainEval); - // store in state - _state.storeFunctor(eval); - // and return a reference - return *eval; -} - -#endif /*MAKE_EVAL_FLOWSHOP_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/make_genotype_FlowShop.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/make_genotype_FlowShop.h deleted file mode 100644 index e59cb2206..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/make_genotype_FlowShop.h +++ /dev/null @@ -1,48 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// make_genotype_FlowShop.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MAKE_GENOTYPE_FLOWSHOP_H_ -#define MAKE_GENOTYPE_FLOWSHOP_H_ - -#include -#include -#include -#include -#include - -/* - * This function creates an eoInit that can later be used to initialize the population (see make_pop.h). - * @param eoParser& _parser to get user parameters - * @param eoState& _state to store the memory - */ -eoInit & do_make_genotype(eoParser& _parser, eoState& _state) -{ - // benchmark file name - std::string benchmarkFileName = _parser.getORcreateParam(std::string(), "BenchmarkFile", "Benchmark file name (benchmarks are available at www.lifl.fr/~liefooga/benchmarks/)", 'B',"Representation", true).value(); - if (benchmarkFileName == "") { - std::string stmp = "*** Missing name of the benchmark file\n"; - stmp += " Type '-B=the_benchmark_file_name' or '--BenchmarkFile=the_benchmark_file_name'\n"; - stmp += " Benchmarks files are available at www.lifl.fr/~liefooga/benchmarks"; - throw std::runtime_error(stmp.c_str()); - } - // reading of number of jobs to schedule contained in the benchmark file - FlowShopBenchmarkParser fParser(benchmarkFileName); - unsigned int N = fParser.getN(); - // build of the initializer (a pointer, stored in the eoState) - eoInit* init = new FlowShopInit(N); - // store in state - _state.storeFunctor(init); - // and return a reference - return *init; -} - -#endif /*MAKE_GENOTYPE_FLOWSHOP_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/make_op_FlowShop.h b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/make_op_FlowShop.h deleted file mode 100644 index 7abadd9e4..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson1/flowshop/make_op_FlowShop.h +++ /dev/null @@ -1,107 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// make_op_FlowShop.h -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#ifndef MAKE_OP_FLOWSHOP_H_ -#define MAKE_OP_FLOWSHOP_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * This function builds the operators that will be applied to the eoFlowShop - * @param eoParameterLoader& _parser to get user parameters - * @param eoState& _state to store the memory - */ -eoGenOp & do_make_op(eoParameterLoader& _parser, eoState& _state) -{ - - ///////////////////////////// - // Variation operators - //////////////////////////// - - // the crossover - //////////////// - - // a first crossover - eoQuadOp *cross = new FlowShopOpCrossoverQuad; - // store in the state - _state.storeFunctor(cross); - - // relative rate in the combination - double cross1Rate = _parser.createParam(1.0, "crossRate", "Relative rate for the only crossover", 0, "Variation Operators").value(); - // creation of the combined operator with this one - eoPropCombinedQuadOp *propXover = new eoPropCombinedQuadOp(*cross, cross1Rate); - // store in the state - _state.storeFunctor(propXover); - - - // the mutation - /////////////// - - // a first mutation : the shift mutation - eoMonOp *mut = new FlowShopOpMutationShift; - _state.storeFunctor(mut); - // its relative rate in the combination - double mut1Rate = _parser.createParam(0.5, "shiftMutRate", "Relative rate for shift mutation", 0, "Variation Operators").value(); - // creation of the combined operator with this one - eoPropCombinedMonOp *propMutation = new eoPropCombinedMonOp(*mut, mut1Rate); - _state.storeFunctor(propMutation); - - // a second mutation : the exchange mutation - mut = new FlowShopOpMutationExchange; - _state.storeFunctor(mut); - // its relative rate in the combination - double mut2Rate = _parser.createParam(0.5, "exchangeMutRate", "Relative rate for exchange mutation", 0, "Variation Operators").value(); - // addition of this one to the combined operator - propMutation -> add(*mut, mut2Rate); - - // end of crossover and mutation definitions - //////////////////////////////////////////// - - // First read the individual level parameters - eoValueParam& pCrossParam = _parser.createParam(0.25, "pCross", "Probability of Crossover", 'c', "Variation Operators" ); - // minimum check - if ( (pCrossParam.value() < 0) || (pCrossParam.value() > 1) ) - throw std::runtime_error("Invalid pCross"); - - eoValueParam& pMutParam = _parser.createParam(0.35, "pMut", "Probability of Mutation", 'm', "Variation Operators" ); - // minimum check - if ( (pMutParam.value() < 0) || (pMutParam.value() > 1) ) - throw std::runtime_error("Invalid pMut"); - - // the crossover - with probability pCross - eoProportionalOp * propOp = new eoProportionalOp ; - _state.storeFunctor(propOp); - eoQuadOp *ptQuad = new eoQuadCloneOp; - _state.storeFunctor(ptQuad); - propOp -> add(*propXover, pCrossParam.value()); // crossover, with proba pcross - propOp -> add(*ptQuad, 1-pCrossParam.value()); // nothing, with proba 1-pcross - - // now the sequential - eoSequentialOp *op = new eoSequentialOp; - _state.storeFunctor(op); - op -> add(*propOp, 1.0); // always do combined crossover - op -> add(*propMutation, pMutParam.value()); // then mutation, with proba pmut - - // return a reference - return *op; -} - -#endif /*MAKE_OP_FLOWSHOP_H_*/ diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson2/Makefile.am b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson2/Makefile.am deleted file mode 100644 index 7500ec3ab..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson2/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -noinst_PROGRAMS = Sch1 - -Sch1_SOURCES = Sch1.cpp - -LDADD = ${EO_DIR}/src/libeo.a ${EO_DIR}/src/utils/libeoutils.a - -INCLUDES = -I${EO_DIR}/src/ -I$(top_srcdir)/src/ - -AM_CXXFLAGS = -Wall -ansi -pedantic diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson2/Sch1.cpp b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson2/Sch1.cpp deleted file mode 100644 index 562df7bc5..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Lesson2/Sch1.cpp +++ /dev/null @@ -1,103 +0,0 @@ -// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- - -//----------------------------------------------------------------------------- -// Sch1.cpp -// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007 -/* - This library... - - Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr - */ -//----------------------------------------------------------------------------- - -#include -#include -#include -#include - -using namespace std; - -// the moeoObjectiveVectorTraits : minimizing 2 objectives -class Sch1ObjectiveVectorTraits : public moeoObjectiveVectorTraits -{ -public: - static bool minimizing (int i) - { - return true; - } - static unsigned int nObjectives () - { - return 2; - } -}; - - -// objective vector of doubles -typedef moeoObjectiveVectorDouble < Sch1ObjectiveVectorTraits > Sch1ObjectiveVector; - - -// multi-objective evolving object for the Sch1 problem -class Sch1 : public moeoRealVector < Sch1ObjectiveVector, double, double > -{ -public: - Sch1() : moeoRealVector < Sch1ObjectiveVector, double, double > (1) {} -}; - - -// evaluation of objective functions -class Sch1Eval : public moeoEvalFunc < Sch1 > -{ -public: - void operator () (Sch1 & _sch1) - { - if (_sch1.invalidObjectiveVector()) - { - Sch1ObjectiveVector objVec; - double x = _sch1[0]; - objVec[0] = x * x; - objVec[1] = (x - 2.0) * (x - 2.0); - _sch1.objectiveVector(objVec); - } - } -}; - - -// main -int main (int argc, char *argv[]) -{ - // parameters - unsigned int POP_SIZE = 20; - unsigned int MAX_GEN = 100; - double M_EPSILON = 0.01; - double P_CROSS = 0.25; - double P_MUT = 0.35; - - // objective functions evaluation - Sch1Eval eval; - - // crossover and mutation - eoQuadCloneOp < Sch1 > xover; - eoUniformMutation < Sch1 > mutation (M_EPSILON); - - // generate initial population - eoRealVectorBounds bounds (1, 0.0, 2.0); // [0, 2] - eoRealInitBounded < Sch1 > init (bounds); - eoPop < Sch1 > pop (POP_SIZE, init); - - // build NSGA-II - moeoNSGAII < Sch1 > nsgaII (MAX_GEN, eval, xover, P_CROSS, mutation, P_MUT); - - // run the algo - nsgaII (pop); - - // extract first front of the final population using an moeoArchive (this is the output of nsgaII) - moeoArchive < Sch1 > arch; - arch.update (pop); - - // printing of the final archive - cout << "Final Archive" << endl; - arch.sortedPrintOn (cout); - cout << endl; - - return EXIT_SUCCESS; -} diff --git a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Makefile.am b/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Makefile.am deleted file mode 100644 index 7a7ae0422..000000000 --- a/tags/paradiseo-moeo-1.0-beta-26-06-07/tutorial/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -SUBDIRS=Lesson1 Lesson2