diff --git a/tags/paradiseo-i386-0.2/.mpd.conf b/tags/paradiseo-i386-0.2/.mpd.conf new file mode 100644 index 000000000..bf47811ab --- /dev/null +++ b/tags/paradiseo-i386-0.2/.mpd.conf @@ -0,0 +1 @@ +secretword=Nothing diff --git a/tags/paradiseo-i386-0.2/README b/tags/paradiseo-i386-0.2/README new file mode 100644 index 000000000..d25607603 --- /dev/null +++ b/tags/paradiseo-i386-0.2/README @@ -0,0 +1,88 @@ + +========================================================================================== + BUILDING PARADISEO FULL PACKAGE +========================================================================================== +The basic installation procedure must be done in the directory +which contains the extracted archive. + + --> Example : ./installParadiseo.sh + +Please try ./installParadiseo.sh --help for further information + +========================================================================================== + DIRECTORY STRUCTURE +========================================================================================== +After unpacking the archive file, you should end up with the following +structure: + +.../ Installation directory (specified with ./installParadiseo.sh) + | + +-- lib/ + | | +-- /paradiseo-eo.tgz paradiseo-eo archive + | | +-- /libxml2-2.6.0.tar.bz2 LIBXML2 archive (required for ParadisEO) + | | +-- /mpich2-1.0.3.tar.gz MPICH2 archive (required for ParadisEO) + | + | + +-- paradiseo-mo paradiseo-mo dir + | + | + +-- paradiseo-moeo paradiseo-moeo dir + | + | + +-- paradiseo-peo paradiseo-peo dir + | + +-- README README file + | + +-- installParadiseo.sh Install script + | + +-- .mpd.conf Paradiseo-peo config file + +========================================================================================== + DIRECTORY STRUCTURE AFTER INSTALLATION +========================================================================================== +After running the script "installParadiseo.sh" and if the process is successful, +you should have the following structure : + +.../ Installation directory (specified with ./installParadiseo.sh) + | + +-- lib/ + | | +-- /paradiseo-eo.tgz paradiseo-eo archive + | | +-- /libxml2-2.6.0.tar.bz2 LIBXML2 archive (required for ParadisEO) + | | +-- /mpich2-1.0.3.tar.gz MPICH2 archive (required for ParadisEO) + | + | + +-- paradiseo-eo paradiseo-eo dir + | + | + +-- paradiseo-mo paradiseo-mo dir + | + | + +-- paradiseo-moeo paradiseo-moeo dir + | + | + +-- paradiseo-peo paradiseo-peo dir + | + | + +-- libxml2 LIBXML2 dir (required for ParadisEO) + | + | + +-- mpich2 MPICH2 dir (required for ParadisEO) + | + +-- README README file + | + +-- installParadiseo.sh Install script + | + +-- .mpd.conf Paradiseo-peo config file + +========================================================================================== + NOTES +========================================================================================== +Please read README file of each extracted directory if you have +problems for the installation. + + +========================================================================================== + CONTACT +========================================================================================== +For further information about ParadisEO, help or to report any +problem : paradiseo-help@lists.gforge.inria.fr diff --git a/tags/paradiseo-i386-0.2/installParadiseo.sh b/tags/paradiseo-i386-0.2/installParadiseo.sh new file mode 100755 index 000000000..cf24b4d8e --- /dev/null +++ b/tags/paradiseo-i386-0.2/installParadiseo.sh @@ -0,0 +1,516 @@ +#!/bin/sh + +######################################################################################### +# +# Project : paradisEO full package install +# File : installParadiseo.sh +# Comment : # This file attempts to install ParadisEO # +# +######################################################################################### + +# global variables +installStartTime=$SECONDS +resourceKitPath=$PWD +TAR_MSG=" " + + +#others +PARADISEO_EO_ARCHIVE=paradiseo-eo.tar.gz +LIBS_PATH=lib +LIBXML2_ARCHIVE=libxml2-2.6.0.tar.bz2 +MPICH2_ARCHIVE=mpich2-1.0.3.tar.gz + +# errors +SUCCESSFUL_PARADISEO_INSTALL=0 +EO_UNPACKING_ERROR=100 +LIBXML_UNPACKING_ERROR=104 +MPICH_UNPACKING_ERROR=105 +EO_INSTALL_ERROR=106 +MO_INSTALL_ERROR=107 +MOEO_INSTALL_ERROR=108 +PARADISEO_INSTALL_ERROR=110 +LIBXML_INSTALL_ERROR=111 +MPICH_INSTALL_ERROR=112 +REMOVE_TEMP_DIRECTORY_ERROR=113 +VAR_CONFIG_ERROR=114 +MPD_COPY_ERROR=115 + +#Date +DATE=`/bin/date '+%Y%m%d%H%M%S'` +# create log file +SPY=$PWD/install-paradiseo.${DATE}.log + +#------------------------------------------------------# +#-- FUNCTION : execute_cmd ---# +#------------------------------------------------------# +#-- PARAMETERS : ---# +#-- $1 : cmd line ---# +#-- $2 : comment ---# +#-- $3 : spy file ---# +#-- $4 : output std file ---# +#-- $5 : error log file ---# +#-- ---# +#------------------------------------------------------# +#-- CODE RETURN : 0 : OK ---# +#-- CODE RETURN : 1 : NOK ---# +#------------------------------------------------------# +function execute_cmd +{ + COMMAND=${1} + COMMENT=${2} + FIC_ESP=${3} + FIC_OUT=${4} + FIC_ERR=${5} + + if [ `echo ${FIC_OUT} | wc -c` -eq 1 ] + then + FIC_OUT=${FIC_ESP} + fi + + if [ `echo ${FIC_ERR} | wc -c` -eq 1 ] + then + FIC_ERR=${FIC_ESP} + fi + + echo "" >> ${FIC_ESP} + echo "[execute_cmd][Begin][`/bin/date +%H:%M:%S`]" >> ${FIC_ESP} + + echo "------------------------------------------------------------------------------------------------------------" >> ${FIC_ESP} + echo "${COMMENT}" >> ${FIC_ESP} + echo "------------------------------------------------------------------------------------------------------------" >> ${FIC_ESP} + echo "${COMMAND}" >> ${FIC_ESP} + + ${COMMAND} >> ${FIC_OUT} 2>> ${FIC_ERR} + + RETURN_CODE=$? + echo "RETURN_CODE : ${RETURN_CODE}" >> ${FIC_ESP} + + if [ ${RETURN_CODE} -eq 0 ] + then + echo " ${COMMENT} OK" >> ${FIC_ESP} + echo "[execute_cmd][End][`/bin/date +%H:%M:%S`]" >> ${FIC_ESP} + return 0 + else + echo " $ERROR_TAG ${COMMENT} NOK" >> ${FIC_ESP} + return 1 + fi +} + +#------------------------------------------------------# +#-- FUNCTION : run_install ---# +#------------------------------------------------------# +#-- PARAMETERS : ---# +#-- install path ---# +#-- Major function for install ---# +#------------------------------------------------------# +#-- RETURN: 0 if install OK ---# +#------------------------------------------------------# + +function run_install() +{ + installKitPath=$1 + RETURN=0 + + ########## STEP 0 : introduction ########## + clear + echo "" + echo -e ' \033[40m\033[1;33m### ParadisEO install starting .... ### \033[0m ' + #sleep 4 + echo + echo "Installing the environment for Paradiseo... this may take about 15 minutes to complete. Note that the librairies \"libxml2\" ans \"mpich2\" required for ParadisEO are provided with this package." + sleep 3 + + echo + echo + + ########## STEP 1: unpacking paradiseo-eo ########## + echo -e ' \033[40m\033[1;34m# STEP 1 \033[0m ' + echo ' --> Unpacking Paradiseo-EO (Evolving Objects) ...' + + execute_cmd "tar xvzf $resourceKitPath/$LIBS_PATH/$PARADISEO_EO_ARCHIVE --directory $installKitPath" "[1] Unpack Paradiseo-EO" $SPY + if [ ! "$?" = "0" ] + then + echo '' + echo " --> Error when unpacking Paradiseo-EO" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $EO_UNPACKING_ERROR + else + echo -e ' \033[40m\033[1;34m# STEP 1 OK \033[0m' + echo + fi + + + ########## STEP 2: unpacking libxml2 ########## + echo -e ' \033[40m\033[1;34m# STEP 2 \033[0m ' + echo ' --> Unpacking libxml2 (required for ParadisEO) ...' + + execute_cmd "tar xvjf $resourceKitPath/$LIBS_PATH/$LIBXML2_ARCHIVE --directory $installKitPath" "[2] Unpack Libxml2" $SPY + if [ ! "$?" = "0" ] + then + echo '' + echo " --> Error when unpacking libxml2" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $LIBXML_UNPACKING_ERROR + else + echo -e ' \033[40m\033[1;34m# STEP 2 OK \033[0m' + echo + fi + + ########## STEP 3: unpacking mpich2 ########## + echo -e ' \033[40m\033[1;34m# STEP 3 \033[0m ' + echo ' --> Unpacking mpich2 (required for ParadisEO) ...' + + execute_cmd "tar xzvf $resourceKitPath/$LIBS_PATH/$MPICH2_ARCHIVE --directory $installKitPath" "[3] Unpack Mpich2" $SPY + if [ ! "$?" = "0" ] + then + echo '' + echo " --> Error when unpacking mpich2" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $MPICH_UNPACKING_ERROR + else + echo -e ' \033[40m\033[1;34m# STEP 3 OK \033[0m' + echo + fi + + ########## STEP 4: installing paradiseo-eo ########## + echo -e ' \033[40m\033[1;34m# STEP 4 \033[0m ' + echo ' --> Installing Paradiseo-EO. Please wait ...' + + execute_cmd "cd $installKitPath/paradiseo-eo" "[4-1] Go in Paradiseo-EO dir" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "./autogen.sh" "[4-2] Run autogen" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "./configure" "[4-3] Run configure" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "make" "[4-4] Compile ParadisEO-EO" $SPY + RETURN=`expr $RETURN + $?` + if [ ! $(($RETURN)) = 0 ] + then + echo '' + echo " --> Error when installing Paradiseo-EO" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $EO_INSTALL_ERROR + else + echo -e ' \033[40m\033[1;34m# STEP 4 OK \033[0m' + echo + fi + + ########## STEP 5: installing paradiseo-mo ########## + echo -e ' \033[40m\033[1;34m# STEP 5 \033[0m ' + echo ' --> Installing Paradiseo-MO. Please wait ...' + + execute_cmd "cd $installKitPath/paradiseo-mo" "[5-1] Go in Paradiseo-MO dir" $SPY + RETURN=$? + execute_cmd "./autogen.sh --with-EOdir=$installKitPath/paradiseo-eo" "[5-2] Run autogen" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "make" "[5-3] Compile ParadisEO-MO" $SPY + RETURN=`expr $RETURN + $?` + if [ ! $(($RETURN)) = 0 ] + then + echo '' + echo " --> Error when installing Paradiseo-MO" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $MO_INSTALL_ERROR + else + echo -e ' \033[40m\033[1;34m# STEP 5 OK \033[0m' + echo + fi + + ########## STEP 6: installing MOEO ########## + echo -e ' \033[40m\033[1;34m# STEP 6 \033[0m ' + echo ' --> Installing Paradiseo-MOEO. Please wait ...' + + execute_cmd "cd $installKitPath/paradiseo-moeo" "[6-1] Go in Paradiseo-MOEO dir" $SPY + RETURN=$? + execute_cmd "./autogen.sh --with-EOdir=$installKitPath/paradiseo-eo" "[6-2] Run autogen" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "make" "[6-3] Compile ParadisEO-MOEO" $SPY + RETURN=`expr $RETURN + $?` + if [ ! $(($RETURN)) = 0 ] + then + echo '' + echo " --> Error when installing Paradiseo-MOEO" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $MOEO_INSTALL_ERROR + else + echo -e ' \033[40m\033[1;34m# STEP 6 OK \033[0m' + echo + fi + + ########## STEP 7: installing LIBXML2 ########## + echo -e ' \033[40m\033[1;34m# STEP 7 \033[0m ' + echo ' --> Installing LIBXML2. Please wait ...' + + execute_cmd "mkdir $installKitPath/libxml2" "[7-1] Create libxml2 dir" $SPY + RETURN=$? + execute_cmd "cd $installKitPath/libxml2-2.6.0/" "[7-2] Go in libxml2-2.6.0 dir" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "./configure --prefix=$installKitPath/libxml2/ --exec-prefix=$installKitPath/libxml2/" "[7-3] Run configure for libxml2" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "make" "[7-4] Compile libxml2" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "make install" "[7-5] Run install libxml2 " $SPY + RETURN=`expr $RETURN + $?` + if [ ! $(($RETURN)) = 0 ] + then + echo '' + echo " --> Error when installing LIBXML2" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $LIBXML_INSTALL_ERROR + else + echo -e ' \033[40m\033[1;34m# STEP 7 OK \033[0m' + echo + fi + + + ########## STEP 8: installing MPICH2 ########## + echo -e ' \033[40m\033[1;34m# STEP 8 \033[0m ' + echo ' --> Installing MPICH2. Please wait ...' + + execute_cmd "mkdir $installKitPath/mpich2" "[8-1] Create mpich2 dir" $SPY + RETURN=$? + execute_cmd "cd $installKitPath/mpich2-1.0.3/" "[8-2] Go in mpich2-1.0.3 dir" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "./configure --prefix=$installKitPath/mpich2/" "[8-3] Run configure for mpich2" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "make" "[8-4] Compile mpich2" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "make install" "[8-5] Run install mpich2 " $SPY + RETURN=`expr $RETURN + $?` + if [ ! $(($RETURN)) = 0 ] + then + echo '' + echo " --> Error when installing MPICH2" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $MPICH_INSTALL_ERROR + else + echo -e ' \033[40m\033[1;34m# STEP 8 OK \033[0m' + echo + fi + + ########## STEP 9: removing temp directory for libxml ########## + echo -e ' \033[40m\033[1;34m# STEP 9 \033[0m ' + echo ' --> Removing libxml2 temp install directory ...' + + execute_cmd "rm -fr $installKitPath/libxml2-2.6.0" "[9] Remove Libxml2 temporary directory" $SPY + if [ ! "$?" = "0" ] + then + echo '' + echo " --> Error when removing $installKitPath/libxml2-2.6.0" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $REMOVE_TEMP_DIRECTORY_ERROR + else + echo -e ' \033[40m\033[1;34m# STEP 9 OK \033[0m' + echo + fi + + ########## STEP 10: removing temp directory for mpich ########## + echo -e ' \033[40m\033[1;34m# STEP 10 \033[0m ' + echo ' --> Removing mpich2 temp install directory ...' + + execute_cmd "rm -fr $installKitPath/mpich2-1.0.3" "[10] Remove Mpich2 temporary directory" $SPY + if [ ! "$?" = "0" ] + then + echo '' + echo " --> Error when removing $installKitPath/mpich2-1.0.3" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $REMOVE_TEMP_DIRECTORY_ERROR + else + echo -e ' \033[40m\033[1;34m# STEP 10 OK \033[0m' + echo + fi + + + ########## STEP 11: Configuring environment variables ########## + echo -e ' \033[40m\033[1;34m# STEP 11 \033[0m ' + echo ' --> Configuring environment variables for libxml2 and mpich2 ...' + + execute_cmd "export LD_LIBRARY_PATH=$installKitPath/libxml2/lib:$LD_LIBRARY_PATH" "[11-1] Export LD_LIBRARY_PATH variable" $SPY + idx=$? + execute_cmd "export PATH=$installKitPath/libxml2/bin:$installKitPath/mpich2/bin:$PATH" "[11-2] Export PATH variable" $SPY + + execute_cmd "echo export LD_LIBRARY_PATH=$installKitPath/libxml2/lib:$LD_LIBRARY_PATH" "[11-3] Export LD_LIBRARY_PATH variable into env" $SPY $homePath/.bashrc + idx=$? + execute_cmd "echo export PATH=$installKitPath/libxml2/bin:$installKitPath/mpich2/bin:$PATH" "[11-4] Export PATH variable into env" $SPY $homePath/.bashrc + idx=`expr $idx + $?` + execute_cmd "source $homePath/.bashrc" "[11-3] Export variables" $SPY + idx=`expr $idx + $?` + if [ ! $(($idx)) = 0 ] + then + echo '' + echo " --> Error when configuring environment variables for libxml2 and mpich2" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $VAR_CONFIG_ERROR + else + echo -e ' \033[40m\033[1;34m# STEP 11 OK \033[0m' + echo + fi + + + ######## STEP 12: installing paradiseo-peo ########## + echo -e ' \033[40m\033[1;34m# STEP 12 \033[0m ' + echo ' --> Installing Paradiseo-PEO. Please wait ...' + + execute_cmd "cd $installKitPath/paradiseo-peo" "[12-1] Go in Paradiseo-PEO dir" $SPY + RETURN=$? + execute_cmd " ./autogen.sh --with-EOdir=$installKitPath/paradiseo-eo/ --with-MOdir=$installKitPath/paradiseo-mo/ --with-MOEOdir=$installKitPath/paradiseo-moeo" "[12-2] Run autogen for ParadisEO-PEO" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "make" "[12-3] Compile ParadisEO-PEO " $SPY + RETURN=`expr $RETURN + $?` + if [ ! $(($RETURN)) = 0 ] + then + echo '' + echo " --> Error when installing Paradiseo-PEO" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $PARADISEO_INSTALL_ERROR + else + echo -e ' \033[40m\033[1;34m# STEP 12 OK \033[0m' + echo + fi + + + ######## STEP 13: copy .mpd.conf file in your HOME directory or in /etc if you are root (required for mpich2) + echo -e ' \033[40m\033[1;34m# STEP 13 \033[0m ' + echo ' --> Copy .mpd.conf file in your HOME directory or in /etc if you are root (required for mpich2) ...' + if [ "$UID" = "0" ] + then + execute_cmd "cp $resourceKitPath/.mpd.conf /etc" "[13-1] Copy mpd.conf file in /etc (root)" $SPY + RETURN=$? + execute_cmd "mv /etc/.mpd.conf /etc/mpd.conf" "[13-2] Move .mpd.conf to mpd.conf" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "chmod 600 /etc/mpd.conf" "[13-3] Change .mpd.conf rights" $SPY + RETURN=`expr $RETURN + $?` + else + execute_cmd "cp $resourceKitPath/.mpd.conf $HOME" "[13-1] Copy mpd.conf file in in your HOME directory" $SPY + RETURN=$? + execute_cmd "chmod 600 $HOME/.mpd.conf" "[13-2] Change .mpd.conf rights" $SPY + RETURN=`expr $RETURN + $?` + fi + if [ ! $(($RETURN)) = 0 ] + then + echo '' + echo " --> Error when copying .mpd.conf file " + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $MPD_COPY_ERROR + else + echo -e ' \033[40m\033[1;34m# STEP 13 OK \033[0m' + echo + fi + + echo -e "\033[40m\033[1;33m### Now please run \"source $homePath/.bashrc\" to save context ### \033[0m" + sleep 2 + echo + echo + echo '=> ParadisEO install successful.To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr' + echo + return $SUCCESSFUL_PARADISEO_INSTALL +} + + +#------------------------------------------------------# +#-- FUNCTION : on_error ---# +#------------------------------------------------------# +#-- PARAMETERS : ---# +#-- Error number ---# +#------------------------------------------------------# +#-- RETURN: ---# +#------------------------------------------------------# +function on_error() +{ + case $1 in + $EO_UNPACKING_ERROR) + echo + echo " An error has occured : impossible to unpack paradiseo-eo archive.See $SPY for more details" + echo " Make sure that eo archive exists in current directory " + echo + echo " => To report any problem of for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY" + echo ;; + + $LIBXML_UNPACKING_ERROR) + echo + echo " An error has occured : impossible to unpack libxml2 archive.See $SPY for more details" + echo " Make sure that libxml2 archive exists in current directory" + echo + echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY" + echo ;; + + $MPICH_UNPACKING_ERROR) + echo + echo " An error has occured : impossible to unpack mpich2 archive.See $SPY for more details" + echo " Make sure that mpich2 archive exists in current directory" + echo + echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY" + echo ;; + + $EO_INSTALL_ERROR) + echo + echo " An error has occured : impossible to install Paradiseo-EO.See $SPY for more details" + echo "If you need help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY" + echo + echo ;; + + $MO_INSTALL_ERROR) + echo + echo " An error has occured : impossible to install Paradiseo-MO.See $SPY for more details" + echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY" + echo ;; + + $MOEO_INSTALL_ERROR) + echo + echo " An error has occured : impossible to install Paradiseo-MOEO.See $SPY for more details" + echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY" + echo ;; + + $PARADISEO_INSTALL_ERROR) + echo + echo " An error has occured : impossible to install Paradiseo-PEO.See $SPY for more details" + echo ' Make sure you have the required variables in your environment (ex: by using "echo $PATH" for PATH variable) : ' + echo ' -LD_LIBRARY_PATH=/libxml2/lib:$LD_LIBRARY_PATH' + echo ' -PATH=/libxml2/bin:/mpich2/bin:$PATH' + echo + echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY" + echo ;; + + *) + echo + echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY" + echo ;; + esac +} + +#------------------------------------------------------# +#-- BODY : ---# +#------------------------------------------------------# + +if [ "$1" = "--help" ] +then + echo + echo 'Use : ./installParadiseo.sh for standard install' + echo + echo 'Use : ./installParadiseo.sh to give your HOME path' + echo 'Example: ./installParadiseo.sh /usr/home/me' + echo + echo '=> For further help, please contact paradiseo-help@lists.gforge.inria.fr' + echo + exit +fi + +if [ ! -d $HOME ] +then + if [ "$1" == "" ] + then + echo " Please give a valid path for your home directory (use ./installParadiseo.sh --help for further information)" + else + homePath=$1 + fi +else + homePath=$HOME +fi + + +# That's it ! +run_install $PWD +paradiseoInstall=$? +on_error $paradiseoInstall + + diff --git a/tags/paradiseo-i386-0.2/lib/libxml2-2.6.0.tar.bz2 b/tags/paradiseo-i386-0.2/lib/libxml2-2.6.0.tar.bz2 new file mode 100644 index 000000000..9ff2c6f9d Binary files /dev/null and b/tags/paradiseo-i386-0.2/lib/libxml2-2.6.0.tar.bz2 differ diff --git a/tags/paradiseo-i386-0.2/lib/mpich2-1.0.3.tar.gz b/tags/paradiseo-i386-0.2/lib/mpich2-1.0.3.tar.gz new file mode 100644 index 000000000..676719b2a Binary files /dev/null and b/tags/paradiseo-i386-0.2/lib/mpich2-1.0.3.tar.gz differ diff --git a/tags/paradiseo-i386-0.2/lib/paradiseo-eo.tar.gz b/tags/paradiseo-i386-0.2/lib/paradiseo-eo.tar.gz new file mode 100644 index 000000000..4bac5a9b8 Binary files /dev/null and b/tags/paradiseo-i386-0.2/lib/paradiseo-eo.tar.gz differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/AUTHORS b/tags/paradiseo-i386-0.2/paradiseo-mo/AUTHORS new file mode 100644 index 000000000..6bb4943d4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/AUTHORS @@ -0,0 +1 @@ +Documentation : boisson@lifl.fr diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/ChangeLog b/tags/paradiseo-i386-0.2/paradiseo-mo/ChangeLog new file mode 100755 index 000000000..e69de29bb diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-mo/Makefile.am new file mode 100755 index 000000000..f691c2558 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/Makefile.am @@ -0,0 +1,28 @@ +SUBDIRS = docs src tutorial + +CXX=g++ + +AM_CXXFLAGS =\ + -Wall\ + -Werror\ + -Wno-deprecated\ + -ansi\ + -pedantic + +clean_all: clean_aux clean_doc + -@make clean + -@(rm -rf acconfig.h acinclude.m4 aclocal.m4 autom4te.cache copying install news readme stamp* texput.log authors todo;\ + rm -f configure config.* CO* dep* INST* install-sh miss* mkins* Makefile Makefile.in;\ + cd docs; rm -rf Makefile Makefile.in; cd ../src ; rm -rf Makefile Makefile.in; cd ../tutorial; rm -rf Makefile Makefile.in;\ + cd examples; rm -f Makefile Makefile.in; cd tsp ; rm -f Makefile Makefile.in; cd src ; rm -rf .deps/ Makefile Makefile.in;\ + cd ../../../Lesson1 ; rm -rf .deps/ Makefile Makefile.in; cd ../Lesson2 ; rm -rf .deps/ Makefile Makefile.in ; cd ../Lesson3 ;\ + rm -rf .deps/ Makefile Makefile.in) + +clean_aux: + -@find . \( -name "*~" -o -name "*.old" -o -name "#*" -o -name "*.bak" \) -print -exec rm -rf \{\} \; + +doc: + -@(cd docs; make doc) + +clean_doc: + -@(cd docs; make clean-local) diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/NEWS b/tags/paradiseo-i386-0.2/paradiseo-mo/NEWS new file mode 100644 index 000000000..e69de29bb diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/README b/tags/paradiseo-i386-0.2/paradiseo-mo/README new file mode 100644 index 000000000..010e89ed4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/README @@ -0,0 +1,69 @@ + PARADISEO-MO README FILE +======================================================================= + +======================================================================= + +Welcome to PARADISEO-MO (Moving Objects), one of the extension of Evolving Objects library. + +================================================================== + BUILDING PARADISEO-MO +================================================================== +The basic installation procedure goes the following: + +Go to your build-directory and run + $(SRCDIR)/configure + make + make doc + +where $(SRCDIR) is the top-level source directory of ParadisEO-MO, i.e. where +the sources where unpacked. + +To clean everything, in the simply run + make clean_all + +=================================================================== + DIRECTORY STRUCTURE +=================================================================== +After unpacking the archive file, you should end up with the following +structure: + +.../ The MAIN PARADISEO-MO directory, created when unpacking. + | + +-- src SOURCE directory Contains most PARADISEO-MO .h files. + | + | + +-- doc 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. + | + | + +-- tutorial TUTORIAL with lessons + | + +-examples APPLICATIONS - one directory per separate application. + | | + | +- tsp traveling salesman problem example. + | | + | +-src sources files for the lesson examples using the tsp. + | | + | +-benchs TSP Instance files. + | + +-Lesson1 How make a Hill Climbing on the TSP example. + | | + | +-benchs TSP Instance files. + | + +-Lesson2 How make a Tabu Search on the TSP example. + | | + | +-benchs TSP Instance files. + | + +-Lesson3 How make a Simulated Annealing on the TSP example. + | + +-benchs TSP Instance files. +=================================================================== + NOTES +=================================================================== + +Mailing list : paradiseo-help@lists.gforge.inria.fr diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/autogen.sh b/tags/paradiseo-i386-0.2/paradiseo-mo/autogen.sh new file mode 100755 index 000000000..0a4e95695 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/autogen.sh @@ -0,0 +1,154 @@ +#!/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 +} + +(doxygen --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**WARNING**: You need to have \`doxygen' to generate the documentation." + echo "Download the appropriate package for your distribution," + echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" +} + +# 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-i386-0.2/paradiseo-mo/cleaner b/tags/paradiseo-i386-0.2/paradiseo-mo/cleaner new file mode 100755 index 000000000..1e5c8c5ba --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/cleaner @@ -0,0 +1,7 @@ +(rm -rf acconfig.h acinclude.m4 aclocal.m4 autom4te.cache copying install news readme stamp* texput.log authors todo;\ +rm -f configure config.* CO* dep* INST* install-sh miss* mkins* Makefile Makefile.in;\ +cd docs; rm -rf Makefile Makefile.in; cd ../src ; rm -rf Makefile Makefile.in; cd ../tutorial; rm -rf Makefile Makefile.in;\ +cd examples; rm -f Makefile Makefile.in; cd tsp ; rm -f Makefile Makefile.in; cd src ; rm -rf .deps/ Makefile Makefile.in;\ +cd ../../../Lesson1 ; rm -rf .deps/ Makefile Makefile.in; cd ../Lesson2 ; rm -rf .deps/ Makefile Makefile.in ; cd ../Lesson3 ;\ +rm -rf .deps/ Makefile Makefile.in) +find . \( -name "*~" -o -name "*.old" -o -name "#*" -o -name "*.bak" -o -name "*.o" \) -print -exec rm -rf \{\} \; diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/configure.in b/tags/paradiseo-i386-0.2/paradiseo-mo/configure.in new file mode 100755 index 000000000..eacdfe81f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/configure.in @@ -0,0 +1,52 @@ +AC_INIT(configure.in) +AM_INIT_AUTOMAKE(paradiseo-mo, 0.1) + +AC_ISC_POSIX +AC_PROG_CXX +AM_PROG_CC_STDC +AC_HEADER_STDC +#AC_CXX_HAVE_SSTREAM +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., + dnl Well done :-) + EO_DIR="$withval" + if test ! -d $EO_DIR + then + echo "" + echo "# --with-EOdir Invalid directory $withval" + exit 1 + fi, + dnl Bouhhhh !!!! + 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 +docs/Makefile +tutorial/Makefile +tutorial/examples/Makefile +tutorial/examples/tsp/Makefile +tutorial/examples/tsp/src/Makefile +tutorial/Lesson1/Makefile +tutorial/Lesson2/Makefile +tutorial/Lesson3/Makefile +]) + +echo "Type 'make doc' for building documentation" diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/Doxyfile b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/Doxyfile new file mode 100644 index 000000000..d5074bb99 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/Doxyfile @@ -0,0 +1,236 @@ +# Doxyfile 1.5.1 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = PARADISEO-MO +PROJECT_NUMBER = 0.1 +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 = NO +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 +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 = mo +#--------------------------------------------------------------------------- +# 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 = mo.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-i386-0.2/paradiseo-mo/docs/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/Makefile.am new file mode 100644 index 000000000..bad00ad7c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/Makefile.am @@ -0,0 +1,5 @@ +doc: + -@doxygen Doxyfile + +clean-local: + rm -rf html latex man diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/annotated.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/annotated.html new file mode 100644 index 000000000..9c09ffd2e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/annotated.html @@ -0,0 +1,65 @@ + + +PARADISEO-MO: Class List + + + + +
+
+ +

PARADISEO-MO Class List

Here are the classes, structs, unions and interfaces with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EmptySelectionSpecial class that describes the case of no selection
moAlgo< EOT >Description of an algorithm of the paradiseo-mo library
moAspirCrit< M >Description of the conditions in which a tabu move could be accepted
moBestImprSelect< M >One of the possible moMoveSelect
moCoolSchedThis class gives the description of a cooling schedule
moEasyCoolSchedOne of the possible moCoolSched
moFirstImprSelect< M >One possible moMoveSelect
moGenSolContinue< EOT >One possible stop criterion for a solution-based heuristic
moHC< M >Hill Climbing (HC)
moHCMoveLoopExpl< M >Iterative explorer used by a moHC
moImprBestFitAspirCrit< M >One of the possible moAspirCrit
moItRandNextMove< M >One of the possible moNextMove
moLSCheckPoint< M >Class which allows a checkpointing system
moMove< EOT >Definition of a move
moMoveExpl< M >Description of a move (moMove) explorer
moMoveIncrEval< M >(generally) Efficient evaluation function based a move and a solution
moMoveInit< M >Move (moMove) initializer
moMoveLoopExpl< M >Class which describes an iterative explorer
moMoveSelect< M >Class that describes a move selector (moMove)
moNextMove< M >Class which allows to generate a new move (moMove)
moNoAspirCrit< M >One of the possible aspiration criterion (moAspirCrit)
moRandImprSelect< M >One of the possible moMove selector (moMoveSelect)
moRandMove< M >Random move generator
moSA< M >Simulated Annealing (SA)
moSolContinue< EOT >Class that describes a stop criterion for a solution-based heuristic
moTabuList< M >Class describing a tabu list that a moTS uses
moTS< M >Tabu Search (TS)
moTSMoveLoopExpl< M >Explorer for a Tabu Search algorithm
+
Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/class_empty_selection.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/class_empty_selection.html new file mode 100644 index 000000000..f617dc40b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/class_empty_selection.html @@ -0,0 +1,52 @@ + + +PARADISEO-MO: EmptySelection Class Reference + + + + +
+
+ +

EmptySelection Class Reference

Special class that describes the case of no selection. +More... +

+#include <moMoveSelect.h> +

+ + +
+


Detailed Description

+Special class that describes the case of no selection. +

+This class is used as an exception that can be thrown if a solution selector has completly failed. +

+ +

+Definition at line 21 of file moMoveSelect.h.


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classes.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classes.html new file mode 100644 index 000000000..6465dd0d2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classes.html @@ -0,0 +1,52 @@ + + +PARADISEO-MO: Alphabetical List + + + + +
+
+ +

PARADISEO-MO Class Index

A | B | C | E | F | G | H | I | L | M | N | R | S | T

+ +
  A  
+
  H  
+
moMoveSelect   
moAlgo   moHC   
  N  
+
moAspirCrit   moHCMoveLoopExpl   moNextMove   
  B  
+
  I  
+
moNoAspirCrit   
moBestImprSelect   moImprBestFitAspirCrit   
  R  
+
  C  
+
moItRandNextMove   moRandImprSelect   
moCoolSched   
  L  
+
moRandMove   
  E  
+
moLSCheckPoint   
  S  
+
moEasyCoolSched   
  M  
+
moSA   
EmptySelection   moMove   moSolContinue   
  F  
+
moMoveExpl   
  T  
+
moFirstImprSelect   moMoveIncrEval   moTabuList   
  G  
+
moMoveInit   moTS   
moGenSolContinue   moMoveLoopExpl   moTSMoveLoopExpl   

A | B | C | E | F | G | H | I | L | M | N | R | S | T

+


Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_algo.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_algo.html new file mode 100644 index 000000000..1b7f21b1b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_algo.html @@ -0,0 +1,63 @@ + + +PARADISEO-MO: moAlgo< EOT > Class Template Reference + + + + +
+
+ +

moAlgo< EOT > Class Template Reference

Description of an algorithm of the paradiseo-mo library. +More... +

+#include <moAlgo.h> +

+

Inheritance diagram for moAlgo< EOT >: +

+ +eoMonOp< EOT > +eoOp< EOType > +eoUF< EOT &, bool > +eoFunctorBase + + + +
+

Detailed Description

+

template<class EOT>
+ class moAlgo< EOT >

+ +Description of an algorithm of the paradiseo-mo library. +

+moHC, moTS and moSA are 3 examples of algorithm of the paradiseo-mo library. +

+ +

+Definition at line 21 of file moAlgo.h.


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_aspir_crit-members.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_aspir_crit-members.html new file mode 100644 index 000000000..ff3aeb566 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_aspir_crit-members.html @@ -0,0 +1,41 @@ + + +PARADISEO-MO: Member List + + + + +
+
+ +

moAspirCrit< M > Member List

This is the complete list of members for moAspirCrit< M >, including all inherited members.

+ + + + + +
functor_category()eoBF< A1, A2, R > [static]
init()=0moAspirCrit< M > [pure virtual]
operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_aspir_crit.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_aspir_crit.html new file mode 100644 index 000000000..eede7fcd2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_aspir_crit.html @@ -0,0 +1,93 @@ + + +PARADISEO-MO: moAspirCrit< M > Class Template Reference + + + + +
+
+ +

moAspirCrit< M > Class Template Reference

Description of the conditions in which a tabu move could be accepted. +More... +

+#include <moAspirCrit.h> +

+

Inheritance diagram for moAspirCrit< M >: +

+ +eoBF< A1, A2, R > +eoFunctorBase +moImprBestFitAspirCrit< M > +moNoAspirCrit< M > + +List of all members. + + + + + +

Public Member Functions

virtual void init ()=0
 Procedure which initialises all that needs a aspiration criterion.
+

Detailed Description

+

template<class M>
+ class moAspirCrit< M >

+ +Description of the conditions in which a tabu move could be accepted. +

+It is only a description... An object that herits from this class is needed to be used in a moTS. See moNoAspriCrit for example. +

+ +

+Definition at line 22 of file moAspirCrit.h.


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + +
virtual void moAspirCrit< M >::init (  )  [pure virtual]
+
+
+ +

+Procedure which initialises all that needs a aspiration criterion. +

+It can be possible that this procedure do nothing... +

+Implemented in moImprBestFitAspirCrit< M >, and moNoAspirCrit< M >. +

+

+


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_aspir_crit.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_aspir_crit.png new file mode 100644 index 000000000..e6cefe1bf Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_aspir_crit.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_best_impr_select-members.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_best_impr_select-members.html new file mode 100644 index 000000000..e4450a0f8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_best_impr_select-members.html @@ -0,0 +1,46 @@ + + +PARADISEO-MO: Member List + + + + +
+
+ +

moBestImprSelect< M > Member List

This is the complete list of members for moBestImprSelect< M >, including all inherited members.

+ + + + + + + + + + +
best_fitmoBestImprSelect< M > [private]
best_movemoBestImprSelect< M > [private]
first_timemoBestImprSelect< M > [private]
Fitness typedefmoBestImprSelect< M >
functor_category()eoBF< M &, M::EOType::Fitness &, void > [static]
init(const Fitness &__fit)moBestImprSelect< M > [inline, virtual]
operator()(M &__move, Fitness &__fit)moBestImprSelect< M > [inline, virtual]
update(const M &__move, const Fitness &__fit)moBestImprSelect< M > [inline, virtual]
~eoBF()eoBF< M &, M::EOType::Fitness &, void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_best_impr_select.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_best_impr_select.html new file mode 100644 index 000000000..5a5e8a07d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_best_impr_select.html @@ -0,0 +1,189 @@ + + +PARADISEO-MO: moBestImprSelect< M > Class Template Reference + + + + +
+
+ +

moBestImprSelect< M > Class Template Reference

One of the possible moMoveSelect. +More... +

+#include <moBestImprSelect.h> +

+

Inheritance diagram for moBestImprSelect< M >: +

+ +moMoveSelect< M > +eoBF< M &, M::EOType::Fitness &, void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Public Member Functions

+void init (const Fitness &__fit)
 Procedure which initialise the exploration.
bool update (const M &__move, const Fitness &__fit)
 Function that indicates if the current move has not improved the fitness.
void operator() (M &__move, Fitness &__fit) throw (EmptySelection)
 Procedure which saved the best move and fitness.

Private Attributes

+bool first_time
 Allowing to know if at least one move has been generated.
+M best_move
 The best move.
+Fitness best_fit
 The best fitness.
+

Detailed Description

+

template<class M>
+ class moBestImprSelect< M >

+ +One of the possible moMoveSelect. +

+All neighbors are considered, and the movement which enables the best improvement is selected. +

+ +

+Definition at line 22 of file moBestImprSelect.h.


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
bool moBestImprSelect< M >::update (const M &  __move,
const Fitness __fit 
) [inline, virtual]
+
+
+ +

+Function that indicates if the current move has not improved the fitness. +

+If the given fitness enables an improvment, the move (moMove) and the fitness linked to this move are saved.

+

Parameters:
+ + + +
__move a move.
__fit a fitness linked to the move.
+
+
Returns:
TRUE if the move does not improve the fitness.
+ +

+Implements moMoveSelect< M >. +

+Definition at line 47 of file moBestImprSelect.h. +

+References moBestImprSelect< M >::best_fit, moBestImprSelect< M >::best_move, and moBestImprSelect< M >::first_time. +

+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
void moBestImprSelect< M >::operator() (M &  __move,
Fitness __fit 
) throw (EmptySelection) [inline, virtual]
+
+
+ +

+Procedure which saved the best move and fitness. +

+

Parameters:
+ + + +
__move the current move (result of the procedure).
__fit the current fitness (result of the procedure).
+
+
Exceptions:
+ + +
EmptySelection if no move has improved the fitness.
+
+ +

+Implements eoBF< M &, M::EOType::Fitness &, void >. +

+Definition at line 68 of file moBestImprSelect.h. +

+References moBestImprSelect< M >::best_fit, moBestImprSelect< M >::best_move, and moBestImprSelect< M >::first_time. +

+

+


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_best_impr_select.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_best_impr_select.png new file mode 100644 index 000000000..e803a39a4 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_best_impr_select.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_cool_sched.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_cool_sched.html new file mode 100644 index 000000000..cf85447df --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_cool_sched.html @@ -0,0 +1,59 @@ + + +PARADISEO-MO: moCoolSched Class Reference + + + + +
+
+ +

moCoolSched Class Reference

This class gives the description of a cooling schedule. +More... +

+#include <moCoolSched.h> +

+

Inheritance diagram for moCoolSched: +

+ +eoUF< double &, bool > +eoFunctorBase +moEasyCoolSched + + + +
+

Detailed Description

+This class gives the description of a cooling schedule. +

+It is only a description... An object that herits from this class is needed to be used in a moSA. See moEasyCoolSched for example. +

+ +

+Definition at line 22 of file moCoolSched.h.


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_cool_sched.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_cool_sched.png new file mode 100644 index 000000000..2cd469782 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_cool_sched.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_easy_cool_sched-members.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_easy_cool_sched-members.html new file mode 100644 index 000000000..73f1f2881 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_easy_cool_sched-members.html @@ -0,0 +1,40 @@ + + +PARADISEO-MO: Member List + + + + +
+
+ +

moEasyCoolSched Member List

This is the complete list of members for moEasyCoolSched, including all inherited members.

+ + + + +
moEasyCoolSched(double __threshold, double __ratio)moEasyCoolSched [inline]
operator()(double &__temp)moEasyCoolSched [inline, virtual]
ratiomoEasyCoolSched [private]
thresholdmoEasyCoolSched [private]


Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_easy_cool_sched.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_easy_cool_sched.html new file mode 100644 index 000000000..1087ad9b2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_easy_cool_sched.html @@ -0,0 +1,151 @@ + + +PARADISEO-MO: moEasyCoolSched Class Reference + + + + +
+
+ +

moEasyCoolSched Class Reference

One of the possible moCoolSched. +More... +

+#include <moEasyCoolSched.h> +

+

Inheritance diagram for moEasyCoolSched: +

+ +moCoolSched +eoUF< double &, bool > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + +

Public Member Functions

 moEasyCoolSched (double __threshold, double __ratio)
 Simple constructor.
bool operator() (double &__temp)
 Function which proceeds to the cooling.

Private Attributes

+double threshold
 The temperature threhold.
+double ratio
 The decreasing factor of the temperature.
+

Detailed Description

+One of the possible moCoolSched. +

+The simpliest, the temperature decrease according to a ratio until it greater than a threshold. +

+ +

+Definition at line 22 of file moEasyCoolSched.h.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
moEasyCoolSched::moEasyCoolSched (double  __threshold,
double  __ratio 
) [inline]
+
+
+ +

+Simple constructor. +

+

Parameters:
+ + + +
__threshold the threshold.
__ratio the ratio used to descrease the temperature.
+
+ +

+Definition at line 31 of file moEasyCoolSched.h. +

+

+


Member Function Documentation

+ +
+
+ + + + + + + + + +
bool moEasyCoolSched::operator() (double &  __temp  )  [inline, virtual]
+
+
+ +

+Function which proceeds to the cooling. +

+Decrease the temperature and indicates if it is greater than the threshold.

+

Parameters:
+ + +
__temp the current temperature.
+
+
Returns:
if the new temperature (current temperature * ratio) is greater than the threshold.
+ +

+Implements eoUF< double &, bool >. +

+Definition at line 44 of file moEasyCoolSched.h. +

+References ratio, and threshold. +

+

+


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_easy_cool_sched.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_easy_cool_sched.png new file mode 100644 index 000000000..6717391b7 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_easy_cool_sched.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_first_impr_select-members.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_first_impr_select-members.html new file mode 100644 index 000000000..cc3ec310e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_first_impr_select-members.html @@ -0,0 +1,48 @@ + + +PARADISEO-MO: Member List + + + + +
+
+ +

moFirstImprSelect< M > Member List

This is the complete list of members for moFirstImprSelect< M >, including all inherited members.

+ + + + + + + + + + + + +
best_fitmoFirstImprSelect< M > [private]
best_movemoFirstImprSelect< M > [private]
Fitness typedefmoFirstImprSelect< M >
functor_category()eoBF< M &, M::EOType::Fitness &, void > [static]
init(const Fitness &__fit)moFirstImprSelect< M > [inline, virtual]
init_fitmoFirstImprSelect< M > [private]
operator()(M &__move, Fitness &__fit)moFirstImprSelect< M > [inline, virtual]
update(const M &__move, const typename M::EOType::Fitness &__fit)moFirstImprSelect< M > [inline]
moMoveSelect::update(const M &__move, const Fitness &__fit)=0moMoveSelect< M > [pure virtual]
validmoFirstImprSelect< M > [private]
~eoBF()eoBF< M &, M::EOType::Fitness &, void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_first_impr_select.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_first_impr_select.html new file mode 100644 index 000000000..48cd9f747 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_first_impr_select.html @@ -0,0 +1,220 @@ + + +PARADISEO-MO: moFirstImprSelect< M > Class Template Reference + + + + +
+
+ +

moFirstImprSelect< M > Class Template Reference

One possible moMoveSelect. +More... +

+#include <moFirstImprSelect.h> +

+

Inheritance diagram for moFirstImprSelect< M >: +

+ +moMoveSelect< M > +eoBF< M &, M::EOType::Fitness &, void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Public Member Functions

virtual void init (const Fitness &__fit)
 Procedure which initialise the exploration.
bool update (const M &__move, const typename M::EOType::Fitness &__fit)
 Function that indicates if the current move has not improved the fitness.
void operator() (M &__move, Fitness &__fit) throw (EmptySelection)
 Procedure which saved the best move and fitness.

Private Attributes

+bool valid
 Allow to know if at least one move has improved the solution.
+M best_move
 Best stored movement.
+Fitness init_fit
 Initial fitness.
+Fitness best_fit
 Best stored fitness.
+

Detailed Description

+

template<class M>
+ class moFirstImprSelect< M >

+ +One possible moMoveSelect. +

+The neighborhood is explored until a move enables an improvment of the current solution. +

+ +

+Definition at line 23 of file moFirstImprSelect.h.


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
virtual void moFirstImprSelect< M >::init (const Fitness __fit  )  [inline, virtual]
+
+
+ +

+Procedure which initialise the exploration. +

+It save the current fitness as the initial value for the fitness. +

+Implements moMoveSelect< M >. +

+Definition at line 35 of file moFirstImprSelect.h. +

+References moFirstImprSelect< M >::init_fit, and moFirstImprSelect< M >::valid. +

+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
bool moFirstImprSelect< M >::update (const M &  __move,
const typename M::EOType::Fitness &  __fit 
) [inline]
+
+
+ +

+Function that indicates if the current move has not improved the fitness. +

+If the given fitness enables an improvment, the move (moMove) should be applied to the current solution.

+

Parameters:
+ + + +
__move a move.
__fit a fitness linked to the move.
+
+
Returns:
TRUE if the move does not improve the fitness.
+ +

+Definition at line 52 of file moFirstImprSelect.h. +

+References moFirstImprSelect< M >::best_fit, moFirstImprSelect< M >::best_move, moFirstImprSelect< M >::init_fit, and moFirstImprSelect< M >::valid. +

+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
void moFirstImprSelect< M >::operator() (M &  __move,
Fitness __fit 
) throw (EmptySelection) [inline, virtual]
+
+
+ +

+Procedure which saved the best move and fitness. +

+

Parameters:
+ + + +
__move the current move (result of the procedure).
__fit the current fitness (result of the procedure).
+
+
Exceptions:
+ + +
EmptySelection if no move has improved the fitness.
+
+ +

+Implements eoBF< M &, M::EOType::Fitness &, void >. +

+Definition at line 76 of file moFirstImprSelect.h. +

+References moFirstImprSelect< M >::best_fit, moFirstImprSelect< M >::best_move, and moFirstImprSelect< M >::valid. +

+

+


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_first_impr_select.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_first_impr_select.png new file mode 100644 index 000000000..a2a1234c8 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_first_impr_select.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_gen_sol_continue-members.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_gen_sol_continue-members.html new file mode 100644 index 000000000..531069d24 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_gen_sol_continue-members.html @@ -0,0 +1,44 @@ + + +PARADISEO-MO: Member List + + + + +
+
+ +

moGenSolContinue< EOT > Member List

This is the complete list of members for moGenSolContinue< EOT >, including all inherited members.

+ + + + + + + + +
functor_category()eoUF< const EOT &, bool > [static]
init()moGenSolContinue< EOT > [inline, virtual]
maxNumGenmoGenSolContinue< EOT > [private]
moGenSolContinue(unsigned __maxNumGen)moGenSolContinue< EOT > [inline]
numGenmoGenSolContinue< EOT > [private]
operator()(const EOT &__sol)moGenSolContinue< EOT > [inline, virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< const EOT &, bool > [virtual]


Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_gen_sol_continue.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_gen_sol_continue.html new file mode 100644 index 000000000..b04c8aab2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_gen_sol_continue.html @@ -0,0 +1,180 @@ + + +PARADISEO-MO: moGenSolContinue< EOT > Class Template Reference + + + + +
+
+ +

moGenSolContinue< EOT > Class Template Reference

One possible stop criterion for a solution-based heuristic. +More... +

+#include <moGenSolContinue.h> +

+

Inheritance diagram for moGenSolContinue< EOT >: +

+ +moSolContinue< EOT > +eoUF< const EOT &, bool > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moGenSolContinue (unsigned __maxNumGen)
 Simple constructor.
bool operator() (const EOT &__sol)
 Function that activates the stop criterion.
void init ()
 Procedure which allows to initialise the generation counter.

Private Attributes

+unsigned maxNumGen
 Iteration maximum number.
+unsigned numGen
 Iteration current number.
+

Detailed Description

+

template<class EOT>
+ class moGenSolContinue< EOT >

+ +One possible stop criterion for a solution-based heuristic. +

+The stop criterion corresponds to a maximum number of iteration. +

+ +

+Definition at line 21 of file moGenSolContinue.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
moGenSolContinue< EOT >::moGenSolContinue (unsigned  __maxNumGen  )  [inline]
+
+
+ +

+Simple constructor. +

+

Parameters:
+ + +
__maxNumGen the maximum number of generation.
+
+ +

+Definition at line 30 of file moGenSolContinue.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
bool moGenSolContinue< EOT >::operator() (const EOT &  __sol  )  [inline, virtual]
+
+
+ +

+Function that activates the stop criterion. +

+Increments the counter and returns TRUE if the current number of iteration is lower than the given maximum number of iterations.

+

Parameters:
+ + +
__sol the current solution.
+
+
Returns:
TRUE or FALSE according to the current generation number.
+ +

+Implements eoUF< const EOT &, bool >. +

+Definition at line 44 of file moGenSolContinue.h. +

+References moGenSolContinue< EOT >::maxNumGen, and moGenSolContinue< EOT >::numGen. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void moGenSolContinue< EOT >::init (  )  [inline, virtual]
+
+
+ +

+Procedure which allows to initialise the generation counter. +

+It can also be used to reset the iteration counter. +

+Implements moSolContinue< EOT >. +

+Definition at line 54 of file moGenSolContinue.h. +

+References moGenSolContinue< EOT >::numGen. +

+

+


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_gen_sol_continue.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_gen_sol_continue.png new file mode 100644 index 000000000..b40e34991 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_gen_sol_continue.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_h_c-members.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_h_c-members.html new file mode 100644 index 000000000..e8d8db046 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_h_c-members.html @@ -0,0 +1,43 @@ + + +PARADISEO-MO: Member List + + + + +
+
+ +

moHC< M > Member List

This is the complete list of members for moHC< M >, including all inherited members.

+ + + + + + + +
EOT typedefmoHC< M > [private]
Fitness typedefmoHC< M > [private]
full_evalmoHC< M > [private]
moHC(moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moMoveSelect< M > &__move_select, eoEvalFunc< EOT > &__full_eval)moHC< M > [inline]
moHC(moMoveExpl< M > &__move_expl, eoEvalFunc< EOT > &__full_eval)moHC< M > [inline]
move_explmoHC< M > [private]
operator()(EOT &__sol)moHC< M > [inline, virtual]


Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_h_c.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_h_c.html new file mode 100644 index 000000000..fdbf49d10 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_h_c.html @@ -0,0 +1,236 @@ + + +PARADISEO-MO: moHC< M > Class Template Reference + + + + +
+
+ +

moHC< M > Class Template Reference

Hill Climbing (HC). +More... +

+#include <moHC.h> +

+

Inheritance diagram for moHC< M >: +

+ +moAlgo< M::EOType > +eoMonOp< M::EOType > +eoOp< EOType > +eoUF< M::EOType &, bool > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moHC (moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moMoveSelect< M > &__move_select, eoEvalFunc< EOT > &__full_eval)
 Full constructor.
 moHC (moMoveExpl< M > &__move_expl, eoEvalFunc< EOT > &__full_eval)
 Light constructor.
bool operator() (EOT &__sol)
 Function which launches the HC.

Private Types

+typedef M::EOType EOT
 Alias for the type.
+typedef EOT::Fitness Fitness
 Alias for the fitness.

Private Attributes

+moMoveExpl< M > & move_expl
 Complete exploration of the neighborhood.
+eoEvalFunc< EOT > & full_eval
 A full evaluation function.
+

Detailed Description

+

template<class M>
+ class moHC< M >

+ +Hill Climbing (HC). +

+Class which describes the algorithm for a hill climbing. +

+ +

+Definition at line 26 of file moHC.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moHC< M >::moHC (moMoveInit< M > &  __move_init,
moNextMove< M > &  __next_move,
moMoveIncrEval< M > &  __incr_eval,
moMoveSelect< M > &  __move_select,
eoEvalFunc< EOT > &  __full_eval 
) [inline]
+
+
+ +

+Full constructor. +

+All the boxes are given in order the HC to use a moHCMoveLoopExpl.

+

Parameters:
+ + + + + + +
__move_init a move initialiser.
__next_move a neighborhood explorer.
__incr_eval a (generally) efficient evaluation function.
__move_select a move selector.
__full_eval a full evaluation function.
+
+ +

+Definition at line 53 of file moHC.h. +

+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
moHC< M >::moHC (moMoveExpl< M > &  __move_expl,
eoEvalFunc< EOT > &  __full_eval 
) [inline]
+
+
+ +

+Light constructor. +

+This constructor allow to use another moMoveExpl (generally not a moHCMoveLoopExpl).

+

Parameters:
+ + + +
__move_expl a complete explorer.
__full_eval a full evaluation function.
+
+ +

+Definition at line 67 of file moHC.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
bool moHC< M >::operator() (EOT __sol  )  [inline, virtual]
+
+
+ +

+Function which launches the HC. +

+The HC has to improve a current solution. As the moSA and the mo TS, it can be used for HYBRIDATION in an evolutionnary algorithm.

+

Parameters:
+ + +
__sol a current solution to improve.
+
+
Returns:
TRUE.
+ +

+Implements eoUF< M::EOType &, bool >. +

+Definition at line 82 of file moHC.h. +

+References moHC< M >::full_eval, and moHC< M >::move_expl. +

+

+


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_h_c.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_h_c.png new file mode 100644 index 000000000..6a4aadb1e Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_h_c.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_h_c_move_loop_expl-members.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_h_c_move_loop_expl-members.html new file mode 100644 index 000000000..16a515068 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_h_c_move_loop_expl-members.html @@ -0,0 +1,44 @@ + + +PARADISEO-MO: Member List + + + + +
+
+ +

moHCMoveLoopExpl< M > Member List

This is the complete list of members for moHCMoveLoopExpl< M >, including all inherited members.

+ + + + + + + + +
EOT typedefmoHCMoveLoopExpl< M > [private]
Fitness typedefmoHCMoveLoopExpl< M > [private]
incr_evalmoHCMoveLoopExpl< M > [private]
moHCMoveLoopExpl(moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moMoveSelect< M > &__move_select)moHCMoveLoopExpl< M > [inline]
move_initmoHCMoveLoopExpl< M > [private]
move_selectmoHCMoveLoopExpl< M > [private]
next_movemoHCMoveLoopExpl< M > [private]
operator()(const EOT &__old_sol, EOT &__new_sol)moHCMoveLoopExpl< M > [inline, virtual]


Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_h_c_move_loop_expl.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_h_c_move_loop_expl.html new file mode 100644 index 000000000..c01229938 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_h_c_move_loop_expl.html @@ -0,0 +1,198 @@ + + +PARADISEO-MO: moHCMoveLoopExpl< M > Class Template Reference + + + + +
+
+ +

moHCMoveLoopExpl< M > Class Template Reference

Iterative explorer used by a moHC. +More... +

+#include <moHCMoveLoopExpl.h> +

+

Inheritance diagram for moHCMoveLoopExpl< M >: +

+ +moMoveLoopExpl< M > +moMoveExpl< M > +eoBF< const M::EOType &, M::EOType &, void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moHCMoveLoopExpl (moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moMoveSelect< M > &__move_select)
 Constructor.
void operator() (const EOT &__old_sol, EOT &__new_sol)
 Procedure which launches the explorer.

Private Types

+typedef M::EOType EOT
 Alias for the type.
+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Private Attributes

+moMoveInit< M > & move_init
 Move initialiser.
+moNextMove< M > & next_move
 Neighborhood explorer.
+moMoveIncrEval< M > & incr_eval
 (generally) Efficient evaluation.
+moMoveSelect< M > & move_select
 Move selector.
+

Detailed Description

+

template<class M>
+ class moHCMoveLoopExpl< M >

+ +Iterative explorer used by a moHC. +

+ +

+Definition at line 23 of file moHCMoveLoopExpl.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moHCMoveLoopExpl< M >::moHCMoveLoopExpl (moMoveInit< M > &  __move_init,
moNextMove< M > &  __next_move,
moMoveIncrEval< M > &  __incr_eval,
moMoveSelect< M > &  __move_select 
) [inline]
+
+
+ +

+Constructor. +

+All the boxes have to be specified.

+

Parameters:
+ + + + + +
__move_init the move initialiser.
__next_move the neighborhood explorer.
__incr_eval (generally) efficient evaluation function.
__move_select the move selector.
+
+ +

+Definition at line 43 of file moHCMoveLoopExpl.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
void moHCMoveLoopExpl< M >::operator() (const EOT __old_sol,
EOT __new_sol 
) [inline, virtual]
+
+
+ +

+Procedure which launches the explorer. +

+The exploration starts from an old solution and provides a new solution.

+

Parameters:
+ + + +
__old_sol the current solution.
__new_sol the new_sol (result of the procedure).
+
+ +

+Implements eoBF< const M::EOType &, M::EOType &, void >. +

+Definition at line 59 of file moHCMoveLoopExpl.h. +

+References moHCMoveLoopExpl< M >::incr_eval, moHCMoveLoopExpl< M >::move_init, moHCMoveLoopExpl< M >::move_select, and moHCMoveLoopExpl< M >::next_move. +

+

+


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_h_c_move_loop_expl.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_h_c_move_loop_expl.png new file mode 100644 index 000000000..8c76fd46e Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_h_c_move_loop_expl.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_impr_best_fit_aspir_crit-members.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_impr_best_fit_aspir_crit-members.html new file mode 100644 index 000000000..16cac5dab --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_impr_best_fit_aspir_crit-members.html @@ -0,0 +1,46 @@ + + +PARADISEO-MO: Member List + + + + +
+
+ +

moImprBestFitAspirCrit< M > Member List

This is the complete list of members for moImprBestFitAspirCrit< M >, including all inherited members.

+ + + + + + + + + + +
best_fitmoImprBestFitAspirCrit< M > [private]
first_timemoImprBestFitAspirCrit< M > [private]
Fitness typedefmoImprBestFitAspirCrit< M >
functor_category()eoBF< A1, A2, R > [static]
init()moImprBestFitAspirCrit< M > [inline, virtual]
moImprBestFitAspirCrit()moImprBestFitAspirCrit< M > [inline]
operator()(const M &__move, const Fitness &__fit)moImprBestFitAspirCrit< M > [inline]
moAspirCrit::operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_impr_best_fit_aspir_crit.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_impr_best_fit_aspir_crit.html new file mode 100644 index 000000000..f7dbb0c1d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_impr_best_fit_aspir_crit.html @@ -0,0 +1,134 @@ + + +PARADISEO-MO: moImprBestFitAspirCrit< M > Class Template Reference + + + + +
+
+ +

moImprBestFitAspirCrit< M > Class Template Reference

One of the possible moAspirCrit. +More... +

+#include <moImprBestFitAspirCrit.h> +

+

Inheritance diagram for moImprBestFitAspirCrit< M >: +

+ +moAspirCrit< M > +eoBF< A1, A2, R > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Public Member Functions

moImprBestFitAspirCrit ()
 Contructor.
+void init ()
 Initialisation procedure.
bool operator() (const M &__move, const Fitness &__fit)
 Function that indicates if the fit is better that the already saved fit.

Private Attributes

+Fitness best_fit
 Best fitness found until now.
+bool first_time
 Indicates that a fitness has been already saved or not.
+

Detailed Description

+

template<class M>
+ class moImprBestFitAspirCrit< M >

+ +One of the possible moAspirCrit. +

+This criterion is satisfied when a given fitness is the best ever considered. +

+ +

+Definition at line 22 of file moImprBestFitAspirCrit.h.


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
bool moImprBestFitAspirCrit< M >::operator() (const M &  __move,
const Fitness __fit 
) [inline]
+
+
+ +

+Function that indicates if the fit is better that the already saved fit. +

+The first time, the function only saved the current move and fitness.

+

Parameters:
+ + + +
__move a move.
__fit a fitnes linked to the move.
+
+
Returns:
TRUE the first time and if __fit > best_fit, else FALSE.
+ +

+Definition at line 52 of file moImprBestFitAspirCrit.h. +

+References moImprBestFitAspirCrit< M >::best_fit, and moImprBestFitAspirCrit< M >::first_time. +

+

+


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_impr_best_fit_aspir_crit.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_impr_best_fit_aspir_crit.png new file mode 100644 index 000000000..76e0473f0 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_impr_best_fit_aspir_crit.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_it_rand_next_move-members.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_it_rand_next_move-members.html new file mode 100644 index 000000000..db720875e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_it_rand_next_move-members.html @@ -0,0 +1,42 @@ + + +PARADISEO-MO: Member List + + + + +
+
+ +

moItRandNextMove< M > Member List

This is the complete list of members for moItRandNextMove< M >, including all inherited members.

+ + + + + + +
EOT typedefmoItRandNextMove< M > [private]
max_itermoItRandNextMove< M > [private]
moItRandNextMove(moRandMove< M > &__rand_move, unsigned __max_iter)moItRandNextMove< M > [inline]
num_itermoItRandNextMove< M > [private]
operator()(M &__move, const EOT &__sol)moItRandNextMove< M > [inline]
rand_movemoItRandNextMove< M > [private]


Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_it_rand_next_move.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_it_rand_next_move.html new file mode 100644 index 000000000..86ba124d8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_it_rand_next_move.html @@ -0,0 +1,176 @@ + + +PARADISEO-MO: moItRandNextMove< M > Class Template Reference + + + + +
+
+ +

moItRandNextMove< M > Class Template Reference

One of the possible moNextMove. +More... +

+#include <moItRandNextMove.h> +

+

Inheritance diagram for moItRandNextMove< M >: +

+ +moNextMove< M > +eoBF< A1, A2, R > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moItRandNextMove (moRandMove< M > &__rand_move, unsigned __max_iter)
 The constructor.
bool operator() (M &__move, const EOT &__sol)
 Generation of a new move.

Private Types

+typedef M::EOType EOT
 Alias for the type.

Private Attributes

+moRandMove< M > & rand_move
 A move generator (generally randomly).
+unsigned max_iter
 Iteration maximum number.
+unsigned num_iter
 Iteration current number.
+

Detailed Description

+

template<class M>
+ class moItRandNextMove< M >

+ +One of the possible moNextMove. +

+This class is a move (moMove) generator with a bound for the maximum number of iterations. +

+ +

+Definition at line 22 of file moItRandNextMove.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
moItRandNextMove< M >::moItRandNextMove (moRandMove< M > &  __rand_move,
unsigned  __max_iter 
) [inline]
+
+
+ +

+The constructor. +

+Parameters only for initialising the attributes.

+

Parameters:
+ + + +
__rand_move the random move generator.
__max_iter the iteration maximum number.
+
+ +

+Definition at line 37 of file moItRandNextMove.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
bool moItRandNextMove< M >::operator() (M &  __move,
const EOT __sol 
) [inline]
+
+
+ +

+Generation of a new move. +

+If the maximum number is not already reached, the current move is forgotten and remplaced by another one.

+

Parameters:
+ + + +
__move the current move.
__sol the current solution.
+
+
Returns:
FALSE if the maximum number of iteration is reached, else TRUE.
+ +

+Definition at line 52 of file moItRandNextMove.h. +

+References moItRandNextMove< M >::max_iter, moItRandNextMove< M >::num_iter, and moItRandNextMove< M >::rand_move. +

+

+


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_it_rand_next_move.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_it_rand_next_move.png new file mode 100644 index 000000000..a90754a6b Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_it_rand_next_move.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_l_s_check_point-members.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_l_s_check_point-members.html new file mode 100644 index 000000000..8a9e6e12d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_l_s_check_point-members.html @@ -0,0 +1,43 @@ + + +PARADISEO-MO: Member List + + + + +
+
+ +

moLSCheckPoint< M > Member List

This is the complete list of members for moLSCheckPoint< M >, including all inherited members.

+ + + + + + + +
add(eoBF< const M &, const typename M::EOType &, void > &__f)moLSCheckPoint< M > [inline]
funcmoLSCheckPoint< M > [private]
functor_category()eoBF< A1, A2, R > [static]
operator()(const M &__move, const typename M::EOType &__sol)moLSCheckPoint< M > [inline]
eoBF::operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_l_s_check_point.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_l_s_check_point.html new file mode 100644 index 000000000..944a0c06c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_l_s_check_point.html @@ -0,0 +1,153 @@ + + +PARADISEO-MO: moLSCheckPoint< M > Class Template Reference + + + + +
+
+ +

moLSCheckPoint< M > Class Template Reference

Class which allows a checkpointing system. +More... +

+#include <moLSCheckPoint.h> +

+

Inheritance diagram for moLSCheckPoint< M >: +

+ +eoBF< A1, A2, R > +eoFunctorBase + +List of all members. + + + + + + + + + + + + +

Public Member Functions

void operator() (const M &__move, const typename M::EOType &__sol)
 Function which launches the checkpointing.
void add (eoBF< const M &, const typename M::EOType &, void > &__f)
 Procedure which add a new function to the function vector.

Private Attributes

+std::vector< eoBF< const M &,
+ const typename M::EOType &,
+ void > * > 
func
 vector of function
+

Detailed Description

+

template<class M>
+ class moLSCheckPoint< M >

+ +Class which allows a checkpointing system. +

+Thanks to this class, at each iteration, additionnal function can be used (and not only one). +

+ +

+Definition at line 21 of file moLSCheckPoint.h.


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
void moLSCheckPoint< M >::operator() (const M &  __move,
const typename M::EOType &  __sol 
) [inline]
+
+
+ +

+Function which launches the checkpointing. +

+Each saved function is used on the current move and the current solution.

+

Parameters:
+ + + +
__move a move.
__sol a solution.
+
+ +

+Definition at line 34 of file moLSCheckPoint.h. +

+References moLSCheckPoint< M >::func. +

+

+ +

+
+
+template<class M>
+ + + + + + + + + +
void moLSCheckPoint< M >::add (eoBF< const M &, const typename M::EOType &, void > &  __f  )  [inline]
+
+
+ +

+Procedure which add a new function to the function vector. +

+The new function is added at the end of the vector.

Parameters:
+ + +
__f a new function to add.
+
+ +

+Definition at line 49 of file moLSCheckPoint.h. +

+References moLSCheckPoint< M >::func. +

+

+


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move-members.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move-members.html new file mode 100644 index 000000000..dd75eb245 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move-members.html @@ -0,0 +1,41 @@ + + +PARADISEO-MO: Member List + + + + +
+
+ +

moMove< EOT > Member List

This is the complete list of members for moMove< EOT >, including all inherited members.

+ + + + + +
EOType typedefmoMove< EOT >
functor_category()eoUF< EOT &, void > [static]
operator()(EOT &)=0eoUF< EOT &, void > [pure virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< EOT &, void > [virtual]


Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move.html new file mode 100644 index 000000000..1c00dd8fb --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move.html @@ -0,0 +1,66 @@ + + +PARADISEO-MO: moMove< EOT > Class Template Reference + + + + +
+
+ +

moMove< EOT > Class Template Reference

Definition of a move. +More... +

+#include <moMove.h> +

+

Inheritance diagram for moMove< EOT >: +

+ +eoUF< EOT &, void > +eoFunctorBase + +List of all members. + + + + + +

Public Types

+typedef EOT EOType
 Alias for the type.
+

Detailed Description

+

template<class EOT>
+ class moMove< EOT >

+ +Definition of a move. +

+A move transforms a solution to another close solution. It describes how a solution can be modified to another one. +

+ +

+Definition at line 23 of file moMove.h.


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_expl.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_expl.html new file mode 100644 index 000000000..e10130540 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_expl.html @@ -0,0 +1,64 @@ + + +PARADISEO-MO: moMoveExpl< M > Class Template Reference + + + + +
+
+ +

moMoveExpl< M > Class Template Reference

Description of a move (moMove) explorer. +More... +

+#include <moMoveExpl.h> +

+

Inheritance diagram for moMoveExpl< M >: +

+ +eoBF< const M::EOType &, M::EOType &, void > +eoFunctorBase +moMoveLoopExpl< M > +moHCMoveLoopExpl< M > +moTSMoveLoopExpl< M > + + + +
+

Detailed Description

+

template<class M>
+ class moMoveExpl< M >

+ +Description of a move (moMove) explorer. +

+Only a description...See moMoveLoopExpl. +

+ +

+Definition at line 21 of file moMoveExpl.h.


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_expl.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_expl.png new file mode 100644 index 000000000..66c1602bb Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_expl.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_incr_eval.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_incr_eval.html new file mode 100644 index 000000000..61ee0c85c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_incr_eval.html @@ -0,0 +1,61 @@ + + +PARADISEO-MO: moMoveIncrEval< M > Class Template Reference + + + + +
+
+ +

moMoveIncrEval< M > Class Template Reference

(generally) Efficient evaluation function based a move and a solution. +More... +

+#include <moMoveIncrEval.h> +

+

Inheritance diagram for moMoveIncrEval< M >: +

+ +eoBF< A1, A2, R > +eoFunctorBase + + + +
+

Detailed Description

+

template<class M>
+ class moMoveIncrEval< M >

+ +(generally) Efficient evaluation function based a move and a solution. +

+From a move and a solution, it computes a new fitness that could be associated to the solution if this one is updated. +

+ +

+Definition at line 24 of file moMoveIncrEval.h.


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_init.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_init.html new file mode 100644 index 000000000..4622d5514 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_init.html @@ -0,0 +1,61 @@ + + +PARADISEO-MO: moMoveInit< M > Class Template Reference + + + + +
+
+ +

moMoveInit< M > Class Template Reference

Move (moMove) initializer. +More... +

+#include <moMoveInit.h> +

+

Inheritance diagram for moMoveInit< M >: +

+ +eoBF< A1, A2, R > +eoFunctorBase + + + +
+

Detailed Description

+

template<class M>
+ class moMoveInit< M >

+ +Move (moMove) initializer. +

+Class which allows to initiase a move. Only a description... An object that herits from this class needs to be designed to be used. +

+ +

+Definition at line 22 of file moMoveInit.h.


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_loop_expl.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_loop_expl.html new file mode 100644 index 000000000..d1b77b7d1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_loop_expl.html @@ -0,0 +1,64 @@ + + +PARADISEO-MO: moMoveLoopExpl< M > Class Template Reference + + + + +
+
+ +

moMoveLoopExpl< M > Class Template Reference

Class which describes an iterative explorer. +More... +

+#include <moMoveLoopExpl.h> +

+

Inheritance diagram for moMoveLoopExpl< M >: +

+ +moMoveExpl< M > +eoBF< const M::EOType &, M::EOType &, void > +eoFunctorBase +moHCMoveLoopExpl< M > +moTSMoveLoopExpl< M > + + + +
+

Detailed Description

+

template<class M>
+ class moMoveLoopExpl< M >

+ +Class which describes an iterative explorer. +

+Only a description... moHCMoveLoopExpl and moTSMoveLoopExpl are exemples of class that are a moMoveLoopExpl. +

+ +

+Definition at line 21 of file moMoveLoopExpl.h.


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_loop_expl.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_loop_expl.png new file mode 100644 index 000000000..82d725cec Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_loop_expl.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_select-members.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_select-members.html new file mode 100644 index 000000000..df32263f3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_select-members.html @@ -0,0 +1,43 @@ + + +PARADISEO-MO: Member List + + + + +
+
+ +

moMoveSelect< M > Member List

This is the complete list of members for moMoveSelect< M >, including all inherited members.

+ + + + + + + +
Fitness typedefmoMoveSelect< M >
functor_category()eoBF< M &, M::EOType::Fitness &, void > [static]
init(const Fitness &__fit)=0moMoveSelect< M > [pure virtual]
operator()(M &, M::EOType::Fitness &)=0eoBF< M &, M::EOType::Fitness &, void > [pure virtual]
update(const M &__move, const Fitness &__fit)=0moMoveSelect< M > [pure virtual]
~eoBF()eoBF< M &, M::EOType::Fitness &, void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_select.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_select.html new file mode 100644 index 000000000..be68b498f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_select.html @@ -0,0 +1,151 @@ + + +PARADISEO-MO: moMoveSelect< M > Class Template Reference + + + + +
+
+ +

moMoveSelect< M > Class Template Reference

Class that describes a move selector (moMove). +More... +

+#include <moMoveSelect.h> +

+

Inheritance diagram for moMoveSelect< M >: +

+ +eoBF< M &, M::EOType::Fitness &, void > +eoFunctorBase +moBestImprSelect< M > +moFirstImprSelect< M > +moRandImprSelect< M > + +List of all members. + + + + + + + + + + + + +

Public Types

+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Public Member Functions

virtual void init (const Fitness &__fit)=0
 Procedure which initialises all that the move selector needs including the initial fitness.
virtual bool update (const M &__move, const Fitness &__fit)=0
 Function which updates the best solutions.
+

Detailed Description

+

template<class M>
+ class moMoveSelect< M >

+ +Class that describes a move selector (moMove). +

+It iteratively considers some moves (moMove) and their associated fitnesses. The best move is so regularly updated. At any time, it could be accessed. +

+ +

+Definition at line 32 of file moMoveSelect.h.


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
virtual void moMoveSelect< M >::init (const Fitness __fit  )  [pure virtual]
+
+
+ +

+Procedure which initialises all that the move selector needs including the initial fitness. +

+In order to know the fitness of the solution, for which the neighborhood will be soon explored

+

Parameters:
+ + +
__fit the current fitness.
+
+ +

+Implemented in moBestImprSelect< M >, moFirstImprSelect< M >, and moRandImprSelect< M >. +

+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
virtual bool moMoveSelect< M >::update (const M &  __move,
const Fitness __fit 
) [pure virtual]
+
+
+ +

+Function which updates the best solutions. +

+

Parameters:
+ + + +
__move a new move.
__fit a fitness linked to the new move.
+
+
Returns:
a boolean that expresses the need to resume the exploration.
+ +

+Implemented in moBestImprSelect< M >, and moRandImprSelect< M >. +

+

+


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_select.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_select.png new file mode 100644 index 000000000..10bda515a Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_move_select.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_next_move.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_next_move.html new file mode 100644 index 000000000..eec94d219 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_next_move.html @@ -0,0 +1,62 @@ + + +PARADISEO-MO: moNextMove< M > Class Template Reference + + + + +
+
+ +

moNextMove< M > Class Template Reference

Class which allows to generate a new move (moMove). +More... +

+#include <moNextMove.h> +

+

Inheritance diagram for moNextMove< M >: +

+ +eoBF< A1, A2, R > +eoFunctorBase +moItRandNextMove< M > + + + +
+

Detailed Description

+

template<class M>
+ class moNextMove< M >

+ +Class which allows to generate a new move (moMove). +

+Useful for the explorer (for moTS or moHC). Does nothing... An object that herits from this class needs to be designed for being used. +

+ +

+Definition at line 22 of file moNextMove.h.


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_next_move.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_next_move.png new file mode 100644 index 000000000..6bc1397f2 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_next_move.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_no_aspir_crit-members.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_no_aspir_crit-members.html new file mode 100644 index 000000000..d37520070 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_no_aspir_crit-members.html @@ -0,0 +1,42 @@ + + +PARADISEO-MO: Member List + + + + +
+
+ +

moNoAspirCrit< M > Member List

This is the complete list of members for moNoAspirCrit< M >, including all inherited members.

+ + + + + + +
functor_category()eoBF< A1, A2, R > [static]
init()moNoAspirCrit< M > [inline, private, virtual]
operator()(const M &__move, const typename M::EOType::Fitness &__sol)moNoAspirCrit< M > [inline, private]
moAspirCrit::operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_no_aspir_crit.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_no_aspir_crit.html new file mode 100644 index 000000000..06c3e1ba4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_no_aspir_crit.html @@ -0,0 +1,140 @@ + + +PARADISEO-MO: moNoAspirCrit< M > Class Template Reference + + + + +
+
+ +

moNoAspirCrit< M > Class Template Reference

One of the possible aspiration criterion (moAspirCrit). +More... +

+#include <moNoAspirCrit.h> +

+

Inheritance diagram for moNoAspirCrit< M >: +

+ +moAspirCrit< M > +eoBF< A1, A2, R > +eoFunctorBase + +List of all members. + + + + + + + + +

Private Member Functions

bool operator() (const M &__move, const typename M::EOType::Fitness &__sol)
 Function which describes the aspiration criterion behaviour.
void init ()
 Procedure which initialises all that needs a moNoAspirCrit.
+

Detailed Description

+

template<class M>
+ class moNoAspirCrit< M >

+ +One of the possible aspiration criterion (moAspirCrit). +

+The simplest : never satisfied. +

+ +

+Definition at line 21 of file moNoAspirCrit.h.


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
bool moNoAspirCrit< M >::operator() (const M &  __move,
const typename M::EOType::Fitness &  __sol 
) [inline, private]
+
+
+ +

+Function which describes the aspiration criterion behaviour. +

+Does nothing.

+

Parameters:
+ + + +
__move a move.
__sol a fitness.
+
+
Returns:
FALSE.
+ +

+Definition at line 32 of file moNoAspirCrit.h. +

+

+ +

+
+
+template<class M>
+ + + + + + + + +
void moNoAspirCrit< M >::init (  )  [inline, private, virtual]
+
+
+ +

+Procedure which initialises all that needs a moNoAspirCrit. +

+Nothing... +

+Implements moAspirCrit< M >. +

+Definition at line 43 of file moNoAspirCrit.h. +

+

+


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_no_aspir_crit.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_no_aspir_crit.png new file mode 100644 index 000000000..ce623c0e3 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_no_aspir_crit.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_rand_impr_select-members.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_rand_impr_select-members.html new file mode 100644 index 000000000..ff9629c90 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_rand_impr_select-members.html @@ -0,0 +1,46 @@ + + +PARADISEO-MO: Member List + + + + +
+
+ +

moRandImprSelect< M > Member List

This is the complete list of members for moRandImprSelect< M >, including all inherited members.

+ + + + + + + + + + +
Fitness typedefmoRandImprSelect< M >
functor_category()eoBF< M &, M::EOType::Fitness &, void > [static]
init(const Fitness &__fit)moRandImprSelect< M > [inline, virtual]
init_fitmoRandImprSelect< M > [private]
operator()(M &__move, Fitness &__fit)moRandImprSelect< M > [inline, virtual]
update(const M &__move, const Fitness &__fit)moRandImprSelect< M > [inline, virtual]
vect_better_fitmoRandImprSelect< M > [private]
vect_better_movesmoRandImprSelect< M > [private]
~eoBF()eoBF< M &, M::EOType::Fitness &, void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_rand_impr_select.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_rand_impr_select.html new file mode 100644 index 000000000..619dd7c26 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_rand_impr_select.html @@ -0,0 +1,225 @@ + + +PARADISEO-MO: moRandImprSelect< M > Class Template Reference + + + + +
+
+ +

moRandImprSelect< M > Class Template Reference

One of the possible moMove selector (moMoveSelect). +More... +

+#include <moRandImprSelect.h> +

+

Inheritance diagram for moRandImprSelect< M >: +

+ +moMoveSelect< M > +eoBF< M &, M::EOType::Fitness &, void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Public Member Functions

void init (const Fitness &__fit)
 Procedure which all that needs a moRandImprSelect.
bool update (const M &__move, const Fitness &__fit)
 Function that updates the fitness and move vectors.
void operator() (M &__move, Fitness &__fit) throw (EmptySelection)
 The move selection.

Private Attributes

+Fitness init_fit
 Fitness of the current solution.
+std::vector< Fitnessvect_better_fit
 Candidate fitnesse vector.
+std::vector< M > vect_better_moves
 Candidate move vector.
+

Detailed Description

+

template<class M>
+ class moRandImprSelect< M >

+ +One of the possible moMove selector (moMoveSelect). +

+All the neighbors are considered. One of them that enables an improvment of the objective function is choosen. +

+ +

+Definition at line 25 of file moRandImprSelect.h.


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
void moRandImprSelect< M >::init (const Fitness __fit  )  [inline, virtual]
+
+
+ +

+Procedure which all that needs a moRandImprSelect. +

+Give a value to the initialise fitness. Clean the move and fitness vectors.

+

Parameters:
+ + +
__fit the current best fitness
+
+ +

+Implements moMoveSelect< M >. +

+Definition at line 40 of file moRandImprSelect.h. +

+References moRandImprSelect< M >::init_fit, moRandImprSelect< M >::vect_better_fit, and moRandImprSelect< M >::vect_better_moves. +

+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
bool moRandImprSelect< M >::update (const M &  __move,
const Fitness __fit 
) [inline, virtual]
+
+
+ +

+Function that updates the fitness and move vectors. +

+if a move give a better fitness than the initial fitness, it is saved and the fitness too.

+

Parameters:
+ + + +
__move a new move.
__fit a new fitness associated to the new move.
+
+
Returns:
TRUE.
+ +

+Implements moMoveSelect< M >. +

+Definition at line 56 of file moRandImprSelect.h. +

+References moRandImprSelect< M >::init_fit, moRandImprSelect< M >::vect_better_fit, and moRandImprSelect< M >::vect_better_moves. +

+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
void moRandImprSelect< M >::operator() (M &  __move,
Fitness __fit 
) throw (EmptySelection) [inline, virtual]
+
+
+ +

+The move selection. +

+One the saved move is randomly chosen.

+

Parameters:
+ + + +
__move the reference of the move that can be initialised by the function.
__fit the reference of the fitness that can be initialised by the function.
+
+
Exceptions:
+ + +
EmptySelection If no move which improves the current fitness are found.
+
+ +

+Implements eoBF< M &, M::EOType::Fitness &, void >. +

+Definition at line 77 of file moRandImprSelect.h. +

+References moRandImprSelect< M >::vect_better_fit, and moRandImprSelect< M >::vect_better_moves. +

+

+


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_rand_impr_select.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_rand_impr_select.png new file mode 100644 index 000000000..b935a8e2f Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_rand_impr_select.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_rand_move.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_rand_move.html new file mode 100644 index 000000000..3ef55563b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_rand_move.html @@ -0,0 +1,61 @@ + + +PARADISEO-MO: moRandMove< M > Class Template Reference + + + + +
+
+ +

moRandMove< M > Class Template Reference

Random move generator. +More... +

+#include <moRandMove.h> +

+

Inheritance diagram for moRandMove< M >: +

+ +eoUF< M &, void > +eoFunctorBase + + + +
+

Detailed Description

+

template<class M>
+ class moRandMove< M >

+ +Random move generator. +

+Only a description... An object that herits from this class needs to be designed in order to use a moSA. +

+ +

+Definition at line 21 of file moRandMove.h.


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_s_a-members.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_s_a-members.html new file mode 100644 index 000000000..4148227ec --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_s_a-members.html @@ -0,0 +1,46 @@ + + +PARADISEO-MO: Member List + + + + +
+
+ +

moSA< M > Member List

This is the complete list of members for moSA< M >, including all inherited members.

+ + + + + + + + + + +
contmoSA< M > [private]
cool_schedmoSA< M > [private]
EOT typedefmoSA< M > [private]
Fitness typedefmoSA< M > [private]
full_evalmoSA< M > [private]
incr_evalmoSA< M > [private]
init_tempmoSA< M > [private]
moSA(moRandMove< M > &__move_rand, moMoveIncrEval< M > &__incr_eval, moSolContinue< EOT > &__cont, double __init_temp, moCoolSched &__cool_sched, eoEvalFunc< EOT > &__full_eval)moSA< M > [inline]
move_randmoSA< M > [private]
operator()(EOT &__sol)moSA< M > [inline, virtual]


Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_s_a.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_s_a.html new file mode 100644 index 000000000..6669b12ea --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_s_a.html @@ -0,0 +1,214 @@ + + +PARADISEO-MO: moSA< M > Class Template Reference + + + + +
+
+ +

moSA< M > Class Template Reference

Simulated Annealing (SA). +More... +

+#include <moSA.h> +

+

Inheritance diagram for moSA< M >: +

+ +moAlgo< M::EOType > +eoMonOp< M::EOType > +eoOp< EOType > +eoUF< M::EOType &, bool > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moSA (moRandMove< M > &__move_rand, moMoveIncrEval< M > &__incr_eval, moSolContinue< EOT > &__cont, double __init_temp, moCoolSched &__cool_sched, eoEvalFunc< EOT > &__full_eval)
 SA constructor.
bool operator() (EOT &__sol)
 function that launches the SA algorithm.

Private Types

+typedef M::EOType EOT
 Alias for the type.
+typedef EOT::Fitness Fitness
 Alias for the fitness.

Private Attributes

+moRandMove< M > & move_rand
 A move generator (generally randomly).
+moMoveIncrEval< M > & incr_eval
 A (generally) efficient evaluation function.
+moSolContinue< EOT > & cont
 Stopping criterion before temperature update.
+double init_temp
 Initial temperature.
+moCoolSchedcool_sched
 The cooling schedule.
+eoEvalFunc< EOT > & full_eval
 A full evaluation function.
+

Detailed Description

+

template<class M>
+ class moSA< M >

+ +Simulated Annealing (SA). +

+Class that describes a Simulated Annealing algorithm. +

+ +

+Definition at line 32 of file moSA.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moSA< M >::moSA (moRandMove< M > &  __move_rand,
moMoveIncrEval< M > &  __incr_eval,
moSolContinue< EOT > &  __cont,
double  __init_temp,
moCoolSched __cool_sched,
eoEvalFunc< EOT > &  __full_eval 
) [inline]
+
+
+ +

+SA constructor. +

+All the boxes used by a SA need to be given.

+

Parameters:
+ + + + + + + +
__move_rand a move generator (generally randomly).
__incr_eval a (generaly) efficient evaluation function
__cont a stopping criterion.
__init_temp the initial temperature.
__cool_sched a cooling schedule, describes how the temperature is modified.
__full_eval a full evaluation function.
+
+ +

+Definition at line 60 of file moSA.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
bool moSA< M >::operator() (EOT __sol  )  [inline, virtual]
+
+
+ +

+function that launches the SA algorithm. +

+As a moTS or a moHC, the SA can be used for HYBRIDATION in an evolutionary algorithm.

+

Parameters:
+ + +
__sol a solution to improve.
+
+
Returns:
TRUE.
+ +

+Implements eoUF< M::EOType &, bool >. +

+Definition at line 82 of file moSA.h. +

+References moSA< M >::cont, moSA< M >::cool_sched, moSA< M >::full_eval, moSA< M >::incr_eval, moSA< M >::init_temp, and moSA< M >::move_rand. +

+

+


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_s_a.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_s_a.png new file mode 100644 index 000000000..e14866c80 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_s_a.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_sol_continue-members.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_sol_continue-members.html new file mode 100644 index 000000000..2379c2ec2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_sol_continue-members.html @@ -0,0 +1,41 @@ + + +PARADISEO-MO: Member List + + + + +
+
+ +

moSolContinue< EOT > Member List

This is the complete list of members for moSolContinue< EOT >, including all inherited members.

+ + + + + +
functor_category()eoUF< const EOT &, bool > [static]
init()=0moSolContinue< EOT > [pure virtual]
operator()(const EOT &)=0eoUF< const EOT &, bool > [pure virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< const EOT &, bool > [virtual]


Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_sol_continue.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_sol_continue.html new file mode 100644 index 000000000..cf2ffaf7e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_sol_continue.html @@ -0,0 +1,92 @@ + + +PARADISEO-MO: moSolContinue< EOT > Class Template Reference + + + + +
+
+ +

moSolContinue< EOT > Class Template Reference

Class that describes a stop criterion for a solution-based heuristic. +More... +

+#include <moSolContinue.h> +

+

Inheritance diagram for moSolContinue< EOT >: +

+ +eoUF< const EOT &, bool > +eoFunctorBase +moGenSolContinue< EOT > + +List of all members. + + + + + +

Public Member Functions

virtual void init ()=0
 Procedure which initialises all that the stop criterion needs.
+

Detailed Description

+

template<class EOT>
+ class moSolContinue< EOT >

+ +Class that describes a stop criterion for a solution-based heuristic. +

+It allows to add an initialisation procedure to an object that is a unary function (eoUF). +

+ +

+Definition at line 22 of file moSolContinue.h.


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + +
virtual void moSolContinue< EOT >::init (  )  [pure virtual]
+
+
+ +

+Procedure which initialises all that the stop criterion needs. +

+Generally, it allocates some data structures or initialises some counters. +

+Implemented in moGenSolContinue< EOT >. +

+

+


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_sol_continue.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_sol_continue.png new file mode 100644 index 000000000..345d1b66d Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_sol_continue.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_t_s-members.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_t_s-members.html new file mode 100644 index 000000000..c19567788 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_t_s-members.html @@ -0,0 +1,46 @@ + + +PARADISEO-MO: Member List + + + + +
+
+ +

moTS< M > Member List

This is the complete list of members for moTS< M >, including all inherited members.

+ + + + + + + + + + +
contmoTS< M > [private]
EOT typedefmoTS< M > [private]
first_timemoTS< M > [private, static]
Fitness typedefmoTS< M > [private]
full_evalmoTS< M > [private]
moTS(moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moTabuList< M > &__tabu_list, moAspirCrit< M > &__aspir_crit, moSolContinue< EOT > &__cont, eoEvalFunc< EOT > &__full_eval)moTS< M > [inline]
moTS(moMoveExpl< M > &__move_expl, moSolContinue< EOT > &__cont, eoEvalFunc< EOT > &__full_eval)moTS< M > [inline]
move_explmoTS< M > [private]
mutexmoTS< M > [private, static]
operator()(EOT &__sol)moTS< M > [inline, virtual]


Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_t_s.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_t_s.html new file mode 100644 index 000000000..e8bed1dbd --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_t_s.html @@ -0,0 +1,274 @@ + + +PARADISEO-MO: moTS< M > Class Template Reference + + + + +
+
+ +

moTS< M > Class Template Reference

Tabu Search (TS). +More... +

+#include <moTS.h> +

+

Inheritance diagram for moTS< M >: +

+ +moAlgo< M::EOType > +eoMonOp< M::EOType > +eoOp< EOType > +eoUF< M::EOType &, bool > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moTS (moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moTabuList< M > &__tabu_list, moAspirCrit< M > &__aspir_crit, moSolContinue< EOT > &__cont, eoEvalFunc< EOT > &__full_eval)
 Constructor of a moTS specifying all the boxes.
 moTS (moMoveExpl< M > &__move_expl, moSolContinue< EOT > &__cont, eoEvalFunc< EOT > &__full_eval)
 Constructor with less parameters.
bool operator() (EOT &__sol)
 Function which launchs the Tabu Search.

Private Types

+typedef M::EOType EOT
 Alias for the type.
+typedef EOT::Fitness Fitness
 Alias for the fitness.

Private Attributes

+moMoveExpl< M > & move_expl
 Neighborhood explorer.
+moSolContinue< EOT > & cont
 Stop criterion.
+eoEvalFunc< EOT > & full_eval
 Full evaluation function.

Static Private Attributes

+static bool first_time
 Boolean allowing to initialise the ptread_mutex_t in the constructor.
+static pthread_mutex_t mutex
 The lock.
+

Detailed Description

+

template<class M>
+ class moTS< M >

+ +Tabu Search (TS). +

+Generic algorithm that describes a tabu search. +

+ +

+Definition at line 30 of file moTS.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moTS< M >::moTS (moMoveInit< M > &  __move_init,
moNextMove< M > &  __next_move,
moMoveIncrEval< M > &  __incr_eval,
moTabuList< M > &  __tabu_list,
moAspirCrit< M > &  __aspir_crit,
moSolContinue< EOT > &  __cont,
eoEvalFunc< EOT > &  __full_eval 
) [inline]
+
+
+ +

+Constructor of a moTS specifying all the boxes. +

+In this constructor, a moTSMoveLoopExpl is instanciated.

+

Parameters:
+ + + + + + + + +
__move_init move initialisation
__next_move neighborhood explorer
__incr_eval efficient evaluation
__tabu_list tabu list
__aspir_crit aspiration criterion
__cont stop criterion
__full_eval full evaluation function
+
+ +

+Definition at line 59 of file moTS.h. +

+References moTS< M >::first_time, and moTS< M >::mutex. +

+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + +
moTS< M >::moTS (moMoveExpl< M > &  __move_expl,
moSolContinue< EOT > &  __cont,
eoEvalFunc< EOT > &  __full_eval 
) [inline]
+
+
+ +

+Constructor with less parameters. +

+The explorer is given in the parameters.

+

Parameters:
+ + + + +
__move_expl the explorer (generally different that a moTSMoveLoopExpl)
__cont stop criterion
__full_eval full evaluation function
+
+ +

+Definition at line 81 of file moTS.h. +

+References moTS< M >::first_time, and moTS< M >::mutex. +

+

+


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
bool moTS< M >::operator() (EOT __sol  )  [inline, virtual]
+
+
+ +

+Function which launchs the Tabu Search. +

+Algorithm of the tabu search. As a moSA or a moHC, it can be used for HYBRIDATION in an evolutionary algorithm. For security a lock (pthread_mutex_t) is closed during the algorithm.

+

Parameters:
+ + +
__sol a solution to improve.
+
+
Returns:
TRUE.
+ +

+Implements eoUF< M::EOType &, bool >. +

+Definition at line 104 of file moTS.h. +

+References moTS< M >::cont, moTS< M >::full_eval, moTS< M >::move_expl, and moTS< M >::mutex. +

+

+


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_t_s.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_t_s.png new file mode 100644 index 000000000..8932f0e2f Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_t_s.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_t_s_move_loop_expl-members.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_t_s_move_loop_expl-members.html new file mode 100644 index 000000000..e1e1ceef8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_t_s_move_loop_expl-members.html @@ -0,0 +1,46 @@ + + +PARADISEO-MO: Member List + + + + +
+
+ +

moTSMoveLoopExpl< M > Member List

This is the complete list of members for moTSMoveLoopExpl< M >, including all inherited members.

+ + + + + + + + + + +
aspir_critmoTSMoveLoopExpl< M > [private]
EOT typedefmoTSMoveLoopExpl< M > [private]
Fitness typedefmoTSMoveLoopExpl< M > [private]
incr_evalmoTSMoveLoopExpl< M > [private]
moTSMoveLoopExpl(moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moTabuList< M > &__tabu_list, moAspirCrit< M > &__aspir_crit)moTSMoveLoopExpl< M > [inline]
move_initmoTSMoveLoopExpl< M > [private]
move_selectmoTSMoveLoopExpl< M > [private]
next_movemoTSMoveLoopExpl< M > [private]
operator()(const EOT &__old_sol, EOT &__new_sol)moTSMoveLoopExpl< M > [inline, virtual]
tabu_listmoTSMoveLoopExpl< M > [private]


Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_t_s_move_loop_expl.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_t_s_move_loop_expl.html new file mode 100644 index 000000000..2d59b6f8b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_t_s_move_loop_expl.html @@ -0,0 +1,216 @@ + + +PARADISEO-MO: moTSMoveLoopExpl< M > Class Template Reference + + + + +
+
+ +

moTSMoveLoopExpl< M > Class Template Reference

Explorer for a Tabu Search algorithm. +More... +

+#include <moTSMoveLoopExpl.h> +

+

Inheritance diagram for moTSMoveLoopExpl< M >: +

+ +moMoveLoopExpl< M > +moMoveExpl< M > +eoBF< const M::EOType &, M::EOType &, void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moTSMoveLoopExpl (moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moTabuList< M > &__tabu_list, moAspirCrit< M > &__aspir_crit)
 Constructor.
void operator() (const EOT &__old_sol, EOT &__new_sol)
 Procedure which lauches the exploration.

Private Types

+typedef M::EOType EOT
 Alias for the type.
+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Private Attributes

+moMoveInit< M > & move_init
 Move initialisation.
+moNextMove< M > & next_move
 Neighborhood explorer.
+moMoveIncrEval< M > & incr_eval
 Efficient evaluation.
+moBestImprSelect< M > move_select
 Move selector.
+moTabuList< M > & tabu_list
 Tabu list.
+moAspirCrit< M > & aspir_crit
 Aspiration criterion.
+

Detailed Description

+

template<class M>
+ class moTSMoveLoopExpl< M >

+ +Explorer for a Tabu Search algorithm. +

+It is used by a moTS. +

+ +

+Definition at line 30 of file moTSMoveLoopExpl.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moTSMoveLoopExpl< M >::moTSMoveLoopExpl (moMoveInit< M > &  __move_init,
moNextMove< M > &  __next_move,
moMoveIncrEval< M > &  __incr_eval,
moTabuList< M > &  __tabu_list,
moAspirCrit< M > &  __aspir_crit 
) [inline]
+
+
+ +

+Constructor. +

+

Parameters:
+ + + + + + +
__move_init move initialisation
__next_move neighborhood explorer
__incr_eval efficient evaluation
__tabu_list tabu list
__aspir_crit aspiration criterion
+
+ +

+Definition at line 49 of file moTSMoveLoopExpl.h. +

+References moTSMoveLoopExpl< M >::aspir_crit, and moTSMoveLoopExpl< M >::tabu_list. +

+

+


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
void moTSMoveLoopExpl< M >::operator() (const EOT __old_sol,
EOT __new_sol 
) [inline, virtual]
+
+
+ +

+Procedure which lauches the exploration. +

+The exploration continues while the chosen move is not in the tabu list or the aspiration criterion is true. If these 2 conditions are not true, the exploration stops if the move selector update function returns false.

+

Parameters:
+ + + +
__old_sol the initial solution
__new_sol the new solution
+
+ +

+Implements eoBF< const M::EOType &, M::EOType &, void >. +

+Definition at line 69 of file moTSMoveLoopExpl.h. +

+References moTSMoveLoopExpl< M >::aspir_crit, moTSMoveLoopExpl< M >::incr_eval, moTSMoveLoopExpl< M >::move_init, moTSMoveLoopExpl< M >::move_select, moTSMoveLoopExpl< M >::next_move, and moTSMoveLoopExpl< M >::tabu_list. +

+

+


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_t_s_move_loop_expl.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_t_s_move_loop_expl.png new file mode 100644 index 000000000..717f30a17 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_t_s_move_loop_expl.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_tabu_list-members.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_tabu_list-members.html new file mode 100644 index 000000000..a3afa24cb --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_tabu_list-members.html @@ -0,0 +1,44 @@ + + +PARADISEO-MO: Member List + + + + +
+
+ +

moTabuList< M > Member List

This is the complete list of members for moTabuList< M >, including all inherited members.

+ + + + + + + + +
add(const M &__move, const EOT &__sol)=0moTabuList< M > [pure virtual]
EOT typedefmoTabuList< M >
functor_category()eoBF< A1, A2, R > [static]
init()=0moTabuList< M > [pure virtual]
operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
update()=0moTabuList< M > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_tabu_list.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_tabu_list.html new file mode 100644 index 000000000..6ee4f08b0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/classmo_tabu_list.html @@ -0,0 +1,163 @@ + + +PARADISEO-MO: moTabuList< M > Class Template Reference + + + + +
+
+ +

moTabuList< M > Class Template Reference

Class describing a tabu list that a moTS uses. +More... +

+#include <moTabuList.h> +

+

Inheritance diagram for moTabuList< M >: +

+ +eoBF< A1, A2, R > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + +

Public Types

+typedef M::EOType EOT
 Alias for the type.

Public Member Functions

virtual void add (const M &__move, const EOT &__sol)=0
 Procedure to add a move in the tabu list.
virtual void update ()=0
 Procedure that updates the tabu list content.
virtual void init ()=0
 Procedure which initialises the tabu list.
+

Detailed Description

+

template<class M>
+ class moTabuList< M >

+ +Class describing a tabu list that a moTS uses. +

+It is only a description, does nothing... A new object that herits from this class has to be defined in order to be used in a moTS. +

+ +

+Definition at line 22 of file moTabuList.h.


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
virtual void moTabuList< M >::add (const M &  __move,
const EOT __sol 
) [pure virtual]
+
+
+ +

+Procedure to add a move in the tabu list. +

+The two parameters have not to be modified so they are constant parameters

+

Parameters:
+ + + +
__move a new tabu move
__sol the solution associated to this move
+
+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + +
virtual void moTabuList< M >::update (  )  [pure virtual]
+
+
+ +

+Procedure that updates the tabu list content. +

+Generally, a counter associated to each saved move is decreased by one. +

+

+ +

+
+
+template<class M>
+ + + + + + + + +
virtual void moTabuList< M >::init (  )  [pure virtual]
+
+
+ +

+Procedure which initialises the tabu list. +

+Can be useful if the data structure needs to be allocated before being used. +

+

+


The documentation for this class was generated from the following file: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/doxygen.css b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/doxygen.css new file mode 100644 index 000000000..c7db1a8a0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/doxygen.css @@ -0,0 +1,358 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: monospace, fixed; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } + +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + +/* Style for detailed member documentation */ +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; +} +.memnav { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +.memitem { + padding: 4px; + background-color: #eef3f5; + border-width: 1px; + border-style: solid; + border-color: #dedeee; + -moz-border-radius: 8px 8px 8px 8px; +} +.memname { + white-space: nowrap; + font-weight: bold; +} +.memdoc{ + padding-left: 10px; +} +.memproto { + background-color: #d5e1e8; + width: 100%; + border-width: 1px; + border-style: solid; + border-color: #84b0c7; + font-weight: bold; + -moz-border-radius: 8px 8px 8px 8px; +} +.paramkey { + text-align: right; +} +.paramtype { + white-space: nowrap; +} +.paramname { + color: #602020; + font-style: italic; + white-space: nowrap; +} +/* End Styling for detailed member documentation */ + +/* for the tree view */ +.ftvtree { + font-family: sans-serif; + margin:0.5em; +} +.directory { font-size: 9pt; font-weight: bold; } +.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } +.directory > h3 { margin-top: 0; } +.directory p { margin: 0px; white-space: nowrap; } +.directory div { display: none; margin: 0px; } +.directory img { vertical-align: -30%; } diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/doxygen.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/doxygen.png new file mode 100644 index 000000000..f0a274bba Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/doxygen.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/files.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/files.html new file mode 100644 index 000000000..943d06717 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/files.html @@ -0,0 +1,59 @@ + + +PARADISEO-MO: File Index + + + + +
+
+

PARADISEO-MO File List

Here is a list of all documented files with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
index.h [code]
mo.h [code]
moAlgo.h [code]
moAspirCrit.h [code]
moBestImprSelect.h [code]
moCoolSched.h [code]
moEasyCoolSched.h [code]
moFirstImprSelect.h [code]
moGenSolContinue.h [code]
moHC.h [code]
moHCMoveLoopExpl.h [code]
moImprBestFitAspirCrit.h [code]
moItRandNextMove.h [code]
moLSCheckPoint.h [code]
moMove.h [code]
moMoveExpl.h [code]
moMoveIncrEval.h [code]
moMoveInit.h [code]
moMoveLoopExpl.h [code]
moMoveSelect.h [code]
moNextMove.h [code]
moNoAspirCrit.h [code]
moRandImprSelect.h [code]
moRandMove.h [code]
moSA.h [code]
moSolContinue.h [code]
moTabuList.h [code]
moTS.h [code]
moTSMoveLoopExpl.h [code]
+
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2blank.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2blank.png new file mode 100644 index 000000000..493c3c0b6 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2blank.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2doc.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2doc.png new file mode 100644 index 000000000..f72999f92 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2doc.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2folderclosed.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2folderclosed.png new file mode 100644 index 000000000..d6d063440 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2folderclosed.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2folderopen.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2folderopen.png new file mode 100644 index 000000000..bbe2c913c Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2folderopen.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2lastnode.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2lastnode.png new file mode 100644 index 000000000..e7b9ba90c Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2lastnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2link.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2link.png new file mode 100644 index 000000000..14f3fed00 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2link.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2mlastnode.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2mlastnode.png new file mode 100644 index 000000000..09ceb6adb Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2mlastnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2mnode.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2mnode.png new file mode 100644 index 000000000..3254c0511 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2mnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2node.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2node.png new file mode 100644 index 000000000..c9f06a57f Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2node.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2plastnode.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2plastnode.png new file mode 100644 index 000000000..0b07e0091 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2plastnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2pnode.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2pnode.png new file mode 100644 index 000000000..2001b797b Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2pnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2vertline.png b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2vertline.png new file mode 100644 index 000000000..b330f3a33 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/ftv2vertline.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/functions.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/functions.html new file mode 100644 index 000000000..b360b1bc2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/functions.html @@ -0,0 +1,235 @@ + + +PARADISEO-MO: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- a -

+

- b -

+

- c -

+

- e -

+

- f -

+

- i -

+

- m -

+

- n -

+

- o -

+

- r -

+

- t -

+

- u -

+

- v -

+
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/functions_func.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/functions_func.html new file mode 100644 index 000000000..9e93c86e6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/functions_func.html @@ -0,0 +1,119 @@ + + +PARADISEO-MO: Class Members - Functions + + + + +
+
+ + +
+ +
+ +

+  +

+

- a -

+

- i -

+

- m -

+

- o -

+

- u -

+
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/functions_type.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/functions_type.html new file mode 100644 index 000000000..8ee94fe72 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/functions_type.html @@ -0,0 +1,68 @@ + + +PARADISEO-MO: Class Members - Typedefs + + + + +
+
+ + +  +

+

+
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/functions_vars.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/functions_vars.html new file mode 100644 index 000000000..93b9dc4a7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/functions_vars.html @@ -0,0 +1,152 @@ + + +PARADISEO-MO: Class Members - Variables + + + + +
+
+ + +
+ +
+ +

+  +

+

- a -

+

- b -

+

- c -

+

- f -

+

- i -

+

- m -

+

- n -

+

- r -

+

- t -

+

- v -

+
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/hierarchy.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/hierarchy.html new file mode 100644 index 000000000..235bf01f3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/hierarchy.html @@ -0,0 +1,124 @@ + + +PARADISEO-MO: Hierarchical Index + + + + +
+
+ +

PARADISEO-MO Class Hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically: +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/index.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/index.html new file mode 100644 index 000000000..bd26c60e9 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/index.html @@ -0,0 +1,8 @@ + + +PARADISEO-MO + + + + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/index_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/index_8h-source.html new file mode 100644 index 000000000..11f0b8c29 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/index_8h-source.html @@ -0,0 +1,34 @@ + + +PARADISEO-MO: index.h Source File + + + + +
+
+

index.h

00001 
+00022 // coding: iso-8859-1
+00023 // mode: C++
+00024 // c-file-style: "Stroustrup"
+00025 // fill-column: 80
+00026 // End:
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/installdox b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/installdox new file mode 100755 index 000000000..1628445b3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/installdox @@ -0,0 +1,117 @@ +#!/usr/bin/perl + +%subst = ( "eo.doxytag", ""); +$quiet = 0; + +if (open(F,"search.cfg")) +{ + $_= ; s/[ \t\n]*$//g ; $subst{"_doc"} = $_; + $_= ; s/[ \t\n]*$//g ; $subst{"_cgi"} = $_; +} + +while ( @ARGV ) { + $_ = shift @ARGV; + if ( s/^-// ) { + if ( /^l(.*)/ ) { + $v = ($1 eq "") ? shift @ARGV : $1; + ($v =~ /\/$/) || ($v .= "/"); + $_ = $v; + if ( /(.+)\@(.+)/ ) { + if ( exists $subst{$1} ) { + $subst{$1} = $2; + } else { + print STDERR "Unknown tag file $1 given with option -l\n"; + &usage(); + } + } else { + print STDERR "Argument $_ is invalid for option -l\n"; + &usage(); + } + } + elsif ( /^q/ ) { + $quiet = 1; + } + elsif ( /^\?|^h/ ) { + &usage(); + } + else { + print STDERR "Illegal option -$_\n"; + &usage(); + } + } + else { + push (@files, $_ ); + } +} + +foreach $sub (keys %subst) +{ + if ( $subst{$sub} eq "" ) + { + print STDERR "No substitute given for tag file `$sub'\n"; + &usage(); + } + elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) + { + print "Substituting $subst{$sub} for each occurence of tag file $sub\n"; + } +} + +if ( ! @files ) { + if (opendir(D,".")) { + foreach $file ( readdir(D) ) { + $match = ".html"; + next if ( $file =~ /^\.\.?$/ ); + ($file =~ /$match/) && (push @files, $file); + ($file =~ "tree.js") && (push @files, $file); + } + closedir(D); + } +} + +if ( ! @files ) { + print STDERR "Warning: No input files given and none found!\n"; +} + +foreach $f (@files) +{ + if ( ! $quiet ) { + print "Editing: $f...\n"; + } + $oldf = $f; + $f .= ".bak"; + unless (rename $oldf,$f) { + print STDERR "Error: cannot rename file $oldf\n"; + exit 1; + } + if (open(F,"<$f")) { + unless (open(G,">$oldf")) { + print STDERR "Error: opening file $oldf for writing\n"; + exit 1; + } + if ($oldf ne "tree.js") { + while () { + s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; + print G "$_"; + } + } + else { + while () { + s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; + print G "$_"; + } + } + } + else { + print STDERR "Warning file $f does not exist\n"; + } + unlink $f; +} + +sub usage { + print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; + print STDERR "Options:\n"; + print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; + print STDERR " -q Quiet mode\n\n"; + exit 1; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/main.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/main.html new file mode 100644 index 000000000..855b70a2d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/main.html @@ -0,0 +1,39 @@ + + +PARADISEO-MO: Welcome to PARADISEO-Moving Objects + + + + +
+
+

Welcome to PARADISEO-Moving Objects

+

+

0.1

+intro

+MO is an extension of the ANSI-C++ compliant evolutionary computation library EO.
+ It contains classes for almost any kind of one solution based heuristics.

+tutorial

+

+install

+The installation procedure of the package is detailed in the README file in the top-directory of the source-tree.

+design

+
Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_8h-source.html new file mode 100644 index 000000000..517aa803d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_8h-source.html @@ -0,0 +1,71 @@ + + +PARADISEO-MO: mo.h Source File + + + + +
+
+

mo.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "mo.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* TEXT LICENCE
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __mo_h
+00013 #define __mo_h
+00014 
+00015 #include "moAspirCrit.h"
+00016 #include "moAlgo.h"
+00017 #include "moBestImprSelect.h"
+00018 #include "moCoolSched.h"
+00019 #include "moEasyCoolSched.h"
+00020 #include "moFirstImprSelect.h"
+00021 #include "moGenSolContinue.h"
+00022 #include "moHC.h"
+00023 #include "moHCMoveLoopExpl.h"
+00024 #include "moImprBestFitAspirCrit.h"
+00025 #include "moItRandNextMove.h"
+00026 #include "moLSCheckPoint.h"
+00027 #include "moMoveExpl.h"
+00028 #include "moMove.h"
+00029 #include "moMoveIncrEval.h"
+00030 #include "moMoveInit.h"
+00031 #include "moMoveLoopExpl.h"
+00032 #include "moMoveSelect.h"
+00033 #include "moNextMove.h"
+00034 #include "moNoAspirCrit.h"
+00035 #include "moRandImprSelect.h"
+00036 #include "moRandMove.h"
+00037 #include "moSA.h"
+00038 #include "moSolContinue.h"
+00039 #include "moTabuList.h"
+00040 #include "moTS.h"
+00041 #include "moTSMoveLoopExpl.h"
+00042 
+00043 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_algo_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_algo_8h-source.html new file mode 100644 index 000000000..0456ff46f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_algo_8h-source.html @@ -0,0 +1,51 @@ + + +PARADISEO-MO: moAlgo.h Source File + + + + +
+
+

moAlgo.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moAlgo.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* TEXT LICENCE
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moAlgo_h
+00013 #define __moAlgo_h
+00014 
+00015 #include <eoOp.h>
+00016 
+00018 
+00021 template < class EOT > class moAlgo:public eoMonOp < EOT >
+00022 {
+00023 
+00024 };
+00025 
+00026 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_aspir_crit_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_aspir_crit_8h-source.html new file mode 100644 index 000000000..ee0cc11e7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_aspir_crit_8h-source.html @@ -0,0 +1,58 @@ + + +PARADISEO-MO: moAspirCrit.h Source File + + + + +
+
+

moAspirCrit.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moAspirCrit.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* TEXT LICENCE
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moAspirCrit_h
+00013 #define __moAspirCrit_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00022 template < class M > class moAspirCrit:public eoBF < const M &, const typename
+00023   M::EOType::Fitness &,
+00024   bool >
+00025 {
+00026 
+00027 public:
+00029 
+00032   virtual void
+00033   init () = 0;
+00034 
+00035 };
+00036 
+00037 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_best_impr_select_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_best_impr_select_8h-source.html new file mode 100644 index 000000000..1cc9a9497 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_best_impr_select_8h-source.html @@ -0,0 +1,99 @@ + + +PARADISEO-MO: moBestImprSelect.h Source File + + + + +
+
+

moBestImprSelect.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moBestImprSelect.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moBestImprSelect_h
+00013 #define __moBestImprSelect_h
+00014 
+00015 #include "moMoveSelect.h"
+00016 
+00018 
+00022 template < class M > class moBestImprSelect:public moMoveSelect < M >
+00023 {
+00024 
+00025 public:
+00026 
+00028   typedef typename M::EOType::Fitness Fitness;
+00029 
+00031   void init (const Fitness & __fit)
+00032   {
+00033 
+00034     first_time = true;
+00035   }
+00036 
+00037 
+00039 
+00047   bool update (const M & __move, const Fitness & __fit)
+00048   {
+00049 
+00050     if (first_time || __fit > best_fit)
+00051       {
+00052 
+00053         best_fit = __fit;
+00054         best_move = __move;
+00055 
+00056         first_time = false;
+00057       }
+00058 
+00059     return true;
+00060   }
+00061 
+00063 
+00068   void operator   () (M & __move, Fitness & __fit) throw (EmptySelection)
+00069   {
+00070 
+00071     if (!first_time)
+00072       {
+00073         __move = best_move;
+00074         __fit = best_fit;
+00075       }
+00076     else
+00077       throw EmptySelection ();
+00078   }
+00079 
+00080 private:
+00081 
+00083   bool first_time;
+00084 
+00086   M best_move;
+00087 
+00089   Fitness best_fit;
+00090 
+00091 };
+00092 
+00093 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_cool_sched_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_cool_sched_8h-source.html new file mode 100644 index 000000000..3dc11878d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_cool_sched_8h-source.html @@ -0,0 +1,51 @@ + + +PARADISEO-MO: moCoolSched.h Source File + + + + +
+
+

moCoolSched.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moCoolSched.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moCoolSched_h
+00013 #define __moCoolSched_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00022 class moCoolSched:public eoUF < double &, bool >
+00023 {
+00024 
+00025 };
+00026 
+00027 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_easy_cool_sched_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_easy_cool_sched_8h-source.html new file mode 100644 index 000000000..598c04180 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_easy_cool_sched_8h-source.html @@ -0,0 +1,72 @@ + + +PARADISEO-MO: moEasyCoolSched.h Source File + + + + +
+
+

moEasyCoolSched.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moEasyCoolSched.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moEasyCoolSched_h
+00013 #define __moEasyCoolSched_h
+00014 
+00015 #include "moCoolSched.h"
+00016 
+00018 
+00022 class moEasyCoolSched:public moCoolSched
+00023 {
+00024 
+00025 public:
+00027 
+00031   moEasyCoolSched (double __threshold,
+00032                    double __ratio):threshold (__threshold), ratio (__ratio)
+00033   {
+00034 
+00035   }
+00036 
+00038 
+00044   bool operator   () (double &__temp)
+00045   {
+00046 
+00047     return (__temp *= ratio) > threshold;
+00048   }
+00049 
+00050 private:
+00051 
+00053   double threshold;
+00054 
+00056   double ratio;
+00057 
+00058 };
+00059 
+00060 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_first_impr_select_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_first_impr_select_8h-source.html new file mode 100644 index 000000000..8fec42e58 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_first_impr_select_8h-source.html @@ -0,0 +1,106 @@ + + +PARADISEO-MO: moFirstImprSelect.h Source File + + + + +
+
+

moFirstImprSelect.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moFirstImprSelect.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moFirstImprSelect_h
+00013 #define __moFirstImprSelect_h
+00014 
+00015 #include "moMoveSelect.h"
+00016 
+00018 
+00023 template < class M > class moFirstImprSelect:public moMoveSelect < M >
+00024 {
+00025 
+00026 public:
+00027 
+00029   typedef typename M::EOType::Fitness Fitness;
+00030 
+00032 
+00035   virtual void init (const Fitness & __fit)
+00036   {
+00037 
+00038     valid = false;
+00039     init_fit = __fit;
+00040   }
+00041 
+00042 
+00044 
+00052   bool update (const M & __move, const typename M::EOType::Fitness & __fit)
+00053   {
+00054 
+00055     if (__fit > init_fit)
+00056       {
+00057 
+00058         best_fit = __fit;
+00059         best_move = __move;
+00060         valid = true;
+00061 
+00062         return false;
+00063       }
+00064     else
+00065       {
+00066         return true;
+00067       }
+00068   }
+00069 
+00071 
+00076   void operator   () (M & __move, Fitness & __fit) throw (EmptySelection)
+00077   {
+00078 
+00079     if (valid)
+00080       {
+00081         __move = best_move;
+00082         __fit = best_fit;
+00083       }
+00084     else
+00085       throw EmptySelection ();
+00086   }
+00087 
+00088 private:
+00089 
+00091   bool valid;
+00092 
+00094   M best_move;
+00095 
+00097   Fitness init_fit;
+00098 
+00100   Fitness best_fit;
+00101 
+00102 };
+00103 
+00104 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_gen_sol_continue_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_gen_sol_continue_8h-source.html new file mode 100644 index 000000000..aa3e12294 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_gen_sol_continue_8h-source.html @@ -0,0 +1,78 @@ + + +PARADISEO-MO: moGenSolContinue.h Source File + + + + +
+
+

moGenSolContinue.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "eoGenSolContinue.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moGenSolContinue_h
+00013 #define __moGenSolContinue_h
+00014 
+00015 #include "moSolContinue.h"
+00016 
+00018 
+00021 template < class EOT > class moGenSolContinue:public moSolContinue < EOT >
+00022 {
+00023 
+00024 public:
+00025 
+00027 
+00030   moGenSolContinue (unsigned __maxNumGen):maxNumGen (__maxNumGen), numGen (0)
+00031   {
+00032 
+00033   }
+00034 
+00036 
+00044   bool operator   () (const EOT & __sol)
+00045   {
+00046 
+00047     return (++numGen < maxNumGen);
+00048   }
+00049 
+00051 
+00054   void init ()
+00055   {
+00056 
+00057     numGen = 0;
+00058   }
+00059 
+00060 private:
+00061 
+00063   unsigned maxNumGen;
+00064 
+00066   unsigned numGen;
+00067 };
+00068 
+00069 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_h_c_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_h_c_8h-source.html new file mode 100644 index 000000000..bedbdc2c5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_h_c_8h-source.html @@ -0,0 +1,132 @@ + + +PARADISEO-MO: moHC.h Source File + + + + +
+
+

moHC.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moHC.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moHC_h
+00013 #define __moHC_h
+00014 
+00015 #include <eoOp.h>
+00016 #include <eoEvalFunc.h>
+00017 
+00018 #include "moAlgo.h"
+00019 #include "moMoveExpl.h"
+00020 #include "moHCMoveLoopExpl.h"
+00021 
+00023 
+00026 template < class M > class moHC:public moAlgo < typename M::EOType >
+00027 {
+00028 
+00030   typedef
+00031     typename
+00032     M::EOType
+00033     EOT;
+00034 
+00036   typedef
+00037     typename
+00038     EOT::Fitness
+00039     Fitness;
+00040 
+00041 public:
+00042 
+00044 
+00053 moHC (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval, moMoveSelect < M > &__move_select, eoEvalFunc < EOT > &__full_eval):move_expl (*new moHCMoveLoopExpl < M >
+00054              (__move_init, __next_move, __incr_eval, __move_select)),
+00055     full_eval (__full_eval)
+00056   {
+00057 
+00058   }
+00059 
+00061 
+00067 moHC (moMoveExpl < M > &__move_expl, eoEvalFunc < EOT > &__full_eval):move_expl (__move_expl),
+00068     full_eval
+00069     (__full_eval)
+00070   {
+00071 
+00072   }
+00073 
+00075 
+00082   bool operator   ()(EOT & __sol)
+00083   {
+00084 
+00085     if (__sol.invalid ())
+00086       {
+00087         full_eval (__sol);
+00088       }
+00089 
+00090     EOT new_sol;
+00091 
+00092     do
+00093       {
+00094 
+00095         new_sol = __sol;
+00096 
+00097         try
+00098         {
+00099 
+00100           move_expl (__sol, new_sol);
+00101 
+00102         }
+00103         catch (EmptySelection & __ex)
+00104         {
+00105 
+00106           break;
+00107         }
+00108 
+00109         if (new_sol.fitness () > __sol.fitness ())
+00110           {
+00111             __sol = new_sol;
+00112           }
+00113         else
+00114           {
+00115             break;
+00116           }
+00117 
+00118       }
+00119     while (true);
+00120 
+00121     return true;
+00122   }
+00123 
+00124 private:
+00125 
+00127   moMoveExpl < M > &move_expl;
+00128 
+00130   eoEvalFunc < EOT > &full_eval;
+00131 };
+00132 
+00133 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_h_c_move_loop_expl_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_h_c_move_loop_expl_8h-source.html new file mode 100644 index 000000000..ab5904d28 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_h_c_move_loop_expl_8h-source.html @@ -0,0 +1,115 @@ + + +PARADISEO-MO: moHCMoveLoopExpl.h Source File + + + + +
+
+

moHCMoveLoopExpl.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moHCMoveLoopExpl.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moHCMoveLoopExpl_h
+00013 #define __moHCMoveLoopExpl_h
+00014 
+00015 #include "moMoveLoopExpl.h"
+00016 
+00017 #include "moMoveInit.h"
+00018 #include "moNextMove.h"
+00019 #include "moMoveIncrEval.h"
+00020 #include "moMoveSelect.h"
+00021 
+00023 template < class M > class moHCMoveLoopExpl:public moMoveLoopExpl < M >
+00024 {
+00025 
+00027   typedef typename M::EOType EOT;
+00028 
+00030   typedef typename M::EOType::Fitness Fitness;
+00031 
+00032 public:
+00033 
+00035 
+00043 moHCMoveLoopExpl (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval, moMoveSelect < M > &__move_select):
+00044 
+00045   move_init (__move_init),
+00046     next_move (__next_move),
+00047     incr_eval (__incr_eval), move_select (__move_select)
+00048   {
+00049 
+00050   }
+00051 
+00053 
+00059   void operator   () (const EOT & __old_sol, EOT & __new_sol)
+00060   {
+00061 
+00062     M move;
+00063 
+00064     //
+00065     move_init (move, __old_sol);        /* Restarting the exploration of 
+00066                                            of the neighborhood ! */
+00067 
+00068     move_select.init (__old_sol.fitness ());
+00069 
+00070     while (move_select.update (move, incr_eval (move, __old_sol))
+00071            && next_move (move, __old_sol));
+00072 
+00073     try
+00074     {
+00075 
+00076       M best_move;
+00077 
+00078       Fitness best_move_fit;
+00079 
+00080       move_select (best_move, best_move_fit);
+00081       __new_sol.fitness (best_move_fit);
+00082       best_move (__new_sol);
+00083 
+00084     }
+00085     catch (EmptySelection & __ex)
+00086     {
+00087 
+00088       // ?
+00089     }
+00090   }
+00091 
+00092 private:
+00093 
+00095   moMoveInit < M > &move_init;
+00096 
+00098   moNextMove < M > &next_move;
+00099 
+00101   moMoveIncrEval < M > &incr_eval;
+00102 
+00104   moMoveSelect < M > &move_select;
+00105 
+00106 };
+00107 
+00108 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_impr_best_fit_aspir_crit_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_impr_best_fit_aspir_crit_8h-source.html new file mode 100644 index 000000000..4c7989a39 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_impr_best_fit_aspir_crit_8h-source.html @@ -0,0 +1,96 @@ + + +PARADISEO-MO: moImprBestFitAspirCrit.h Source File + + + + +
+
+

moImprBestFitAspirCrit.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moImprAspirCrit.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moImprBestFitAspirCrit_h
+00013 #define __moImprBestFitAspirCrit_h
+00014 
+00015 #include "moAspirCrit.h"
+00016 
+00018 
+00022 template < class M > class moImprBestFitAspirCrit:public moAspirCrit < M >
+00023 {
+00024 
+00025 public:
+00026 
+00028   typedef typename M::EOType::Fitness Fitness;
+00029 
+00031   moImprBestFitAspirCrit ()
+00032   {
+00033 
+00034     first_time = true;
+00035   }
+00036 
+00038   void init ()
+00039   {
+00040 
+00041     first_time = true;
+00042   }
+00043 
+00045 
+00052   bool operator   () (const M & __move, const Fitness & __fit)
+00053   {
+00054 
+00055     if (first_time)
+00056       {
+00057 
+00058         best_fit = __fit;
+00059         first_time = false;
+00060 
+00061         return true;
+00062       }
+00063     else if (__fit < best_fit)
+00064       return false;
+00065 
+00066     else
+00067       {
+00068 
+00069         best_fit = __fit;
+00070 
+00071         return true;
+00072       }
+00073   }
+00074 
+00075 private:
+00076 
+00078   Fitness best_fit;
+00079 
+00081   bool first_time;
+00082 };
+00083 
+00084 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_it_rand_next_move_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_it_rand_next_move_8h-source.html new file mode 100644 index 000000000..54a1efb64 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_it_rand_next_move_8h-source.html @@ -0,0 +1,92 @@ + + +PARADISEO-MO: moItRandNextMove.h Source File + + + + +
+
+

moItRandNextMove.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moNextMove.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moItRandNextMove_h
+00013 #define __moItRandNextMove_h
+00014 
+00015 #include "moNextMove.h"
+00016 #include "moRandMove.h"
+00017 
+00019 
+00022 template < class M > class moItRandNextMove:public moNextMove < M >
+00023 {
+00024 
+00026   typedef typename M::EOType EOT;
+00027 
+00028 public:
+00029 
+00031 
+00037   moItRandNextMove (moRandMove < M > &__rand_move,
+00038                     unsigned __max_iter):rand_move (__rand_move),
+00039     max_iter (__max_iter), num_iter (0)
+00040   {
+00041 
+00042   }
+00043 
+00045 
+00052   bool operator   () (M & __move, const EOT & __sol)
+00053   {
+00054 
+00055     if (num_iter++ > max_iter)
+00056       {
+00057 
+00058         num_iter = 0;
+00059         return false;
+00060       }
+00061     else
+00062       {
+00063 
+00064         /* The given solution is discarded here */
+00065         rand_move (__move);
+00066         num_iter++;
+00067         return true;
+00068       }
+00069   }
+00070 
+00071 private:
+00072 
+00074   moRandMove < M > &rand_move;
+00075 
+00077   unsigned max_iter;
+00078 
+00080   unsigned num_iter;
+00081 
+00082 };
+00083 
+00084 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_l_s_check_point_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_l_s_check_point_8h-source.html new file mode 100644 index 000000000..af13bcad3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_l_s_check_point_8h-source.html @@ -0,0 +1,80 @@ + + +PARADISEO-MO: moLSCheckPoint.h Source File + + + + +
+
+

moLSCheckPoint.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moLSCheckPoint.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003
+00006 
+00007 /* TEXT LICENCE
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moSolUpdater_h
+00013 #define __moSolUpdater_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00021 template < class M > class moLSCheckPoint:public eoBF < const M &, const typename
+00022   M::EOType &, void >
+00023 {
+00024 
+00025 public:
+00027 
+00033   void
+00034   operator   () (const M & __move, const typename M::EOType & __sol)
+00035   {
+00036 
+00037     for (unsigned i = 0; i < func.size (); i++)
+00038       {
+00039         func[i]->operator   ()(__move, __sol);
+00040       }
+00041   }
+00042 
+00044 
+00048   void
+00049   add (eoBF < const M &, const typename M::EOType &, void >&__f)
+00050   {
+00051 
+00052     func.push_back (&__f);
+00053   }
+00054 
+00055 private:
+00056 
+00058   std::vector < eoBF < const
+00059     M &, const
+00060     typename
+00061   M::EOType &, void >*>
+00062     func;
+00063 
+00064 };
+00065 
+00066 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_move_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_move_8h-source.html new file mode 100644 index 000000000..a44817a94 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_move_8h-source.html @@ -0,0 +1,54 @@ + + +PARADISEO-MO: moMove.h Source File + + + + +
+
+

moMove.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moMove.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* TEXT LICENCE
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moMove_h
+00013 #define __moMove_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00023 template < class EOT > class moMove:public eoUF < EOT &, void >
+00024 {
+00025 
+00026 public:
+00028   typedef EOT EOType;
+00029 
+00030 };
+00031 
+00032 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_move_expl_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_move_expl_8h-source.html new file mode 100644 index 000000000..f97760789 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_move_expl_8h-source.html @@ -0,0 +1,54 @@ + + +PARADISEO-MO: moMoveExpl.h Source File + + + + +
+
+

moMoveExpl.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "eoMoveExpl.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moMoveExpl_h
+00013 #define __moMoveExpl_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00021 template < class M > class moMoveExpl:public eoBF < const typename
+00022   M::EOType &,
+00023   typename
+00024 M::EOType &, void >
+00025 {
+00026 
+00027 };
+00028 
+00029 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_move_incr_eval_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_move_incr_eval_8h-source.html new file mode 100644 index 000000000..70ddf932e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_move_incr_eval_8h-source.html @@ -0,0 +1,54 @@ + + +PARADISEO-MO: moMoveIncrEval.h Source File + + + + +
+
+

moMoveIncrEval.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "eoMoveIncrEval.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moMoveIncrEval_h
+00013 #define __moMoveIncrEval_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00024 template < class M > class moMoveIncrEval:public eoBF < const M &, const typename
+00025   M::EOType &,
+00026   typename
+00027   M::EOType::Fitness >
+00028 {
+00029 
+00030 };
+00031 
+00032 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_move_init_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_move_init_8h-source.html new file mode 100644 index 000000000..8e6165ef3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_move_init_8h-source.html @@ -0,0 +1,52 @@ + + +PARADISEO-MO: moMoveInit.h Source File + + + + +
+
+

moMoveInit.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moMoveInit.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moMoveInit_h
+00013 #define __moMoveInit_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00022 template < class M > class moMoveInit:public eoBF < M &, const typename
+00023 M::EOType &, void >
+00024 {
+00025 
+00026 };
+00027 
+00028 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_move_loop_expl_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_move_loop_expl_8h-source.html new file mode 100644 index 000000000..bb5fc5222 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_move_loop_expl_8h-source.html @@ -0,0 +1,51 @@ + + +PARADISEO-MO: moMoveLoopExpl.h Source File + + + + +
+
+

moMoveLoopExpl.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moMoveLoopExpl.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* TEXT LICENCE
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moMoveLoopExpl_h
+00013 #define __moMoveLoopExpl_h
+00014 
+00015 #include "moMoveExpl.h"
+00016 
+00018 
+00021 template < class M > class moMoveLoopExpl:public moMoveExpl < M >
+00022 {
+00023 
+00024 };
+00025 
+00026 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_move_select_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_move_select_8h-source.html new file mode 100644 index 000000000..5ecde3ab0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_move_select_8h-source.html @@ -0,0 +1,72 @@ + + +PARADISEO-MO: moMoveSelect.h Source File + + + + +
+
+

moMoveSelect.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moMoveSelect.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* TEXT LICENCE
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moMoveSelect_h
+00013 #define __moMoveSelect_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00021 class EmptySelection
+00022 {
+00023 
+00024 };
+00025 
+00027 
+00032 template < class M > class moMoveSelect:public eoBF < M &, typename M::EOType::Fitness &,
+00033   void >
+00034 {
+00035 public:
+00037   typedef
+00038     typename
+00039     M::EOType::Fitness
+00040     Fitness;
+00041 
+00043 
+00050   virtual void
+00051   init (const Fitness & __fit) = 0;
+00052 
+00054 
+00059   virtual
+00060     bool
+00061   update (const M & __move, const Fitness & __fit) = 0;
+00062 
+00063 };
+00064 
+00065 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_next_move_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_next_move_8h-source.html new file mode 100644 index 000000000..c07b9bcaf --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_next_move_8h-source.html @@ -0,0 +1,53 @@ + + +PARADISEO-MO: moNextMove.h Source File + + + + +
+
+

moNextMove.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moNextMove.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moNextMove_h
+00013 #define __moNextMove_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00022 template < class M > class moNextMove:public eoBF < M &, const typename
+00023   M::EOType &,
+00024   bool >
+00025 {
+00026 
+00027 };
+00028 
+00029 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_no_aspir_crit_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_no_aspir_crit_8h-source.html new file mode 100644 index 000000000..38731a6dd --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_no_aspir_crit_8h-source.html @@ -0,0 +1,63 @@ + + +PARADISEO-MO: moNoAspirCrit.h Source File + + + + +
+
+

moNoAspirCrit.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "eoNoAspirCrit.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* TEXT LICENCE
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moNoAspirCrit_h
+00013 #define __moNoAspirCrit_h
+00014 
+00015 #include "moAspirCrit.h"
+00016 
+00018 
+00021 template < class M > class moNoAspirCrit:public moAspirCrit < M >
+00022 {
+00023 
+00025 
+00032   bool operator   () (const M & __move,
+00033                       const typename M::EOType::Fitness & __sol)
+00034   {
+00035 
+00036     return false;
+00037   }
+00038 
+00040 
+00043   void init ()
+00044   {
+00045   }
+00046 };
+00047 
+00048 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_rand_impr_select_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_rand_impr_select_8h-source.html new file mode 100644 index 000000000..422c80aa7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_rand_impr_select_8h-source.html @@ -0,0 +1,103 @@ + + +PARADISEO-MO: moRandImprSelect.h Source File + + + + +
+
+

moRandImprSelect.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moRandImprSelect.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moRandImprSelect_h
+00013 #define __moRandImprSelect_h
+00014 
+00015 #include <vector>
+00016 
+00017 #include <utils/eoRNG.h>
+00018 #include "moMoveSelect.h"
+00019 
+00021 
+00025 template < class M > class moRandImprSelect:public moMoveSelect < M >
+00026 {
+00027 
+00028 public:
+00029 
+00031   typedef typename M::EOType::Fitness Fitness;
+00032 
+00034 
+00040   void init (const Fitness & __fit)
+00041   {
+00042     init_fit = __fit;
+00043     vect_better_fit.clear ();
+00044     vect_better_moves.clear ();
+00045   }
+00046 
+00048 
+00056   bool update (const M & __move, const Fitness & __fit)
+00057   {
+00058 
+00059     if (__fit > init_fit)
+00060       {
+00061 
+00062         vect_better_fit.push_back (__fit);
+00063         vect_better_moves.push_back (__move);
+00064       }
+00065 
+00066     return true;
+00067   }
+00068 
+00070 
+00077   void operator   () (M & __move, Fitness & __fit) throw (EmptySelection)
+00078   {
+00079 
+00080     if (!vect_better_fit.empty ())
+00081       {
+00082 
+00083         unsigned n = rng.random (vect_better_fit.size ());
+00084 
+00085         __move = vect_better_moves[n];
+00086         __fit = vect_better_fit[n];
+00087       }
+00088     else
+00089       throw EmptySelection ();
+00090   }
+00091 
+00092 private:
+00093 
+00095   Fitness init_fit;
+00096 
+00098   std::vector < Fitness > vect_better_fit;
+00099 
+00101   std::vector < M > vect_better_moves;
+00102 };
+00103 
+00104 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_rand_move_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_rand_move_8h-source.html new file mode 100644 index 000000000..f3393c03d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_rand_move_8h-source.html @@ -0,0 +1,51 @@ + + +PARADISEO-MO: moRandMove.h Source File + + + + +
+
+

moRandMove.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moRandMove.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moRandMove_h
+00013 #define __moRandMove_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00021 template < class M > class moRandMove:public eoUF < M &, void >
+00022 {
+00023 
+00024 };
+00025 
+00026 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_s_a_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_s_a_8h-source.html new file mode 100644 index 000000000..2cea3d49b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_s_a_8h-source.html @@ -0,0 +1,154 @@ + + +PARADISEO-MO: moSA.h Source File + + + + +
+
+

moSA.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moSA.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moSA_h
+00013 #define __moSA_h
+00014 
+00015 #include <unistd.h>
+00016 
+00017 #include <eoOp.h>
+00018 #include <eoEvalFunc.h>
+00019 
+00020 #include "moAlgo.h"
+00021 #include "moRandMove.h"
+00022 #include "moMoveIncrEval.h"
+00023 #include "moCoolSched.h"
+00024 #include "moSolContinue.h"
+00025 
+00026 #include <math.h>
+00027 
+00029 
+00032 template < class M > class moSA:public moAlgo < typename M::EOType >
+00033 {
+00034 
+00036   typedef
+00037     typename
+00038     M::EOType
+00039     EOT;
+00040 
+00042   typedef
+00043     typename
+00044     EOT::Fitness
+00045     Fitness;
+00046 
+00047 public:
+00048 
+00050 
+00060   moSA (moRandMove < M > &__move_rand,
+00061         moMoveIncrEval < M > &__incr_eval,
+00062         moSolContinue < EOT > &__cont,
+00063         double __init_temp,
+00064         moCoolSched & __cool_sched, eoEvalFunc < EOT > &__full_eval):
+00065   move_rand (__move_rand),
+00066   incr_eval (__incr_eval),
+00067   cont (__cont),
+00068   init_temp (__init_temp),
+00069   cool_sched (__cool_sched),
+00070   full_eval (__full_eval)
+00071   {
+00072 
+00073   }
+00074 
+00076 
+00082   bool operator   ()(EOT & __sol)
+00083   {
+00084 
+00085     if (__sol.invalid ())
+00086       {
+00087         full_eval (__sol);
+00088       }
+00089 
+00090     double
+00091       temp = init_temp;
+00092 
+00093     M move;
+00094 
+00095     EOT best_sol = __sol;
+00096 
+00097     do
+00098       {
+00099 
+00100         cont.init ();
+00101         do
+00102           {
+00103 
+00104             move_rand (move);
+00105 
+00106             Fitness delta_fit = incr_eval (move, __sol) - __sol.fitness ();
+00107 
+00108             if (delta_fit > 0 || rng.uniform () < exp (delta_fit / temp))
+00109               {
+00110 
+00111                 __sol.fitness (incr_eval (move, __sol));
+00112                 move (__sol);
+00113 
+00114                 /* Updating the best solution found
+00115                    until now ? */
+00116                 if (__sol.fitness () > best_sol.fitness ())
+00117                   best_sol = __sol;
+00118               }
+00119 
+00120           }
+00121         while (cont (__sol));
+00122 
+00123       }
+00124     while (cool_sched (temp));
+00125 
+00126     __sol = best_sol;
+00127 
+00128     return true;
+00129   }
+00130 
+00131 private:
+00132 
+00134   moRandMove < M > &move_rand;
+00135 
+00137   moMoveIncrEval < M > &incr_eval;
+00138 
+00140   moSolContinue < EOT > &cont;
+00141 
+00143   double
+00144     init_temp;
+00145 
+00147   moCoolSched & cool_sched;
+00148 
+00150   eoEvalFunc < EOT > &full_eval;        // Full evaluator.
+00151 };
+00152 
+00153 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_sol_continue_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_sol_continue_8h-source.html new file mode 100644 index 000000000..222230668 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_sol_continue_8h-source.html @@ -0,0 +1,54 @@ + + +PARADISEO-MO: moSolContinue.h Source File + + + + +
+
+

moSolContinue.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moSolContinue.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moSolContinue_h
+00013 #define __moSolContinue_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00022 template < class EOT > class moSolContinue:public eoUF < const EOT &, bool >
+00023 {
+00024 
+00025 public:
+00027 
+00030   virtual void init () = 0;
+00031 };
+00032 
+00033 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_t_s_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_t_s_8h-source.html new file mode 100644 index 000000000..93c498677 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_t_s_8h-source.html @@ -0,0 +1,174 @@ + + +PARADISEO-MO: moTS.h Source File + + + + +
+
+

moTS.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moTS.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008       
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moTS_h
+00013 #define __moTS_h
+00014 
+00015 #include <eoOp.h>
+00016 #include <eoEvalFunc.h>
+00017 
+00018 #include "moAlgo.h"
+00019 #include "moSolContinue.h"
+00020 
+00021 #include "moMoveExpl.h"
+00022 #include "moTSMoveLoopExpl.h"
+00023 
+00024 #include <pthread.h>
+00025 
+00027 
+00030 template < class M > class moTS:public moAlgo < typename M::EOType >
+00031 {
+00032 
+00034   typedef
+00035     typename
+00036     M::EOType
+00037     EOT;
+00038 
+00040   typedef
+00041     typename
+00042     EOT::Fitness
+00043     Fitness;
+00044 
+00045 public:
+00046 
+00048 
+00059 moTS (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval, moTabuList < M > &__tabu_list, moAspirCrit < M > &__aspir_crit, moSolContinue < EOT > &__cont, eoEvalFunc < EOT > &__full_eval):move_expl (*new moTSMoveLoopExpl < M >
+00060              (__move_init, __next_move, __incr_eval, __tabu_list,
+00061               __aspir_crit)), cont (__cont), full_eval (__full_eval)
+00062   {
+00063 
+00064     if (first_time)
+00065       {
+00066 
+00067         pthread_mutex_init (&mutex, 0);
+00068 
+00069         first_time = false;
+00070       }
+00071   }
+00072 
+00074 
+00081 moTS (moMoveExpl < M > &__move_expl, moSolContinue < EOT > &__cont, eoEvalFunc < EOT > &__full_eval):move_expl (__move_expl),
+00082     cont (__cont),
+00083     full_eval (__full_eval)
+00084   {
+00085 
+00086     if (first_time)
+00087       {
+00088 
+00089         pthread_mutex_init (&mutex, 0);
+00090 
+00091         first_time = false;
+00092       }
+00093   }
+00094 
+00096 
+00104   bool operator   ()(EOT & __sol)
+00105   {
+00106 
+00107     pthread_mutex_lock (&mutex);
+00108 
+00109     if (__sol.invalid ())
+00110       {
+00111         full_eval (__sol);
+00112       }
+00113 
+00114     M move;
+00115 
+00116     EOT best_sol = __sol, new_sol;
+00117 
+00118     cont.init ();
+00119 
+00120     do
+00121       {
+00122 
+00123         new_sol = __sol;
+00124 
+00125         try
+00126         {
+00127 
+00128           move_expl (__sol, new_sol);
+00129 
+00130         }
+00131         catch (EmptySelection & __ex)
+00132         {
+00133 
+00134           break;
+00135         }
+00136 
+00137         /* Updating the best solution
+00138            found until now ? */
+00139         if (new_sol.fitness () > __sol.fitness ())
+00140           {
+00141             best_sol = new_sol;
+00142           }
+00143 
+00144         __sol = new_sol;
+00145 
+00146       }
+00147     while (cont (__sol));
+00148 
+00149     __sol = best_sol;
+00150 
+00151     pthread_mutex_unlock (&mutex);
+00152 
+00153     return true;
+00154   }
+00155 
+00156 private:
+00157 
+00159   static
+00160     bool
+00161     first_time;
+00162 
+00164   static
+00165     pthread_mutex_t
+00166     mutex;
+00167 
+00169   moMoveExpl < M > &move_expl;
+00170 
+00172   moSolContinue < EOT > &cont;
+00173 
+00175   eoEvalFunc < EOT > &full_eval;
+00176 };
+00177 
+00179 template < class EOT > pthread_mutex_t moTS < EOT >::mutex;
+00180 
+00182 template < class EOT > bool moTS < EOT >::first_time = true;
+00183 
+00184 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_t_s_move_loop_expl_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_t_s_move_loop_expl_8h-source.html new file mode 100644 index 000000000..89756df53 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_t_s_move_loop_expl_8h-source.html @@ -0,0 +1,134 @@ + + +PARADISEO-MO: moTSMoveLoopExpl.h Source File + + + + +
+
+

moTSMoveLoopExpl.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moTSMoveLoopExpl.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moTSMoveLoopExpl_h
+00013 #define __moTSMoveLoopExpl_h
+00014 
+00015 #include "moMoveLoopExpl.h"
+00016 
+00017 #include "moMoveInit.h"
+00018 #include "moNextMove.h"
+00019 #include "moMoveIncrEval.h"
+00020 #include "moMoveSelect.h"
+00021 
+00022 #include "moTabuList.h"
+00023 #include "moAspirCrit.h"
+00024 #include "moBestImprSelect.h"
+00025 
+00027 
+00030 template < class M > class moTSMoveLoopExpl:public moMoveLoopExpl < M >
+00031 {
+00032 
+00034   typedef typename M::EOType EOT;
+00035 
+00037   typedef typename M::EOType::Fitness Fitness;
+00038 
+00039 public:
+00040 
+00042 
+00049 moTSMoveLoopExpl (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval, moTabuList < M > &__tabu_list, moAspirCrit < M > &__aspir_crit):
+00050   move_init (__move_init),
+00051     next_move (__next_move),
+00052     incr_eval (__incr_eval),
+00053     tabu_list (__tabu_list), aspir_crit (__aspir_crit)
+00054   {
+00055 
+00056     tabu_list.init ();
+00057     aspir_crit.init ();
+00058   }
+00059 
+00061 
+00069   void operator   () (const EOT & __old_sol, EOT & __new_sol)
+00070   {
+00071 
+00072     M move;
+00073 
+00074 
+00075     move_init (move, __old_sol);        /* Restarting the exploration of 
+00076                                            of the neighborhood ! */
+00077 
+00078     move_select.init (__old_sol.fitness ());
+00079 
+00080     do
+00081       {
+00082 
+00083         Fitness fit = incr_eval (move, __old_sol);
+00084 
+00085         if (!tabu_list (move, __old_sol) || aspir_crit (move, fit))
+00086           {
+00087             if (!move_select.update (move, fit))
+00088               break;
+00089           }
+00090 
+00091       }
+00092     while (next_move (move, __old_sol));
+00093 
+00094     M best_move;
+00095 
+00096     Fitness best_move_fit;
+00097 
+00098     move_select (best_move, best_move_fit);
+00099 
+00100     __new_sol.fitness (best_move_fit);
+00101     best_move (__new_sol);
+00102 
+00103     /* Removing moves that are
+00104        no more tabu */
+00105     tabu_list.update ();
+00106 
+00107     // Updating the tabu list
+00108     tabu_list.add (best_move, __new_sol);
+00109   }
+00110 
+00111 private:
+00112 
+00114   moMoveInit < M > &move_init;
+00115 
+00117   moNextMove < M > &next_move;
+00118 
+00120   moMoveIncrEval < M > &incr_eval;
+00121 
+00123   moBestImprSelect < M > move_select;
+00124 
+00126   moTabuList < M > &tabu_list;
+00127 
+00129   moAspirCrit < M > &aspir_crit;
+00130 };
+00131 
+00132 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_tabu_list_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_tabu_list_8h-source.html new file mode 100644 index 000000000..84796410e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/mo_tabu_list_8h-source.html @@ -0,0 +1,71 @@ + + +PARADISEO-MO: moTabuList.h Source File + + + + +
+
+

moTabuList.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moTabuList.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT 
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moTabuList_h
+00013 #define __moTabuList_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00022 template < class M > class moTabuList:public eoBF < const M &, const typename
+00023   M::EOType &,
+00024   bool >
+00025 {
+00026 
+00027 public:
+00029   typedef
+00030     typename
+00031     M::EOType
+00032     EOT;
+00033 
+00034 
+00036 
+00042   virtual void
+00043   add (const M & __move, const EOT & __sol) = 0;
+00044 
+00046 
+00049   virtual void
+00050   update () = 0;
+00051 
+00053 
+00056   virtual void
+00057   init () = 0;
+00058 };
+00059 
+00060 #endif
+

Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/search.idx b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/search.idx new file mode 100644 index 000000000..2e0e0648e Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/search.idx differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/search.php b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/search.php new file mode 100644 index 000000000..0589134d5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/search.php @@ -0,0 +1,381 @@ + + +Search + + + + +
+
    +
  • Main Page
  • +
  • Classes
  • +
  • Files
  • +
  • +
    + + + + +1 document matching your query."; + } + else // $num>1 + { + return "Found $num documents matching your query. Showing best matches first."; + } +} + +function report_matches() +{ + return "Matches: "; +} +function end_form($value) +{ + echo " \n \n
    \n
    \n
  • \n
\n
\n"; +} + +function readInt($file) +{ + $b1 = ord(fgetc($file)); $b2 = ord(fgetc($file)); + $b3 = ord(fgetc($file)); $b4 = ord(fgetc($file)); + return ($b1<<24)|($b2<<16)|($b3<<8)|$b4; +} + +function readString($file) +{ + $result=""; + while (ord($c=fgetc($file))) $result.=$c; + return $result; +} + +function readHeader($file) +{ + $header =fgetc($file); $header.=fgetc($file); + $header.=fgetc($file); $header.=fgetc($file); + return $header; +} + +function computeIndex($word) +{ + // Fast string hashing + //$lword = strtolower($word); + //$l = strlen($lword); + //for ($i=0;$i<$l;$i++) + //{ + // $c = ord($lword{$i}); + // $v = (($v & 0xfc00) ^ ($v << 6) ^ $c) & 0xffff; + //} + //return $v; + + // Simple hashing that allows for substring search + if (strlen($word)<2) return -1; + // high char of the index + $hi = ord($word{0}); + if ($hi==0) return -1; + // low char of the index + $lo = ord($word{1}); + if ($lo==0) return -1; + // return index + return $hi*256+$lo; +} + +function search($file,$word,&$statsList) +{ + $index = computeIndex($word); + if ($index!=-1) // found a valid index + { + fseek($file,$index*4+4); // 4 bytes per entry, skip header + $index = readInt($file); + if ($index) // found words matching the hash key + { + $start=sizeof($statsList); + $count=$start; + fseek($file,$index); + $w = readString($file); + while ($w) + { + $statIdx = readInt($file); + if ($word==substr($w,0,strlen($word))) + { // found word that matches (as substring) + $statsList[$count++]=array( + "word"=>$word, + "match"=>$w, + "index"=>$statIdx, + "full"=>strlen($w)==strlen($word), + "docs"=>array() + ); + } + $w = readString($file); + } + $totalHi=0; + $totalFreqHi=0; + $totalFreqLo=0; + for ($count=$start;$count $idx, + "freq" => $freq>>1, + "rank" => 0.0, + "hi" => $freq&1 + ); + if ($freq&1) // word occurs in high priority doc + { + $totalHi++; + $totalFreqHi+=$freq*$multiplier; + } + else // word occurs in low priority doc + { + $totalFreqLo+=$freq*$multiplier; + } + } + // read name and url info for the doc + for ($i=0;$i<$numDocs;$i++) + { + fseek($file,$docInfo[$i]["idx"]); + $docInfo[$i]["name"]=readString($file); + $docInfo[$i]["url"]=readString($file); + } + $statInfo["docs"]=$docInfo; + } + $totalFreq=($totalHi+1)*$totalFreqLo + $totalFreqHi; + for ($count=$start;$count$key, + "name"=>$di["name"], + "rank"=>$rank + ); + } + $docs[$key]["words"][] = array( + "word"=>$wordInfo["word"], + "match"=>$wordInfo["match"], + "freq"=>$di["freq"] + ); + } + } + return $docs; +} + +function filter_results($docs,&$requiredWords,&$forbiddenWords) +{ + $filteredDocs=array(); + while (list ($key, $val) = each ($docs)) + { + $words = &$docs[$key]["words"]; + $copy=1; // copy entry by default + if (sizeof($requiredWords)>0) + { + foreach ($requiredWords as $reqWord) + { + $found=0; + foreach ($words as $wordInfo) + { + $found = $wordInfo["word"]==$reqWord; + if ($found) break; + } + if (!$found) + { + $copy=0; // document contains none of the required words + break; + } + } + } + if (sizeof($forbiddenWords)>0) + { + foreach ($words as $wordInfo) + { + if (in_array($wordInfo["word"],$forbiddenWords)) + { + $copy=0; // document contains a forbidden word + break; + } + } + } + if ($copy) $filteredDocs[$key]=$docs[$key]; + } + return $filteredDocs; +} + +function compare_rank($a,$b) +{ + if ($a["rank"] == $b["rank"]) + { + return 0; + } + return ($a["rank"]>$b["rank"]) ? -1 : 1; +} + +function sort_results($docs,&$sorted) +{ + $sorted = $docs; + usort($sorted,"compare_rank"); + return $sorted; +} + +function report_results(&$docs) +{ + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $numDocs = sizeof($docs); + if ($numDocs==0) + { + echo " \n"; + echo " \n"; + echo " \n"; + } + else + { + echo " \n"; + echo " \n"; + echo " \n"; + $num=1; + foreach ($docs as $doc) + { + echo " \n"; + echo " "; + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $num++; + } + } + echo "

".search_results()."

".matches_text(0)."
".matches_text($numDocs); + echo "\n"; + echo "
$num.".$doc["name"]."
".report_matches()." "; + foreach ($doc["words"] as $wordInfo) + { + $word = $wordInfo["word"]; + $matchRight = substr($wordInfo["match"],strlen($word)); + echo "$word$matchRight(".$wordInfo["freq"].") "; + } + echo "
\n"; +} + +function main() +{ + if(strcmp('4.1.0', phpversion()) > 0) + { + die("Error: PHP version 4.1.0 or above required!"); + } + if (!($file=fopen("search.idx","rb"))) + { + die("Error: Search index file could NOT be opened!"); + } + if (readHeader($file)!="DOXS") + { + die("Error: Header of index file is invalid!"); + } + $query=""; + if (array_key_exists("query", $_GET)) + { + $query=$_GET["query"]; + } + end_form($query); + echo " \n
\n"; + $results = array(); + $requiredWords = array(); + $forbiddenWords = array(); + $foundWords = array(); + $word=strtok($query," "); + while ($word) // for each word in the search query + { + if (($word{0}=='+')) { $word=substr($word,1); $requiredWords[]=$word; } + if (($word{0}=='-')) { $word=substr($word,1); $forbiddenWords[]=$word; } + if (!in_array($word,$foundWords)) + { + $foundWords[]=$word; + search($file,strtolower($word),$results); + } + $word=strtok(" "); + } + $docs = array(); + combine_results($results,$docs); + // filter out documents with forbidden word or that do not contain + // required words + $filteredDocs = filter_results($docs,$requiredWords,$forbiddenWords); + // sort the results based on rank + $sorted = array(); + sort_results($filteredDocs,$sorted); + // report results to the user + report_results($sorted); + echo "
\n"; + fclose($file); +} + +main(); + + +?> +
Generated on Thu Dec 21 10:49:59 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/tab_b.gif b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/tab_b.gif new file mode 100644 index 000000000..0d623483f Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/tab_b.gif differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/tab_l.gif b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/tab_l.gif new file mode 100644 index 000000000..9b1e6337c Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/tab_l.gif differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/tab_r.gif b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/tab_r.gif new file mode 100644 index 000000000..ce9dd9f53 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/tab_r.gif differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/tabs.css b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/tabs.css new file mode 100644 index 000000000..a61552a67 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI#current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI#current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/tree.html b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/tree.html new file mode 100644 index 000000000..4f9e90ea7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/html/tree.html @@ -0,0 +1,224 @@ + + + + + + + TreeView + + + + +
+

PARADISEO-MO

+
+

o*Welcome to PARADISEO-Moving Objects

+

o+Class List

+ +

o+Class Hierarchy

+ +

o*Class Members

+

\+File List

+
+

 o*index.h

+

 o*mo.h

+

 o*moAlgo.h

+

 o*moAspirCrit.h

+

 o*moBestImprSelect.h

+

 o*moCoolSched.h

+

 o*moEasyCoolSched.h

+

 o*moFirstImprSelect.h

+

 o*moGenSolContinue.h

+

 o*moHC.h

+

 o*moHCMoveLoopExpl.h

+

 o*moImprBestFitAspirCrit.h

+

 o*moItRandNextMove.h

+

 o*moLSCheckPoint.h

+

 o*moMove.h

+

 o*moMoveExpl.h

+

 o*moMoveIncrEval.h

+

 o*moMoveInit.h

+

 o*moMoveLoopExpl.h

+

 o*moMoveSelect.h

+

 o*moNextMove.h

+

 o*moNoAspirCrit.h

+

 o*moRandImprSelect.h

+

 o*moRandMove.h

+

 o*moSA.h

+

 o*moSolContinue.h

+

 o*moTabuList.h

+

 o*moTS.h

+

 \*moTSMoveLoopExpl.h

+
+
+
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/FreeSans.ttf b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/FreeSans.ttf new file mode 100644 index 000000000..b550b90ba Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/FreeSans.ttf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/Makefile b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/Makefile new file mode 100644 index 000000000..776fcf968 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/Makefile @@ -0,0 +1,39 @@ +all: clean refman.dvi + +ps: refman.ps + +pdf: refman.pdf + +ps_2on1: refman_2on1.ps + +pdf_2on1: refman_2on1.pdf + +refman.ps: refman.dvi + dvips -o refman.ps refman.dvi + +refman.pdf: refman.ps + ps2pdf refman.ps refman.pdf + +refman.dvi: refman.tex doxygen.sty + echo "Running latex..." + latex refman.tex + echo "Running makeindex..." + makeindex refman.idx + echo "Rerunning latex...." + latex refman.tex + latex_count=5 ; \ + while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + latex refman.tex ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + +refman_2on1.ps: refman.ps + psnup -2 refman.ps >refman_2on1.ps + +refman_2on1.pdf: refman_2on1.ps + ps2pdf refman_2on1.ps refman_2on1.pdf + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/annotated.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/annotated.tex new file mode 100644 index 000000000..ee1ee2025 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/annotated.tex @@ -0,0 +1,31 @@ +\section{PARADISEO-MO Class List} +Here are the classes, structs, unions and interfaces with brief descriptions:\begin{CompactList} +\item\contentsline{section}{{\bf Empty\-Selection} (Special class that describes the case of no selection )}{\pageref{class_empty_selection}}{} +\item\contentsline{section}{{\bf mo\-Algo$<$ EOT $>$} (Description of an algorithm of the paradiseo-mo library )}{\pageref{classmo_algo}}{} +\item\contentsline{section}{{\bf mo\-Aspir\-Crit$<$ M $>$} (Description of the conditions in which a tabu move could be accepted )}{\pageref{classmo_aspir_crit}}{} +\item\contentsline{section}{{\bf mo\-Best\-Impr\-Select$<$ M $>$} (One of the possible \doxyref{mo\-Move\-Select}{p.}{classmo_move_select} )}{\pageref{classmo_best_impr_select}}{} +\item\contentsline{section}{{\bf mo\-Cool\-Sched} (This class gives the description of a cooling schedule )}{\pageref{classmo_cool_sched}}{} +\item\contentsline{section}{{\bf mo\-Easy\-Cool\-Sched} (One of the possible \doxyref{mo\-Cool\-Sched}{p.}{classmo_cool_sched} )}{\pageref{classmo_easy_cool_sched}}{} +\item\contentsline{section}{{\bf mo\-First\-Impr\-Select$<$ M $>$} (One possible \doxyref{mo\-Move\-Select}{p.}{classmo_move_select} )}{\pageref{classmo_first_impr_select}}{} +\item\contentsline{section}{{\bf mo\-Gen\-Sol\-Continue$<$ EOT $>$} (One possible stop criterion for a solution-based heuristic )}{\pageref{classmo_gen_sol_continue}}{} +\item\contentsline{section}{{\bf mo\-HC$<$ M $>$} (Hill Climbing (HC) )}{\pageref{classmo_h_c}}{} +\item\contentsline{section}{{\bf mo\-HCMove\-Loop\-Expl$<$ M $>$} (Iterative explorer used by a \doxyref{mo\-HC}{p.}{classmo_h_c} )}{\pageref{classmo_h_c_move_loop_expl}}{} +\item\contentsline{section}{{\bf mo\-Impr\-Best\-Fit\-Aspir\-Crit$<$ M $>$} (One of the possible \doxyref{mo\-Aspir\-Crit}{p.}{classmo_aspir_crit} )}{\pageref{classmo_impr_best_fit_aspir_crit}}{} +\item\contentsline{section}{{\bf mo\-It\-Rand\-Next\-Move$<$ M $>$} (One of the possible \doxyref{mo\-Next\-Move}{p.}{classmo_next_move} )}{\pageref{classmo_it_rand_next_move}}{} +\item\contentsline{section}{{\bf mo\-LSCheck\-Point$<$ M $>$} (Class which allows a checkpointing system )}{\pageref{classmo_l_s_check_point}}{} +\item\contentsline{section}{{\bf mo\-Move$<$ EOT $>$} (Definition of a move )}{\pageref{classmo_move}}{} +\item\contentsline{section}{{\bf mo\-Move\-Expl$<$ M $>$} (Description of a move (\doxyref{mo\-Move}{p.}{classmo_move}) explorer )}{\pageref{classmo_move_expl}}{} +\item\contentsline{section}{{\bf mo\-Move\-Incr\-Eval$<$ M $>$} ((generally) Efficient evaluation function based a move and a solution )}{\pageref{classmo_move_incr_eval}}{} +\item\contentsline{section}{{\bf mo\-Move\-Init$<$ M $>$} (Move (\doxyref{mo\-Move}{p.}{classmo_move}) initializer )}{\pageref{classmo_move_init}}{} +\item\contentsline{section}{{\bf mo\-Move\-Loop\-Expl$<$ M $>$} (Class which describes an iterative explorer )}{\pageref{classmo_move_loop_expl}}{} +\item\contentsline{section}{{\bf mo\-Move\-Select$<$ M $>$} (Class that describes a move selector (\doxyref{mo\-Move}{p.}{classmo_move}) )}{\pageref{classmo_move_select}}{} +\item\contentsline{section}{{\bf mo\-Next\-Move$<$ M $>$} (Class which allows to generate a new move (\doxyref{mo\-Move}{p.}{classmo_move}) )}{\pageref{classmo_next_move}}{} +\item\contentsline{section}{{\bf mo\-No\-Aspir\-Crit$<$ M $>$} (One of the possible aspiration criterion (\doxyref{mo\-Aspir\-Crit}{p.}{classmo_aspir_crit}) )}{\pageref{classmo_no_aspir_crit}}{} +\item\contentsline{section}{{\bf mo\-Rand\-Impr\-Select$<$ M $>$} (One of the possible \doxyref{mo\-Move}{p.}{classmo_move} selector (\doxyref{mo\-Move\-Select}{p.}{classmo_move_select}) )}{\pageref{classmo_rand_impr_select}}{} +\item\contentsline{section}{{\bf mo\-Rand\-Move$<$ M $>$} (Random move generator )}{\pageref{classmo_rand_move}}{} +\item\contentsline{section}{{\bf mo\-SA$<$ M $>$} (Simulated Annealing (SA) )}{\pageref{classmo_s_a}}{} +\item\contentsline{section}{{\bf mo\-Sol\-Continue$<$ EOT $>$} (Class that describes a stop criterion for a solution-based heuristic )}{\pageref{classmo_sol_continue}}{} +\item\contentsline{section}{{\bf mo\-Tabu\-List$<$ M $>$} (Class describing a tabu list that a \doxyref{mo\-TS}{p.}{classmo_t_s} uses )}{\pageref{classmo_tabu_list}}{} +\item\contentsline{section}{{\bf mo\-TS$<$ M $>$} (Tabu Search (TS) )}{\pageref{classmo_t_s}}{} +\item\contentsline{section}{{\bf mo\-TSMove\-Loop\-Expl$<$ M $>$} (Explorer for a Tabu Search algorithm )}{\pageref{classmo_t_s_move_loop_expl}}{} +\end{CompactList} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/class_empty_selection.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/class_empty_selection.tex new file mode 100644 index 000000000..4b44303b4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/class_empty_selection.tex @@ -0,0 +1,21 @@ +\section{Empty\-Selection Class Reference} +\label{class_empty_selection}\index{EmptySelection@{EmptySelection}} +Special class that describes the case of no selection. + + +{\tt \#include $<$mo\-Move\-Select.h$>$} + + + +\subsection{Detailed Description} +Special class that describes the case of no selection. + +This class is used as an exception that can be thrown if a solution selector has completly failed. + + + +Definition at line 21 of file mo\-Move\-Select.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Move\-Select.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_algo.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_algo.tex new file mode 100644 index 000000000..bfd2994a6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_algo.tex @@ -0,0 +1,29 @@ +\section{mo\-Algo$<$ EOT $>$ Class Template Reference} +\label{classmo_algo}\index{moAlgo@{moAlgo}} +Description of an algorithm of the paradiseo-mo library. + + +{\tt \#include $<$mo\-Algo.h$>$} + +Inheritance diagram for mo\-Algo$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_algo} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class mo\-Algo$<$ EOT $>$} + +Description of an algorithm of the paradiseo-mo library. + +\doxyref{mo\-HC}{p.}{classmo_h_c}, \doxyref{mo\-TS}{p.}{classmo_t_s} and \doxyref{mo\-SA}{p.}{classmo_s_a} are 3 examples of algorithm of the paradiseo-mo library. + + + +Definition at line 21 of file mo\-Algo.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Algo.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_aspir_crit.eps b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_aspir_crit.eps new file mode 100644 index 000000000..7a0252d70 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_aspir_crit.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 218.579 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.2875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moAspirCrit< M >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) cw +(moImprBestFitAspirCrit< M >) cw +(moNoAspirCrit< M >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moAspirCrit< M >) 0.5 1 box + (eoBF< A1, A2, R >) 0.5 2 box + (eoFunctorBase) 0.5 3 box + (moImprBestFitAspirCrit< M >) 0 0 box + (moNoAspirCrit< M >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_aspir_crit.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_aspir_crit.tex new file mode 100644 index 000000000..646d32397 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_aspir_crit.tex @@ -0,0 +1,46 @@ +\section{mo\-Aspir\-Crit$<$ M $>$ Class Template Reference} +\label{classmo_aspir_crit}\index{moAspirCrit@{moAspirCrit}} +Description of the conditions in which a tabu move could be accepted. + + +{\tt \#include $<$mo\-Aspir\-Crit.h$>$} + +Inheritance diagram for mo\-Aspir\-Crit$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_aspir_crit} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +virtual void {\bf init} ()=0 +\begin{CompactList}\small\item\em Procedure which initialises all that needs a aspiration criterion. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Aspir\-Crit$<$ M $>$} + +Description of the conditions in which a tabu move could be accepted. + +It is only a description... An object that herits from this class is needed to be used in a \doxyref{mo\-TS}{p.}{classmo_t_s}. See mo\-No\-Aspri\-Crit for example. + + + +Definition at line 22 of file mo\-Aspir\-Crit.h. + +\subsection{Member Function Documentation} +\index{moAspirCrit@{mo\-Aspir\-Crit}!init@{init}} +\index{init@{init}!moAspirCrit@{mo\-Aspir\-Crit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual void {\bf mo\-Aspir\-Crit}$<$ M $>$::init ()\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_aspir_crit_a8ce84510a5ec7c9078381e542c6d140} + + +Procedure which initialises all that needs a aspiration criterion. + +It can be possible that this procedure do nothing... + +Implemented in {\bf mo\-Impr\-Best\-Fit\-Aspir\-Crit$<$ M $>$} \doxyref{}{p.}{classmo_impr_best_fit_aspir_crit_ffa451a14ff4ea86fb8bd9fdbc348630}, and {\bf mo\-No\-Aspir\-Crit$<$ M $>$} \doxyref{}{p.}{classmo_no_aspir_crit_f3a286fc4c2d36bd390ba9a3074f3037}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Aspir\-Crit.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_best_impr_select.eps b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_best_impr_select.eps new file mode 100644 index 000000000..e1504ce28 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_best_impr_select.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 303.03 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.65 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moBestImprSelect< M >) cw +(moMoveSelect< M >) cw +(eoBF< M &, M::EOType::Fitness &, void >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moBestImprSelect< M >) 0 0 box + (moMoveSelect< M >) 0 1 box + (eoBF< M &, M::EOType::Fitness &, void >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_best_impr_select.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_best_impr_select.tex new file mode 100644 index 000000000..baf716c2f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_best_impr_select.tex @@ -0,0 +1,105 @@ +\section{mo\-Best\-Impr\-Select$<$ M $>$ Class Template Reference} +\label{classmo_best_impr_select}\index{moBestImprSelect@{moBestImprSelect}} +One of the possible \doxyref{mo\-Move\-Select}{p.}{classmo_move_select}. + + +{\tt \#include $<$mo\-Best\-Impr\-Select.h$>$} + +Inheritance diagram for mo\-Best\-Impr\-Select$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_best_impr_select} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_best_impr_select_c4ae17435221fb0a8e8acd285210cfcb} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +void {\bf init} (const {\bf Fitness} \&\_\-\_\-fit)\label{classmo_best_impr_select_2d2abf9aa17dc77cbb4f41810ab7b956} + +\begin{CompactList}\small\item\em Procedure which initialise the exploration. \item\end{CompactList}\item +bool {\bf update} (const M \&\_\-\_\-move, const {\bf Fitness} \&\_\-\_\-fit) +\begin{CompactList}\small\item\em Function that indicates if the current move has not improved the fitness. \item\end{CompactList}\item +void {\bf operator()} (M \&\_\-\_\-move, {\bf Fitness} \&\_\-\_\-fit) throw (Empty\-Selection) +\begin{CompactList}\small\item\em Procedure which saved the best move and fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +bool {\bf first\_\-time}\label{classmo_best_impr_select_352b14d206b0772eb9f40efb7beb0f13} + +\begin{CompactList}\small\item\em Allowing to know if at least one move has been generated. \item\end{CompactList}\item +M {\bf best\_\-move}\label{classmo_best_impr_select_bd86f70519f954c07ff0d8a2a3a8ff6a} + +\begin{CompactList}\small\item\em The best move. \item\end{CompactList}\item +{\bf Fitness} {\bf best\_\-fit}\label{classmo_best_impr_select_dcac897424b5805f146bb1dbb429f2fe} + +\begin{CompactList}\small\item\em The best fitness. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Best\-Impr\-Select$<$ M $>$} + +One of the possible \doxyref{mo\-Move\-Select}{p.}{classmo_move_select}. + +All neighbors are considered, and the movement which enables the best improvement is selected. + + + +Definition at line 22 of file mo\-Best\-Impr\-Select.h. + +\subsection{Member Function Documentation} +\index{moBestImprSelect@{mo\-Best\-Impr\-Select}!update@{update}} +\index{update@{update}!moBestImprSelect@{mo\-Best\-Impr\-Select}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf mo\-Best\-Impr\-Select}$<$ M $>$::update (const M \& {\em \_\-\_\-move}, const {\bf Fitness} \& {\em \_\-\_\-fit})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_best_impr_select_d10e3e6f8a0277731e95ef506d064d6d} + + +Function that indicates if the current move has not improved the fitness. + +If the given fitness enables an improvment, the move (\doxyref{mo\-Move}{p.}{classmo_move}) and the fitness linked to this move are saved. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]a move. \item[{\em \_\-\_\-fit}]a fitness linked to the move. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]TRUE if the move does not improve the fitness. \end{Desc} + + +Implements {\bf mo\-Move\-Select$<$ M $>$} \doxyref{}{p.}{classmo_move_select_7c157b6e64fd417acf6e900059204eb1}. + +Definition at line 47 of file mo\-Best\-Impr\-Select.h. + +References mo\-Best\-Impr\-Select$<$ M $>$::best\_\-fit, mo\-Best\-Impr\-Select$<$ M $>$::best\_\-move, and mo\-Best\-Impr\-Select$<$ M $>$::first\_\-time.\index{moBestImprSelect@{mo\-Best\-Impr\-Select}!operator()@{operator()}} +\index{operator()@{operator()}!moBestImprSelect@{mo\-Best\-Impr\-Select}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-Best\-Impr\-Select}$<$ M $>$::operator() (M \& {\em \_\-\_\-move}, {\bf Fitness} \& {\em \_\-\_\-fit}) throw ({\bf Empty\-Selection})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_best_impr_select_169773d4d127acd782cf379f758222da} + + +Procedure which saved the best move and fitness. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]the current move (result of the procedure). \item[{\em \_\-\_\-fit}]the current fitness (result of the procedure). \end{description} +\end{Desc} +\begin{Desc} +\item[Exceptions:] +\begin{description} +\item[{\em \doxyref{Empty\-Selection}{p.}{class_empty_selection}}]if no move has improved the fitness. \end{description} +\end{Desc} + + +Implements {\bf eo\-BF$<$ M \&, M::EOType::Fitness \&, void $>$}. + +Definition at line 68 of file mo\-Best\-Impr\-Select.h. + +References mo\-Best\-Impr\-Select$<$ M $>$::best\_\-fit, mo\-Best\-Impr\-Select$<$ M $>$::best\_\-move, and mo\-Best\-Impr\-Select$<$ M $>$::first\_\-time. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Best\-Impr\-Select.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_cool_sched.eps b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_cool_sched.eps new file mode 100644 index 000000000..881e79dfc --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_cool_sched.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 503.145 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 0.99375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moCoolSched) cw +(eoUF< double &, bool >) cw +(eoFunctorBase) cw +(moEasyCoolSched) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moCoolSched) 0 1 box + (eoUF< double &, bool >) 0 2 box + (eoFunctorBase) 0 3 box + (moEasyCoolSched) 0 0 box + +% ----- relations ----- + +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in +solid +1 0 0.25 out +solid +0 0 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_cool_sched.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_cool_sched.tex new file mode 100644 index 000000000..419ecef30 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_cool_sched.tex @@ -0,0 +1,27 @@ +\section{mo\-Cool\-Sched Class Reference} +\label{classmo_cool_sched}\index{moCoolSched@{moCoolSched}} +This class gives the description of a cooling schedule. + + +{\tt \#include $<$mo\-Cool\-Sched.h$>$} + +Inheritance diagram for mo\-Cool\-Sched::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_cool_sched} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +This class gives the description of a cooling schedule. + +It is only a description... An object that herits from this class is needed to be used in a \doxyref{mo\-SA}{p.}{classmo_s_a}. See \doxyref{mo\-Easy\-Cool\-Sched}{p.}{classmo_easy_cool_sched} for example. + + + +Definition at line 22 of file mo\-Cool\-Sched.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Cool\-Sched.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_easy_cool_sched.eps b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_easy_cool_sched.eps new file mode 100644 index 000000000..debf9710c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_easy_cool_sched.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 503.145 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 0.99375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moEasyCoolSched) cw +(moCoolSched) cw +(eoUF< double &, bool >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moEasyCoolSched) 0 0 box + (moCoolSched) 0 1 box + (eoUF< double &, bool >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_easy_cool_sched.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_easy_cool_sched.tex new file mode 100644 index 000000000..b4d16cfe1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_easy_cool_sched.tex @@ -0,0 +1,85 @@ +\section{mo\-Easy\-Cool\-Sched Class Reference} +\label{classmo_easy_cool_sched}\index{moEasyCoolSched@{moEasyCoolSched}} +One of the possible \doxyref{mo\-Cool\-Sched}{p.}{classmo_cool_sched}. + + +{\tt \#include $<$mo\-Easy\-Cool\-Sched.h$>$} + +Inheritance diagram for mo\-Easy\-Cool\-Sched::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_easy_cool_sched} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf mo\-Easy\-Cool\-Sched} (double \_\-\_\-threshold, double \_\-\_\-ratio) +\begin{CompactList}\small\item\em Simple constructor. \item\end{CompactList}\item +bool {\bf operator()} (double \&\_\-\_\-temp) +\begin{CompactList}\small\item\em Function which proceeds to the cooling. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +double {\bf threshold}\label{classmo_easy_cool_sched_3dd53700390b7bb6428db80e01626c83} + +\begin{CompactList}\small\item\em The temperature threhold. \item\end{CompactList}\item +double {\bf ratio}\label{classmo_easy_cool_sched_1f84deff87defafd927e8c323b188f38} + +\begin{CompactList}\small\item\em The decreasing factor of the temperature. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +One of the possible \doxyref{mo\-Cool\-Sched}{p.}{classmo_cool_sched}. + +The simpliest, the temperature decrease according to a ratio until it greater than a threshold. + + + +Definition at line 22 of file mo\-Easy\-Cool\-Sched.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moEasyCoolSched@{mo\-Easy\-Cool\-Sched}!moEasyCoolSched@{moEasyCoolSched}} +\index{moEasyCoolSched@{moEasyCoolSched}!moEasyCoolSched@{mo\-Easy\-Cool\-Sched}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}mo\-Easy\-Cool\-Sched::mo\-Easy\-Cool\-Sched (double {\em \_\-\_\-threshold}, double {\em \_\-\_\-ratio})\hspace{0.3cm}{\tt [inline]}}\label{classmo_easy_cool_sched_c556b41343700293bb17e3b20d81e0f2} + + +Simple constructor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-threshold}]the threshold. \item[{\em \_\-\_\-ratio}]the ratio used to descrease the temperature. \end{description} +\end{Desc} + + +Definition at line 31 of file mo\-Easy\-Cool\-Sched.h. + +\subsection{Member Function Documentation} +\index{moEasyCoolSched@{mo\-Easy\-Cool\-Sched}!operator()@{operator()}} +\index{operator()@{operator()}!moEasyCoolSched@{mo\-Easy\-Cool\-Sched}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool mo\-Easy\-Cool\-Sched::operator() (double \& {\em \_\-\_\-temp})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_easy_cool_sched_ca08df878417ef1124e6933a9c2d7a0b} + + +Function which proceeds to the cooling. + +Decrease the temperature and indicates if it is greater than the threshold. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-temp}]the current temperature. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]if the new temperature (current temperature $\ast$ ratio) is greater than the threshold. \end{Desc} + + +Implements {\bf eo\-UF$<$ double \&, bool $>$}. + +Definition at line 44 of file mo\-Easy\-Cool\-Sched.h. + +References ratio, and threshold. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Easy\-Cool\-Sched.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_first_impr_select.eps b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_first_impr_select.eps new file mode 100644 index 000000000..7057473a9 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_first_impr_select.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 303.03 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.65 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moFirstImprSelect< M >) cw +(moMoveSelect< M >) cw +(eoBF< M &, M::EOType::Fitness &, void >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moFirstImprSelect< M >) 0 0 box + (moMoveSelect< M >) 0 1 box + (eoBF< M &, M::EOType::Fitness &, void >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_first_impr_select.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_first_impr_select.tex new file mode 100644 index 000000000..e28acfa68 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_first_impr_select.tex @@ -0,0 +1,118 @@ +\section{mo\-First\-Impr\-Select$<$ M $>$ Class Template Reference} +\label{classmo_first_impr_select}\index{moFirstImprSelect@{moFirstImprSelect}} +One possible \doxyref{mo\-Move\-Select}{p.}{classmo_move_select}. + + +{\tt \#include $<$mo\-First\-Impr\-Select.h$>$} + +Inheritance diagram for mo\-First\-Impr\-Select$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_first_impr_select} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_first_impr_select_64763ce3e6d2873266624382b407fa5a} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +virtual void {\bf init} (const {\bf Fitness} \&\_\-\_\-fit) +\begin{CompactList}\small\item\em Procedure which initialise the exploration. \item\end{CompactList}\item +bool {\bf update} (const M \&\_\-\_\-move, const typename M::EOType::Fitness \&\_\-\_\-fit) +\begin{CompactList}\small\item\em Function that indicates if the current move has not improved the fitness. \item\end{CompactList}\item +void {\bf operator()} (M \&\_\-\_\-move, {\bf Fitness} \&\_\-\_\-fit) throw (Empty\-Selection) +\begin{CompactList}\small\item\em Procedure which saved the best move and fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +bool {\bf valid}\label{classmo_first_impr_select_a99c0586ba07449234705c17a258d58c} + +\begin{CompactList}\small\item\em Allow to know if at least one move has improved the solution. \item\end{CompactList}\item +M {\bf best\_\-move}\label{classmo_first_impr_select_dfed419a608dd7c41f07fa1f1279cb8c} + +\begin{CompactList}\small\item\em Best stored movement. \item\end{CompactList}\item +{\bf Fitness} {\bf init\_\-fit}\label{classmo_first_impr_select_ce7ba63e8cc3a9164f4e546477e98ca8} + +\begin{CompactList}\small\item\em Initial fitness. \item\end{CompactList}\item +{\bf Fitness} {\bf best\_\-fit}\label{classmo_first_impr_select_e1190347b76ec6fe717be32354b4a9a9} + +\begin{CompactList}\small\item\em Best stored fitness. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-First\-Impr\-Select$<$ M $>$} + +One possible \doxyref{mo\-Move\-Select}{p.}{classmo_move_select}. + +The neighborhood is explored until a move enables an improvment of the current solution. + + + +Definition at line 23 of file mo\-First\-Impr\-Select.h. + +\subsection{Member Function Documentation} +\index{moFirstImprSelect@{mo\-First\-Impr\-Select}!init@{init}} +\index{init@{init}!moFirstImprSelect@{mo\-First\-Impr\-Select}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual void {\bf mo\-First\-Impr\-Select}$<$ M $>$::init (const {\bf Fitness} \& {\em \_\-\_\-fit})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_first_impr_select_4c5ce18ede46247a439c68f6954a4055} + + +Procedure which initialise the exploration. + +It save the current fitness as the initial value for the fitness. + +Implements {\bf mo\-Move\-Select$<$ M $>$} \doxyref{}{p.}{classmo_move_select_bca4c43f13d26eca7163aeb272a4a52e}. + +Definition at line 35 of file mo\-First\-Impr\-Select.h. + +References mo\-First\-Impr\-Select$<$ M $>$::init\_\-fit, and mo\-First\-Impr\-Select$<$ M $>$::valid.\index{moFirstImprSelect@{mo\-First\-Impr\-Select}!update@{update}} +\index{update@{update}!moFirstImprSelect@{mo\-First\-Impr\-Select}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf mo\-First\-Impr\-Select}$<$ M $>$::update (const M \& {\em \_\-\_\-move}, const typename M::EOType::Fitness \& {\em \_\-\_\-fit})\hspace{0.3cm}{\tt [inline]}}\label{classmo_first_impr_select_7ba0882728daedc75c249647c070ccf0} + + +Function that indicates if the current move has not improved the fitness. + +If the given fitness enables an improvment, the move (\doxyref{mo\-Move}{p.}{classmo_move}) should be applied to the current solution. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]a move. \item[{\em \_\-\_\-fit}]a fitness linked to the move. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]TRUE if the move does not improve the fitness. \end{Desc} + + +Definition at line 52 of file mo\-First\-Impr\-Select.h. + +References mo\-First\-Impr\-Select$<$ M $>$::best\_\-fit, mo\-First\-Impr\-Select$<$ M $>$::best\_\-move, mo\-First\-Impr\-Select$<$ M $>$::init\_\-fit, and mo\-First\-Impr\-Select$<$ M $>$::valid.\index{moFirstImprSelect@{mo\-First\-Impr\-Select}!operator()@{operator()}} +\index{operator()@{operator()}!moFirstImprSelect@{mo\-First\-Impr\-Select}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-First\-Impr\-Select}$<$ M $>$::operator() (M \& {\em \_\-\_\-move}, {\bf Fitness} \& {\em \_\-\_\-fit}) throw ({\bf Empty\-Selection})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_first_impr_select_3be12cf4cbaed00df7c4fa735b2c0a95} + + +Procedure which saved the best move and fitness. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]the current move (result of the procedure). \item[{\em \_\-\_\-fit}]the current fitness (result of the procedure). \end{description} +\end{Desc} +\begin{Desc} +\item[Exceptions:] +\begin{description} +\item[{\em \doxyref{Empty\-Selection}{p.}{class_empty_selection}}]if no move has improved the fitness. \end{description} +\end{Desc} + + +Implements {\bf eo\-BF$<$ M \&, M::EOType::Fitness \&, void $>$}. + +Definition at line 76 of file mo\-First\-Impr\-Select.h. + +References mo\-First\-Impr\-Select$<$ M $>$::best\_\-fit, mo\-First\-Impr\-Select$<$ M $>$::best\_\-move, and mo\-First\-Impr\-Select$<$ M $>$::valid. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-First\-Impr\-Select.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_gen_sol_continue.eps b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_gen_sol_continue.eps new file mode 100644 index 000000000..c73c60ba3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_gen_sol_continue.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 441.989 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.13125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moGenSolContinue< EOT >) cw +(moSolContinue< EOT >) cw +(eoUF< const EOT &, bool >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moGenSolContinue< EOT >) 0 0 box + (moSolContinue< EOT >) 0 1 box + (eoUF< const EOT &, bool >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_gen_sol_continue.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_gen_sol_continue.tex new file mode 100644 index 000000000..4b0194020 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_gen_sol_continue.tex @@ -0,0 +1,102 @@ +\section{mo\-Gen\-Sol\-Continue$<$ EOT $>$ Class Template Reference} +\label{classmo_gen_sol_continue}\index{moGenSolContinue@{moGenSolContinue}} +One possible stop criterion for a solution-based heuristic. + + +{\tt \#include $<$mo\-Gen\-Sol\-Continue.h$>$} + +Inheritance diagram for mo\-Gen\-Sol\-Continue$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_gen_sol_continue} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf mo\-Gen\-Sol\-Continue} (unsigned \_\-\_\-max\-Num\-Gen) +\begin{CompactList}\small\item\em Simple constructor. \item\end{CompactList}\item +bool {\bf operator()} (const EOT \&\_\-\_\-sol) +\begin{CompactList}\small\item\em Function that activates the stop criterion. \item\end{CompactList}\item +void {\bf init} () +\begin{CompactList}\small\item\em Procedure which allows to initialise the generation counter. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +unsigned {\bf max\-Num\-Gen}\label{classmo_gen_sol_continue_6d7674fc51d17423e8ee28693a08b5af} + +\begin{CompactList}\small\item\em Iteration maximum number. \item\end{CompactList}\item +unsigned {\bf num\-Gen}\label{classmo_gen_sol_continue_a18ebfd270f96517b4edaa2cad3eb9e0} + +\begin{CompactList}\small\item\em Iteration current number. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class mo\-Gen\-Sol\-Continue$<$ EOT $>$} + +One possible stop criterion for a solution-based heuristic. + +The stop criterion corresponds to a maximum number of iteration. + + + +Definition at line 21 of file mo\-Gen\-Sol\-Continue.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moGenSolContinue@{mo\-Gen\-Sol\-Continue}!moGenSolContinue@{moGenSolContinue}} +\index{moGenSolContinue@{moGenSolContinue}!moGenSolContinue@{mo\-Gen\-Sol\-Continue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf mo\-Gen\-Sol\-Continue}$<$ EOT $>$::{\bf mo\-Gen\-Sol\-Continue} (unsigned {\em \_\-\_\-max\-Num\-Gen})\hspace{0.3cm}{\tt [inline]}}\label{classmo_gen_sol_continue_6b6cab23a23bd8904ea52ef5141d8d0a} + + +Simple constructor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-max\-Num\-Gen}]the maximum number of generation. \end{description} +\end{Desc} + + +Definition at line 30 of file mo\-Gen\-Sol\-Continue.h. + +\subsection{Member Function Documentation} +\index{moGenSolContinue@{mo\-Gen\-Sol\-Continue}!operator()@{operator()}} +\index{operator()@{operator()}!moGenSolContinue@{mo\-Gen\-Sol\-Continue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ bool {\bf mo\-Gen\-Sol\-Continue}$<$ EOT $>$::operator() (const EOT \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_gen_sol_continue_457257cd73b474d6f7783d84d02c2e61} + + +Function that activates the stop criterion. + +Increments the counter and returns TRUE if the current number of iteration is lower than the given maximum number of iterations. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-sol}]the current solution. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]TRUE or FALSE according to the current generation number. \end{Desc} + + +Implements {\bf eo\-UF$<$ const EOT \&, bool $>$}. + +Definition at line 44 of file mo\-Gen\-Sol\-Continue.h. + +References mo\-Gen\-Sol\-Continue$<$ EOT $>$::max\-Num\-Gen, and mo\-Gen\-Sol\-Continue$<$ EOT $>$::num\-Gen.\index{moGenSolContinue@{mo\-Gen\-Sol\-Continue}!init@{init}} +\index{init@{init}!moGenSolContinue@{mo\-Gen\-Sol\-Continue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf mo\-Gen\-Sol\-Continue}$<$ EOT $>$::init ()\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_gen_sol_continue_6c5db8182157584b56507cc9075602d4} + + +Procedure which allows to initialise the generation counter. + +It can also be used to reset the iteration counter. + +Implements {\bf mo\-Sol\-Continue$<$ EOT $>$} \doxyref{}{p.}{classmo_sol_continue_064dc966a210f4ffb9515be3f03ca4c7}. + +Definition at line 54 of file mo\-Gen\-Sol\-Continue.h. + +References mo\-Gen\-Sol\-Continue$<$ EOT $>$::num\-Gen. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Gen\-Sol\-Continue.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_h_c.eps b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_h_c.eps new file mode 100644 index 000000000..184d2041a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_h_c.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 271.739 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.84 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moHC< M >) cw +(moAlgo< M::EOType >) cw +(eoMonOp< M::EOType >) cw +(eoOp< EOType >) cw +(eoUF< M::EOType &, bool >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moHC< M >) 0.5 0 box + (moAlgo< M::EOType >) 0.5 1 box + (eoMonOp< M::EOType >) 0.5 2 box + (eoOp< EOType >) 0 3 box + (eoUF< M::EOType &, bool >) 1 3 box + (eoFunctorBase) 1 4 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +0 1 3 conn +solid +1 0 3 in +solid +1 1 3 in +solid +0 1 3 out +solid +1 1 4 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_h_c.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_h_c.tex new file mode 100644 index 000000000..dc5b26818 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_h_c.tex @@ -0,0 +1,116 @@ +\section{mo\-HC$<$ M $>$ Class Template Reference} +\label{classmo_h_c}\index{moHC@{moHC}} +Hill Climbing (HC). + + +{\tt \#include $<$mo\-HC.h$>$} + +Inheritance diagram for mo\-HC$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5cm]{classmo_h_c} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf mo\-HC} ({\bf mo\-Move\-Init}$<$ M $>$ \&\_\-\_\-move\_\-init, {\bf mo\-Next\-Move}$<$ M $>$ \&\_\-\_\-next\_\-move, {\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \&\_\-\_\-incr\_\-eval, {\bf mo\-Move\-Select}$<$ M $>$ \&\_\-\_\-move\_\-select, {\bf eo\-Eval\-Func}$<$ {\bf EOT} $>$ \&\_\-\_\-full\_\-eval) +\begin{CompactList}\small\item\em Full constructor. \item\end{CompactList}\item +{\bf mo\-HC} ({\bf mo\-Move\-Expl}$<$ M $>$ \&\_\-\_\-move\_\-expl, {\bf eo\-Eval\-Func}$<$ {\bf EOT} $>$ \&\_\-\_\-full\_\-eval) +\begin{CompactList}\small\item\em Light constructor. \item\end{CompactList}\item +bool {\bf operator()} ({\bf EOT} \&\_\-\_\-sol) +\begin{CompactList}\small\item\em Function which launches the HC. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_h_c_d219296ede03c679646bce2fe8ff96cb} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\item +typedef EOT::Fitness {\bf Fitness}\label{classmo_h_c_56487c97a7cf0c423cc879d1bbd45027} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf mo\-Move\-Expl}$<$ M $>$ \& {\bf move\_\-expl}\label{classmo_h_c_f6bfb4553fb699f1e08f7d9c37d06103} + +\begin{CompactList}\small\item\em Complete exploration of the neighborhood. \item\end{CompactList}\item +{\bf eo\-Eval\-Func}$<$ {\bf EOT} $>$ \& {\bf full\_\-eval}\label{classmo_h_c_4b0d5cc70fc3d83f59a48b2bdea65736} + +\begin{CompactList}\small\item\em A full evaluation function. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-HC$<$ M $>$} + +Hill Climbing (HC). + +Class which describes the algorithm for a hill climbing. + + + +Definition at line 26 of file mo\-HC.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moHC@{mo\-HC}!moHC@{moHC}} +\index{moHC@{moHC}!moHC@{mo\-HC}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf mo\-HC}$<$ M $>$::{\bf mo\-HC} ({\bf mo\-Move\-Init}$<$ M $>$ \& {\em \_\-\_\-move\_\-init}, {\bf mo\-Next\-Move}$<$ M $>$ \& {\em \_\-\_\-next\_\-move}, {\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \& {\em \_\-\_\-incr\_\-eval}, {\bf mo\-Move\-Select}$<$ M $>$ \& {\em \_\-\_\-move\_\-select}, {\bf eo\-Eval\-Func}$<$ {\bf EOT} $>$ \& {\em \_\-\_\-full\_\-eval})\hspace{0.3cm}{\tt [inline]}}\label{classmo_h_c_6cafe093f86a80c225827884cb9dc5b7} + + +Full constructor. + +All the boxes are given in order the HC to use a \doxyref{mo\-HCMove\-Loop\-Expl}{p.}{classmo_h_c_move_loop_expl}. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move\_\-init}]a move initialiser. \item[{\em \_\-\_\-next\_\-move}]a neighborhood explorer. \item[{\em \_\-\_\-incr\_\-eval}]a (generally) efficient evaluation function. \item[{\em \_\-\_\-move\_\-select}]a move selector. \item[{\em \_\-\_\-full\_\-eval}]a full evaluation function. \end{description} +\end{Desc} + + +Definition at line 53 of file mo\-HC.h.\index{moHC@{mo\-HC}!moHC@{moHC}} +\index{moHC@{moHC}!moHC@{mo\-HC}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf mo\-HC}$<$ M $>$::{\bf mo\-HC} ({\bf mo\-Move\-Expl}$<$ M $>$ \& {\em \_\-\_\-move\_\-expl}, {\bf eo\-Eval\-Func}$<$ {\bf EOT} $>$ \& {\em \_\-\_\-full\_\-eval})\hspace{0.3cm}{\tt [inline]}}\label{classmo_h_c_45f27309792e584a27fa6dcb86ccda65} + + +Light constructor. + +This constructor allow to use another \doxyref{mo\-Move\-Expl}{p.}{classmo_move_expl} (generally not a \doxyref{mo\-HCMove\-Loop\-Expl}{p.}{classmo_h_c_move_loop_expl}). + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move\_\-expl}]a complete explorer. \item[{\em \_\-\_\-full\_\-eval}]a full evaluation function. \end{description} +\end{Desc} + + +Definition at line 67 of file mo\-HC.h. + +\subsection{Member Function Documentation} +\index{moHC@{mo\-HC}!operator()@{operator()}} +\index{operator()@{operator()}!moHC@{mo\-HC}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf mo\-HC}$<$ M $>$::operator() ({\bf EOT} \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_h_c_ed4e273c420efa6386c5975a696a5010} + + +Function which launches the HC. + +The HC has to improve a current solution. As the \doxyref{mo\-SA}{p.}{classmo_s_a} and the mo TS, it can be used for HYBRIDATION in an evolutionnary algorithm. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-sol}]a current solution to improve. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]TRUE. \end{Desc} + + +Implements {\bf eo\-UF$<$ M::EOType \&, bool $>$}. + +Definition at line 82 of file mo\-HC.h. + +References mo\-HC$<$ M $>$::full\_\-eval, and mo\-HC$<$ M $>$::move\_\-expl. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-HC.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_h_c_move_loop_expl.eps b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_h_c_move_loop_expl.eps new file mode 100644 index 000000000..1240e010d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_h_c_move_loop_expl.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 327.869 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.525 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moHCMoveLoopExpl< M >) cw +(moMoveLoopExpl< M >) cw +(moMoveExpl< M >) cw +(eoBF< const M::EOType &, M::EOType &, void >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moHCMoveLoopExpl< M >) 0 0 box + (moMoveLoopExpl< M >) 0 1 box + (moMoveExpl< M >) 0 2 box + (eoBF< const M::EOType &, M::EOType &, void >) 0 3 box + (eoFunctorBase) 0 4 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in +solid +0 0 3 out +solid +1 0 4 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_h_c_move_loop_expl.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_h_c_move_loop_expl.tex new file mode 100644 index 000000000..e404ab915 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_h_c_move_loop_expl.tex @@ -0,0 +1,100 @@ +\section{mo\-HCMove\-Loop\-Expl$<$ M $>$ Class Template Reference} +\label{classmo_h_c_move_loop_expl}\index{moHCMoveLoopExpl@{moHCMoveLoopExpl}} +Iterative explorer used by a \doxyref{mo\-HC}{p.}{classmo_h_c}. + + +{\tt \#include $<$mo\-HCMove\-Loop\-Expl.h$>$} + +Inheritance diagram for mo\-HCMove\-Loop\-Expl$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5cm]{classmo_h_c_move_loop_expl} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf mo\-HCMove\-Loop\-Expl} ({\bf mo\-Move\-Init}$<$ M $>$ \&\_\-\_\-move\_\-init, {\bf mo\-Next\-Move}$<$ M $>$ \&\_\-\_\-next\_\-move, {\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \&\_\-\_\-incr\_\-eval, {\bf mo\-Move\-Select}$<$ M $>$ \&\_\-\_\-move\_\-select) +\begin{CompactList}\small\item\em Constructor. \item\end{CompactList}\item +void {\bf operator()} (const {\bf EOT} \&\_\-\_\-old\_\-sol, {\bf EOT} \&\_\-\_\-new\_\-sol) +\begin{CompactList}\small\item\em Procedure which launches the explorer. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_h_c_move_loop_expl_077befd4106c201eafd3ea22bcea2fe9} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_h_c_move_loop_expl_f24871224316d5549b9013a2d27ab465} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf mo\-Move\-Init}$<$ M $>$ \& {\bf move\_\-init}\label{classmo_h_c_move_loop_expl_6776fc51331c1b452d026b92448b4ffc} + +\begin{CompactList}\small\item\em Move initialiser. \item\end{CompactList}\item +{\bf mo\-Next\-Move}$<$ M $>$ \& {\bf next\_\-move}\label{classmo_h_c_move_loop_expl_f716c5271e0eba9275c585dc52768443} + +\begin{CompactList}\small\item\em Neighborhood explorer. \item\end{CompactList}\item +{\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \& {\bf incr\_\-eval}\label{classmo_h_c_move_loop_expl_84a8fccba05ab30414281469bc8ee779} + +\begin{CompactList}\small\item\em (generally) Efficient evaluation. \item\end{CompactList}\item +{\bf mo\-Move\-Select}$<$ M $>$ \& {\bf move\_\-select}\label{classmo_h_c_move_loop_expl_13bcd1322b2b97fd665be2f60c532fbb} + +\begin{CompactList}\small\item\em Move selector. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-HCMove\-Loop\-Expl$<$ M $>$} + +Iterative explorer used by a \doxyref{mo\-HC}{p.}{classmo_h_c}. + + + +Definition at line 23 of file mo\-HCMove\-Loop\-Expl.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moHCMoveLoopExpl@{mo\-HCMove\-Loop\-Expl}!moHCMoveLoopExpl@{moHCMoveLoopExpl}} +\index{moHCMoveLoopExpl@{moHCMoveLoopExpl}!moHCMoveLoopExpl@{mo\-HCMove\-Loop\-Expl}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf mo\-HCMove\-Loop\-Expl}$<$ M $>$::{\bf mo\-HCMove\-Loop\-Expl} ({\bf mo\-Move\-Init}$<$ M $>$ \& {\em \_\-\_\-move\_\-init}, {\bf mo\-Next\-Move}$<$ M $>$ \& {\em \_\-\_\-next\_\-move}, {\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \& {\em \_\-\_\-incr\_\-eval}, {\bf mo\-Move\-Select}$<$ M $>$ \& {\em \_\-\_\-move\_\-select})\hspace{0.3cm}{\tt [inline]}}\label{classmo_h_c_move_loop_expl_11410d648d79746253e9dc249c4ec7b5} + + +Constructor. + +All the boxes have to be specified. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move\_\-init}]the move initialiser. \item[{\em \_\-\_\-next\_\-move}]the neighborhood explorer. \item[{\em \_\-\_\-incr\_\-eval}](generally) efficient evaluation function. \item[{\em \_\-\_\-move\_\-select}]the move selector. \end{description} +\end{Desc} + + +Definition at line 43 of file mo\-HCMove\-Loop\-Expl.h. + +\subsection{Member Function Documentation} +\index{moHCMoveLoopExpl@{mo\-HCMove\-Loop\-Expl}!operator()@{operator()}} +\index{operator()@{operator()}!moHCMoveLoopExpl@{mo\-HCMove\-Loop\-Expl}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-HCMove\-Loop\-Expl}$<$ M $>$::operator() (const {\bf EOT} \& {\em \_\-\_\-old\_\-sol}, {\bf EOT} \& {\em \_\-\_\-new\_\-sol})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_h_c_move_loop_expl_f48d5379caac7f6a165e9fe8840e6ccb} + + +Procedure which launches the explorer. + +The exploration starts from an old solution and provides a new solution. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-old\_\-sol}]the current solution. \item[{\em \_\-\_\-new\_\-sol}]the new\_\-sol (result of the procedure). \end{description} +\end{Desc} + + +Implements {\bf eo\-BF$<$ const M::EOType \&, M::EOType \&, void $>$}. + +Definition at line 59 of file mo\-HCMove\-Loop\-Expl.h. + +References mo\-HCMove\-Loop\-Expl$<$ M $>$::incr\_\-eval, mo\-HCMove\-Loop\-Expl$<$ M $>$::move\_\-init, mo\-HCMove\-Loop\-Expl$<$ M $>$::move\_\-select, and mo\-HCMove\-Loop\-Expl$<$ M $>$::next\_\-move. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-HCMove\-Loop\-Expl.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_impr_best_fit_aspir_crit.eps b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_impr_best_fit_aspir_crit.eps new file mode 100644 index 000000000..a00a3c3cb --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_impr_best_fit_aspir_crit.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 437.158 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.14375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moImprBestFitAspirCrit< M >) cw +(moAspirCrit< M >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moImprBestFitAspirCrit< M >) 0 0 box + (moAspirCrit< M >) 0 1 box + (eoBF< A1, A2, R >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_impr_best_fit_aspir_crit.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_impr_best_fit_aspir_crit.tex new file mode 100644 index 000000000..33da06ec9 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_impr_best_fit_aspir_crit.tex @@ -0,0 +1,78 @@ +\section{mo\-Impr\-Best\-Fit\-Aspir\-Crit$<$ M $>$ Class Template Reference} +\label{classmo_impr_best_fit_aspir_crit}\index{moImprBestFitAspirCrit@{moImprBestFitAspirCrit}} +One of the possible \doxyref{mo\-Aspir\-Crit}{p.}{classmo_aspir_crit}. + + +{\tt \#include $<$mo\-Impr\-Best\-Fit\-Aspir\-Crit.h$>$} + +Inheritance diagram for mo\-Impr\-Best\-Fit\-Aspir\-Crit$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_impr_best_fit_aspir_crit} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_impr_best_fit_aspir_crit_0bc1a8c9af99781e662570c04750cca8} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf mo\-Impr\-Best\-Fit\-Aspir\-Crit} ()\label{classmo_impr_best_fit_aspir_crit_e2c697a5cf3a7696e38bb52b6694a340} + +\begin{CompactList}\small\item\em Contructor. \item\end{CompactList}\item +void {\bf init} ()\label{classmo_impr_best_fit_aspir_crit_ffa451a14ff4ea86fb8bd9fdbc348630} + +\begin{CompactList}\small\item\em Initialisation procedure. \item\end{CompactList}\item +bool {\bf operator()} (const M \&\_\-\_\-move, const {\bf Fitness} \&\_\-\_\-fit) +\begin{CompactList}\small\item\em Function that indicates if the fit is better that the already saved fit. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf Fitness} {\bf best\_\-fit}\label{classmo_impr_best_fit_aspir_crit_9e52383f0af8013b4aff0942325e1bf3} + +\begin{CompactList}\small\item\em Best fitness found until now. \item\end{CompactList}\item +bool {\bf first\_\-time}\label{classmo_impr_best_fit_aspir_crit_2d5226c7dd661b33011402dbbbe78265} + +\begin{CompactList}\small\item\em Indicates that a fitness has been already saved or not. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Impr\-Best\-Fit\-Aspir\-Crit$<$ M $>$} + +One of the possible \doxyref{mo\-Aspir\-Crit}{p.}{classmo_aspir_crit}. + +This criterion is satisfied when a given fitness is the best ever considered. + + + +Definition at line 22 of file mo\-Impr\-Best\-Fit\-Aspir\-Crit.h. + +\subsection{Member Function Documentation} +\index{moImprBestFitAspirCrit@{mo\-Impr\-Best\-Fit\-Aspir\-Crit}!operator()@{operator()}} +\index{operator()@{operator()}!moImprBestFitAspirCrit@{mo\-Impr\-Best\-Fit\-Aspir\-Crit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf mo\-Impr\-Best\-Fit\-Aspir\-Crit}$<$ M $>$::operator() (const M \& {\em \_\-\_\-move}, const {\bf Fitness} \& {\em \_\-\_\-fit})\hspace{0.3cm}{\tt [inline]}}\label{classmo_impr_best_fit_aspir_crit_53f62fb56dcae3051a741f1fddb0204b} + + +Function that indicates if the fit is better that the already saved fit. + +The first time, the function only saved the current move and fitness. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]a move. \item[{\em \_\-\_\-fit}]a fitnes linked to the move. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]TRUE the first time and if \_\-\_\-fit $>$ best\_\-fit, else FALSE. \end{Desc} + + +Definition at line 52 of file mo\-Impr\-Best\-Fit\-Aspir\-Crit.h. + +References mo\-Impr\-Best\-Fit\-Aspir\-Crit$<$ M $>$::best\_\-fit, and mo\-Impr\-Best\-Fit\-Aspir\-Crit$<$ M $>$::first\_\-time. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Impr\-Best\-Fit\-Aspir\-Crit.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_it_rand_next_move.eps b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_it_rand_next_move.eps new file mode 100644 index 000000000..5f2df0014 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_it_rand_next_move.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 490.798 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.01875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moItRandNextMove< M >) cw +(moNextMove< M >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moItRandNextMove< M >) 0 0 box + (moNextMove< M >) 0 1 box + (eoBF< A1, A2, R >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_it_rand_next_move.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_it_rand_next_move.tex new file mode 100644 index 000000000..b9a7dc563 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_it_rand_next_move.tex @@ -0,0 +1,96 @@ +\section{mo\-It\-Rand\-Next\-Move$<$ M $>$ Class Template Reference} +\label{classmo_it_rand_next_move}\index{moItRandNextMove@{moItRandNextMove}} +One of the possible \doxyref{mo\-Next\-Move}{p.}{classmo_next_move}. + + +{\tt \#include $<$mo\-It\-Rand\-Next\-Move.h$>$} + +Inheritance diagram for mo\-It\-Rand\-Next\-Move$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_it_rand_next_move} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf mo\-It\-Rand\-Next\-Move} ({\bf mo\-Rand\-Move}$<$ M $>$ \&\_\-\_\-rand\_\-move, unsigned \_\-\_\-max\_\-iter) +\begin{CompactList}\small\item\em The constructor. \item\end{CompactList}\item +bool {\bf operator()} (M \&\_\-\_\-move, const {\bf EOT} \&\_\-\_\-sol) +\begin{CompactList}\small\item\em Generation of a new move. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_it_rand_next_move_ee666007fc494bf4a5f0cd065e5671cf} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf mo\-Rand\-Move}$<$ M $>$ \& {\bf rand\_\-move}\label{classmo_it_rand_next_move_ef9410ec5e7dfa7f002e05967931c459} + +\begin{CompactList}\small\item\em A move generator (generally randomly). \item\end{CompactList}\item +unsigned {\bf max\_\-iter}\label{classmo_it_rand_next_move_3c476f7cc089b171493c52965f920542} + +\begin{CompactList}\small\item\em Iteration maximum number. \item\end{CompactList}\item +unsigned {\bf num\_\-iter}\label{classmo_it_rand_next_move_c3551d7910cf351d63f0f3427fc18504} + +\begin{CompactList}\small\item\em Iteration current number. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-It\-Rand\-Next\-Move$<$ M $>$} + +One of the possible \doxyref{mo\-Next\-Move}{p.}{classmo_next_move}. + +This class is a move (\doxyref{mo\-Move}{p.}{classmo_move}) generator with a bound for the maximum number of iterations. + + + +Definition at line 22 of file mo\-It\-Rand\-Next\-Move.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moItRandNextMove@{mo\-It\-Rand\-Next\-Move}!moItRandNextMove@{moItRandNextMove}} +\index{moItRandNextMove@{moItRandNextMove}!moItRandNextMove@{mo\-It\-Rand\-Next\-Move}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf mo\-It\-Rand\-Next\-Move}$<$ M $>$::{\bf mo\-It\-Rand\-Next\-Move} ({\bf mo\-Rand\-Move}$<$ M $>$ \& {\em \_\-\_\-rand\_\-move}, unsigned {\em \_\-\_\-max\_\-iter})\hspace{0.3cm}{\tt [inline]}}\label{classmo_it_rand_next_move_95ed13e1178f4e44cab7184b040b83d7} + + +The constructor. + +Parameters only for initialising the attributes. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-rand\_\-move}]the random move generator. \item[{\em \_\-\_\-max\_\-iter}]the iteration maximum number. \end{description} +\end{Desc} + + +Definition at line 37 of file mo\-It\-Rand\-Next\-Move.h. + +\subsection{Member Function Documentation} +\index{moItRandNextMove@{mo\-It\-Rand\-Next\-Move}!operator()@{operator()}} +\index{operator()@{operator()}!moItRandNextMove@{mo\-It\-Rand\-Next\-Move}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf mo\-It\-Rand\-Next\-Move}$<$ M $>$::operator() (M \& {\em \_\-\_\-move}, const {\bf EOT} \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline]}}\label{classmo_it_rand_next_move_92a2fbbc02a20853b9a309e99018a102} + + +Generation of a new move. + +If the maximum number is not already reached, the current move is forgotten and remplaced by another one. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]the current move. \item[{\em \_\-\_\-sol}]the current solution. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]FALSE if the maximum number of iteration is reached, else TRUE. \end{Desc} + + +Definition at line 52 of file mo\-It\-Rand\-Next\-Move.h. + +References mo\-It\-Rand\-Next\-Move$<$ M $>$::max\_\-iter, mo\-It\-Rand\-Next\-Move$<$ M $>$::num\_\-iter, and mo\-It\-Rand\-Next\-Move$<$ M $>$::rand\_\-move. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-It\-Rand\-Next\-Move.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_l_s_check_point.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_l_s_check_point.tex new file mode 100644 index 000000000..968b56892 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_l_s_check_point.tex @@ -0,0 +1,79 @@ +\section{mo\-LSCheck\-Point$<$ M $>$ Class Template Reference} +\label{classmo_l_s_check_point}\index{moLSCheckPoint@{moLSCheckPoint}} +Class which allows a checkpointing system. + + +{\tt \#include $<$mo\-LSCheck\-Point.h$>$} + +Inheritance diagram for mo\-LSCheck\-Point$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classmo_l_s_check_point} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +void {\bf operator()} (const M \&\_\-\_\-move, const typename M::EOType \&\_\-\_\-sol) +\begin{CompactList}\small\item\em Function which launches the checkpointing. \item\end{CompactList}\item +void {\bf add} ({\bf eo\-BF}$<$ const M \&, const typename M::EOType \&, void $>$ \&\_\-\_\-f) +\begin{CompactList}\small\item\em Procedure which add a new function to the function vector. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +std::vector$<$ {\bf eo\-BF}$<$ const M \&, const typename M::EOType \&, void $>$ $\ast$ $>$ {\bf func}\label{classmo_l_s_check_point_ff2a31ee5689a804bd9a572c51a36ca4} + +\begin{CompactList}\small\item\em vector of function \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-LSCheck\-Point$<$ M $>$} + +Class which allows a checkpointing system. + +Thanks to this class, at each iteration, additionnal function can be used (and not only one). + + + +Definition at line 21 of file mo\-LSCheck\-Point.h. + +\subsection{Member Function Documentation} +\index{moLSCheckPoint@{mo\-LSCheck\-Point}!operator()@{operator()}} +\index{operator()@{operator()}!moLSCheckPoint@{mo\-LSCheck\-Point}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-LSCheck\-Point}$<$ M $>$::operator() (const M \& {\em \_\-\_\-move}, const typename M::EOType \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline]}}\label{classmo_l_s_check_point_2f9c1250279e3f49ec77a66c10029f1e} + + +Function which launches the checkpointing. + +Each saved function is used on the current move and the current solution. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]a move. \item[{\em \_\-\_\-sol}]a solution. \end{description} +\end{Desc} + + +Definition at line 34 of file mo\-LSCheck\-Point.h. + +References mo\-LSCheck\-Point$<$ M $>$::func.\index{moLSCheckPoint@{mo\-LSCheck\-Point}!add@{add}} +\index{add@{add}!moLSCheckPoint@{mo\-LSCheck\-Point}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-LSCheck\-Point}$<$ M $>$::add ({\bf eo\-BF}$<$ const M \&, const typename M::EOType \&, void $>$ \& {\em \_\-\_\-f})\hspace{0.3cm}{\tt [inline]}}\label{classmo_l_s_check_point_66be5fe2944bcdd752f1e58105e969a6} + + +Procedure which add a new function to the function vector. + +The new function is added at the end of the vector. \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-f}]a new function to add. \end{description} +\end{Desc} + + +Definition at line 49 of file mo\-LSCheck\-Point.h. + +References mo\-LSCheck\-Point$<$ M $>$::func. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-LSCheck\-Point.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move.tex new file mode 100644 index 000000000..873616a4c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move.tex @@ -0,0 +1,35 @@ +\section{mo\-Move$<$ EOT $>$ Class Template Reference} +\label{classmo_move}\index{moMove@{moMove}} +Definition of a move. + + +{\tt \#include $<$mo\-Move.h$>$} + +Inheritance diagram for mo\-Move$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classmo_move} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef EOT {\bf EOType}\label{classmo_move_7fb853a91ba1319530529e515380bbba} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class mo\-Move$<$ EOT $>$} + +Definition of a move. + +A move transforms a solution to another close solution. It describes how a solution can be modified to another one. + + + +Definition at line 23 of file mo\-Move.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Move.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_expl.eps b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_expl.eps new file mode 100644 index 000000000..18fb8889f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_expl.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 163.934 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.05 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moMoveExpl< M >) cw +(eoBF< const M::EOType &, M::EOType &, void >) cw +(eoFunctorBase) cw +(moMoveLoopExpl< M >) cw +(moHCMoveLoopExpl< M >) cw +(moTSMoveLoopExpl< M >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moMoveExpl< M >) 0.5 2 box + (eoBF< const M::EOType &, M::EOType &, void >) 0.5 3 box + (eoFunctorBase) 0.5 4 box + (moMoveLoopExpl< M >) 0.5 1 box + (moHCMoveLoopExpl< M >) 0 0 box + (moTSMoveLoopExpl< M >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +0 0.5 3 out +solid +1 0.5 4 in +solid +1 0.5 1.25 out +solid +0 0.5 1.75 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_expl.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_expl.tex new file mode 100644 index 000000000..5d0b1e66b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_expl.tex @@ -0,0 +1,29 @@ +\section{mo\-Move\-Expl$<$ M $>$ Class Template Reference} +\label{classmo_move_expl}\index{moMoveExpl@{moMoveExpl}} +Description of a move (\doxyref{mo\-Move}{p.}{classmo_move}) explorer. + + +{\tt \#include $<$mo\-Move\-Expl.h$>$} + +Inheritance diagram for mo\-Move\-Expl$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4.59016cm]{classmo_move_expl} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Move\-Expl$<$ M $>$} + +Description of a move (\doxyref{mo\-Move}{p.}{classmo_move}) explorer. + +Only a description...See \doxyref{mo\-Move\-Loop\-Expl}{p.}{classmo_move_loop_expl}. + + + +Definition at line 21 of file mo\-Move\-Expl.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Move\-Expl.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_incr_eval.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_incr_eval.tex new file mode 100644 index 000000000..91421ef4b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_incr_eval.tex @@ -0,0 +1,29 @@ +\section{mo\-Move\-Incr\-Eval$<$ M $>$ Class Template Reference} +\label{classmo_move_incr_eval}\index{moMoveIncrEval@{moMoveIncrEval}} +(generally) Efficient evaluation function based a move and a solution. + + +{\tt \#include $<$mo\-Move\-Incr\-Eval.h$>$} + +Inheritance diagram for mo\-Move\-Incr\-Eval$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classmo_move_incr_eval} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Move\-Incr\-Eval$<$ M $>$} + +(generally) Efficient evaluation function based a move and a solution. + +From a move and a solution, it computes a new fitness that could be associated to the solution if this one is updated. + + + +Definition at line 24 of file mo\-Move\-Incr\-Eval.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Move\-Incr\-Eval.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_init.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_init.tex new file mode 100644 index 000000000..353911436 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_init.tex @@ -0,0 +1,29 @@ +\section{mo\-Move\-Init$<$ M $>$ Class Template Reference} +\label{classmo_move_init}\index{moMoveInit@{moMoveInit}} +Move (\doxyref{mo\-Move}{p.}{classmo_move}) initializer. + + +{\tt \#include $<$mo\-Move\-Init.h$>$} + +Inheritance diagram for mo\-Move\-Init$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classmo_move_init} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Move\-Init$<$ M $>$} + +Move (\doxyref{mo\-Move}{p.}{classmo_move}) initializer. + +Class which allows to initiase a move. Only a description... An object that herits from this class needs to be designed to be used. + + + +Definition at line 22 of file mo\-Move\-Init.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Move\-Init.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_loop_expl.eps b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_loop_expl.eps new file mode 100644 index 000000000..c6a78b5b1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_loop_expl.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 163.934 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.05 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moMoveLoopExpl< M >) cw +(moMoveExpl< M >) cw +(eoBF< const M::EOType &, M::EOType &, void >) cw +(eoFunctorBase) cw +(moHCMoveLoopExpl< M >) cw +(moTSMoveLoopExpl< M >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moMoveLoopExpl< M >) 0.5 1 box + (moMoveExpl< M >) 0.5 2 box + (eoBF< const M::EOType &, M::EOType &, void >) 0.5 3 box + (eoFunctorBase) 0.5 4 box + (moHCMoveLoopExpl< M >) 0 0 box + (moTSMoveLoopExpl< M >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +0 0.5 3 out +solid +1 0.5 4 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_loop_expl.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_loop_expl.tex new file mode 100644 index 000000000..1a6c5b997 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_loop_expl.tex @@ -0,0 +1,29 @@ +\section{mo\-Move\-Loop\-Expl$<$ M $>$ Class Template Reference} +\label{classmo_move_loop_expl}\index{moMoveLoopExpl@{moMoveLoopExpl}} +Class which describes an iterative explorer. + + +{\tt \#include $<$mo\-Move\-Loop\-Expl.h$>$} + +Inheritance diagram for mo\-Move\-Loop\-Expl$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4.59016cm]{classmo_move_loop_expl} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Move\-Loop\-Expl$<$ M $>$} + +Class which describes an iterative explorer. + +Only a description... \doxyref{mo\-HCMove\-Loop\-Expl}{p.}{classmo_h_c_move_loop_expl} and \doxyref{mo\-TSMove\-Loop\-Expl}{p.}{classmo_t_s_move_loop_expl} are exemples of class that are a \doxyref{mo\-Move\-Loop\-Expl}{p.}{classmo_move_loop_expl}. + + + +Definition at line 21 of file mo\-Move\-Loop\-Expl.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Move\-Loop\-Expl.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_select.eps b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_select.eps new file mode 100644 index 000000000..b61e2bf9f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_select.eps @@ -0,0 +1,219 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 101.01 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.95 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 3 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moMoveSelect< M >) cw +(eoBF< M &, M::EOType::Fitness &, void >) cw +(eoFunctorBase) cw +(moBestImprSelect< M >) cw +(moFirstImprSelect< M >) cw +(moRandImprSelect< M >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moMoveSelect< M >) 1 1 box + (eoBF< M &, M::EOType::Fitness &, void >) 1 2 box + (eoFunctorBase) 1 3 box + (moBestImprSelect< M >) 0 0 box + (moFirstImprSelect< M >) 1 0 box + (moRandImprSelect< M >) 2 0 box + +% ----- relations ----- + +solid +0 1 1 out +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in +solid +1 1 0.25 out +solid +0 2 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in +solid +0 2 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_select.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_select.tex new file mode 100644 index 000000000..2ed02f91e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_move_select.tex @@ -0,0 +1,77 @@ +\section{mo\-Move\-Select$<$ M $>$ Class Template Reference} +\label{classmo_move_select}\index{moMoveSelect@{moMoveSelect}} +Class that describes a move selector (\doxyref{mo\-Move}{p.}{classmo_move}). + + +{\tt \#include $<$mo\-Move\-Select.h$>$} + +Inheritance diagram for mo\-Move\-Select$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.82828cm]{classmo_move_select} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_move_select_8148ccc0e6fbd209c3fe6829559895c8} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +virtual void {\bf init} (const {\bf Fitness} \&\_\-\_\-fit)=0 +\begin{CompactList}\small\item\em Procedure which initialises all that the move selector needs including the initial fitness. \item\end{CompactList}\item +virtual bool {\bf update} (const M \&\_\-\_\-move, const {\bf Fitness} \&\_\-\_\-fit)=0 +\begin{CompactList}\small\item\em Function which updates the best solutions. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Move\-Select$<$ M $>$} + +Class that describes a move selector (\doxyref{mo\-Move}{p.}{classmo_move}). + +It iteratively considers some moves (\doxyref{mo\-Move}{p.}{classmo_move}) and their associated fitnesses. The best move is so regularly updated. At any time, it could be accessed. + + + +Definition at line 32 of file mo\-Move\-Select.h. + +\subsection{Member Function Documentation} +\index{moMoveSelect@{mo\-Move\-Select}!init@{init}} +\index{init@{init}!moMoveSelect@{mo\-Move\-Select}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual void {\bf mo\-Move\-Select}$<$ M $>$::init (const {\bf Fitness} \& {\em \_\-\_\-fit})\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_move_select_bca4c43f13d26eca7163aeb272a4a52e} + + +Procedure which initialises all that the move selector needs including the initial fitness. + +In order to know the fitness of the solution, for which the neighborhood will be soon explored + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-fit}]the current fitness. \end{description} +\end{Desc} + + +Implemented in {\bf mo\-Best\-Impr\-Select$<$ M $>$} \doxyref{}{p.}{classmo_best_impr_select_2d2abf9aa17dc77cbb4f41810ab7b956}, {\bf mo\-First\-Impr\-Select$<$ M $>$} \doxyref{}{p.}{classmo_first_impr_select_4c5ce18ede46247a439c68f6954a4055}, and {\bf mo\-Rand\-Impr\-Select$<$ M $>$} \doxyref{}{p.}{classmo_rand_impr_select_a19726a1509cff874801615d63a3b5d9}.\index{moMoveSelect@{mo\-Move\-Select}!update@{update}} +\index{update@{update}!moMoveSelect@{mo\-Move\-Select}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual bool {\bf mo\-Move\-Select}$<$ M $>$::update (const M \& {\em \_\-\_\-move}, const {\bf Fitness} \& {\em \_\-\_\-fit})\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_move_select_7c157b6e64fd417acf6e900059204eb1} + + +Function which updates the best solutions. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]a new move. \item[{\em \_\-\_\-fit}]a fitness linked to the new move. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]a boolean that expresses the need to resume the exploration. \end{Desc} + + +Implemented in {\bf mo\-Best\-Impr\-Select$<$ M $>$} \doxyref{}{p.}{classmo_best_impr_select_d10e3e6f8a0277731e95ef506d064d6d}, and {\bf mo\-Rand\-Impr\-Select$<$ M $>$} \doxyref{}{p.}{classmo_rand_impr_select_60ae5548560caee7e28d5ed2446186c9}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Move\-Select.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_next_move.eps b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_next_move.eps new file mode 100644 index 000000000..08b997f12 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_next_move.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 490.798 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.01875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moNextMove< M >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) cw +(moItRandNextMove< M >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moNextMove< M >) 0 1 box + (eoBF< A1, A2, R >) 0 2 box + (eoFunctorBase) 0 3 box + (moItRandNextMove< M >) 0 0 box + +% ----- relations ----- + +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in +solid +1 0 0.25 out +solid +0 0 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_next_move.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_next_move.tex new file mode 100644 index 000000000..7da58dd8d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_next_move.tex @@ -0,0 +1,29 @@ +\section{mo\-Next\-Move$<$ M $>$ Class Template Reference} +\label{classmo_next_move}\index{moNextMove@{moNextMove}} +Class which allows to generate a new move (\doxyref{mo\-Move}{p.}{classmo_move}). + + +{\tt \#include $<$mo\-Next\-Move.h$>$} + +Inheritance diagram for mo\-Next\-Move$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_next_move} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Next\-Move$<$ M $>$} + +Class which allows to generate a new move (\doxyref{mo\-Move}{p.}{classmo_move}). + +Useful for the explorer (for \doxyref{mo\-TS}{p.}{classmo_t_s} or \doxyref{mo\-HC}{p.}{classmo_h_c}). Does nothing... An object that herits from this class needs to be designed for being used. + + + +Definition at line 22 of file mo\-Next\-Move.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Next\-Move.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_no_aspir_crit.eps b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_no_aspir_crit.eps new file mode 100644 index 000000000..f5d50a373 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_no_aspir_crit.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 583.942 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 0.85625 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moNoAspirCrit< M >) cw +(moAspirCrit< M >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moNoAspirCrit< M >) 0 0 box + (moAspirCrit< M >) 0 1 box + (eoBF< A1, A2, R >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_no_aspir_crit.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_no_aspir_crit.tex new file mode 100644 index 000000000..53fcf3593 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_no_aspir_crit.tex @@ -0,0 +1,68 @@ +\section{mo\-No\-Aspir\-Crit$<$ M $>$ Class Template Reference} +\label{classmo_no_aspir_crit}\index{moNoAspirCrit@{moNoAspirCrit}} +One of the possible aspiration criterion (\doxyref{mo\-Aspir\-Crit}{p.}{classmo_aspir_crit}). + + +{\tt \#include $<$mo\-No\-Aspir\-Crit.h$>$} + +Inheritance diagram for mo\-No\-Aspir\-Crit$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_no_aspir_crit} +\end{center} +\end{figure} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +bool {\bf operator()} (const M \&\_\-\_\-move, const typename M::EOType::Fitness \&\_\-\_\-sol) +\begin{CompactList}\small\item\em Function which describes the aspiration criterion behaviour. \item\end{CompactList}\item +void {\bf init} () +\begin{CompactList}\small\item\em Procedure which initialises all that needs a \doxyref{mo\-No\-Aspir\-Crit}{p.}{classmo_no_aspir_crit}. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-No\-Aspir\-Crit$<$ M $>$} + +One of the possible aspiration criterion (\doxyref{mo\-Aspir\-Crit}{p.}{classmo_aspir_crit}). + +The simplest : never satisfied. + + + +Definition at line 21 of file mo\-No\-Aspir\-Crit.h. + +\subsection{Member Function Documentation} +\index{moNoAspirCrit@{mo\-No\-Aspir\-Crit}!operator()@{operator()}} +\index{operator()@{operator()}!moNoAspirCrit@{mo\-No\-Aspir\-Crit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf mo\-No\-Aspir\-Crit}$<$ M $>$::operator() (const M \& {\em \_\-\_\-move}, const typename M::EOType::Fitness \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline, private]}}\label{classmo_no_aspir_crit_8a7180a8d5c25bfb6727d0b59551b0f8} + + +Function which describes the aspiration criterion behaviour. + +Does nothing. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]a move. \item[{\em \_\-\_\-sol}]a fitness. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]FALSE. \end{Desc} + + +Definition at line 32 of file mo\-No\-Aspir\-Crit.h.\index{moNoAspirCrit@{mo\-No\-Aspir\-Crit}!init@{init}} +\index{init@{init}!moNoAspirCrit@{mo\-No\-Aspir\-Crit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-No\-Aspir\-Crit}$<$ M $>$::init ()\hspace{0.3cm}{\tt [inline, private, virtual]}}\label{classmo_no_aspir_crit_f3a286fc4c2d36bd390ba9a3074f3037} + + +Procedure which initialises all that needs a \doxyref{mo\-No\-Aspir\-Crit}{p.}{classmo_no_aspir_crit}. + +Nothing... + +Implements {\bf mo\-Aspir\-Crit$<$ M $>$} \doxyref{}{p.}{classmo_aspir_crit_a8ce84510a5ec7c9078381e542c6d140}. + +Definition at line 43 of file mo\-No\-Aspir\-Crit.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-No\-Aspir\-Crit.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_rand_impr_select.eps b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_rand_impr_select.eps new file mode 100644 index 000000000..fe55210a4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_rand_impr_select.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 303.03 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.65 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moRandImprSelect< M >) cw +(moMoveSelect< M >) cw +(eoBF< M &, M::EOType::Fitness &, void >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moRandImprSelect< M >) 0 0 box + (moMoveSelect< M >) 0 1 box + (eoBF< M &, M::EOType::Fitness &, void >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_rand_impr_select.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_rand_impr_select.tex new file mode 100644 index 000000000..297d4d381 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_rand_impr_select.tex @@ -0,0 +1,126 @@ +\section{mo\-Rand\-Impr\-Select$<$ M $>$ Class Template Reference} +\label{classmo_rand_impr_select}\index{moRandImprSelect@{moRandImprSelect}} +One of the possible \doxyref{mo\-Move}{p.}{classmo_move} selector (\doxyref{mo\-Move\-Select}{p.}{classmo_move_select}). + + +{\tt \#include $<$mo\-Rand\-Impr\-Select.h$>$} + +Inheritance diagram for mo\-Rand\-Impr\-Select$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_rand_impr_select} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_rand_impr_select_3bff2fdb963297430543c82ffb567a5c} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +void {\bf init} (const {\bf Fitness} \&\_\-\_\-fit) +\begin{CompactList}\small\item\em Procedure which all that needs a \doxyref{mo\-Rand\-Impr\-Select}{p.}{classmo_rand_impr_select}. \item\end{CompactList}\item +bool {\bf update} (const M \&\_\-\_\-move, const {\bf Fitness} \&\_\-\_\-fit) +\begin{CompactList}\small\item\em Function that updates the fitness and move vectors. \item\end{CompactList}\item +void {\bf operator()} (M \&\_\-\_\-move, {\bf Fitness} \&\_\-\_\-fit) throw (Empty\-Selection) +\begin{CompactList}\small\item\em The move selection. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf Fitness} {\bf init\_\-fit}\label{classmo_rand_impr_select_d153c277a0a2ea95ac484210d445b40e} + +\begin{CompactList}\small\item\em Fitness of the current solution. \item\end{CompactList}\item +std::vector$<$ {\bf Fitness} $>$ {\bf vect\_\-better\_\-fit}\label{classmo_rand_impr_select_05c7c3b858e8a25632f2f5c86b0c97a3} + +\begin{CompactList}\small\item\em Candidate fitnesse vector. \item\end{CompactList}\item +std::vector$<$ M $>$ {\bf vect\_\-better\_\-moves}\label{classmo_rand_impr_select_2ace12bd179144fa71d56324694201f5} + +\begin{CompactList}\small\item\em Candidate move vector. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Rand\-Impr\-Select$<$ M $>$} + +One of the possible \doxyref{mo\-Move}{p.}{classmo_move} selector (\doxyref{mo\-Move\-Select}{p.}{classmo_move_select}). + +All the neighbors are considered. One of them that enables an improvment of the objective function is choosen. + + + +Definition at line 25 of file mo\-Rand\-Impr\-Select.h. + +\subsection{Member Function Documentation} +\index{moRandImprSelect@{mo\-Rand\-Impr\-Select}!init@{init}} +\index{init@{init}!moRandImprSelect@{mo\-Rand\-Impr\-Select}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-Rand\-Impr\-Select}$<$ M $>$::init (const {\bf Fitness} \& {\em \_\-\_\-fit})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_rand_impr_select_a19726a1509cff874801615d63a3b5d9} + + +Procedure which all that needs a \doxyref{mo\-Rand\-Impr\-Select}{p.}{classmo_rand_impr_select}. + +Give a value to the initialise fitness. Clean the move and fitness vectors. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-fit}]the current best fitness \end{description} +\end{Desc} + + +Implements {\bf mo\-Move\-Select$<$ M $>$} \doxyref{}{p.}{classmo_move_select_bca4c43f13d26eca7163aeb272a4a52e}. + +Definition at line 40 of file mo\-Rand\-Impr\-Select.h. + +References mo\-Rand\-Impr\-Select$<$ M $>$::init\_\-fit, mo\-Rand\-Impr\-Select$<$ M $>$::vect\_\-better\_\-fit, and mo\-Rand\-Impr\-Select$<$ M $>$::vect\_\-better\_\-moves.\index{moRandImprSelect@{mo\-Rand\-Impr\-Select}!update@{update}} +\index{update@{update}!moRandImprSelect@{mo\-Rand\-Impr\-Select}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf mo\-Rand\-Impr\-Select}$<$ M $>$::update (const M \& {\em \_\-\_\-move}, const {\bf Fitness} \& {\em \_\-\_\-fit})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_rand_impr_select_60ae5548560caee7e28d5ed2446186c9} + + +Function that updates the fitness and move vectors. + +if a move give a better fitness than the initial fitness, it is saved and the fitness too. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]a new move. \item[{\em \_\-\_\-fit}]a new fitness associated to the new move. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]TRUE. \end{Desc} + + +Implements {\bf mo\-Move\-Select$<$ M $>$} \doxyref{}{p.}{classmo_move_select_7c157b6e64fd417acf6e900059204eb1}. + +Definition at line 56 of file mo\-Rand\-Impr\-Select.h. + +References mo\-Rand\-Impr\-Select$<$ M $>$::init\_\-fit, mo\-Rand\-Impr\-Select$<$ M $>$::vect\_\-better\_\-fit, and mo\-Rand\-Impr\-Select$<$ M $>$::vect\_\-better\_\-moves.\index{moRandImprSelect@{mo\-Rand\-Impr\-Select}!operator()@{operator()}} +\index{operator()@{operator()}!moRandImprSelect@{mo\-Rand\-Impr\-Select}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-Rand\-Impr\-Select}$<$ M $>$::operator() (M \& {\em \_\-\_\-move}, {\bf Fitness} \& {\em \_\-\_\-fit}) throw ({\bf Empty\-Selection})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_rand_impr_select_5ee57f77a450c0a9ce50bfccf3ad2a55} + + +The move selection. + +One the saved move is randomly chosen. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]the reference of the move that can be initialised by the function. \item[{\em \_\-\_\-fit}]the reference of the fitness that can be initialised by the function. \end{description} +\end{Desc} +\begin{Desc} +\item[Exceptions:] +\begin{description} +\item[{\em \doxyref{Empty\-Selection}{p.}{class_empty_selection}}]If no move which improves the current fitness are found. \end{description} +\end{Desc} + + +Implements {\bf eo\-BF$<$ M \&, M::EOType::Fitness \&, void $>$}. + +Definition at line 77 of file mo\-Rand\-Impr\-Select.h. + +References mo\-Rand\-Impr\-Select$<$ M $>$::vect\_\-better\_\-fit, and mo\-Rand\-Impr\-Select$<$ M $>$::vect\_\-better\_\-moves. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Rand\-Impr\-Select.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_rand_move.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_rand_move.tex new file mode 100644 index 000000000..a35b6919a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_rand_move.tex @@ -0,0 +1,29 @@ +\section{mo\-Rand\-Move$<$ M $>$ Class Template Reference} +\label{classmo_rand_move}\index{moRandMove@{moRandMove}} +Random move generator. + + +{\tt \#include $<$mo\-Rand\-Move.h$>$} + +Inheritance diagram for mo\-Rand\-Move$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classmo_rand_move} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Rand\-Move$<$ M $>$} + +Random move generator. + +Only a description... An object that herits from this class needs to be designed in order to use a \doxyref{mo\-SA}{p.}{classmo_s_a}. + + + +Definition at line 21 of file mo\-Rand\-Move.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Rand\-Move.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_s_a.eps b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_s_a.eps new file mode 100644 index 000000000..efa0100f9 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_s_a.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 271.739 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.84 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moSA< M >) cw +(moAlgo< M::EOType >) cw +(eoMonOp< M::EOType >) cw +(eoOp< EOType >) cw +(eoUF< M::EOType &, bool >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moSA< M >) 0.5 0 box + (moAlgo< M::EOType >) 0.5 1 box + (eoMonOp< M::EOType >) 0.5 2 box + (eoOp< EOType >) 0 3 box + (eoUF< M::EOType &, bool >) 1 3 box + (eoFunctorBase) 1 4 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +0 1 3 conn +solid +1 0 3 in +solid +1 1 3 in +solid +0 1 3 out +solid +1 1 4 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_s_a.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_s_a.tex new file mode 100644 index 000000000..07cb399d6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_s_a.tex @@ -0,0 +1,110 @@ +\section{mo\-SA$<$ M $>$ Class Template Reference} +\label{classmo_s_a}\index{moSA@{moSA}} +Simulated Annealing (SA). + + +{\tt \#include $<$mo\-SA.h$>$} + +Inheritance diagram for mo\-SA$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5cm]{classmo_s_a} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf mo\-SA} ({\bf mo\-Rand\-Move}$<$ M $>$ \&\_\-\_\-move\_\-rand, {\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \&\_\-\_\-incr\_\-eval, {\bf mo\-Sol\-Continue}$<$ {\bf EOT} $>$ \&\_\-\_\-cont, double \_\-\_\-init\_\-temp, {\bf mo\-Cool\-Sched} \&\_\-\_\-cool\_\-sched, {\bf eo\-Eval\-Func}$<$ {\bf EOT} $>$ \&\_\-\_\-full\_\-eval) +\begin{CompactList}\small\item\em SA constructor. \item\end{CompactList}\item +bool {\bf operator()} ({\bf EOT} \&\_\-\_\-sol) +\begin{CompactList}\small\item\em function that launches the SA algorithm. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_s_a_d5d64a8797bdedc7b3af7893aded0bd5} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\item +typedef EOT::Fitness {\bf Fitness}\label{classmo_s_a_97f1a40d5ab5a0b3f878d0347b34804b} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf mo\-Rand\-Move}$<$ M $>$ \& {\bf move\_\-rand}\label{classmo_s_a_71c49935b63a202d25888a5f86121fec} + +\begin{CompactList}\small\item\em A move generator (generally randomly). \item\end{CompactList}\item +{\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \& {\bf incr\_\-eval}\label{classmo_s_a_4c3be32e9832e465b24e6d33559356bc} + +\begin{CompactList}\small\item\em A (generally) efficient evaluation function. \item\end{CompactList}\item +{\bf mo\-Sol\-Continue}$<$ {\bf EOT} $>$ \& {\bf cont}\label{classmo_s_a_54484c8a514866ea496e0058c2e09716} + +\begin{CompactList}\small\item\em Stopping criterion before temperature update. \item\end{CompactList}\item +double {\bf init\_\-temp}\label{classmo_s_a_f1af7636b52aa5f6b381f8187b667bd4} + +\begin{CompactList}\small\item\em Initial temperature. \item\end{CompactList}\item +{\bf mo\-Cool\-Sched} \& {\bf cool\_\-sched}\label{classmo_s_a_c7aaf7424aa1b9f889d2ba9c959e5a1d} + +\begin{CompactList}\small\item\em The cooling schedule. \item\end{CompactList}\item +{\bf eo\-Eval\-Func}$<$ {\bf EOT} $>$ \& {\bf full\_\-eval}\label{classmo_s_a_bcd6a940046f23dd741444c0b85edf2c} + +\begin{CompactList}\small\item\em A full evaluation function. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-SA$<$ M $>$} + +Simulated Annealing (SA). + +Class that describes a Simulated Annealing algorithm. + + + +Definition at line 32 of file mo\-SA.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moSA@{mo\-SA}!moSA@{moSA}} +\index{moSA@{moSA}!moSA@{mo\-SA}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf mo\-SA}$<$ M $>$::{\bf mo\-SA} ({\bf mo\-Rand\-Move}$<$ M $>$ \& {\em \_\-\_\-move\_\-rand}, {\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \& {\em \_\-\_\-incr\_\-eval}, {\bf mo\-Sol\-Continue}$<$ {\bf EOT} $>$ \& {\em \_\-\_\-cont}, double {\em \_\-\_\-init\_\-temp}, {\bf mo\-Cool\-Sched} \& {\em \_\-\_\-cool\_\-sched}, {\bf eo\-Eval\-Func}$<$ {\bf EOT} $>$ \& {\em \_\-\_\-full\_\-eval})\hspace{0.3cm}{\tt [inline]}}\label{classmo_s_a_ef9ffb0d95c599e0a06c78db5f2f4b12} + + +SA constructor. + +All the boxes used by a SA need to be given. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move\_\-rand}]a move generator (generally randomly). \item[{\em \_\-\_\-incr\_\-eval}]a (generaly) efficient evaluation function \item[{\em \_\-\_\-cont}]a stopping criterion. \item[{\em \_\-\_\-init\_\-temp}]the initial temperature. \item[{\em \_\-\_\-cool\_\-sched}]a cooling schedule, describes how the temperature is modified. \item[{\em \_\-\_\-full\_\-eval}]a full evaluation function. \end{description} +\end{Desc} + + +Definition at line 60 of file mo\-SA.h. + +\subsection{Member Function Documentation} +\index{moSA@{mo\-SA}!operator()@{operator()}} +\index{operator()@{operator()}!moSA@{mo\-SA}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf mo\-SA}$<$ M $>$::operator() ({\bf EOT} \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_s_a_0e4c54b57bc13fcbd4763883b8f719e5} + + +function that launches the SA algorithm. + +As a \doxyref{mo\-TS}{p.}{classmo_t_s} or a \doxyref{mo\-HC}{p.}{classmo_h_c}, the SA can be used for HYBRIDATION in an evolutionary algorithm. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-sol}]a solution to improve. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]TRUE. \end{Desc} + + +Implements {\bf eo\-UF$<$ M::EOType \&, bool $>$}. + +Definition at line 82 of file mo\-SA.h. + +References mo\-SA$<$ M $>$::cont, mo\-SA$<$ M $>$::cool\_\-sched, mo\-SA$<$ M $>$::full\_\-eval, mo\-SA$<$ M $>$::incr\_\-eval, mo\-SA$<$ M $>$::init\_\-temp, and mo\-SA$<$ M $>$::move\_\-rand. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-SA.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_sol_continue.eps b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_sol_continue.eps new file mode 100644 index 000000000..c2a7fb9ca --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_sol_continue.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 441.989 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.13125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moSolContinue< EOT >) cw +(eoUF< const EOT &, bool >) cw +(eoFunctorBase) cw +(moGenSolContinue< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moSolContinue< EOT >) 0 1 box + (eoUF< const EOT &, bool >) 0 2 box + (eoFunctorBase) 0 3 box + (moGenSolContinue< EOT >) 0 0 box + +% ----- relations ----- + +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in +solid +1 0 0.25 out +solid +0 0 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_sol_continue.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_sol_continue.tex new file mode 100644 index 000000000..457ef3ba7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_sol_continue.tex @@ -0,0 +1,46 @@ +\section{mo\-Sol\-Continue$<$ EOT $>$ Class Template Reference} +\label{classmo_sol_continue}\index{moSolContinue@{moSolContinue}} +Class that describes a stop criterion for a solution-based heuristic. + + +{\tt \#include $<$mo\-Sol\-Continue.h$>$} + +Inheritance diagram for mo\-Sol\-Continue$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_sol_continue} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +virtual void {\bf init} ()=0 +\begin{CompactList}\small\item\em Procedure which initialises all that the stop criterion needs. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class mo\-Sol\-Continue$<$ EOT $>$} + +Class that describes a stop criterion for a solution-based heuristic. + +It allows to add an initialisation procedure to an object that is a unary function ({\bf eo\-UF}). + + + +Definition at line 22 of file mo\-Sol\-Continue.h. + +\subsection{Member Function Documentation} +\index{moSolContinue@{mo\-Sol\-Continue}!init@{init}} +\index{init@{init}!moSolContinue@{mo\-Sol\-Continue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ virtual void {\bf mo\-Sol\-Continue}$<$ EOT $>$::init ()\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_sol_continue_064dc966a210f4ffb9515be3f03ca4c7} + + +Procedure which initialises all that the stop criterion needs. + +Generally, it allocates some data structures or initialises some counters. + +Implemented in {\bf mo\-Gen\-Sol\-Continue$<$ EOT $>$} \doxyref{}{p.}{classmo_gen_sol_continue_6c5db8182157584b56507cc9075602d4}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Sol\-Continue.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_t_s.eps b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_t_s.eps new file mode 100644 index 000000000..a62652ad5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_t_s.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 271.739 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.84 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moTS< M >) cw +(moAlgo< M::EOType >) cw +(eoMonOp< M::EOType >) cw +(eoOp< EOType >) cw +(eoUF< M::EOType &, bool >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moTS< M >) 0.5 0 box + (moAlgo< M::EOType >) 0.5 1 box + (eoMonOp< M::EOType >) 0.5 2 box + (eoOp< EOType >) 0 3 box + (eoUF< M::EOType &, bool >) 1 3 box + (eoFunctorBase) 1 4 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +0 1 3 conn +solid +1 0 3 in +solid +1 1 3 in +solid +0 1 3 out +solid +1 1 4 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_t_s.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_t_s.tex new file mode 100644 index 000000000..08c652ad2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_t_s.tex @@ -0,0 +1,132 @@ +\section{mo\-TS$<$ M $>$ Class Template Reference} +\label{classmo_t_s}\index{moTS@{moTS}} +Tabu Search (TS). + + +{\tt \#include $<$mo\-TS.h$>$} + +Inheritance diagram for mo\-TS$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5cm]{classmo_t_s} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf mo\-TS} ({\bf mo\-Move\-Init}$<$ M $>$ \&\_\-\_\-move\_\-init, {\bf mo\-Next\-Move}$<$ M $>$ \&\_\-\_\-next\_\-move, {\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \&\_\-\_\-incr\_\-eval, {\bf mo\-Tabu\-List}$<$ M $>$ \&\_\-\_\-tabu\_\-list, {\bf mo\-Aspir\-Crit}$<$ M $>$ \&\_\-\_\-aspir\_\-crit, {\bf mo\-Sol\-Continue}$<$ {\bf EOT} $>$ \&\_\-\_\-cont, {\bf eo\-Eval\-Func}$<$ {\bf EOT} $>$ \&\_\-\_\-full\_\-eval) +\begin{CompactList}\small\item\em Constructor of a \doxyref{mo\-TS}{p.}{classmo_t_s} specifying all the boxes. \item\end{CompactList}\item +{\bf mo\-TS} ({\bf mo\-Move\-Expl}$<$ M $>$ \&\_\-\_\-move\_\-expl, {\bf mo\-Sol\-Continue}$<$ {\bf EOT} $>$ \&\_\-\_\-cont, {\bf eo\-Eval\-Func}$<$ {\bf EOT} $>$ \&\_\-\_\-full\_\-eval) +\begin{CompactList}\small\item\em Constructor with less parameters. \item\end{CompactList}\item +bool {\bf operator()} ({\bf EOT} \&\_\-\_\-sol) +\begin{CompactList}\small\item\em Function which launchs the Tabu Search. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_t_s_90d19d468c12ab5bd796948ce1ce79b1} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\item +typedef EOT::Fitness {\bf Fitness}\label{classmo_t_s_aa0eefbb17111422e495d1255f876fca} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf mo\-Move\-Expl}$<$ M $>$ \& {\bf move\_\-expl}\label{classmo_t_s_06914ddc90ca96e9158c8dbe182a7865} + +\begin{CompactList}\small\item\em Neighborhood explorer. \item\end{CompactList}\item +{\bf mo\-Sol\-Continue}$<$ {\bf EOT} $>$ \& {\bf cont}\label{classmo_t_s_969371cd2202f3d29cbb426f57ac7d3a} + +\begin{CompactList}\small\item\em Stop criterion. \item\end{CompactList}\item +{\bf eo\-Eval\-Func}$<$ {\bf EOT} $>$ \& {\bf full\_\-eval}\label{classmo_t_s_fb67eddae5d0bfca4ed881995523231e} + +\begin{CompactList}\small\item\em Full evaluation function. \item\end{CompactList}\end{CompactItemize} +\subsection*{Static Private Attributes} +\begin{CompactItemize} +\item +static bool {\bf first\_\-time}\label{classmo_t_s_564bc1969548ccbd9bb7e76f92898de0} + +\begin{CompactList}\small\item\em Boolean allowing to initialise the ptread\_\-mutex\_\-t in the constructor. \item\end{CompactList}\item +static pthread\_\-mutex\_\-t {\bf mutex}\label{classmo_t_s_688f9ba42eb33cae6431f4f4eb65b9e9} + +\begin{CompactList}\small\item\em The lock. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-TS$<$ M $>$} + +Tabu Search (TS). + +Generic algorithm that describes a tabu search. + + + +Definition at line 30 of file mo\-TS.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moTS@{mo\-TS}!moTS@{moTS}} +\index{moTS@{moTS}!moTS@{mo\-TS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf mo\-TS}$<$ M $>$::{\bf mo\-TS} ({\bf mo\-Move\-Init}$<$ M $>$ \& {\em \_\-\_\-move\_\-init}, {\bf mo\-Next\-Move}$<$ M $>$ \& {\em \_\-\_\-next\_\-move}, {\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \& {\em \_\-\_\-incr\_\-eval}, {\bf mo\-Tabu\-List}$<$ M $>$ \& {\em \_\-\_\-tabu\_\-list}, {\bf mo\-Aspir\-Crit}$<$ M $>$ \& {\em \_\-\_\-aspir\_\-crit}, {\bf mo\-Sol\-Continue}$<$ {\bf EOT} $>$ \& {\em \_\-\_\-cont}, {\bf eo\-Eval\-Func}$<$ {\bf EOT} $>$ \& {\em \_\-\_\-full\_\-eval})\hspace{0.3cm}{\tt [inline]}}\label{classmo_t_s_2be23f4524733ee6f37b71310d76407e} + + +Constructor of a \doxyref{mo\-TS}{p.}{classmo_t_s} specifying all the boxes. + +In this constructor, a \doxyref{mo\-TSMove\-Loop\-Expl}{p.}{classmo_t_s_move_loop_expl} is instanciated. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move\_\-init}]move initialisation \item[{\em \_\-\_\-next\_\-move}]neighborhood explorer \item[{\em \_\-\_\-incr\_\-eval}]efficient evaluation \item[{\em \_\-\_\-tabu\_\-list}]tabu list \item[{\em \_\-\_\-aspir\_\-crit}]aspiration criterion \item[{\em \_\-\_\-cont}]stop criterion \item[{\em \_\-\_\-full\_\-eval}]full evaluation function \end{description} +\end{Desc} + + +Definition at line 59 of file mo\-TS.h. + +References mo\-TS$<$ M $>$::first\_\-time, and mo\-TS$<$ M $>$::mutex.\index{moTS@{mo\-TS}!moTS@{moTS}} +\index{moTS@{moTS}!moTS@{mo\-TS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf mo\-TS}$<$ M $>$::{\bf mo\-TS} ({\bf mo\-Move\-Expl}$<$ M $>$ \& {\em \_\-\_\-move\_\-expl}, {\bf mo\-Sol\-Continue}$<$ {\bf EOT} $>$ \& {\em \_\-\_\-cont}, {\bf eo\-Eval\-Func}$<$ {\bf EOT} $>$ \& {\em \_\-\_\-full\_\-eval})\hspace{0.3cm}{\tt [inline]}}\label{classmo_t_s_508e675c4232cf2ca06dded931c90bab} + + +Constructor with less parameters. + +The explorer is given in the parameters. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move\_\-expl}]the explorer (generally different that a \doxyref{mo\-TSMove\-Loop\-Expl}{p.}{classmo_t_s_move_loop_expl}) \item[{\em \_\-\_\-cont}]stop criterion \item[{\em \_\-\_\-full\_\-eval}]full evaluation function \end{description} +\end{Desc} + + +Definition at line 81 of file mo\-TS.h. + +References mo\-TS$<$ M $>$::first\_\-time, and mo\-TS$<$ M $>$::mutex. + +\subsection{Member Function Documentation} +\index{moTS@{mo\-TS}!operator()@{operator()}} +\index{operator()@{operator()}!moTS@{mo\-TS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf mo\-TS}$<$ M $>$::operator() ({\bf EOT} \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_t_s_94d25a76fe1bc9ef0bbd0358ff55aceb} + + +Function which launchs the Tabu Search. + +Algorithm of the tabu search. As a \doxyref{mo\-SA}{p.}{classmo_s_a} or a \doxyref{mo\-HC}{p.}{classmo_h_c}, it can be used for HYBRIDATION in an evolutionary algorithm. For security a lock (pthread\_\-mutex\_\-t) is closed during the algorithm. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-sol}]a solution to improve. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]TRUE. \end{Desc} + + +Implements {\bf eo\-UF$<$ M::EOType \&, bool $>$}. + +Definition at line 104 of file mo\-TS.h. + +References mo\-TS$<$ M $>$::cont, mo\-TS$<$ M $>$::full\_\-eval, mo\-TS$<$ M $>$::move\_\-expl, and mo\-TS$<$ M $>$::mutex. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-TS.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_t_s_move_loop_expl.eps b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_t_s_move_loop_expl.eps new file mode 100644 index 000000000..fd31fc02a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_t_s_move_loop_expl.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 327.869 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.525 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moTSMoveLoopExpl< M >) cw +(moMoveLoopExpl< M >) cw +(moMoveExpl< M >) cw +(eoBF< const M::EOType &, M::EOType &, void >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moTSMoveLoopExpl< M >) 0 0 box + (moMoveLoopExpl< M >) 0 1 box + (moMoveExpl< M >) 0 2 box + (eoBF< const M::EOType &, M::EOType &, void >) 0 3 box + (eoFunctorBase) 0 4 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in +solid +0 0 3 out +solid +1 0 4 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_t_s_move_loop_expl.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_t_s_move_loop_expl.tex new file mode 100644 index 000000000..40aeadccd --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_t_s_move_loop_expl.tex @@ -0,0 +1,108 @@ +\section{mo\-TSMove\-Loop\-Expl$<$ M $>$ Class Template Reference} +\label{classmo_t_s_move_loop_expl}\index{moTSMoveLoopExpl@{moTSMoveLoopExpl}} +Explorer for a Tabu Search algorithm. + + +{\tt \#include $<$mo\-TSMove\-Loop\-Expl.h$>$} + +Inheritance diagram for mo\-TSMove\-Loop\-Expl$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5cm]{classmo_t_s_move_loop_expl} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf mo\-TSMove\-Loop\-Expl} ({\bf mo\-Move\-Init}$<$ M $>$ \&\_\-\_\-move\_\-init, {\bf mo\-Next\-Move}$<$ M $>$ \&\_\-\_\-next\_\-move, {\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \&\_\-\_\-incr\_\-eval, {\bf mo\-Tabu\-List}$<$ M $>$ \&\_\-\_\-tabu\_\-list, {\bf mo\-Aspir\-Crit}$<$ M $>$ \&\_\-\_\-aspir\_\-crit) +\begin{CompactList}\small\item\em Constructor. \item\end{CompactList}\item +void {\bf operator()} (const {\bf EOT} \&\_\-\_\-old\_\-sol, {\bf EOT} \&\_\-\_\-new\_\-sol) +\begin{CompactList}\small\item\em Procedure which lauches the exploration. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_t_s_move_loop_expl_47f42225e2ed096374b818bdb848a527} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_t_s_move_loop_expl_a1ba36c937b195ca2f7d1a24adaa7018} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf mo\-Move\-Init}$<$ M $>$ \& {\bf move\_\-init}\label{classmo_t_s_move_loop_expl_6b23f99648902fb72ed17a4a6fa4e400} + +\begin{CompactList}\small\item\em Move initialisation. \item\end{CompactList}\item +{\bf mo\-Next\-Move}$<$ M $>$ \& {\bf next\_\-move}\label{classmo_t_s_move_loop_expl_aeeff6666d26ff5c67acd9c153a5ae49} + +\begin{CompactList}\small\item\em Neighborhood explorer. \item\end{CompactList}\item +{\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \& {\bf incr\_\-eval}\label{classmo_t_s_move_loop_expl_ee4443fc8e45d840697619678628c26c} + +\begin{CompactList}\small\item\em Efficient evaluation. \item\end{CompactList}\item +{\bf mo\-Best\-Impr\-Select}$<$ M $>$ {\bf move\_\-select}\label{classmo_t_s_move_loop_expl_35a3f3035fb8df875c281d9838904bf1} + +\begin{CompactList}\small\item\em Move selector. \item\end{CompactList}\item +{\bf mo\-Tabu\-List}$<$ M $>$ \& {\bf tabu\_\-list}\label{classmo_t_s_move_loop_expl_0e5988a940ba218e87c53b7e56d79790} + +\begin{CompactList}\small\item\em Tabu list. \item\end{CompactList}\item +{\bf mo\-Aspir\-Crit}$<$ M $>$ \& {\bf aspir\_\-crit}\label{classmo_t_s_move_loop_expl_6786cf5422d17cbf872b07ae74ca6b0f} + +\begin{CompactList}\small\item\em Aspiration criterion. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-TSMove\-Loop\-Expl$<$ M $>$} + +Explorer for a Tabu Search algorithm. + +It is used by a \doxyref{mo\-TS}{p.}{classmo_t_s}. + + + +Definition at line 30 of file mo\-TSMove\-Loop\-Expl.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moTSMoveLoopExpl@{mo\-TSMove\-Loop\-Expl}!moTSMoveLoopExpl@{moTSMoveLoopExpl}} +\index{moTSMoveLoopExpl@{moTSMoveLoopExpl}!moTSMoveLoopExpl@{mo\-TSMove\-Loop\-Expl}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf mo\-TSMove\-Loop\-Expl}$<$ M $>$::{\bf mo\-TSMove\-Loop\-Expl} ({\bf mo\-Move\-Init}$<$ M $>$ \& {\em \_\-\_\-move\_\-init}, {\bf mo\-Next\-Move}$<$ M $>$ \& {\em \_\-\_\-next\_\-move}, {\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \& {\em \_\-\_\-incr\_\-eval}, {\bf mo\-Tabu\-List}$<$ M $>$ \& {\em \_\-\_\-tabu\_\-list}, {\bf mo\-Aspir\-Crit}$<$ M $>$ \& {\em \_\-\_\-aspir\_\-crit})\hspace{0.3cm}{\tt [inline]}}\label{classmo_t_s_move_loop_expl_43306dae9df150a8d9dc0dec9cd6a381} + + +Constructor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move\_\-init}]move initialisation \item[{\em \_\-\_\-next\_\-move}]neighborhood explorer \item[{\em \_\-\_\-incr\_\-eval}]efficient evaluation \item[{\em \_\-\_\-tabu\_\-list}]tabu list \item[{\em \_\-\_\-aspir\_\-crit}]aspiration criterion \end{description} +\end{Desc} + + +Definition at line 49 of file mo\-TSMove\-Loop\-Expl.h. + +References mo\-TSMove\-Loop\-Expl$<$ M $>$::aspir\_\-crit, and mo\-TSMove\-Loop\-Expl$<$ M $>$::tabu\_\-list. + +\subsection{Member Function Documentation} +\index{moTSMoveLoopExpl@{mo\-TSMove\-Loop\-Expl}!operator()@{operator()}} +\index{operator()@{operator()}!moTSMoveLoopExpl@{mo\-TSMove\-Loop\-Expl}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-TSMove\-Loop\-Expl}$<$ M $>$::operator() (const {\bf EOT} \& {\em \_\-\_\-old\_\-sol}, {\bf EOT} \& {\em \_\-\_\-new\_\-sol})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_t_s_move_loop_expl_f601bbd0ccc41d6fbe3df9fcd87ad9e7} + + +Procedure which lauches the exploration. + +The exploration continues while the chosen move is not in the tabu list or the aspiration criterion is true. If these 2 conditions are not true, the exploration stops if the move selector update function returns false. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-old\_\-sol}]the initial solution \item[{\em \_\-\_\-new\_\-sol}]the new solution \end{description} +\end{Desc} + + +Implements {\bf eo\-BF$<$ const M::EOType \&, M::EOType \&, void $>$}. + +Definition at line 69 of file mo\-TSMove\-Loop\-Expl.h. + +References mo\-TSMove\-Loop\-Expl$<$ M $>$::aspir\_\-crit, mo\-TSMove\-Loop\-Expl$<$ M $>$::incr\_\-eval, mo\-TSMove\-Loop\-Expl$<$ M $>$::move\_\-init, mo\-TSMove\-Loop\-Expl$<$ M $>$::move\_\-select, mo\-TSMove\-Loop\-Expl$<$ M $>$::next\_\-move, and mo\-TSMove\-Loop\-Expl$<$ M $>$::tabu\_\-list. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-TSMove\-Loop\-Expl.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_tabu_list.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_tabu_list.tex new file mode 100644 index 000000000..7968975e6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/classmo_tabu_list.tex @@ -0,0 +1,75 @@ +\section{mo\-Tabu\-List$<$ M $>$ Class Template Reference} +\label{classmo_tabu_list}\index{moTabuList@{moTabuList}} +Class describing a tabu list that a \doxyref{mo\-TS}{p.}{classmo_t_s} uses. + + +{\tt \#include $<$mo\-Tabu\-List.h$>$} + +Inheritance diagram for mo\-Tabu\-List$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classmo_tabu_list} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_tabu_list_e219715cc3fdd5626764bc50ce6357df} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +virtual void {\bf add} (const M \&\_\-\_\-move, const {\bf EOT} \&\_\-\_\-sol)=0 +\begin{CompactList}\small\item\em Procedure to add a move in the tabu list. \item\end{CompactList}\item +virtual void {\bf update} ()=0 +\begin{CompactList}\small\item\em Procedure that updates the tabu list content. \item\end{CompactList}\item +virtual void {\bf init} ()=0 +\begin{CompactList}\small\item\em Procedure which initialises the tabu list. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Tabu\-List$<$ M $>$} + +Class describing a tabu list that a \doxyref{mo\-TS}{p.}{classmo_t_s} uses. + +It is only a description, does nothing... A new object that herits from this class has to be defined in order to be used in a \doxyref{mo\-TS}{p.}{classmo_t_s}. + + + +Definition at line 22 of file mo\-Tabu\-List.h. + +\subsection{Member Function Documentation} +\index{moTabuList@{mo\-Tabu\-List}!add@{add}} +\index{add@{add}!moTabuList@{mo\-Tabu\-List}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual void {\bf mo\-Tabu\-List}$<$ M $>$::add (const M \& {\em \_\-\_\-move}, const {\bf EOT} \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_tabu_list_d279d72cb486d812da1ad3d24a69c286} + + +Procedure to add a move in the tabu list. + +The two parameters have not to be modified so they are constant parameters + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]a new tabu move \item[{\em \_\-\_\-sol}]the solution associated to this move \end{description} +\end{Desc} +\index{moTabuList@{mo\-Tabu\-List}!update@{update}} +\index{update@{update}!moTabuList@{mo\-Tabu\-List}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual void {\bf mo\-Tabu\-List}$<$ M $>$::update ()\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_tabu_list_a2e5d1132f064093c8ed57046405f5ca} + + +Procedure that updates the tabu list content. + +Generally, a counter associated to each saved move is decreased by one. \index{moTabuList@{mo\-Tabu\-List}!init@{init}} +\index{init@{init}!moTabuList@{mo\-Tabu\-List}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual void {\bf mo\-Tabu\-List}$<$ M $>$::init ()\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_tabu_list_0a06c459d56e8e2b408a8f3c6aec4e57} + + +Procedure which initialises the tabu list. + +Can be useful if the data structure needs to be allocated before being used. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Tabu\-List.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/doxygen.sty b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/doxygen.sty new file mode 100644 index 000000000..20a334e06 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/doxygen.sty @@ -0,0 +1,78 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} +\RequirePackage{calc} +\RequirePackage{array} +\pagestyle{fancyplain} +\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}} +\renewcommand{\chaptermark}[1]{\markboth{#1}{}} +\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} +\lhead[\fancyplain{}{\bfseries\thepage}] + {\fancyplain{}{\bfseries\rightmark}} +\rhead[\fancyplain{}{\bfseries\leftmark}] + {\fancyplain{}{\bfseries\thepage}} +\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by Doxygen }]{} +\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Thu Dec 21 10:49:58 2006 for PARADISEO-MO by Doxygen }} +\cfoot{} +\newenvironment{Code} +{\footnotesize} +{\normalsize} +\newcommand{\doxyref}[3]{\textbf{#1} (\textnormal{#2}\,\pageref{#3})} +\newenvironment{DocInclude} +{\footnotesize} +{\normalsize} +\newenvironment{VerbInclude} +{\footnotesize} +{\normalsize} +\newenvironment{Image} +{\begin{figure}[H]} +{\end{figure}} +\newenvironment{ImageNoCaption}{}{} +\newenvironment{CompactList} +{\begin{list}{}{ + \setlength{\leftmargin}{0.5cm} + \setlength{\itemsep}{0pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \renewcommand{\makelabel}{\hfill}}} +{\end{list}} +\newenvironment{CompactItemize} +{ + \begin{itemize} + \setlength{\itemsep}{-3pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \setlength{\partopsep}{0pt} +} +{\end{itemize}} +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp} +\newlength{\tmplength} +\newenvironment{TabularC}[1] +{ +\setlength{\tmplength} + {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)} + \par\begin{tabular*}{\linewidth} + {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|} +} +{\end{tabular*}\par} +\newcommand{\entrylabel}[1]{ + {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\vspace{1.5\baselineskip}}}} +\newenvironment{Desc} +{\begin{list}{} + { + \settowidth{\labelwidth}{40pt} + \setlength{\leftmargin}{\labelwidth} + \setlength{\parsep}{0pt} + \setlength{\itemsep}{-4pt} + \renewcommand{\makelabel}{\entrylabel} + } +} +{\end{list}} +\newenvironment{Indent} + {\begin{list}{}{\setlength{\leftmargin}{0.5cm}} + \item[]\ignorespaces} + {\unskip\end{list}} +\setlength{\parindent}{0cm} +\setlength{\parskip}{0.2cm} +\addtocounter{secnumdepth}{1} +\sloppy +\usepackage[T1]{fontenc} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/hierarchy.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/hierarchy.tex new file mode 100644 index 000000000..4c6ee27b0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/hierarchy.tex @@ -0,0 +1,74 @@ +\section{PARADISEO-MO Class Hierarchy} +This inheritance list is sorted roughly, but not completely, alphabetically:\begin{CompactList} +\item \contentsline{section}{Empty\-Selection}{\pageref{class_empty_selection}}{} +\item eo\-Functor\-Base{\tt [external]}\begin{CompactList} +\item eo\-BF$<$ A1, A2, R $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{mo\-Aspir\-Crit$<$ M $>$}{\pageref{classmo_aspir_crit}}{} +\begin{CompactList} +\item \contentsline{section}{mo\-Impr\-Best\-Fit\-Aspir\-Crit$<$ M $>$}{\pageref{classmo_impr_best_fit_aspir_crit}}{} +\item \contentsline{section}{mo\-No\-Aspir\-Crit$<$ M $>$}{\pageref{classmo_no_aspir_crit}}{} +\end{CompactList} +\item \contentsline{section}{mo\-LSCheck\-Point$<$ M $>$}{\pageref{classmo_l_s_check_point}}{} +\item \contentsline{section}{mo\-Move\-Incr\-Eval$<$ M $>$}{\pageref{classmo_move_incr_eval}}{} +\item \contentsline{section}{mo\-Move\-Init$<$ M $>$}{\pageref{classmo_move_init}}{} +\item \contentsline{section}{mo\-Next\-Move$<$ M $>$}{\pageref{classmo_next_move}}{} +\begin{CompactList} +\item \contentsline{section}{mo\-It\-Rand\-Next\-Move$<$ M $>$}{\pageref{classmo_it_rand_next_move}}{} +\end{CompactList} +\item \contentsline{section}{mo\-Tabu\-List$<$ M $>$}{\pageref{classmo_tabu_list}}{} +\end{CompactList} +\item eo\-BF$<$ const M::EOType \&, M::EOType \&, void $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{mo\-Move\-Expl$<$ M $>$}{\pageref{classmo_move_expl}}{} +\begin{CompactList} +\item \contentsline{section}{mo\-Move\-Loop\-Expl$<$ M $>$}{\pageref{classmo_move_loop_expl}}{} +\begin{CompactList} +\item \contentsline{section}{mo\-HCMove\-Loop\-Expl$<$ M $>$}{\pageref{classmo_h_c_move_loop_expl}}{} +\item \contentsline{section}{mo\-TSMove\-Loop\-Expl$<$ M $>$}{\pageref{classmo_t_s_move_loop_expl}}{} +\end{CompactList} +\end{CompactList} +\end{CompactList} +\item eo\-BF$<$ M \&, M::EOType::Fitness \&, void $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{mo\-Move\-Select$<$ M $>$}{\pageref{classmo_move_select}}{} +\begin{CompactList} +\item \contentsline{section}{mo\-Best\-Impr\-Select$<$ M $>$}{\pageref{classmo_best_impr_select}}{} +\item \contentsline{section}{mo\-First\-Impr\-Select$<$ M $>$}{\pageref{classmo_first_impr_select}}{} +\item \contentsline{section}{mo\-Rand\-Impr\-Select$<$ M $>$}{\pageref{classmo_rand_impr_select}}{} +\end{CompactList} +\end{CompactList} +\item eo\-UF$<$ const EOT \&, bool $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{mo\-Sol\-Continue$<$ EOT $>$}{\pageref{classmo_sol_continue}}{} +\begin{CompactList} +\item \contentsline{section}{mo\-Gen\-Sol\-Continue$<$ EOT $>$}{\pageref{classmo_gen_sol_continue}}{} +\end{CompactList} +\end{CompactList} +\item eo\-UF$<$ double \&, bool $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{mo\-Cool\-Sched}{\pageref{classmo_cool_sched}}{} +\begin{CompactList} +\item \contentsline{section}{mo\-Easy\-Cool\-Sched}{\pageref{classmo_easy_cool_sched}}{} +\end{CompactList} +\end{CompactList} +\item eo\-UF$<$ EOT \&, bool $>${\tt [external]}\begin{CompactList} +\item eo\-Mon\-Op$<$ EOT $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{mo\-Algo$<$ EOT $>$}{\pageref{classmo_algo}}{} +\end{CompactList} +\end{CompactList} +\item eo\-UF$<$ EOT \&, void $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{mo\-Move$<$ EOT $>$}{\pageref{classmo_move}}{} +\end{CompactList} +\item eo\-UF$<$ EOType \&, bool $>${\tt [external]}\item eo\-UF$<$ M \&, void $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{mo\-Rand\-Move$<$ M $>$}{\pageref{classmo_rand_move}}{} +\end{CompactList} +\item eo\-UF$<$ M::EOType \&, bool $>${\tt [external]}\begin{CompactList} +\item eo\-Mon\-Op$<$ M::EOType $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{mo\-Algo$<$ M::EOType $>$}{\pageref{classmo_algo}}{} +\begin{CompactList} +\item \contentsline{section}{mo\-HC$<$ M $>$}{\pageref{classmo_h_c}}{} +\item \contentsline{section}{mo\-SA$<$ M $>$}{\pageref{classmo_s_a}}{} +\item \contentsline{section}{mo\-TS$<$ M $>$}{\pageref{classmo_t_s}}{} +\end{CompactList} +\end{CompactList} +\end{CompactList} +\end{CompactList} +\item eo\-Op$<$ EOType $>${\tt [external]}\begin{CompactList} +\item eo\-Mon\-Op$<$ EOT $>${\tt [external]}\item eo\-Mon\-Op$<$ M::EOType $>${\tt [external]}\end{CompactList} +\end{CompactList} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/main.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/main.tex new file mode 100644 index 000000000..8dba03e9c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/main.tex @@ -0,0 +1,5 @@ +\section{intro}\label{main_intro} +MO is an extension of the ANSI-C++ compliant evolutionary computation library {\bf EO}. \par + It contains classes for almost any kind of one solution based heuristics.\section{tutorial}\label{main_tutorial} +\section{install}\label{main_install} +The installation procedure of the package is detailed in the {\tt README} file in the top-directory of the source-tree.\section{design}\label{main_design} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/refman.tex b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/refman.tex new file mode 100644 index 000000000..8d5e2a2b2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/latex/refman.tex @@ -0,0 +1,66 @@ +\documentclass[a4paper]{book} +\usepackage{a4wide} +\usepackage{makeidx} +\usepackage{fancyhdr} +\usepackage{graphicx} +\usepackage{multicol} +\usepackage{float} +\usepackage{textcomp} +\usepackage{alltt} +\usepackage{doxygen} +\makeindex +\setcounter{tocdepth}{1} +\renewcommand{\footrulewidth}{0.4pt} +\begin{document} +\begin{titlepage} +\vspace*{7cm} +\begin{center} +{\Large PARADISEO-MO Reference Manual\\[1ex]\large 0.1 }\\ +\vspace*{1cm} +{\large Generated by Doxygen 1.5.1}\\ +\vspace*{0.5cm} +{\small Thu Dec 21 10:49:58 2006}\\ +\end{center} +\end{titlepage} +\clearemptydoublepage +\pagenumbering{roman} +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} +\chapter{Welcome to PARADISEO-Moving Objects } +\label{index}\input{main} +\chapter{PARADISEO-MO Hierarchical Index} +\input{hierarchy} +\chapter{PARADISEO-MO Class Index} +\input{annotated} +\chapter{PARADISEO-MO Class Documentation} +\input{class_empty_selection} +\include{classmo_algo} +\include{classmo_aspir_crit} +\include{classmo_best_impr_select} +\include{classmo_cool_sched} +\include{classmo_easy_cool_sched} +\include{classmo_first_impr_select} +\include{classmo_gen_sol_continue} +\include{classmo_h_c} +\include{classmo_h_c_move_loop_expl} +\include{classmo_impr_best_fit_aspir_crit} +\include{classmo_it_rand_next_move} +\include{classmo_l_s_check_point} +\include{classmo_move} +\include{classmo_move_expl} +\include{classmo_move_incr_eval} +\include{classmo_move_init} +\include{classmo_move_loop_expl} +\include{classmo_move_select} +\include{classmo_next_move} +\include{classmo_no_aspir_crit} +\include{classmo_rand_impr_select} +\include{classmo_rand_move} +\include{classmo_s_a} +\include{classmo_sol_continue} +\include{classmo_tabu_list} +\include{classmo_t_s} +\include{classmo_t_s_move_loop_expl} +\printindex +\end{document} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/EmptySelection.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/EmptySelection.3 new file mode 100644 index 000000000..4e5763df0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/EmptySelection.3 @@ -0,0 +1,23 @@ +.TH "EmptySelection" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +EmptySelection \- Special class that describes the case of no selection. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SH "Detailed Description" +.PP +Special class that describes the case of no selection. + +This class is used as an exception that can be thrown if a solution selector has completly failed. +.PP +Definition at line 21 of file moMoveSelect.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moAlgo.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moAlgo.3 new file mode 100644 index 000000000..772463721 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moAlgo.3 @@ -0,0 +1,27 @@ +.TH "moAlgo" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moAlgo \- Description of an algorithm of the paradiseo-mo library. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoMonOp< EOT >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moAlgo< EOT >" +Description of an algorithm of the paradiseo-mo library. + +\fBmoHC\fP, \fBmoTS\fP and \fBmoSA\fP are 3 examples of algorithm of the paradiseo-mo library. +.PP +Definition at line 21 of file moAlgo.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moAspirCrit.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moAspirCrit.3 new file mode 100644 index 000000000..028e7c5a5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moAspirCrit.3 @@ -0,0 +1,46 @@ +.TH "moAspirCrit" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moAspirCrit \- Description of the conditions in which a tabu move could be accepted. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< A1, A2, R >< const const M &, M::EOType::Fitness &, bool >\fP. +.PP +Inherited by \fBmoImprBestFitAspirCrit< M >\fP, and \fBmoNoAspirCrit< M >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual void \fBinit\fP ()=0" +.br +.RI "\fIProcedure which initialises all that needs a aspiration criterion. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moAspirCrit< M >" +Description of the conditions in which a tabu move could be accepted. + +It is only a description... An object that herits from this class is needed to be used in a \fBmoTS\fP. See moNoAspriCrit for example. +.PP +Definition at line 22 of file moAspirCrit.h. +.SH "Member Function Documentation" +.PP +.SS "template virtual void \fBmoAspirCrit\fP< M >::init ()\fC [pure virtual]\fP" +.PP +Procedure which initialises all that needs a aspiration criterion. +.PP +It can be possible that this procedure do nothing... +.PP +Implemented in \fBmoImprBestFitAspirCrit< M >\fP, and \fBmoNoAspirCrit< M >\fP. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moBestImprSelect.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moBestImprSelect.3 new file mode 100644 index 000000000..61aa205ae --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moBestImprSelect.3 @@ -0,0 +1,117 @@ +.TH "moBestImprSelect" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moBestImprSelect \- One of the possible \fBmoMoveSelect\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoMoveSelect< M >< M >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBinit\fP (const \fBFitness\fP &__fit)" +.br +.RI "\fIProcedure which initialise the exploration. \fP" +.ti -1c +.RI "bool \fBupdate\fP (const M &__move, const \fBFitness\fP &__fit)" +.br +.RI "\fIFunction that indicates if the current move has not improved the fitness. \fP" +.ti -1c +.RI "void \fBoperator()\fP (M &__move, \fBFitness\fP &__fit) throw (EmptySelection)" +.br +.RI "\fIProcedure which saved the best move and fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "bool \fBfirst_time\fP" +.br +.RI "\fIAllowing to know if at least one move has been generated. \fP" +.ti -1c +.RI "M \fBbest_move\fP" +.br +.RI "\fIThe best move. \fP" +.ti -1c +.RI "\fBFitness\fP \fBbest_fit\fP" +.br +.RI "\fIThe best fitness. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moBestImprSelect< M >" +One of the possible \fBmoMoveSelect\fP. + +All neighbors are considered, and the movement which enables the best improvement is selected. +.PP +Definition at line 22 of file moBestImprSelect.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoBestImprSelect\fP< M >::update (const M & __move, const \fBFitness\fP & __fit)\fC [inline, virtual]\fP" +.PP +Function that indicates if the current move has not improved the fitness. +.PP +If the given fitness enables an improvment, the move (\fBmoMove\fP) and the fitness linked to this move are saved. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP a move. +.br +\fI__fit\fP a fitness linked to the move. +.RE +.PP +\fBReturns:\fP +.RS 4 +TRUE if the move does not improve the fitness. +.RE +.PP + +.PP +Implements \fBmoMoveSelect< M >\fP. +.PP +Definition at line 47 of file moBestImprSelect.h. +.PP +References moBestImprSelect< M >::best_fit, moBestImprSelect< M >::best_move, and moBestImprSelect< M >::first_time. +.SS "template void \fBmoBestImprSelect\fP< M >::operator() (M & __move, \fBFitness\fP & __fit) throw (\fBEmptySelection\fP)\fC [inline, virtual]\fP" +.PP +Procedure which saved the best move and fitness. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP the current move (result of the procedure). +.br +\fI__fit\fP the current fitness (result of the procedure). +.RE +.PP +\fBExceptions:\fP +.RS 4 +\fI\fBEmptySelection\fP\fP if no move has improved the fitness. +.RE +.PP + +.PP +Implements \fBeoBF< M &, M::EOType::Fitness &, void >\fP. +.PP +Definition at line 68 of file moBestImprSelect.h. +.PP +References moBestImprSelect< M >::best_fit, moBestImprSelect< M >::best_move, and moBestImprSelect< M >::first_time. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moCoolSched.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moCoolSched.3 new file mode 100644 index 000000000..360c8af81 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moCoolSched.3 @@ -0,0 +1,27 @@ +.TH "moCoolSched" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moCoolSched \- This class gives the description of a cooling schedule. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoUF< double &, bool >\fP. +.PP +Inherited by \fBmoEasyCoolSched\fP. +.PP +.SH "Detailed Description" +.PP +This class gives the description of a cooling schedule. + +It is only a description... An object that herits from this class is needed to be used in a \fBmoSA\fP. See \fBmoEasyCoolSched\fP for example. +.PP +Definition at line 22 of file moCoolSched.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moEasyCoolSched.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moEasyCoolSched.3 new file mode 100644 index 000000000..a31c5a84d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moEasyCoolSched.3 @@ -0,0 +1,90 @@ +.TH "moEasyCoolSched" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moEasyCoolSched \- One of the possible \fBmoCoolSched\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoCoolSched\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoEasyCoolSched\fP (double __threshold, double __ratio)" +.br +.RI "\fISimple constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (double &__temp)" +.br +.RI "\fIFunction which proceeds to the cooling. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "double \fBthreshold\fP" +.br +.RI "\fIThe temperature threhold. \fP" +.ti -1c +.RI "double \fBratio\fP" +.br +.RI "\fIThe decreasing factor of the temperature. \fP" +.in -1c +.SH "Detailed Description" +.PP +One of the possible \fBmoCoolSched\fP. + +The simpliest, the temperature decrease according to a ratio until it greater than a threshold. +.PP +Definition at line 22 of file moEasyCoolSched.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "moEasyCoolSched::moEasyCoolSched (double __threshold, double __ratio)\fC [inline]\fP" +.PP +Simple constructor. +.PP +\fBParameters:\fP +.RS 4 +\fI__threshold\fP the threshold. +.br +\fI__ratio\fP the ratio used to descrease the temperature. +.RE +.PP + +.PP +Definition at line 31 of file moEasyCoolSched.h. +.SH "Member Function Documentation" +.PP +.SS "bool moEasyCoolSched::operator() (double & __temp)\fC [inline, virtual]\fP" +.PP +Function which proceeds to the cooling. +.PP +Decrease the temperature and indicates if it is greater than the threshold. +.PP +\fBParameters:\fP +.RS 4 +\fI__temp\fP the current temperature. +.RE +.PP +\fBReturns:\fP +.RS 4 +if the new temperature (current temperature * ratio) is greater than the threshold. +.RE +.PP + +.PP +Implements \fBeoUF< double &, bool >\fP. +.PP +Definition at line 44 of file moEasyCoolSched.h. +.PP +References ratio, and threshold. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moFirstImprSelect.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moFirstImprSelect.3 new file mode 100644 index 000000000..216c52e83 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moFirstImprSelect.3 @@ -0,0 +1,130 @@ +.TH "moFirstImprSelect" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moFirstImprSelect \- One possible \fBmoMoveSelect\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoMoveSelect< M >< M >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual void \fBinit\fP (const \fBFitness\fP &__fit)" +.br +.RI "\fIProcedure which initialise the exploration. \fP" +.ti -1c +.RI "bool \fBupdate\fP (const M &__move, const typename M::EOType::Fitness &__fit)" +.br +.RI "\fIFunction that indicates if the current move has not improved the fitness. \fP" +.ti -1c +.RI "void \fBoperator()\fP (M &__move, \fBFitness\fP &__fit) throw (EmptySelection)" +.br +.RI "\fIProcedure which saved the best move and fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "bool \fBvalid\fP" +.br +.RI "\fIAllow to know if at least one move has improved the solution. \fP" +.ti -1c +.RI "M \fBbest_move\fP" +.br +.RI "\fIBest stored movement. \fP" +.ti -1c +.RI "\fBFitness\fP \fBinit_fit\fP" +.br +.RI "\fIInitial fitness. \fP" +.ti -1c +.RI "\fBFitness\fP \fBbest_fit\fP" +.br +.RI "\fIBest stored fitness. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moFirstImprSelect< M >" +One possible \fBmoMoveSelect\fP. + +The neighborhood is explored until a move enables an improvment of the current solution. +.PP +Definition at line 23 of file moFirstImprSelect.h. +.SH "Member Function Documentation" +.PP +.SS "template virtual void \fBmoFirstImprSelect\fP< M >::init (const \fBFitness\fP & __fit)\fC [inline, virtual]\fP" +.PP +Procedure which initialise the exploration. +.PP +It save the current fitness as the initial value for the fitness. +.PP +Implements \fBmoMoveSelect< M >\fP. +.PP +Definition at line 35 of file moFirstImprSelect.h. +.PP +References moFirstImprSelect< M >::init_fit, and moFirstImprSelect< M >::valid. +.SS "template bool \fBmoFirstImprSelect\fP< M >::update (const M & __move, const typename M::EOType::Fitness & __fit)\fC [inline]\fP" +.PP +Function that indicates if the current move has not improved the fitness. +.PP +If the given fitness enables an improvment, the move (\fBmoMove\fP) should be applied to the current solution. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP a move. +.br +\fI__fit\fP a fitness linked to the move. +.RE +.PP +\fBReturns:\fP +.RS 4 +TRUE if the move does not improve the fitness. +.RE +.PP + +.PP +Definition at line 52 of file moFirstImprSelect.h. +.PP +References moFirstImprSelect< M >::best_fit, moFirstImprSelect< M >::best_move, moFirstImprSelect< M >::init_fit, and moFirstImprSelect< M >::valid. +.SS "template void \fBmoFirstImprSelect\fP< M >::operator() (M & __move, \fBFitness\fP & __fit) throw (\fBEmptySelection\fP)\fC [inline, virtual]\fP" +.PP +Procedure which saved the best move and fitness. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP the current move (result of the procedure). +.br +\fI__fit\fP the current fitness (result of the procedure). +.RE +.PP +\fBExceptions:\fP +.RS 4 +\fI\fBEmptySelection\fP\fP if no move has improved the fitness. +.RE +.PP + +.PP +Implements \fBeoBF< M &, M::EOType::Fitness &, void >\fP. +.PP +Definition at line 76 of file moFirstImprSelect.h. +.PP +References moFirstImprSelect< M >::best_fit, moFirstImprSelect< M >::best_move, and moFirstImprSelect< M >::valid. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moGenSolContinue.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moGenSolContinue.3 new file mode 100644 index 000000000..2540dd451 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moGenSolContinue.3 @@ -0,0 +1,105 @@ +.TH "moGenSolContinue" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moGenSolContinue \- One possible stop criterion for a solution-based heuristic. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoSolContinue< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoGenSolContinue\fP (unsigned __maxNumGen)" +.br +.RI "\fISimple constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (const EOT &__sol)" +.br +.RI "\fIFunction that activates the stop criterion. \fP" +.ti -1c +.RI "void \fBinit\fP ()" +.br +.RI "\fIProcedure which allows to initialise the generation counter. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "unsigned \fBmaxNumGen\fP" +.br +.RI "\fIIteration maximum number. \fP" +.ti -1c +.RI "unsigned \fBnumGen\fP" +.br +.RI "\fIIteration current number. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moGenSolContinue< EOT >" +One possible stop criterion for a solution-based heuristic. + +The stop criterion corresponds to a maximum number of iteration. +.PP +Definition at line 21 of file moGenSolContinue.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoGenSolContinue\fP< EOT >::\fBmoGenSolContinue\fP (unsigned __maxNumGen)\fC [inline]\fP" +.PP +Simple constructor. +.PP +\fBParameters:\fP +.RS 4 +\fI__maxNumGen\fP the maximum number of generation. +.RE +.PP + +.PP +Definition at line 30 of file moGenSolContinue.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoGenSolContinue\fP< EOT >::operator() (const EOT & __sol)\fC [inline, virtual]\fP" +.PP +Function that activates the stop criterion. +.PP +Increments the counter and returns TRUE if the current number of iteration is lower than the given maximum number of iterations. +.PP +\fBParameters:\fP +.RS 4 +\fI__sol\fP the current solution. +.RE +.PP +\fBReturns:\fP +.RS 4 +TRUE or FALSE according to the current generation number. +.RE +.PP + +.PP +Implements \fBeoUF< const EOT &, bool >\fP. +.PP +Definition at line 44 of file moGenSolContinue.h. +.PP +References moGenSolContinue< EOT >::maxNumGen, and moGenSolContinue< EOT >::numGen. +.SS "template void \fBmoGenSolContinue\fP< EOT >::init ()\fC [inline, virtual]\fP" +.PP +Procedure which allows to initialise the generation counter. +.PP +It can also be used to reset the iteration counter. +.PP +Implements \fBmoSolContinue< EOT >\fP. +.PP +Definition at line 54 of file moGenSolContinue.h. +.PP +References moGenSolContinue< EOT >::numGen. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moHC.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moHC.3 new file mode 100644 index 000000000..1d817d764 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moHC.3 @@ -0,0 +1,132 @@ +.TH "moHC" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moHC \- Hill Climbing (HC). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoAlgo< M::EOType >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoHC\fP (\fBmoMoveInit\fP< M > &__move_init, \fBmoNextMove\fP< M > &__next_move, \fBmoMoveIncrEval\fP< M > &__incr_eval, \fBmoMoveSelect\fP< M > &__move_select, \fBeoEvalFunc\fP< \fBEOT\fP > &__full_eval)" +.br +.RI "\fIFull constructor. \fP" +.ti -1c +.RI "\fBmoHC\fP (\fBmoMoveExpl\fP< M > &__move_expl, \fBeoEvalFunc\fP< \fBEOT\fP > &__full_eval)" +.br +.RI "\fILight constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (\fBEOT\fP &__sol)" +.br +.RI "\fIFunction which launches the HC. \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.ti -1c +.RI "typedef EOT::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoMoveExpl\fP< M > & \fBmove_expl\fP" +.br +.RI "\fIComplete exploration of the neighborhood. \fP" +.ti -1c +.RI "\fBeoEvalFunc\fP< \fBEOT\fP > & \fBfull_eval\fP" +.br +.RI "\fIA full evaluation function. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moHC< M >" +Hill Climbing (HC). + +Class which describes the algorithm for a hill climbing. +.PP +Definition at line 26 of file moHC.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoHC\fP< M >::\fBmoHC\fP (\fBmoMoveInit\fP< M > & __move_init, \fBmoNextMove\fP< M > & __next_move, \fBmoMoveIncrEval\fP< M > & __incr_eval, \fBmoMoveSelect\fP< M > & __move_select, \fBeoEvalFunc\fP< \fBEOT\fP > & __full_eval)\fC [inline]\fP" +.PP +Full constructor. +.PP +All the boxes are given in order the HC to use a \fBmoHCMoveLoopExpl\fP. +.PP +\fBParameters:\fP +.RS 4 +\fI__move_init\fP a move initialiser. +.br +\fI__next_move\fP a neighborhood explorer. +.br +\fI__incr_eval\fP a (generally) efficient evaluation function. +.br +\fI__move_select\fP a move selector. +.br +\fI__full_eval\fP a full evaluation function. +.RE +.PP + +.PP +Definition at line 53 of file moHC.h. +.SS "template \fBmoHC\fP< M >::\fBmoHC\fP (\fBmoMoveExpl\fP< M > & __move_expl, \fBeoEvalFunc\fP< \fBEOT\fP > & __full_eval)\fC [inline]\fP" +.PP +Light constructor. +.PP +This constructor allow to use another \fBmoMoveExpl\fP (generally not a \fBmoHCMoveLoopExpl\fP). +.PP +\fBParameters:\fP +.RS 4 +\fI__move_expl\fP a complete explorer. +.br +\fI__full_eval\fP a full evaluation function. +.RE +.PP + +.PP +Definition at line 67 of file moHC.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoHC\fP< M >::operator() (\fBEOT\fP & __sol)\fC [inline, virtual]\fP" +.PP +Function which launches the HC. +.PP +The HC has to improve a current solution. As the \fBmoSA\fP and the mo TS, it can be used for HYBRIDATION in an evolutionnary algorithm. +.PP +\fBParameters:\fP +.RS 4 +\fI__sol\fP a current solution to improve. +.RE +.PP +\fBReturns:\fP +.RS 4 +TRUE. +.RE +.PP + +.PP +Implements \fBeoUF< M::EOType &, bool >\fP. +.PP +Definition at line 82 of file moHC.h. +.PP +References moHC< M >::full_eval, and moHC< M >::move_expl. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moHCMoveLoopExpl.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moHCMoveLoopExpl.3 new file mode 100644 index 000000000..64b83c7cc --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moHCMoveLoopExpl.3 @@ -0,0 +1,113 @@ +.TH "moHCMoveLoopExpl" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moHCMoveLoopExpl \- Iterative explorer used by a \fBmoHC\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoMoveLoopExpl< M >< M >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoHCMoveLoopExpl\fP (\fBmoMoveInit\fP< M > &__move_init, \fBmoNextMove\fP< M > &__next_move, \fBmoMoveIncrEval\fP< M > &__incr_eval, \fBmoMoveSelect\fP< M > &__move_select)" +.br +.RI "\fIConstructor. \fP" +.ti -1c +.RI "void \fBoperator()\fP (const \fBEOT\fP &__old_sol, \fBEOT\fP &__new_sol)" +.br +.RI "\fIProcedure which launches the explorer. \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoMoveInit\fP< M > & \fBmove_init\fP" +.br +.RI "\fIMove initialiser. \fP" +.ti -1c +.RI "\fBmoNextMove\fP< M > & \fBnext_move\fP" +.br +.RI "\fINeighborhood explorer. \fP" +.ti -1c +.RI "\fBmoMoveIncrEval\fP< M > & \fBincr_eval\fP" +.br +.RI "\fI(generally) Efficient evaluation. \fP" +.ti -1c +.RI "\fBmoMoveSelect\fP< M > & \fBmove_select\fP" +.br +.RI "\fIMove selector. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moHCMoveLoopExpl< M >" +Iterative explorer used by a \fBmoHC\fP. +.PP +Definition at line 23 of file moHCMoveLoopExpl.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoHCMoveLoopExpl\fP< M >::\fBmoHCMoveLoopExpl\fP (\fBmoMoveInit\fP< M > & __move_init, \fBmoNextMove\fP< M > & __next_move, \fBmoMoveIncrEval\fP< M > & __incr_eval, \fBmoMoveSelect\fP< M > & __move_select)\fC [inline]\fP" +.PP +Constructor. +.PP +All the boxes have to be specified. +.PP +\fBParameters:\fP +.RS 4 +\fI__move_init\fP the move initialiser. +.br +\fI__next_move\fP the neighborhood explorer. +.br +\fI__incr_eval\fP (generally) efficient evaluation function. +.br +\fI__move_select\fP the move selector. +.RE +.PP + +.PP +Definition at line 43 of file moHCMoveLoopExpl.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoHCMoveLoopExpl\fP< M >::operator() (const \fBEOT\fP & __old_sol, \fBEOT\fP & __new_sol)\fC [inline, virtual]\fP" +.PP +Procedure which launches the explorer. +.PP +The exploration starts from an old solution and provides a new solution. +.PP +\fBParameters:\fP +.RS 4 +\fI__old_sol\fP the current solution. +.br +\fI__new_sol\fP the new_sol (result of the procedure). +.RE +.PP + +.PP +Implements \fBeoBF< const M::EOType &, M::EOType &, void >\fP. +.PP +Definition at line 59 of file moHCMoveLoopExpl.h. +.PP +References moHCMoveLoopExpl< M >::incr_eval, moHCMoveLoopExpl< M >::move_init, moHCMoveLoopExpl< M >::move_select, and moHCMoveLoopExpl< M >::next_move. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moImprBestFitAspirCrit.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moImprBestFitAspirCrit.3 new file mode 100644 index 000000000..33ef6d607 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moImprBestFitAspirCrit.3 @@ -0,0 +1,88 @@ +.TH "moImprBestFitAspirCrit" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moImprBestFitAspirCrit \- One of the possible \fBmoAspirCrit\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoAspirCrit< M >< M >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoImprBestFitAspirCrit\fP ()" +.br +.RI "\fIContructor. \fP" +.ti -1c +.RI "void \fBinit\fP ()" +.br +.RI "\fIInitialisation procedure. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (const M &__move, const \fBFitness\fP &__fit)" +.br +.RI "\fIFunction that indicates if the fit is better that the already saved fit. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBFitness\fP \fBbest_fit\fP" +.br +.RI "\fIBest fitness found until now. \fP" +.ti -1c +.RI "bool \fBfirst_time\fP" +.br +.RI "\fIIndicates that a fitness has been already saved or not. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moImprBestFitAspirCrit< M >" +One of the possible \fBmoAspirCrit\fP. + +This criterion is satisfied when a given fitness is the best ever considered. +.PP +Definition at line 22 of file moImprBestFitAspirCrit.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoImprBestFitAspirCrit\fP< M >::operator() (const M & __move, const \fBFitness\fP & __fit)\fC [inline]\fP" +.PP +Function that indicates if the fit is better that the already saved fit. +.PP +The first time, the function only saved the current move and fitness. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP a move. +.br +\fI__fit\fP a fitnes linked to the move. +.RE +.PP +\fBReturns:\fP +.RS 4 +TRUE the first time and if __fit > best_fit, else FALSE. +.RE +.PP + +.PP +Definition at line 52 of file moImprBestFitAspirCrit.h. +.PP +References moImprBestFitAspirCrit< M >::best_fit, and moImprBestFitAspirCrit< M >::first_time. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moItRandNextMove.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moItRandNextMove.3 new file mode 100644 index 000000000..c68b251d9 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moItRandNextMove.3 @@ -0,0 +1,106 @@ +.TH "moItRandNextMove" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moItRandNextMove \- One of the possible \fBmoNextMove\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoNextMove< M >< M >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoItRandNextMove\fP (\fBmoRandMove\fP< M > &__rand_move, unsigned __max_iter)" +.br +.RI "\fIThe constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (M &__move, const \fBEOT\fP &__sol)" +.br +.RI "\fIGeneration of a new move. \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoRandMove\fP< M > & \fBrand_move\fP" +.br +.RI "\fIA move generator (generally randomly). \fP" +.ti -1c +.RI "unsigned \fBmax_iter\fP" +.br +.RI "\fIIteration maximum number. \fP" +.ti -1c +.RI "unsigned \fBnum_iter\fP" +.br +.RI "\fIIteration current number. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moItRandNextMove< M >" +One of the possible \fBmoNextMove\fP. + +This class is a move (\fBmoMove\fP) generator with a bound for the maximum number of iterations. +.PP +Definition at line 22 of file moItRandNextMove.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoItRandNextMove\fP< M >::\fBmoItRandNextMove\fP (\fBmoRandMove\fP< M > & __rand_move, unsigned __max_iter)\fC [inline]\fP" +.PP +The constructor. +.PP +Parameters only for initialising the attributes. +.PP +\fBParameters:\fP +.RS 4 +\fI__rand_move\fP the random move generator. +.br +\fI__max_iter\fP the iteration maximum number. +.RE +.PP + +.PP +Definition at line 37 of file moItRandNextMove.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoItRandNextMove\fP< M >::operator() (M & __move, const \fBEOT\fP & __sol)\fC [inline]\fP" +.PP +Generation of a new move. +.PP +If the maximum number is not already reached, the current move is forgotten and remplaced by another one. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP the current move. +.br +\fI__sol\fP the current solution. +.RE +.PP +\fBReturns:\fP +.RS 4 +FALSE if the maximum number of iteration is reached, else TRUE. +.RE +.PP + +.PP +Definition at line 52 of file moItRandNextMove.h. +.PP +References moItRandNextMove< M >::max_iter, moItRandNextMove< M >::num_iter, and moItRandNextMove< M >::rand_move. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moLSCheckPoint.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moLSCheckPoint.3 new file mode 100644 index 000000000..0237d254f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moLSCheckPoint.3 @@ -0,0 +1,83 @@ +.TH "moLSCheckPoint" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moLSCheckPoint \- Class which allows a checkpointing system. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< A1, A2, R >< const const M &, M::EOType &, void >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBoperator()\fP (const M &__move, const typename M::EOType &__sol)" +.br +.RI "\fIFunction which launches the checkpointing. \fP" +.ti -1c +.RI "void \fBadd\fP (\fBeoBF\fP< const M &, const typename M::EOType &, void > &__f)" +.br +.RI "\fIProcedure which add a new function to the function vector. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "std::vector< \fBeoBF\fP< const M &, const typename M::EOType &, void > * > \fBfunc\fP" +.br +.RI "\fIvector of function \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moLSCheckPoint< M >" +Class which allows a checkpointing system. + +Thanks to this class, at each iteration, additionnal function can be used (and not only one). +.PP +Definition at line 21 of file moLSCheckPoint.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoLSCheckPoint\fP< M >::operator() (const M & __move, const typename M::EOType & __sol)\fC [inline]\fP" +.PP +Function which launches the checkpointing. +.PP +Each saved function is used on the current move and the current solution. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP a move. +.br +\fI__sol\fP a solution. +.RE +.PP + +.PP +Definition at line 34 of file moLSCheckPoint.h. +.PP +References moLSCheckPoint< M >::func. +.SS "template void \fBmoLSCheckPoint\fP< M >::add (\fBeoBF\fP< const M &, const typename M::EOType &, void > & __f)\fC [inline]\fP" +.PP +Procedure which add a new function to the function vector. +.PP +The new function is added at the end of the vector. +.PP +\fBParameters:\fP +.RS 4 +\fI__f\fP a new function to add. +.RE +.PP + +.PP +Definition at line 49 of file moLSCheckPoint.h. +.PP +References moLSCheckPoint< M >::func. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moMove.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moMove.3 new file mode 100644 index 000000000..41ac67dc7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moMove.3 @@ -0,0 +1,35 @@ +.TH "moMove" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moMove \- Definition of a move. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoUF< EOT &, void >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef EOT \fBEOType\fP" +.br +.RI "\fIAlias for the type. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moMove< EOT >" +Definition of a move. + +A move transforms a solution to another close solution. It describes how a solution can be modified to another one. +.PP +Definition at line 23 of file moMove.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moMoveExpl.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moMoveExpl.3 new file mode 100644 index 000000000..2b0bde497 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moMoveExpl.3 @@ -0,0 +1,29 @@ +.TH "moMoveExpl" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moMoveExpl \- Description of a move (\fBmoMove\fP) explorer. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< const M::EOType &, M::EOType &, void >\fP. +.PP +Inherited by \fBmoMoveLoopExpl< M >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moMoveExpl< M >" +Description of a move (\fBmoMove\fP) explorer. + +Only a description...See \fBmoMoveLoopExpl\fP. +.PP +Definition at line 21 of file moMoveExpl.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moMoveIncrEval.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moMoveIncrEval.3 new file mode 100644 index 000000000..f3185451c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moMoveIncrEval.3 @@ -0,0 +1,27 @@ +.TH "moMoveIncrEval" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moMoveIncrEval \- (generally) Efficient evaluation function based a move and a solution. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< A1, A2, R >< const const M &, M::EOType &, M::EOType::Fitness >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moMoveIncrEval< M >" +(generally) Efficient evaluation function based a move and a solution. + +From a move and a solution, it computes a new fitness that could be associated to the solution if this one is updated. +.PP +Definition at line 24 of file moMoveIncrEval.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moMoveInit.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moMoveInit.3 new file mode 100644 index 000000000..59a19f5cf --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moMoveInit.3 @@ -0,0 +1,27 @@ +.TH "moMoveInit" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moMoveInit \- Move (\fBmoMove\fP) initializer. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< A1, A2, R >< const M &, M::EOType &, void >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moMoveInit< M >" +Move (\fBmoMove\fP) initializer. + +Class which allows to initiase a move. Only a description... An object that herits from this class needs to be designed to be used. +.PP +Definition at line 22 of file moMoveInit.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moMoveLoopExpl.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moMoveLoopExpl.3 new file mode 100644 index 000000000..eb1908a8a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moMoveLoopExpl.3 @@ -0,0 +1,29 @@ +.TH "moMoveLoopExpl" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moMoveLoopExpl \- Class which describes an iterative explorer. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoMoveExpl< M >< M >\fP. +.PP +Inherited by \fBmoHCMoveLoopExpl< M >\fP, and \fBmoTSMoveLoopExpl< M >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moMoveLoopExpl< M >" +Class which describes an iterative explorer. + +Only a description... \fBmoHCMoveLoopExpl\fP and \fBmoTSMoveLoopExpl\fP are exemples of class that are a \fBmoMoveLoopExpl\fP. +.PP +Definition at line 21 of file moMoveLoopExpl.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moMoveSelect.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moMoveSelect.3 new file mode 100644 index 000000000..568b14c14 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moMoveSelect.3 @@ -0,0 +1,84 @@ +.TH "moMoveSelect" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moMoveSelect \- Class that describes a move selector (\fBmoMove\fP). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< M &, M::EOType::Fitness &, void >\fP. +.PP +Inherited by \fBmoBestImprSelect< M >\fP, \fBmoFirstImprSelect< M >\fP, and \fBmoRandImprSelect< M >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual void \fBinit\fP (const \fBFitness\fP &__fit)=0" +.br +.RI "\fIProcedure which initialises all that the move selector needs including the initial fitness. \fP" +.ti -1c +.RI "virtual bool \fBupdate\fP (const M &__move, const \fBFitness\fP &__fit)=0" +.br +.RI "\fIFunction which updates the best solutions. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moMoveSelect< M >" +Class that describes a move selector (\fBmoMove\fP). + +It iteratively considers some moves (\fBmoMove\fP) and their associated fitnesses. The best move is so regularly updated. At any time, it could be accessed. +.PP +Definition at line 32 of file moMoveSelect.h. +.SH "Member Function Documentation" +.PP +.SS "template virtual void \fBmoMoveSelect\fP< M >::init (const \fBFitness\fP & __fit)\fC [pure virtual]\fP" +.PP +Procedure which initialises all that the move selector needs including the initial fitness. +.PP +In order to know the fitness of the solution, for which the neighborhood will be soon explored +.PP +\fBParameters:\fP +.RS 4 +\fI__fit\fP the current fitness. +.RE +.PP + +.PP +Implemented in \fBmoBestImprSelect< M >\fP, \fBmoFirstImprSelect< M >\fP, and \fBmoRandImprSelect< M >\fP. +.SS "template virtual bool \fBmoMoveSelect\fP< M >::update (const M & __move, const \fBFitness\fP & __fit)\fC [pure virtual]\fP" +.PP +Function which updates the best solutions. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP a new move. +.br +\fI__fit\fP a fitness linked to the new move. +.RE +.PP +\fBReturns:\fP +.RS 4 +a boolean that expresses the need to resume the exploration. +.RE +.PP + +.PP +Implemented in \fBmoBestImprSelect< M >\fP, and \fBmoRandImprSelect< M >\fP. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moNextMove.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moNextMove.3 new file mode 100644 index 000000000..b3d0b7c37 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moNextMove.3 @@ -0,0 +1,29 @@ +.TH "moNextMove" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moNextMove \- Class which allows to generate a new move (\fBmoMove\fP). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< A1, A2, R >< const M &, M::EOType &, bool >\fP. +.PP +Inherited by \fBmoItRandNextMove< M >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moNextMove< M >" +Class which allows to generate a new move (\fBmoMove\fP). + +Useful for the explorer (for \fBmoTS\fP or \fBmoHC\fP). Does nothing... An object that herits from this class needs to be designed for being used. +.PP +Definition at line 22 of file moNextMove.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moNoAspirCrit.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moNoAspirCrit.3 new file mode 100644 index 000000000..f0c8ab561 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moNoAspirCrit.3 @@ -0,0 +1,71 @@ +.TH "moNoAspirCrit" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moNoAspirCrit \- One of the possible aspiration criterion (\fBmoAspirCrit\fP). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoAspirCrit< M >< M >\fP. +.PP +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "bool \fBoperator()\fP (const M &__move, const typename M::EOType::Fitness &__sol)" +.br +.RI "\fIFunction which describes the aspiration criterion behaviour. \fP" +.ti -1c +.RI "void \fBinit\fP ()" +.br +.RI "\fIProcedure which initialises all that needs a \fBmoNoAspirCrit\fP. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moNoAspirCrit< M >" +One of the possible aspiration criterion (\fBmoAspirCrit\fP). + +The simplest : never satisfied. +.PP +Definition at line 21 of file moNoAspirCrit.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoNoAspirCrit\fP< M >::operator() (const M & __move, const typename M::EOType::Fitness & __sol)\fC [inline, private]\fP" +.PP +Function which describes the aspiration criterion behaviour. +.PP +Does nothing. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP a move. +.br +\fI__sol\fP a fitness. +.RE +.PP +\fBReturns:\fP +.RS 4 +FALSE. +.RE +.PP + +.PP +Definition at line 32 of file moNoAspirCrit.h. +.SS "template void \fBmoNoAspirCrit\fP< M >::init ()\fC [inline, private, virtual]\fP" +.PP +Procedure which initialises all that needs a \fBmoNoAspirCrit\fP. +.PP +Nothing... +.PP +Implements \fBmoAspirCrit< M >\fP. +.PP +Definition at line 43 of file moNoAspirCrit.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moRandImprSelect.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moRandImprSelect.3 new file mode 100644 index 000000000..f76568465 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moRandImprSelect.3 @@ -0,0 +1,137 @@ +.TH "moRandImprSelect" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moRandImprSelect \- One of the possible \fBmoMove\fP selector (\fBmoMoveSelect\fP). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoMoveSelect< M >< M >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBinit\fP (const \fBFitness\fP &__fit)" +.br +.RI "\fIProcedure which all that needs a \fBmoRandImprSelect\fP. \fP" +.ti -1c +.RI "bool \fBupdate\fP (const M &__move, const \fBFitness\fP &__fit)" +.br +.RI "\fIFunction that updates the fitness and move vectors. \fP" +.ti -1c +.RI "void \fBoperator()\fP (M &__move, \fBFitness\fP &__fit) throw (EmptySelection)" +.br +.RI "\fIThe move selection. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBFitness\fP \fBinit_fit\fP" +.br +.RI "\fIFitness of the current solution. \fP" +.ti -1c +.RI "std::vector< \fBFitness\fP > \fBvect_better_fit\fP" +.br +.RI "\fICandidate fitnesse vector. \fP" +.ti -1c +.RI "std::vector< M > \fBvect_better_moves\fP" +.br +.RI "\fICandidate move vector. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moRandImprSelect< M >" +One of the possible \fBmoMove\fP selector (\fBmoMoveSelect\fP). + +All the neighbors are considered. One of them that enables an improvment of the objective function is choosen. +.PP +Definition at line 25 of file moRandImprSelect.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoRandImprSelect\fP< M >::init (const \fBFitness\fP & __fit)\fC [inline, virtual]\fP" +.PP +Procedure which all that needs a \fBmoRandImprSelect\fP. +.PP +Give a value to the initialise fitness. Clean the move and fitness vectors. +.PP +\fBParameters:\fP +.RS 4 +\fI__fit\fP the current best fitness +.RE +.PP + +.PP +Implements \fBmoMoveSelect< M >\fP. +.PP +Definition at line 40 of file moRandImprSelect.h. +.PP +References moRandImprSelect< M >::init_fit, moRandImprSelect< M >::vect_better_fit, and moRandImprSelect< M >::vect_better_moves. +.SS "template bool \fBmoRandImprSelect\fP< M >::update (const M & __move, const \fBFitness\fP & __fit)\fC [inline, virtual]\fP" +.PP +Function that updates the fitness and move vectors. +.PP +if a move give a better fitness than the initial fitness, it is saved and the fitness too. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP a new move. +.br +\fI__fit\fP a new fitness associated to the new move. +.RE +.PP +\fBReturns:\fP +.RS 4 +TRUE. +.RE +.PP + +.PP +Implements \fBmoMoveSelect< M >\fP. +.PP +Definition at line 56 of file moRandImprSelect.h. +.PP +References moRandImprSelect< M >::init_fit, moRandImprSelect< M >::vect_better_fit, and moRandImprSelect< M >::vect_better_moves. +.SS "template void \fBmoRandImprSelect\fP< M >::operator() (M & __move, \fBFitness\fP & __fit) throw (\fBEmptySelection\fP)\fC [inline, virtual]\fP" +.PP +The move selection. +.PP +One the saved move is randomly chosen. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP the reference of the move that can be initialised by the function. +.br +\fI__fit\fP the reference of the fitness that can be initialised by the function. +.RE +.PP +\fBExceptions:\fP +.RS 4 +\fI\fBEmptySelection\fP\fP If no move which improves the current fitness are found. +.RE +.PP + +.PP +Implements \fBeoBF< M &, M::EOType::Fitness &, void >\fP. +.PP +Definition at line 77 of file moRandImprSelect.h. +.PP +References moRandImprSelect< M >::vect_better_fit, and moRandImprSelect< M >::vect_better_moves. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moRandMove.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moRandMove.3 new file mode 100644 index 000000000..1e08a422c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moRandMove.3 @@ -0,0 +1,27 @@ +.TH "moRandMove" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moRandMove \- Random move generator. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoUF< M &, void >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moRandMove< M >" +Random move generator. + +Only a description... An object that herits from this class needs to be designed in order to use a \fBmoSA\fP. +.PP +Definition at line 21 of file moRandMove.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moSA.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moSA.3 new file mode 100644 index 000000000..c44f363d7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moSA.3 @@ -0,0 +1,130 @@ +.TH "moSA" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moSA \- Simulated Annealing (SA). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoAlgo< M::EOType >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoSA\fP (\fBmoRandMove\fP< M > &__move_rand, \fBmoMoveIncrEval\fP< M > &__incr_eval, \fBmoSolContinue\fP< \fBEOT\fP > &__cont, double __init_temp, \fBmoCoolSched\fP &__cool_sched, \fBeoEvalFunc\fP< \fBEOT\fP > &__full_eval)" +.br +.RI "\fISA constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (\fBEOT\fP &__sol)" +.br +.RI "\fIfunction that launches the SA algorithm. \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.ti -1c +.RI "typedef EOT::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoRandMove\fP< M > & \fBmove_rand\fP" +.br +.RI "\fIA move generator (generally randomly). \fP" +.ti -1c +.RI "\fBmoMoveIncrEval\fP< M > & \fBincr_eval\fP" +.br +.RI "\fIA (generally) efficient evaluation function. \fP" +.ti -1c +.RI "\fBmoSolContinue\fP< \fBEOT\fP > & \fBcont\fP" +.br +.RI "\fIStopping criterion before temperature update. \fP" +.ti -1c +.RI "double \fBinit_temp\fP" +.br +.RI "\fIInitial temperature. \fP" +.ti -1c +.RI "\fBmoCoolSched\fP & \fBcool_sched\fP" +.br +.RI "\fIThe cooling schedule. \fP" +.ti -1c +.RI "\fBeoEvalFunc\fP< \fBEOT\fP > & \fBfull_eval\fP" +.br +.RI "\fIA full evaluation function. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moSA< M >" +Simulated Annealing (SA). + +Class that describes a Simulated Annealing algorithm. +.PP +Definition at line 32 of file moSA.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoSA\fP< M >::\fBmoSA\fP (\fBmoRandMove\fP< M > & __move_rand, \fBmoMoveIncrEval\fP< M > & __incr_eval, \fBmoSolContinue\fP< \fBEOT\fP > & __cont, double __init_temp, \fBmoCoolSched\fP & __cool_sched, \fBeoEvalFunc\fP< \fBEOT\fP > & __full_eval)\fC [inline]\fP" +.PP +SA constructor. +.PP +All the boxes used by a SA need to be given. +.PP +\fBParameters:\fP +.RS 4 +\fI__move_rand\fP a move generator (generally randomly). +.br +\fI__incr_eval\fP a (generaly) efficient evaluation function +.br +\fI__cont\fP a stopping criterion. +.br +\fI__init_temp\fP the initial temperature. +.br +\fI__cool_sched\fP a cooling schedule, describes how the temperature is modified. +.br +\fI__full_eval\fP a full evaluation function. +.RE +.PP + +.PP +Definition at line 60 of file moSA.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoSA\fP< M >::operator() (\fBEOT\fP & __sol)\fC [inline, virtual]\fP" +.PP +function that launches the SA algorithm. +.PP +As a \fBmoTS\fP or a \fBmoHC\fP, the SA can be used for HYBRIDATION in an evolutionary algorithm. +.PP +\fBParameters:\fP +.RS 4 +\fI__sol\fP a solution to improve. +.RE +.PP +\fBReturns:\fP +.RS 4 +TRUE. +.RE +.PP + +.PP +Implements \fBeoUF< M::EOType &, bool >\fP. +.PP +Definition at line 82 of file moSA.h. +.PP +References moSA< M >::cont, moSA< M >::cool_sched, moSA< M >::full_eval, moSA< M >::incr_eval, moSA< M >::init_temp, and moSA< M >::move_rand. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moSolContinue.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moSolContinue.3 new file mode 100644 index 000000000..dfeadddd6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moSolContinue.3 @@ -0,0 +1,46 @@ +.TH "moSolContinue" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moSolContinue \- Class that describes a stop criterion for a solution-based heuristic. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoUF< const EOT &, bool >\fP. +.PP +Inherited by \fBmoGenSolContinue< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual void \fBinit\fP ()=0" +.br +.RI "\fIProcedure which initialises all that the stop criterion needs. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moSolContinue< EOT >" +Class that describes a stop criterion for a solution-based heuristic. + +It allows to add an initialisation procedure to an object that is a unary function (\fBeoUF\fP). +.PP +Definition at line 22 of file moSolContinue.h. +.SH "Member Function Documentation" +.PP +.SS "template virtual void \fBmoSolContinue\fP< EOT >::init ()\fC [pure virtual]\fP" +.PP +Procedure which initialises all that the stop criterion needs. +.PP +Generally, it allocates some data structures or initialises some counters. +.PP +Implemented in \fBmoGenSolContinue< EOT >\fP. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moTS.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moTS.3 new file mode 100644 index 000000000..726cedc54 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moTS.3 @@ -0,0 +1,158 @@ +.TH "moTS" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moTS \- Tabu Search (TS). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoAlgo< M::EOType >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoTS\fP (\fBmoMoveInit\fP< M > &__move_init, \fBmoNextMove\fP< M > &__next_move, \fBmoMoveIncrEval\fP< M > &__incr_eval, \fBmoTabuList\fP< M > &__tabu_list, \fBmoAspirCrit\fP< M > &__aspir_crit, \fBmoSolContinue\fP< \fBEOT\fP > &__cont, \fBeoEvalFunc\fP< \fBEOT\fP > &__full_eval)" +.br +.RI "\fIConstructor of a \fBmoTS\fP specifying all the boxes. \fP" +.ti -1c +.RI "\fBmoTS\fP (\fBmoMoveExpl\fP< M > &__move_expl, \fBmoSolContinue\fP< \fBEOT\fP > &__cont, \fBeoEvalFunc\fP< \fBEOT\fP > &__full_eval)" +.br +.RI "\fIConstructor with less parameters. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (\fBEOT\fP &__sol)" +.br +.RI "\fIFunction which launchs the Tabu Search. \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.ti -1c +.RI "typedef EOT::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoMoveExpl\fP< M > & \fBmove_expl\fP" +.br +.RI "\fINeighborhood explorer. \fP" +.ti -1c +.RI "\fBmoSolContinue\fP< \fBEOT\fP > & \fBcont\fP" +.br +.RI "\fIStop criterion. \fP" +.ti -1c +.RI "\fBeoEvalFunc\fP< \fBEOT\fP > & \fBfull_eval\fP" +.br +.RI "\fIFull evaluation function. \fP" +.in -1c +.SS "Static Private Attributes" + +.in +1c +.ti -1c +.RI "static bool \fBfirst_time\fP" +.br +.RI "\fIBoolean allowing to initialise the ptread_mutex_t in the constructor. \fP" +.ti -1c +.RI "static pthread_mutex_t \fBmutex\fP" +.br +.RI "\fIThe lock. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moTS< M >" +Tabu Search (TS). + +Generic algorithm that describes a tabu search. +.PP +Definition at line 30 of file moTS.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoTS\fP< M >::\fBmoTS\fP (\fBmoMoveInit\fP< M > & __move_init, \fBmoNextMove\fP< M > & __next_move, \fBmoMoveIncrEval\fP< M > & __incr_eval, \fBmoTabuList\fP< M > & __tabu_list, \fBmoAspirCrit\fP< M > & __aspir_crit, \fBmoSolContinue\fP< \fBEOT\fP > & __cont, \fBeoEvalFunc\fP< \fBEOT\fP > & __full_eval)\fC [inline]\fP" +.PP +Constructor of a \fBmoTS\fP specifying all the boxes. +.PP +In this constructor, a \fBmoTSMoveLoopExpl\fP is instanciated. +.PP +\fBParameters:\fP +.RS 4 +\fI__move_init\fP move initialisation +.br +\fI__next_move\fP neighborhood explorer +.br +\fI__incr_eval\fP efficient evaluation +.br +\fI__tabu_list\fP tabu list +.br +\fI__aspir_crit\fP aspiration criterion +.br +\fI__cont\fP stop criterion +.br +\fI__full_eval\fP full evaluation function +.RE +.PP + +.PP +Definition at line 59 of file moTS.h. +.PP +References moTS< M >::first_time, and moTS< M >::mutex. +.SS "template \fBmoTS\fP< M >::\fBmoTS\fP (\fBmoMoveExpl\fP< M > & __move_expl, \fBmoSolContinue\fP< \fBEOT\fP > & __cont, \fBeoEvalFunc\fP< \fBEOT\fP > & __full_eval)\fC [inline]\fP" +.PP +Constructor with less parameters. +.PP +The explorer is given in the parameters. +.PP +\fBParameters:\fP +.RS 4 +\fI__move_expl\fP the explorer (generally different that a \fBmoTSMoveLoopExpl\fP) +.br +\fI__cont\fP stop criterion +.br +\fI__full_eval\fP full evaluation function +.RE +.PP + +.PP +Definition at line 81 of file moTS.h. +.PP +References moTS< M >::first_time, and moTS< M >::mutex. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoTS\fP< M >::operator() (\fBEOT\fP & __sol)\fC [inline, virtual]\fP" +.PP +Function which launchs the Tabu Search. +.PP +Algorithm of the tabu search. As a \fBmoSA\fP or a \fBmoHC\fP, it can be used for HYBRIDATION in an evolutionary algorithm. For security a lock (pthread_mutex_t) is closed during the algorithm. +.PP +\fBParameters:\fP +.RS 4 +\fI__sol\fP a solution to improve. +.RE +.PP +\fBReturns:\fP +.RS 4 +TRUE. +.RE +.PP + +.PP +Implements \fBeoUF< M::EOType &, bool >\fP. +.PP +Definition at line 104 of file moTS.h. +.PP +References moTS< M >::cont, moTS< M >::full_eval, moTS< M >::move_expl, and moTS< M >::mutex. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moTSMoveLoopExpl.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moTSMoveLoopExpl.3 new file mode 100644 index 000000000..456766151 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moTSMoveLoopExpl.3 @@ -0,0 +1,125 @@ +.TH "moTSMoveLoopExpl" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moTSMoveLoopExpl \- Explorer for a Tabu Search algorithm. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoMoveLoopExpl< M >< M >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoTSMoveLoopExpl\fP (\fBmoMoveInit\fP< M > &__move_init, \fBmoNextMove\fP< M > &__next_move, \fBmoMoveIncrEval\fP< M > &__incr_eval, \fBmoTabuList\fP< M > &__tabu_list, \fBmoAspirCrit\fP< M > &__aspir_crit)" +.br +.RI "\fIConstructor. \fP" +.ti -1c +.RI "void \fBoperator()\fP (const \fBEOT\fP &__old_sol, \fBEOT\fP &__new_sol)" +.br +.RI "\fIProcedure which lauches the exploration. \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoMoveInit\fP< M > & \fBmove_init\fP" +.br +.RI "\fIMove initialisation. \fP" +.ti -1c +.RI "\fBmoNextMove\fP< M > & \fBnext_move\fP" +.br +.RI "\fINeighborhood explorer. \fP" +.ti -1c +.RI "\fBmoMoveIncrEval\fP< M > & \fBincr_eval\fP" +.br +.RI "\fIEfficient evaluation. \fP" +.ti -1c +.RI "\fBmoBestImprSelect\fP< M > \fBmove_select\fP" +.br +.RI "\fIMove selector. \fP" +.ti -1c +.RI "\fBmoTabuList\fP< M > & \fBtabu_list\fP" +.br +.RI "\fITabu list. \fP" +.ti -1c +.RI "\fBmoAspirCrit\fP< M > & \fBaspir_crit\fP" +.br +.RI "\fIAspiration criterion. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moTSMoveLoopExpl< M >" +Explorer for a Tabu Search algorithm. + +It is used by a \fBmoTS\fP. +.PP +Definition at line 30 of file moTSMoveLoopExpl.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoTSMoveLoopExpl\fP< M >::\fBmoTSMoveLoopExpl\fP (\fBmoMoveInit\fP< M > & __move_init, \fBmoNextMove\fP< M > & __next_move, \fBmoMoveIncrEval\fP< M > & __incr_eval, \fBmoTabuList\fP< M > & __tabu_list, \fBmoAspirCrit\fP< M > & __aspir_crit)\fC [inline]\fP" +.PP +Constructor. +.PP +\fBParameters:\fP +.RS 4 +\fI__move_init\fP move initialisation +.br +\fI__next_move\fP neighborhood explorer +.br +\fI__incr_eval\fP efficient evaluation +.br +\fI__tabu_list\fP tabu list +.br +\fI__aspir_crit\fP aspiration criterion +.RE +.PP + +.PP +Definition at line 49 of file moTSMoveLoopExpl.h. +.PP +References moTSMoveLoopExpl< M >::aspir_crit, and moTSMoveLoopExpl< M >::tabu_list. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoTSMoveLoopExpl\fP< M >::operator() (const \fBEOT\fP & __old_sol, \fBEOT\fP & __new_sol)\fC [inline, virtual]\fP" +.PP +Procedure which lauches the exploration. +.PP +The exploration continues while the chosen move is not in the tabu list or the aspiration criterion is true. If these 2 conditions are not true, the exploration stops if the move selector update function returns false. +.PP +\fBParameters:\fP +.RS 4 +\fI__old_sol\fP the initial solution +.br +\fI__new_sol\fP the new solution +.RE +.PP + +.PP +Implements \fBeoBF< const M::EOType &, M::EOType &, void >\fP. +.PP +Definition at line 69 of file moTSMoveLoopExpl.h. +.PP +References moTSMoveLoopExpl< M >::aspir_crit, moTSMoveLoopExpl< M >::incr_eval, moTSMoveLoopExpl< M >::move_init, moTSMoveLoopExpl< M >::move_select, moTSMoveLoopExpl< M >::next_move, and moTSMoveLoopExpl< M >::tabu_list. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moTabuList.3 b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moTabuList.3 new file mode 100644 index 000000000..96a8cf631 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/man/man3/moTabuList.3 @@ -0,0 +1,77 @@ +.TH "moTabuList" 3 "21 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moTabuList \- Class describing a tabu list that a \fBmoTS\fP uses. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< A1, A2, R >< const const M &, M::EOType &, bool >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual void \fBadd\fP (const M &__move, const \fBEOT\fP &__sol)=0" +.br +.RI "\fIProcedure to add a move in the tabu list. \fP" +.ti -1c +.RI "virtual void \fBupdate\fP ()=0" +.br +.RI "\fIProcedure that updates the tabu list content. \fP" +.ti -1c +.RI "virtual void \fBinit\fP ()=0" +.br +.RI "\fIProcedure which initialises the tabu list. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moTabuList< M >" +Class describing a tabu list that a \fBmoTS\fP uses. + +It is only a description, does nothing... A new object that herits from this class has to be defined in order to be used in a \fBmoTS\fP. +.PP +Definition at line 22 of file moTabuList.h. +.SH "Member Function Documentation" +.PP +.SS "template virtual void \fBmoTabuList\fP< M >::add (const M & __move, const \fBEOT\fP & __sol)\fC [pure virtual]\fP" +.PP +Procedure to add a move in the tabu list. +.PP +The two parameters have not to be modified so they are constant parameters +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP a new tabu move +.br +\fI__sol\fP the solution associated to this move +.RE +.PP + +.SS "template virtual void \fBmoTabuList\fP< M >::update ()\fC [pure virtual]\fP" +.PP +Procedure that updates the tabu list content. +.PP +Generally, a counter associated to each saved move is decreased by one. +.SS "template virtual void \fBmoTabuList\fP< M >::init ()\fC [pure virtual]\fP" +.PP +Procedure which initialises the tabu list. +.PP +Can be useful if the data structure needs to be allocated before being used. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/docs/mo.doxytag b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/mo.doxytag new file mode 100644 index 000000000..599248289 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/docs/mo.doxytag @@ -0,0 +1,897 @@ + + + + main + Welcome to PARADISEO-Moving Objects + main + intro + tutorial + install + design + + + EmptySelection + class_empty_selection.html + + + moAlgo + classmo_algo.html + EOT + eoMonOp< EOT > + + + moAspirCrit + classmo_aspir_crit.html + M + eoBF + + virtual void + init + classmo_aspir_crit.html + a8ce84510a5ec7c9078381e542c6d140 + ()=0 + + + + moBestImprSelect + classmo_best_impr_select.html + M + moMoveSelect + + M::EOType::Fitness + Fitness + classmo_best_impr_select.html + c4ae17435221fb0a8e8acd285210cfcb + + + + void + init + classmo_best_impr_select.html + 2d2abf9aa17dc77cbb4f41810ab7b956 + (const Fitness &__fit) + + + bool + update + classmo_best_impr_select.html + d10e3e6f8a0277731e95ef506d064d6d + (const M &__move, const Fitness &__fit) + + + void + operator() + classmo_best_impr_select.html + 169773d4d127acd782cf379f758222da + (M &__move, Fitness &__fit) + + + bool + first_time + classmo_best_impr_select.html + 352b14d206b0772eb9f40efb7beb0f13 + + + + M + best_move + classmo_best_impr_select.html + bd86f70519f954c07ff0d8a2a3a8ff6a + + + + Fitness + best_fit + classmo_best_impr_select.html + dcac897424b5805f146bb1dbb429f2fe + + + + + moCoolSched + classmo_cool_sched.html + eoUF< double &, bool > + + + moEasyCoolSched + classmo_easy_cool_sched.html + moCoolSched + + + moEasyCoolSched + classmo_easy_cool_sched.html + c556b41343700293bb17e3b20d81e0f2 + (double __threshold, double __ratio) + + + bool + operator() + classmo_easy_cool_sched.html + ca08df878417ef1124e6933a9c2d7a0b + (double &__temp) + + + double + threshold + classmo_easy_cool_sched.html + 3dd53700390b7bb6428db80e01626c83 + + + + double + ratio + classmo_easy_cool_sched.html + 1f84deff87defafd927e8c323b188f38 + + + + + moFirstImprSelect + classmo_first_impr_select.html + M + moMoveSelect + + M::EOType::Fitness + Fitness + classmo_first_impr_select.html + 64763ce3e6d2873266624382b407fa5a + + + + virtual void + init + classmo_first_impr_select.html + 4c5ce18ede46247a439c68f6954a4055 + (const Fitness &__fit) + + + bool + update + classmo_first_impr_select.html + 7ba0882728daedc75c249647c070ccf0 + (const M &__move, const typename M::EOType::Fitness &__fit) + + + void + operator() + classmo_first_impr_select.html + 3be12cf4cbaed00df7c4fa735b2c0a95 + (M &__move, Fitness &__fit) + + + bool + valid + classmo_first_impr_select.html + a99c0586ba07449234705c17a258d58c + + + + M + best_move + classmo_first_impr_select.html + dfed419a608dd7c41f07fa1f1279cb8c + + + + Fitness + init_fit + classmo_first_impr_select.html + ce7ba63e8cc3a9164f4e546477e98ca8 + + + + Fitness + best_fit + classmo_first_impr_select.html + e1190347b76ec6fe717be32354b4a9a9 + + + + + moGenSolContinue + classmo_gen_sol_continue.html + EOT + moSolContinue + + + moGenSolContinue + classmo_gen_sol_continue.html + 6b6cab23a23bd8904ea52ef5141d8d0a + (unsigned __maxNumGen) + + + bool + operator() + classmo_gen_sol_continue.html + 457257cd73b474d6f7783d84d02c2e61 + (const EOT &__sol) + + + void + init + classmo_gen_sol_continue.html + 6c5db8182157584b56507cc9075602d4 + () + + + unsigned + maxNumGen + classmo_gen_sol_continue.html + 6d7674fc51d17423e8ee28693a08b5af + + + + unsigned + numGen + classmo_gen_sol_continue.html + a18ebfd270f96517b4edaa2cad3eb9e0 + + + + + moHC + classmo_h_c.html + M + moAlgo< M::EOType > + + + moHC + classmo_h_c.html + 6cafe093f86a80c225827884cb9dc5b7 + (moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moMoveSelect< M > &__move_select, eoEvalFunc< EOT > &__full_eval) + + + + moHC + classmo_h_c.html + 45f27309792e584a27fa6dcb86ccda65 + (moMoveExpl< M > &__move_expl, eoEvalFunc< EOT > &__full_eval) + + + bool + operator() + classmo_h_c.html + ed4e273c420efa6386c5975a696a5010 + (EOT &__sol) + + + M::EOType + EOT + classmo_h_c.html + d219296ede03c679646bce2fe8ff96cb + + + + EOT::Fitness + Fitness + classmo_h_c.html + 56487c97a7cf0c423cc879d1bbd45027 + + + + moMoveExpl< M > & + move_expl + classmo_h_c.html + f6bfb4553fb699f1e08f7d9c37d06103 + + + + eoEvalFunc< EOT > & + full_eval + classmo_h_c.html + 4b0d5cc70fc3d83f59a48b2bdea65736 + + + + + moHCMoveLoopExpl + classmo_h_c_move_loop_expl.html + M + moMoveLoopExpl + + + moHCMoveLoopExpl + classmo_h_c_move_loop_expl.html + 11410d648d79746253e9dc249c4ec7b5 + (moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moMoveSelect< M > &__move_select) + + + void + operator() + classmo_h_c_move_loop_expl.html + f48d5379caac7f6a165e9fe8840e6ccb + (const EOT &__old_sol, EOT &__new_sol) + + + M::EOType + EOT + classmo_h_c_move_loop_expl.html + 077befd4106c201eafd3ea22bcea2fe9 + + + + M::EOType::Fitness + Fitness + classmo_h_c_move_loop_expl.html + f24871224316d5549b9013a2d27ab465 + + + + moMoveInit< M > & + move_init + classmo_h_c_move_loop_expl.html + 6776fc51331c1b452d026b92448b4ffc + + + + moNextMove< M > & + next_move + classmo_h_c_move_loop_expl.html + f716c5271e0eba9275c585dc52768443 + + + + moMoveIncrEval< M > & + incr_eval + classmo_h_c_move_loop_expl.html + 84a8fccba05ab30414281469bc8ee779 + + + + moMoveSelect< M > & + move_select + classmo_h_c_move_loop_expl.html + 13bcd1322b2b97fd665be2f60c532fbb + + + + + moImprBestFitAspirCrit + classmo_impr_best_fit_aspir_crit.html + M + moAspirCrit + + M::EOType::Fitness + Fitness + classmo_impr_best_fit_aspir_crit.html + 0bc1a8c9af99781e662570c04750cca8 + + + + + moImprBestFitAspirCrit + classmo_impr_best_fit_aspir_crit.html + e2c697a5cf3a7696e38bb52b6694a340 + () + + + void + init + classmo_impr_best_fit_aspir_crit.html + ffa451a14ff4ea86fb8bd9fdbc348630 + () + + + bool + operator() + classmo_impr_best_fit_aspir_crit.html + 53f62fb56dcae3051a741f1fddb0204b + (const M &__move, const Fitness &__fit) + + + Fitness + best_fit + classmo_impr_best_fit_aspir_crit.html + 9e52383f0af8013b4aff0942325e1bf3 + + + + bool + first_time + classmo_impr_best_fit_aspir_crit.html + 2d5226c7dd661b33011402dbbbe78265 + + + + + moItRandNextMove + classmo_it_rand_next_move.html + M + moNextMove + + + moItRandNextMove + classmo_it_rand_next_move.html + 95ed13e1178f4e44cab7184b040b83d7 + (moRandMove< M > &__rand_move, unsigned __max_iter) + + + bool + operator() + classmo_it_rand_next_move.html + 92a2fbbc02a20853b9a309e99018a102 + (M &__move, const EOT &__sol) + + + M::EOType + EOT + classmo_it_rand_next_move.html + ee666007fc494bf4a5f0cd065e5671cf + + + + moRandMove< M > & + rand_move + classmo_it_rand_next_move.html + ef9410ec5e7dfa7f002e05967931c459 + + + + unsigned + max_iter + classmo_it_rand_next_move.html + 3c476f7cc089b171493c52965f920542 + + + + unsigned + num_iter + classmo_it_rand_next_move.html + c3551d7910cf351d63f0f3427fc18504 + + + + + moLSCheckPoint + classmo_l_s_check_point.html + M + eoBF + + void + operator() + classmo_l_s_check_point.html + 2f9c1250279e3f49ec77a66c10029f1e + (const M &__move, const typename M::EOType &__sol) + + + void + add + classmo_l_s_check_point.html + 66be5fe2944bcdd752f1e58105e969a6 + (eoBF< const M &, const typename M::EOType &, void > &__f) + + + std::vector< eoBF< const M &, const typename M::EOType &, void > * > + func + classmo_l_s_check_point.html + ff2a31ee5689a804bd9a572c51a36ca4 + + + + + moMove + classmo_move.html + EOT + eoUF< EOT &, void > + + EOT + EOType + classmo_move.html + 7fb853a91ba1319530529e515380bbba + + + + + moMoveExpl + classmo_move_expl.html + M + eoBF< const M::EOType &, M::EOType &, void > + + + moMoveIncrEval + classmo_move_incr_eval.html + M + eoBF + + + moMoveInit + classmo_move_init.html + M + eoBF + + + moMoveLoopExpl + classmo_move_loop_expl.html + M + moMoveExpl + + + moMoveSelect + classmo_move_select.html + M + eoBF< M &, M::EOType::Fitness &, void > + + M::EOType::Fitness + Fitness + classmo_move_select.html + 8148ccc0e6fbd209c3fe6829559895c8 + + + + virtual void + init + classmo_move_select.html + bca4c43f13d26eca7163aeb272a4a52e + (const Fitness &__fit)=0 + + + virtual bool + update + classmo_move_select.html + 7c157b6e64fd417acf6e900059204eb1 + (const M &__move, const Fitness &__fit)=0 + + + + moNextMove + classmo_next_move.html + M + eoBF + + + moNoAspirCrit + classmo_no_aspir_crit.html + M + moAspirCrit + + bool + operator() + classmo_no_aspir_crit.html + 8a7180a8d5c25bfb6727d0b59551b0f8 + (const M &__move, const typename M::EOType::Fitness &__sol) + + + void + init + classmo_no_aspir_crit.html + f3a286fc4c2d36bd390ba9a3074f3037 + () + + + + moRandImprSelect + classmo_rand_impr_select.html + M + moMoveSelect + + M::EOType::Fitness + Fitness + classmo_rand_impr_select.html + 3bff2fdb963297430543c82ffb567a5c + + + + void + init + classmo_rand_impr_select.html + a19726a1509cff874801615d63a3b5d9 + (const Fitness &__fit) + + + bool + update + classmo_rand_impr_select.html + 60ae5548560caee7e28d5ed2446186c9 + (const M &__move, const Fitness &__fit) + + + void + operator() + classmo_rand_impr_select.html + 5ee57f77a450c0a9ce50bfccf3ad2a55 + (M &__move, Fitness &__fit) + + + Fitness + init_fit + classmo_rand_impr_select.html + d153c277a0a2ea95ac484210d445b40e + + + + std::vector< Fitness > + vect_better_fit + classmo_rand_impr_select.html + 05c7c3b858e8a25632f2f5c86b0c97a3 + + + + std::vector< M > + vect_better_moves + classmo_rand_impr_select.html + 2ace12bd179144fa71d56324694201f5 + + + + + moRandMove + classmo_rand_move.html + M + eoUF< M &, void > + + + moSA + classmo_s_a.html + M + moAlgo< M::EOType > + + + moSA + classmo_s_a.html + ef9ffb0d95c599e0a06c78db5f2f4b12 + (moRandMove< M > &__move_rand, moMoveIncrEval< M > &__incr_eval, moSolContinue< EOT > &__cont, double __init_temp, moCoolSched &__cool_sched, eoEvalFunc< EOT > &__full_eval) + + + bool + operator() + classmo_s_a.html + 0e4c54b57bc13fcbd4763883b8f719e5 + (EOT &__sol) + + + M::EOType + EOT + classmo_s_a.html + d5d64a8797bdedc7b3af7893aded0bd5 + + + + EOT::Fitness + Fitness + classmo_s_a.html + 97f1a40d5ab5a0b3f878d0347b34804b + + + + moRandMove< M > & + move_rand + classmo_s_a.html + 71c49935b63a202d25888a5f86121fec + + + + moMoveIncrEval< M > & + incr_eval + classmo_s_a.html + 4c3be32e9832e465b24e6d33559356bc + + + + moSolContinue< EOT > & + cont + classmo_s_a.html + 54484c8a514866ea496e0058c2e09716 + + + + double + init_temp + classmo_s_a.html + f1af7636b52aa5f6b381f8187b667bd4 + + + + moCoolSched & + cool_sched + classmo_s_a.html + c7aaf7424aa1b9f889d2ba9c959e5a1d + + + + eoEvalFunc< EOT > & + full_eval + classmo_s_a.html + bcd6a940046f23dd741444c0b85edf2c + + + + + moSolContinue + classmo_sol_continue.html + EOT + eoUF< const EOT &, bool > + + virtual void + init + classmo_sol_continue.html + 064dc966a210f4ffb9515be3f03ca4c7 + ()=0 + + + + moTabuList + classmo_tabu_list.html + M + eoBF + + M::EOType + EOT + classmo_tabu_list.html + e219715cc3fdd5626764bc50ce6357df + + + + virtual void + add + classmo_tabu_list.html + d279d72cb486d812da1ad3d24a69c286 + (const M &__move, const EOT &__sol)=0 + + + virtual void + update + classmo_tabu_list.html + a2e5d1132f064093c8ed57046405f5ca + ()=0 + + + virtual void + init + classmo_tabu_list.html + 0a06c459d56e8e2b408a8f3c6aec4e57 + ()=0 + + + + moTS + classmo_t_s.html + M + moAlgo< M::EOType > + + + moTS + classmo_t_s.html + 2be23f4524733ee6f37b71310d76407e + (moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moTabuList< M > &__tabu_list, moAspirCrit< M > &__aspir_crit, moSolContinue< EOT > &__cont, eoEvalFunc< EOT > &__full_eval) + + + + moTS + classmo_t_s.html + 508e675c4232cf2ca06dded931c90bab + (moMoveExpl< M > &__move_expl, moSolContinue< EOT > &__cont, eoEvalFunc< EOT > &__full_eval) + + + bool + operator() + classmo_t_s.html + 94d25a76fe1bc9ef0bbd0358ff55aceb + (EOT &__sol) + + + M::EOType + EOT + classmo_t_s.html + 90d19d468c12ab5bd796948ce1ce79b1 + + + + EOT::Fitness + Fitness + classmo_t_s.html + aa0eefbb17111422e495d1255f876fca + + + + moMoveExpl< M > & + move_expl + classmo_t_s.html + 06914ddc90ca96e9158c8dbe182a7865 + + + + moSolContinue< EOT > & + cont + classmo_t_s.html + 969371cd2202f3d29cbb426f57ac7d3a + + + + eoEvalFunc< EOT > & + full_eval + classmo_t_s.html + fb67eddae5d0bfca4ed881995523231e + + + + static bool + first_time + classmo_t_s.html + 564bc1969548ccbd9bb7e76f92898de0 + + + + static pthread_mutex_t + mutex + classmo_t_s.html + 688f9ba42eb33cae6431f4f4eb65b9e9 + + + + + moTSMoveLoopExpl + classmo_t_s_move_loop_expl.html + M + moMoveLoopExpl + + + moTSMoveLoopExpl + classmo_t_s_move_loop_expl.html + 43306dae9df150a8d9dc0dec9cd6a381 + (moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moTabuList< M > &__tabu_list, moAspirCrit< M > &__aspir_crit) + + + void + operator() + classmo_t_s_move_loop_expl.html + f601bbd0ccc41d6fbe3df9fcd87ad9e7 + (const EOT &__old_sol, EOT &__new_sol) + + + M::EOType + EOT + classmo_t_s_move_loop_expl.html + 47f42225e2ed096374b818bdb848a527 + + + + M::EOType::Fitness + Fitness + classmo_t_s_move_loop_expl.html + a1ba36c937b195ca2f7d1a24adaa7018 + + + + moMoveInit< M > & + move_init + classmo_t_s_move_loop_expl.html + 6b23f99648902fb72ed17a4a6fa4e400 + + + + moNextMove< M > & + next_move + classmo_t_s_move_loop_expl.html + aeeff6666d26ff5c67acd9c153a5ae49 + + + + moMoveIncrEval< M > & + incr_eval + classmo_t_s_move_loop_expl.html + ee4443fc8e45d840697619678628c26c + + + + moBestImprSelect< M > + move_select + classmo_t_s_move_loop_expl.html + 35a3f3035fb8df875c281d9838904bf1 + + + + moTabuList< M > & + tabu_list + classmo_t_s_move_loop_expl.html + 0e5988a940ba218e87c53b7e56d79790 + + + + moAspirCrit< M > & + aspir_crit + classmo_t_s_move_loop_expl.html + 6786cf5422d17cbf872b07ae74ca6b0f + + + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-mo/src/Makefile.am new file mode 100755 index 000000000..ae1e51b3c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/Makefile.am @@ -0,0 +1 @@ +# Nothing to compile ! diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/index.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/index.h new file mode 100644 index 000000000..10ac58f88 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/index.h @@ -0,0 +1,26 @@ +/** @mainpage Welcome to PARADISEO-Moving Objects + +@section intro Introduction + +MO is an extension of the ANSI-C++ compliant evolutionary computation library EO. +
+It contains classes for almost any kind of one solution based heuristics. + +@section tutorial Tutorial + + +@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 + +*/ + + +// coding: iso-8859-1 +// mode: C++ +// c-file-style: "Stroustrup" +// fill-column: 80 +// End: diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/mo b/tags/paradiseo-i386-0.2/paradiseo-mo/src/mo new file mode 100755 index 000000000..81c9fea9f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/mo @@ -0,0 +1,6 @@ +#ifndef __mo +#define __mo + +#include "mo.h" + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/mo.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/mo.h new file mode 100755 index 000000000..25e95cae5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/mo.h @@ -0,0 +1,43 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "mo.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __mo_h +#define __mo_h + +#include "moAspirCrit.h" +#include "moAlgo.h" +#include "moBestImprSelect.h" +#include "moCoolSched.h" +#include "moEasyCoolSched.h" +#include "moFirstImprSelect.h" +#include "moGenSolContinue.h" +#include "moHC.h" +#include "moHCMoveLoopExpl.h" +#include "moImprBestFitAspirCrit.h" +#include "moItRandNextMove.h" +#include "moLSCheckPoint.h" +#include "moMoveExpl.h" +#include "moMove.h" +#include "moMoveIncrEval.h" +#include "moMoveInit.h" +#include "moMoveLoopExpl.h" +#include "moMoveSelect.h" +#include "moNextMove.h" +#include "moNoAspirCrit.h" +#include "moRandImprSelect.h" +#include "moRandMove.h" +#include "moSA.h" +#include "moSolContinue.h" +#include "moTabuList.h" +#include "moTS.h" +#include "moTSMoveLoopExpl.h" + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moAlgo.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moAlgo.h new file mode 100755 index 000000000..42bd849a9 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moAlgo.h @@ -0,0 +1,26 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moAlgo.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moAlgo_h +#define __moAlgo_h + +#include + +//! Description of an algorithm of the paradiseo-mo library +/*! + moHC, moTS and moSA are 3 examples of algorithm of the paradiseo-mo library. + */ +template < class EOT > class moAlgo:public eoMonOp < EOT > +{ + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moAspirCrit.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moAspirCrit.h new file mode 100755 index 000000000..99c92727b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moAspirCrit.h @@ -0,0 +1,37 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moAspirCrit.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moAspirCrit_h +#define __moAspirCrit_h + +#include + +//! Description of the conditions in which a tabu move could be accepted +/*! + It is only a description... An object that herits from this class is needed to be used in a moTS. + See moNoAspriCrit for example. + */ +template < class M > class moAspirCrit:public eoBF < const M &, const typename + M::EOType::Fitness &, + bool > +{ + +public: + //! Procedure which initialises all that needs a aspiration criterion. + /*! + It can be possible that this procedure do nothing... + */ + virtual void + init () = 0; + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moBestImprSelect.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moBestImprSelect.h new file mode 100755 index 000000000..30c846236 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moBestImprSelect.h @@ -0,0 +1,93 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moBestImprSelect.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moBestImprSelect_h +#define __moBestImprSelect_h + +#include "moMoveSelect.h" + +//! One of the possible moMoveSelect. +/*! + All neighbors are considered, and the movement + which enables the best improvement is selected. +*/ +template < class M > class moBestImprSelect:public moMoveSelect < M > +{ + +public: + + //! Alias for the fitness. + typedef typename M::EOType::Fitness Fitness; + + //! Procedure which initialise the exploration + void init (const Fitness & __fit) + { + + first_time = true; + } + + + //!Function that indicates if the current move has not improved the fitness. + /*! + If the given fitness enables an improvment, + the move (moMove) and the fitness linked to this move are saved. + + \param __move a move. + \param __fit a fitness linked to the move. + \return TRUE if the move does not improve the fitness. + */ + bool update (const M & __move, const Fitness & __fit) + { + + if (first_time || __fit > best_fit) + { + + best_fit = __fit; + best_move = __move; + + first_time = false; + } + + return true; + } + + //! Procedure which saved the best move and fitness. + /*! + \param __move the current move (result of the procedure). + \param __fit the current fitness (result of the procedure). + \throws EmptySelection if no move has improved the fitness. + */ + void operator () (M & __move, Fitness & __fit) throw (EmptySelection) + { + + if (!first_time) + { + __move = best_move; + __fit = best_fit; + } + else + throw EmptySelection (); + } + +private: + + //! Allowing to know if at least one move has been generated. + bool first_time; + + //! The best move. + M best_move; + + //! The best fitness. + Fitness best_fit; + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moCoolSched.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moCoolSched.h new file mode 100755 index 000000000..9ce2d40b3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moCoolSched.h @@ -0,0 +1,27 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moCoolSched.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moCoolSched_h +#define __moCoolSched_h + +#include + +//! This class gives the description of a cooling schedule. +/*! + It is only a description... An object that herits from this class is needed to be used in a moSA. + See moEasyCoolSched for example. +*/ +class moCoolSched:public eoUF < double &, bool > +{ + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moEasyCoolSched.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moEasyCoolSched.h new file mode 100755 index 000000000..90baecc22 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moEasyCoolSched.h @@ -0,0 +1,60 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moEasyCoolSched.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moEasyCoolSched_h +#define __moEasyCoolSched_h + +#include "moCoolSched.h" + +//! One of the possible moCoolSched +/*! + The simpliest, the temperature decrease according to a ratio until + it greater than a threshold. + */ +class moEasyCoolSched:public moCoolSched +{ + +public: + //! Simple constructor + /*! + \param __threshold the threshold. + \param __ratio the ratio used to descrease the temperature. + */ + moEasyCoolSched (double __threshold, + double __ratio):threshold (__threshold), ratio (__ratio) + { + + } + + //! Function which proceeds to the cooling. + /*! + Decrease the temperature and indicates if it is greater than the threshold. + + \param __temp the current temperature. + \return if the new temperature (current temperature * ratio) is greater than the threshold. + */ + bool operator () (double &__temp) + { + + return (__temp *= ratio) > threshold; + } + +private: + + //! The temperature threhold. + double threshold; + + //! The decreasing factor of the temperature. + double ratio; + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moFirstImprSelect.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moFirstImprSelect.h new file mode 100755 index 000000000..6656d5a95 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moFirstImprSelect.h @@ -0,0 +1,104 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moFirstImprSelect.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moFirstImprSelect_h +#define __moFirstImprSelect_h + +#include "moMoveSelect.h" + +//! One possible moMoveSelect. +/*! + The neighborhood is explored until + a move enables an improvment of the + current solution. +*/ +template < class M > class moFirstImprSelect:public moMoveSelect < M > +{ + +public: + + //! Alias for the fitness. + typedef typename M::EOType::Fitness Fitness; + + //! Procedure which initialise the exploration. + /*! + It save the current fitness as the initial value for the fitness. + */ + virtual void init (const Fitness & __fit) + { + + valid = false; + init_fit = __fit; + } + + + //!Function that indicates if the current move has not improved the fitness. + /*! + If the given fitness enables an improvment, + the move (moMove) should be applied to the current solution. + + \param __move a move. + \param __fit a fitness linked to the move. + \return TRUE if the move does not improve the fitness. + */ + bool update (const M & __move, const typename M::EOType::Fitness & __fit) + { + + if (__fit > init_fit) + { + + best_fit = __fit; + best_move = __move; + valid = true; + + return false; + } + else + { + return true; + } + } + + //! Procedure which saved the best move and fitness. + /*! + \param __move the current move (result of the procedure). + \param __fit the current fitness (result of the procedure). + \throws EmptySelection if no move has improved the fitness. + */ + void operator () (M & __move, Fitness & __fit) throw (EmptySelection) + { + + if (valid) + { + __move = best_move; + __fit = best_fit; + } + else + throw EmptySelection (); + } + +private: + + //! Allow to know if at least one move has improved the solution. + bool valid; + + //! Best stored movement. + M best_move; + + //! Initial fitness. + Fitness init_fit; + + //! Best stored fitness. + Fitness best_fit; + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moGenSolContinue.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moGenSolContinue.h new file mode 100755 index 000000000..79921a627 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moGenSolContinue.h @@ -0,0 +1,69 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "eoGenSolContinue.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moGenSolContinue_h +#define __moGenSolContinue_h + +#include "moSolContinue.h" + +//! One possible stop criterion for a solution-based heuristic. +/*! + The stop criterion corresponds to a maximum number of iteration. + */ +template < class EOT > class moGenSolContinue:public moSolContinue < EOT > +{ + +public: + + //! Simple constructor. + /*! + \param __maxNumGen the maximum number of generation. + */ + moGenSolContinue (unsigned __maxNumGen):maxNumGen (__maxNumGen), numGen (0) + { + + } + + //! Function that activates the stop criterion. + /*! + Increments the counter and returns TRUE if the + current number of iteration is lower than the given + maximum number of iterations. + + \param __sol the current solution. + \return TRUE or FALSE according to the current generation number. + */ + bool operator () (const EOT & __sol) + { + + return (++numGen < maxNumGen); + } + + //! Procedure which allows to initialise the generation counter. + /*! + It can also be used to reset the iteration counter. + */ + void init () + { + + numGen = 0; + } + +private: + + //! Iteration maximum number. + unsigned maxNumGen; + + //! Iteration current number. + unsigned numGen; +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moHC.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moHC.h new file mode 100755 index 000000000..30d82ed00 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moHC.h @@ -0,0 +1,133 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moHC.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moHC_h +#define __moHC_h + +#include +#include + +#include "moAlgo.h" +#include "moMoveExpl.h" +#include "moHCMoveLoopExpl.h" + +//! Hill Climbing (HC) +/*! + Class which describes the algorithm for a hill climbing. + */ +template < class M > class moHC:public moAlgo < typename M::EOType > +{ + + //! Alias for the type. + typedef + typename + M::EOType + EOT; + + //! Alias for the fitness. + typedef + typename + EOT::Fitness + Fitness; + +public: + + //! Full constructor. + /*! + All the boxes are given in order the HC to use a moHCMoveLoopExpl. + + \param __move_init a move initialiser. + \param __next_move a neighborhood explorer. + \param __incr_eval a (generally) efficient evaluation function. + \param __move_select a move selector. + \param __full_eval a full evaluation function. + */ +moHC (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval, moMoveSelect < M > &__move_select, eoEvalFunc < EOT > &__full_eval):move_expl (*new moHCMoveLoopExpl < M > + (__move_init, __next_move, __incr_eval, __move_select)), + full_eval (__full_eval) + { + + } + + //! Light constructor. + /*! + This constructor allow to use another moMoveExpl (generally not a moHCMoveLoopExpl). + + \param __move_expl a complete explorer. + \param __full_eval a full evaluation function. + */ +moHC (moMoveExpl < M > &__move_expl, eoEvalFunc < EOT > &__full_eval):move_expl (__move_expl), + full_eval + (__full_eval) + { + + } + + //! Function which launches the HC + /*! + The HC has to improve a current solution. + As the moSA and the mo TS, it can be used for HYBRIDATION in an evolutionnary algorithm. + + \param __sol a current solution to improve. + \return TRUE. + */ + bool operator ()(EOT & __sol) + { + + if (__sol.invalid ()) + { + full_eval (__sol); + } + + EOT new_sol; + + do + { + + new_sol = __sol; + + try + { + + move_expl (__sol, new_sol); + + } + catch (EmptySelection & __ex) + { + + break; + } + + if (new_sol.fitness () > __sol.fitness ()) + { + __sol = new_sol; + } + else + { + break; + } + + } + while (true); + + return true; + } + +private: + + //! Complete exploration of the neighborhood. + moMoveExpl < M > &move_expl; + + //! A full evaluation function. + eoEvalFunc < EOT > &full_eval; +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moHCMoveLoopExpl.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moHCMoveLoopExpl.h new file mode 100755 index 000000000..f9ff78bea --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moHCMoveLoopExpl.h @@ -0,0 +1,108 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moHCMoveLoopExpl.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moHCMoveLoopExpl_h +#define __moHCMoveLoopExpl_h + +#include "moMoveLoopExpl.h" + +#include "moMoveInit.h" +#include "moNextMove.h" +#include "moMoveIncrEval.h" +#include "moMoveSelect.h" + +//! Iterative explorer used by a moHC. +template < class M > class moHCMoveLoopExpl:public moMoveLoopExpl < M > +{ + + //! Alias for the type. + typedef typename M::EOType EOT; + + //! Alias for the fitness. + typedef typename M::EOType::Fitness Fitness; + +public: + + //! Constructor. + /*! + All the boxes have to be specified. + + \param __move_init the move initialiser. + \param __next_move the neighborhood explorer. + \param __incr_eval (generally) efficient evaluation function. + \param __move_select the move selector. + */ +moHCMoveLoopExpl (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval, moMoveSelect < M > &__move_select): + + move_init (__move_init), + next_move (__next_move), + incr_eval (__incr_eval), move_select (__move_select) + { + + } + + //! Procedure which launches the explorer. + /*! + The exploration starts from an old solution and provides a new solution. + + \param __old_sol the current solution. + \param __new_sol the new_sol (result of the procedure). + */ + void operator () (const EOT & __old_sol, EOT & __new_sol) + { + + M move; + + // + move_init (move, __old_sol); /* Restarting the exploration of + of the neighborhood ! */ + + move_select.init (__old_sol.fitness ()); + + while (move_select.update (move, incr_eval (move, __old_sol)) + && next_move (move, __old_sol)); + + try + { + + M best_move; + + Fitness best_move_fit; + + move_select (best_move, best_move_fit); + __new_sol.fitness (best_move_fit); + best_move (__new_sol); + + } + catch (EmptySelection & __ex) + { + + // ? + } + } + +private: + + //! Move initialiser. + moMoveInit < M > &move_init; + + //! Neighborhood explorer. + moNextMove < M > &next_move; + + //! (generally) Efficient evaluation. + moMoveIncrEval < M > &incr_eval; + + //! Move selector. + moMoveSelect < M > &move_select; + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moImprBestFitAspirCrit.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moImprBestFitAspirCrit.h new file mode 100755 index 000000000..d0cf06486 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moImprBestFitAspirCrit.h @@ -0,0 +1,84 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moImprAspirCrit.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moImprBestFitAspirCrit_h +#define __moImprBestFitAspirCrit_h + +#include "moAspirCrit.h" + +//! One of the possible moAspirCrit +/*! + This criterion is satisfied when a given fitness + is the best ever considered. +*/ +template < class M > class moImprBestFitAspirCrit:public moAspirCrit < M > +{ + +public: + + //! Alias for the fitness + typedef typename M::EOType::Fitness Fitness; + + //! Contructor + moImprBestFitAspirCrit () + { + + first_time = true; + } + + //! Initialisation procedure + void init () + { + + first_time = true; + } + + //! Function that indicates if the fit is better that the already saved fit + /*! + The first time, the function only saved the current move and fitness. + + \param __move a move. + \param __fit a fitnes linked to the move. + \return TRUE the first time and if __fit > best_fit, else FALSE. + */ + bool operator () (const M & __move, const Fitness & __fit) + { + + if (first_time) + { + + best_fit = __fit; + first_time = false; + + return true; + } + else if (__fit < best_fit) + return false; + + else + { + + best_fit = __fit; + + return true; + } + } + +private: + + //! Best fitness found until now + Fitness best_fit; + + //! Indicates that a fitness has been already saved or not + bool first_time; +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moItRandNextMove.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moItRandNextMove.h new file mode 100755 index 000000000..5f24bed39 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moItRandNextMove.h @@ -0,0 +1,84 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moNextMove.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moItRandNextMove_h +#define __moItRandNextMove_h + +#include "moNextMove.h" +#include "moRandMove.h" + +//! One of the possible moNextMove. +/*! + This class is a move (moMove) generator with a bound for the maximum number of iterations. +*/ +template < class M > class moItRandNextMove:public moNextMove < M > +{ + + //! Alias for the type. + typedef typename M::EOType EOT; + +public: + + //! The constructor. + /*! + Parameters only for initialising the attributes. + + \param __rand_move the random move generator. + \param __max_iter the iteration maximum number. + */ + moItRandNextMove (moRandMove < M > &__rand_move, + unsigned __max_iter):rand_move (__rand_move), + max_iter (__max_iter), num_iter (0) + { + + } + + //! Generation of a new move + /*! + If the maximum number is not already reached, the current move is forgotten and remplaced by another one. + + \param __move the current move. + \param __sol the current solution. + \return FALSE if the maximum number of iteration is reached, else TRUE. + */ + bool operator () (M & __move, const EOT & __sol) + { + + if (num_iter++ > max_iter) + { + + num_iter = 0; + return false; + } + else + { + + /* The given solution is discarded here */ + rand_move (__move); + num_iter++; + return true; + } + } + +private: + + //! A move generator (generally randomly). + moRandMove < M > &rand_move; + + //! Iteration maximum number. + unsigned max_iter; + + //! Iteration current number. + unsigned num_iter; + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moLSCheckPoint.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moLSCheckPoint.h new file mode 100755 index 000000000..78a8e3e52 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moLSCheckPoint.h @@ -0,0 +1,66 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moLSCheckPoint.h" + +// (c) OPAC Team, LIFL, 2003 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moSolUpdater_h +#define __moSolUpdater_h + +#include + +//! Class which allows a checkpointing system. +/*! + Thanks to this class, at each iteration, additionnal function can be used (and not only one). +*/ +template < class M > class moLSCheckPoint:public eoBF < const M &, const typename + M::EOType &, void > +{ + +public: + //! Function which launches the checkpointing + /*! + Each saved function is used on the current move and the current solution. + + \param __move a move. + \param __sol a solution. + */ + void + operator () (const M & __move, const typename M::EOType & __sol) + { + + for (unsigned i = 0; i < func.size (); i++) + { + func[i]->operator ()(__move, __sol); + } + } + + //! Procedure which add a new function to the function vector + /*! + The new function is added at the end of the vector. + \param __f a new function to add. + */ + void + add (eoBF < const M &, const typename M::EOType &, void >&__f) + { + + func.push_back (&__f); + } + +private: + + //! vector of function + std::vector < eoBF < const + M &, const + typename + M::EOType &, void >*> + func; + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moMove.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moMove.h new file mode 100755 index 000000000..5c7f41818 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moMove.h @@ -0,0 +1,32 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moMove.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moMove_h +#define __moMove_h + +#include + +//! Definition of a move. + +/*! + A move transforms a solution to another close solution. + It describes how a solution can be modified to another one. +*/ +template < class EOT > class moMove:public eoUF < EOT &, void > +{ + +public: + //! Alias for the type + typedef EOT EOType; + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moMoveExpl.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moMoveExpl.h new file mode 100755 index 000000000..0905e3186 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moMoveExpl.h @@ -0,0 +1,29 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "eoMoveExpl.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moMoveExpl_h +#define __moMoveExpl_h + +#include + +//! Description of a move (moMove) explorer +/*! + Only a description...See moMoveLoopExpl. + */ +template < class M > class moMoveExpl:public eoBF < const typename + M::EOType &, + typename +M::EOType &, void > +{ + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moMoveIncrEval.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moMoveIncrEval.h new file mode 100755 index 000000000..7dd633141 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moMoveIncrEval.h @@ -0,0 +1,32 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "eoMoveIncrEval.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moMoveIncrEval_h +#define __moMoveIncrEval_h + +#include + +//! (generally) Efficient evaluation function based a move and a solution. + +/*! + From a move and a solution, it computes + a new fitness that could be associated to + the solution if this one is updated. +*/ +template < class M > class moMoveIncrEval:public eoBF < const M &, const typename + M::EOType &, + typename + M::EOType::Fitness > +{ + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moMoveInit.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moMoveInit.h new file mode 100755 index 000000000..dfba59661 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moMoveInit.h @@ -0,0 +1,28 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moMoveInit.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moMoveInit_h +#define __moMoveInit_h + +#include + +//! Move (moMove) initializer +/*! + Class which allows to initiase a move. + Only a description... An object that herits from this class needs to be designed to be used. + */ +template < class M > class moMoveInit:public eoBF < M &, const typename +M::EOType &, void > +{ + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moMoveLoopExpl.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moMoveLoopExpl.h new file mode 100755 index 000000000..5d35e8aac --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moMoveLoopExpl.h @@ -0,0 +1,26 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moMoveLoopExpl.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moMoveLoopExpl_h +#define __moMoveLoopExpl_h + +#include "moMoveExpl.h" + +//! Class which describes an iterative explorer +/*! + Only a description... moHCMoveLoopExpl and moTSMoveLoopExpl are exemples of class that are a moMoveLoopExpl. + */ +template < class M > class moMoveLoopExpl:public moMoveExpl < M > +{ + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moMoveSelect.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moMoveSelect.h new file mode 100755 index 000000000..7595ba61d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moMoveSelect.h @@ -0,0 +1,65 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moMoveSelect.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moMoveSelect_h +#define __moMoveSelect_h + +#include + +//! Special class that describes the case of no selection. +/*! + This class is used as an exception that can be thrown if a solution selector has completly failed. + */ +class EmptySelection +{ + +}; + +//! Class that describes a move selector (moMove). +/*! + It iteratively considers some moves (moMove) and their + associated fitnesses. The best move is so regularly updated. + At any time, it could be accessed. +*/ +template < class M > class moMoveSelect:public eoBF < M &, typename M::EOType::Fitness &, + void > +{ +public: + //! Alias for the fitness + typedef + typename + M::EOType::Fitness + Fitness; + + //! Procedure which initialises all that the move selector needs including the initial fitness. + /*! + In order to know the fitness of the solution, + for which the neighborhood will + be soon explored + + \param __fit the current fitness. + */ + virtual void + init (const Fitness & __fit) = 0; + + //! Function which updates the best solutions. + /*! + \param __move a new move. + \param __fit a fitness linked to the new move. + \return a boolean that expresses the need to resume the exploration. + */ + virtual + bool + update (const M & __move, const Fitness & __fit) = 0; + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moNextMove.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moNextMove.h new file mode 100755 index 000000000..93748fe74 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moNextMove.h @@ -0,0 +1,29 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moNextMove.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moNextMove_h +#define __moNextMove_h + +#include + +//! Class which allows to generate a new move (moMove). +/*! + Useful for the explorer (for moTS or moHC). + Does nothing... An object that herits from this class needs to be designed for being used. + */ +template < class M > class moNextMove:public eoBF < M &, const typename + M::EOType &, + bool > +{ + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moNoAspirCrit.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moNoAspirCrit.h new file mode 100755 index 000000000..a5e499ccb --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moNoAspirCrit.h @@ -0,0 +1,48 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "eoNoAspirCrit.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moNoAspirCrit_h +#define __moNoAspirCrit_h + +#include "moAspirCrit.h" + +//! One of the possible aspiration criterion (moAspirCrit) +/*! + The simplest : never satisfied. + */ +template < class M > class moNoAspirCrit:public moAspirCrit < M > +{ + + //! Function which describes the aspiration criterion behaviour + /*! + Does nothing. + + \param __move a move. + \param __sol a fitness. + \return FALSE. + */ + bool operator () (const M & __move, + const typename M::EOType::Fitness & __sol) + { + + return false; + } + + //! Procedure which initialises all that needs a moNoAspirCrit + /*! + Nothing... + */ + void init () + { + } +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moRandImprSelect.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moRandImprSelect.h new file mode 100755 index 000000000..4d60e794a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moRandImprSelect.h @@ -0,0 +1,104 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moRandImprSelect.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moRandImprSelect_h +#define __moRandImprSelect_h + +#include + +#include +#include "moMoveSelect.h" + +//! One of the possible moMove selector (moMoveSelect) +/*! + All the neighbors are considered. + One of them that enables an improvment of the objective function is choosen. +*/ +template < class M > class moRandImprSelect:public moMoveSelect < M > +{ + +public: + + //! Alias for the fitness + typedef typename M::EOType::Fitness Fitness; + + //!Procedure which all that needs a moRandImprSelect + /*! + Give a value to the initialise fitness. + Clean the move and fitness vectors. + + \param __fit the current best fitness + */ + void init (const Fitness & __fit) + { + init_fit = __fit; + vect_better_fit.clear (); + vect_better_moves.clear (); + } + + //! Function that updates the fitness and move vectors + /*! + if a move give a better fitness than the initial fitness, + it is saved and the fitness too. + + \param __move a new move. + \param __fit a new fitness associated to the new move. + \return TRUE. + */ + bool update (const M & __move, const Fitness & __fit) + { + + if (__fit > init_fit) + { + + vect_better_fit.push_back (__fit); + vect_better_moves.push_back (__move); + } + + return true; + } + + //! The move selection + /*! + One the saved move is randomly chosen. + + \param __move the reference of the move that can be initialised by the function. + \param __fit the reference of the fitness that can be initialised by the function. + \throws EmptySelection If no move which improves the current fitness are found. + */ + void operator () (M & __move, Fitness & __fit) throw (EmptySelection) + { + + if (!vect_better_fit.empty ()) + { + + unsigned n = rng.random (vect_better_fit.size ()); + + __move = vect_better_moves[n]; + __fit = vect_better_fit[n]; + } + else + throw EmptySelection (); + } + +private: + + //! Fitness of the current solution. + Fitness init_fit; + + //! Candidate fitnesse vector. + std::vector < Fitness > vect_better_fit; + + //! Candidate move vector. + std::vector < M > vect_better_moves; +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moRandMove.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moRandMove.h new file mode 100755 index 000000000..b17de3868 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moRandMove.h @@ -0,0 +1,26 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moRandMove.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moRandMove_h +#define __moRandMove_h + +#include + +//! Random move generator +/*! + Only a description... An object that herits from this class needs to be designed in order to use a moSA. + */ +template < class M > class moRandMove:public eoUF < M &, void > +{ + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moSA.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moSA.h new file mode 100755 index 000000000..c3e3de263 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moSA.h @@ -0,0 +1,153 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moSA.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moSA_h +#define __moSA_h + +#include + +#include +#include + +#include "moAlgo.h" +#include "moRandMove.h" +#include "moMoveIncrEval.h" +#include "moCoolSched.h" +#include "moSolContinue.h" + +#include + +//! Simulated Annealing (SA) +/*! + Class that describes a Simulated Annealing algorithm. +*/ +template < class M > class moSA:public moAlgo < typename M::EOType > +{ + + //! Alias for the type + typedef + typename + M::EOType + EOT; + + //! Alias for the fitness + typedef + typename + EOT::Fitness + Fitness; + +public: + + //! SA constructor + /*! + All the boxes used by a SA need to be given. + + \param __move_rand a move generator (generally randomly). + \param __incr_eval a (generaly) efficient evaluation function + \param __cont a stopping criterion. + \param __init_temp the initial temperature. + \param __cool_sched a cooling schedule, describes how the temperature is modified. + \param __full_eval a full evaluation function. + */ + moSA (moRandMove < M > &__move_rand, + moMoveIncrEval < M > &__incr_eval, + moSolContinue < EOT > &__cont, + double __init_temp, + moCoolSched & __cool_sched, eoEvalFunc < EOT > &__full_eval): + move_rand (__move_rand), + incr_eval (__incr_eval), + cont (__cont), + init_temp (__init_temp), + cool_sched (__cool_sched), + full_eval (__full_eval) + { + + } + + //! function that launches the SA algorithm. + /*! + As a moTS or a moHC, the SA can be used for HYBRIDATION in an evolutionary algorithm. + + \param __sol a solution to improve. + \return TRUE. + */ + bool operator ()(EOT & __sol) + { + + if (__sol.invalid ()) + { + full_eval (__sol); + } + + double + temp = init_temp; + + M move; + + EOT best_sol = __sol; + + do + { + + cont.init (); + do + { + + move_rand (move); + + Fitness delta_fit = incr_eval (move, __sol) - __sol.fitness (); + + if (delta_fit > 0 || rng.uniform () < exp (delta_fit / temp)) + { + + __sol.fitness (incr_eval (move, __sol)); + move (__sol); + + /* Updating the best solution found + until now ? */ + if (__sol.fitness () > best_sol.fitness ()) + best_sol = __sol; + } + + } + while (cont (__sol)); + + } + while (cool_sched (temp)); + + __sol = best_sol; + + return true; + } + +private: + + //! A move generator (generally randomly) + moRandMove < M > &move_rand; + + //! A (generally) efficient evaluation function. + moMoveIncrEval < M > &incr_eval; + + //! Stopping criterion before temperature update + moSolContinue < EOT > &cont; + + //! Initial temperature + double + init_temp; + + //! The cooling schedule + moCoolSched & cool_sched; + + //! A full evaluation function. + eoEvalFunc < EOT > &full_eval; // Full evaluator. +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moSolContinue.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moSolContinue.h new file mode 100755 index 000000000..44efdd969 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moSolContinue.h @@ -0,0 +1,33 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moSolContinue.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moSolContinue_h +#define __moSolContinue_h + +#include + +//! Class that describes a stop criterion for a solution-based heuristic + +/*! + It allows to add an initialisation procedure to an object that is a unary function (eoUF). +*/ +template < class EOT > class moSolContinue:public eoUF < const EOT &, bool > +{ + +public: + //! Procedure which initialises all that the stop criterion needs + /*! + Generally, it allocates some data structures or initialises some counters. + */ + virtual void init () = 0; +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moTS.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moTS.h new file mode 100755 index 000000000..aae975b31 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moTS.h @@ -0,0 +1,184 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moTS.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moTS_h +#define __moTS_h + +#include +#include + +#include "moAlgo.h" +#include "moSolContinue.h" + +#include "moMoveExpl.h" +#include "moTSMoveLoopExpl.h" + +#include + +//! Tabu Search (TS) +/*! + Generic algorithm that describes a tabu search. + */ +template < class M > class moTS:public moAlgo < typename M::EOType > +{ + + //!Alias for the type + typedef + typename + M::EOType + EOT; + + //!Alias for the fitness + typedef + typename + EOT::Fitness + Fitness; + +public: + + //!Constructor of a moTS specifying all the boxes + /*! + In this constructor, a moTSMoveLoopExpl is instanciated. + + \param __move_init move initialisation + \param __next_move neighborhood explorer + \param __incr_eval efficient evaluation + \param __tabu_list tabu list + \param __aspir_crit aspiration criterion + \param __cont stop criterion + \param __full_eval full evaluation function + */ +moTS (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval, moTabuList < M > &__tabu_list, moAspirCrit < M > &__aspir_crit, moSolContinue < EOT > &__cont, eoEvalFunc < EOT > &__full_eval):move_expl (*new moTSMoveLoopExpl < M > + (__move_init, __next_move, __incr_eval, __tabu_list, + __aspir_crit)), cont (__cont), full_eval (__full_eval) + { + + if (first_time) + { + + pthread_mutex_init (&mutex, 0); + + first_time = false; + } + } + + //! Constructor with less parameters + /*! + The explorer is given in the parameters. + + \param __move_expl the explorer (generally different that a moTSMoveLoopExpl) + \param __cont stop criterion + \param __full_eval full evaluation function + */ +moTS (moMoveExpl < M > &__move_expl, moSolContinue < EOT > &__cont, eoEvalFunc < EOT > &__full_eval):move_expl (__move_expl), + cont (__cont), + full_eval (__full_eval) + { + + if (first_time) + { + + pthread_mutex_init (&mutex, 0); + + first_time = false; + } + } + + //! Function which launchs the Tabu Search + /*! + Algorithm of the tabu search. + As a moSA or a moHC, it can be used for HYBRIDATION in an evolutionary algorithm. + For security a lock (pthread_mutex_t) is closed during the algorithm. + + \param __sol a solution to improve. + \return TRUE. + */ + bool operator ()(EOT & __sol) + { + + pthread_mutex_lock (&mutex); + + if (__sol.invalid ()) + { + full_eval (__sol); + } + + M move; + + EOT best_sol = __sol, new_sol; + + cont.init (); + + do + { + + new_sol = __sol; + + try + { + + move_expl (__sol, new_sol); + + } + catch (EmptySelection & __ex) + { + + break; + } + + /* Updating the best solution + found until now ? */ + if (new_sol.fitness () > __sol.fitness ()) + { + best_sol = new_sol; + } + + __sol = new_sol; + + } + while (cont (__sol)); + + __sol = best_sol; + + pthread_mutex_unlock (&mutex); + + return true; + } + +private: + + //! Boolean allowing to initialise the ptread_mutex_t in the constructor + static + bool + first_time; + + //! The lock + static + pthread_mutex_t + mutex; + + //! Neighborhood explorer + moMoveExpl < M > &move_expl; + + //! Stop criterion + moSolContinue < EOT > &cont; + + //! Full evaluation function + eoEvalFunc < EOT > &full_eval; +}; + +//! declaration of the mutex variable +template < class EOT > pthread_mutex_t moTS < EOT >::mutex; + +//! by default, first_time must have the value true +template < class EOT > bool moTS < EOT >::first_time = true; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moTSMoveLoopExpl.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moTSMoveLoopExpl.h new file mode 100755 index 000000000..53ed30a74 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moTSMoveLoopExpl.h @@ -0,0 +1,132 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moTSMoveLoopExpl.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moTSMoveLoopExpl_h +#define __moTSMoveLoopExpl_h + +#include "moMoveLoopExpl.h" + +#include "moMoveInit.h" +#include "moNextMove.h" +#include "moMoveIncrEval.h" +#include "moMoveSelect.h" + +#include "moTabuList.h" +#include "moAspirCrit.h" +#include "moBestImprSelect.h" + +//! Explorer for a Tabu Search algorithm +/*! + It is used by a moTS. + */ +template < class M > class moTSMoveLoopExpl:public moMoveLoopExpl < M > +{ + + //!Alias for the type + typedef typename M::EOType EOT; + + //!Alias for the fitness + typedef typename M::EOType::Fitness Fitness; + +public: + + //!Constructor + /*! + \param __move_init move initialisation + \param __next_move neighborhood explorer + \param __incr_eval efficient evaluation + \param __tabu_list tabu list + \param __aspir_crit aspiration criterion + */ +moTSMoveLoopExpl (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval, moTabuList < M > &__tabu_list, moAspirCrit < M > &__aspir_crit): + move_init (__move_init), + next_move (__next_move), + incr_eval (__incr_eval), + tabu_list (__tabu_list), aspir_crit (__aspir_crit) + { + + tabu_list.init (); + aspir_crit.init (); + } + + //!Procedure which lauches the exploration + /*! + The exploration continues while the chosen move is not in the tabu list + or the aspiration criterion is true. If these 2 conditions are not true, the + exploration stops if the move selector update function returns false. + + \param __old_sol the initial solution + \param __new_sol the new solution + */ + void operator () (const EOT & __old_sol, EOT & __new_sol) + { + + M move; + + + move_init (move, __old_sol); /* Restarting the exploration of + of the neighborhood ! */ + + move_select.init (__old_sol.fitness ()); + + do + { + + Fitness fit = incr_eval (move, __old_sol); + + if (!tabu_list (move, __old_sol) || aspir_crit (move, fit)) + { + if (!move_select.update (move, fit)) + break; + } + + } + while (next_move (move, __old_sol)); + + M best_move; + + Fitness best_move_fit; + + move_select (best_move, best_move_fit); + + __new_sol.fitness (best_move_fit); + best_move (__new_sol); + + /* Removing moves that are + no more tabu */ + tabu_list.update (); + + // Updating the tabu list + tabu_list.add (best_move, __new_sol); + } + +private: + + //!Move initialisation + moMoveInit < M > &move_init; + + //!Neighborhood explorer + moNextMove < M > &next_move; + + //!Efficient evaluation + moMoveIncrEval < M > &incr_eval; + + //!Move selector + moBestImprSelect < M > move_select; + + //!Tabu list + moTabuList < M > &tabu_list; + + //!Aspiration criterion + moAspirCrit < M > &aspir_crit; +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/src/moTabuList.h b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moTabuList.h new file mode 100755 index 000000000..d9d7445ae --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/src/moTabuList.h @@ -0,0 +1,60 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moTabuList.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moTabuList_h +#define __moTabuList_h + +#include + +//! Class describing a tabu list that a moTS uses +/*! + It is only a description, does nothing... A new object that herits from this class has to be defined in order + to be used in a moTS. + */ +template < class M > class moTabuList:public eoBF < const M &, const typename + M::EOType &, + bool > +{ + +public: + //! Alias for the type + typedef + typename + M::EOType + EOT; + + + //! Procedure to add a move in the tabu list + /*! + The two parameters have not to be modified so they are constant parameters + + \param __move a new tabu move + \param __sol the solution associated to this move + */ + virtual void + add (const M & __move, const EOT & __sol) = 0; + + //! Procedure that updates the tabu list content + /*! + Generally, a counter associated to each saved move is decreased by one. + */ + virtual void + update () = 0; + + //! Procedure which initialises the tabu list + /*! + Can be useful if the data structure needs to be allocated before being used. + */ + virtual void + init () = 0; +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson1/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson1/Makefile.am new file mode 100644 index 000000000..84bcda58d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson1/Makefile.am @@ -0,0 +1,20 @@ +INCLUDES = -I${EO_DIR}/src/ -I ../../src/ -I ../examples/tsp/src/ + +AM_CXXFLAGS =\ + -Wall\ + -Werror\ + -Wno-deprecated\ + -ansi\ + -pedantic + +bin_PROGRAMS = hill_climbing + +############################## +hill_climbing_SOURCES = hill_climbing.cpp + +hill_climbing_LDFLAGS = + +hill_climbing_LDADD = \ + ${EO_DIR}/src/libeo.a\ + ${EO_DIR}/src/utils/libeoutils.a\ + ../examples/tsp/src/libtsp.a diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson1/hill_climbing b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson1/hill_climbing new file mode 100755 index 000000000..9f8c5081f Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson1/hill_climbing differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson1/hill_climbing.cpp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson1/hill_climbing.cpp new file mode 100644 index 000000000..3cc29c540 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson1/hill_climbing.cpp @@ -0,0 +1,71 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "hill_climbing.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + + + +int main (int __argc, char * __argv []) { + + if (__argc != 2) { + + std :: cerr << "Usage : ./hill_climbing [instance]" << std :: endl ; + return 1 ; + } + + srand (1000) ; + + Graph :: load (__argv [1]) ; // Instance + + Route route ; // Solution + + RouteInit init ; // Sol. Random Init. + init (route) ; + + RouteEval full_eval ; // Full. Eval. + full_eval (route) ; + + std :: cout << "[From] " << route << std :: endl ; + + /* Tools for an efficient (? :-)) + local search ! */ + + TwoOptInit two_opt_init ; // Init. + + TwoOptNext two_opt_next ; // Explorer. + + TwoOptIncrEval two_opt_incr_eval ; // Eff. eval. + + //moFirstImprSelect two_opt_select ; + moBestImprSelect two_opt_select ; + //moRandImprSelect two_opt_select ; + + moHC hill_climb (two_opt_init, two_opt_next, two_opt_incr_eval, two_opt_select, full_eval) ; + hill_climb (route) ; + + std :: cout << "[To] " << route << std :: endl ; + + return 0 ; +} + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson2/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson2/Makefile.am new file mode 100644 index 000000000..1a169aa1d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson2/Makefile.am @@ -0,0 +1,20 @@ +INCLUDES = -I${EO_DIR}/src/ -I ../../src/ -I ../examples/tsp/src/ + +AM_CXXFLAGS =\ + -Wall\ + -Werror\ + -Wno-deprecated\ + -ansi\ + -pedantic + +bin_PROGRAMS = tabu_search + +############################## +tabu_search_SOURCES = tabu_search.cpp + +tabu_search_LDFLAGS = + +tabu_search_LDADD = \ + ${EO_DIR}/src/libeo.a\ + ${EO_DIR}/src/utils/libeoutils.a\ + ../examples/tsp/src/libtsp.a diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson2/tabu_search b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson2/tabu_search new file mode 100755 index 000000000..1102aac51 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson2/tabu_search differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp new file mode 100644 index 000000000..9c1cf2fc9 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp @@ -0,0 +1,73 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "tabu_search.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +int main (int __argc, char * __argv []) { + + if (__argc != 2) { + + std :: cerr << "Usage : ./tabu_search [instance]" << std :: endl ; + return 1 ; + } + + Graph :: load (__argv [1]) ; // Instance + + Route route ; // Solution + + RouteInit init ; // Sol. Random Init. + init (route) ; + + RouteEval full_eval ; // Full. Eval. + full_eval (route) ; + + std :: cout << "[From] " << route << std :: endl ; + + /* Tools for an efficient (? :-)) + local search ! */ + + TwoOptInit two_opt_init ; // Init. + + TwoOptNext two_opt_next ; // Explorer. + + TwoOptIncrEval two_opt_incr_eval ; // Eff. eval. + + TwoOptTabuList tabu_list ; // Tabu List + + moNoAspirCrit aspir_crit ; // Aspiration Criterion + + moGenSolContinue cont (50000) ; // Continuator + + moTS tabu_search (two_opt_init, two_opt_next, two_opt_incr_eval, tabu_list, aspir_crit, cont, full_eval) ; + tabu_search (route) ; + + std :: cout << "[To] " << route << std :: endl ; + + return 0 ; +} + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson3/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson3/Makefile.am new file mode 100644 index 000000000..967652ed5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson3/Makefile.am @@ -0,0 +1,20 @@ +INCLUDES = -I${EO_DIR}/src/ -I ../../src/ -I ../examples/tsp/src/ + +AM_CXXFLAGS =\ + -Wall\ + -Werror\ + -Wno-deprecated\ + -ansi\ + -pedantic + +bin_PROGRAMS = simulated_annealing + +############################## +simulated_annealing_SOURCES = simulated_annealing.cpp + +simulated_annealing_LDFLAGS = + +simulated_annealing_LDADD = \ + ${EO_DIR}/src/libeo.a\ + ${EO_DIR}/src/utils/libeoutils.a\ + ../examples/tsp/src/libtsp.a diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson3/simulated_annealing b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson3/simulated_annealing new file mode 100755 index 000000000..8915fc20e Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson3/simulated_annealing differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson3/simulated_annealing.cpp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson3/simulated_annealing.cpp new file mode 100644 index 000000000..364a01fe8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Lesson3/simulated_annealing.cpp @@ -0,0 +1,67 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "simulated_annealing.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +int main (int __argc, char * __argv []) { + + if (__argc != 2) { + + std :: cerr << "Usage : ./simulated_annealing [instance]" << std :: endl ; + return 1 ; + } + + Graph :: load (__argv [1]) ; // Instance + + Route route ; // Solution + + RouteInit init ; // Sol. Random Init. + init (route) ; + + RouteEval full_eval ; // Full. Eval. + full_eval (route) ; + + std :: cout << "[From] " << route << std :: endl ; + + /* Tools for an efficient (? :-)) + local search ! */ + + TwoOptRand two_opt_rand ; // Route Random. Gen. + + TwoOptIncrEval two_opt_incr_eval ; // Eff. eval. + + TwoOpt move ; + + moEasyCoolSched cool_sched (0.1, 0.98) ; // Cooling Schedule + + moGenSolContinue cont (1000) ; /* Temperature Descreasing + will occur each 100 + iterations */ + + moSA simul_anneal (two_opt_rand, two_opt_incr_eval, cont, 1000, cool_sched, full_eval) ; + simul_anneal (route) ; + + std :: cout << "[To] " << route << std :: endl ; + + return 0 ; +} + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Makefile.am new file mode 100644 index 000000000..d4b5c340c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = examples Lesson1 Lesson2 Lesson3 diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/Makefile.am new file mode 100644 index 000000000..9f1b78722 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = tsp diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/Makefile.am new file mode 100644 index 000000000..af437a64d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = src diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/benchs/ali535.tsp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/benchs/ali535.tsp new file mode 100644 index 000000000..7fec4bf14 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/benchs/ali535.tsp @@ -0,0 +1,536 @@ +535 +36.49 7.49 +57.06 9.51 +30.22 48.14 +5.15 -3.56 +34.59 -106.37 +57.12 -2.12 +16.45 -99.45 +5.36 -0.1 +28.56 -13.36 +8.59 38.48 +12.5 45.02 +-34.48 138.38 +30.23 -9.33 +56.18 12.51 +36.4 -4.3 +40.38 8.17 +35.11 -3.5 +41.55 8.48 +-37.01 174.47 +38.17 -0.34 +36.42 3.13 +36.11 37.14 +35.14 -101.42 +31.58 35.59 +52.18 4.46 +61.1 -149.59 +39.57 32.41 +51.11 4.28 +17.08 -61.47 +43.37 13.22 +29.38 35.01 +59.39 17.55 +15.18 38.55 +-25.14 -57.31 +23.58 32.47 +37.54 23.44 +33.46 -84.31 +12.3 -70.01 +24.26 54.28 +36.55 30.48 +26.16 50.38 +40.29 50.01 +39.11 -76.4 +10.48 -74.52 +-16.11 -52.3 +10.25 45.01 +41.18 2.05 +32.22 -64.42 +41.56 -72.41 +40.39 17.57 +44.49 20.19 +9.21 34.31 +32.06 20.16 +52.29 13.24 +48.27 -4.25 +-19.48 3.45 +33.49 35.29 +54.39 -6.14 +35.48 -101.22 +4.24 18.31 +13.04 -59.3 +60.17 5.13 +44.48 -68.5 +33.14 44.14 +45.4 9.24 +33.34 -86.45 +52.27 -1.45 +42.33 9.29 +45.48 -108.37 +43.28 -1.32 +13.21 -16.4 +-3.19 29.19 +13.55 100.36 +12.38 -8.02 +55.44 9.09 +44.32 11.18 +12.57 77.4 +-15.41 34.58 +27.13 56.22 +-27.25 153.05 +44.5 -0.43 +4.42 -74.09 +50.47 -1.51 +19.05 72.52 +67.16 14.22 +42.22 -71 +53.03 8.48 +41.08 16.47 +46.55 7.3 +51.31 -2.35 +50.54 4.29 +-15.52 -47.55 +47.35 7.32 +48.1 16.13 +47.27 19.15 +-34.49 -58.32 +42.55 -78.38 +44.3 26.06 +49.27 2.07 +-4.15 15.15 +39.15 9.04 +30.08 31.24 +23.11 113.16 +33.33 -7.4 +-11.54 22.45 +4.49 -52.22 +52.13 0.11 +-35.19 149.12 +10.36 -66.59 +22.39 88.27 +52.5 -1.19 +49.01 2.33 +43.33 6.57 +45.4 -0.19 +39.37 19.55 +50.52 7.09 +41.59 -87.54 +41.48 12.36 +9.34 -13.37 +41.25 -81.51 +3.26 -76.25 +42.31 8.48 +-28.02 145.37 +7.11 79.53 +40.04 -83.04 +33.22 -7.35 +48.07 7.22 +44.22 28.29 +45.4 -0.19 +6.21 2.23 +55.37 12.39 +-33.58 18.36 +37.28 15.04 +10.27 -75.31 +-26.25 146.14 +39 17.05 +12.12 -68.57 +39.09 -84.2 +39.03 -84.2 +51.24 -3.12 +29.11 -81.03 +23.46 90.23 +14.45 42.59 +32.5 -96.51 +33.25 36.31 +-6.53 39.12 +42.34 18.16 +-29.58 30.57 +38.51 -77.02 +28.34 77.07 +39.46 -104.53 +32.46 -96.24 +26.16 50.1 +47.16 5.05 +33.52 10.47 +14.45 -17.3 +4.01 9.43 +19.08 30.26 +25.16 51.34 +49.22 0.1 +-8.45 115.1 +51.08 13.46 +-12.25 130.52 +42.14 -83.32 +42.13 -83.21 +53.26 -6.15 +51.17 6.45 +25.15 55.2 +0.03 32.26 +45.32 4.18 +55.57 -3.22 +51.27 5.23 +31.48 -106.16 +52.5 -1.19 +48.19 6.04 +40.07 33 +40.09 82.4 +40.42 -74.1 +50.44 -3.25 +-34.49 -58.32 +64.49 -147.51 +37.01 -7.58 +-11.35 27.31 +59.54 10.37 +41.49 12.15 +14.35 -61 +33.56 45.8 +-4.23 15.26 +43.49 11.12 +8.37 -13.12 +41.26 15.32 +50.02 8.34 +44.12 12.04 +-21.13 27.29 +28.27 -13.52 +53.29 -1 +-19.27 29.52 +54.23 18.28 +60.12 11.05 +24.57 10.1 +-22.5 -43.15 +55.52 -4.26 +45.22 5.2 +7.09 41.43 +44.25 8.5 +57.4 18.18 +41.54 2.46 +37.11 -3.47 +47 15.26 +51.09 -0.11 +14.34 -90.32 +46.14 6.07 +-2.09 -79.53 +52.28 9.42 +53.38 10 +60.19 24.58 +35.2 25.11 +30.2 120.51 +22.19 114.12 +31.4 6.09 +35.33 139.46 +21.2 -157.55 +29.59 -95.28 +38.57 -77.27 +43.06 -78.57 +38.52 1.22 +47.34 -97.27 +50.21 30.55 +-25.44 -54.28 +39.44 -86.17 +40.59 28.49 +38.17 27.1 +21.3 39.12 +49.13 -2.12 +40.38 -73.46 +11.33 43.1 +-6.09 106.51 +-26.08 28.15 +-3.22 36.38 +45.28 -73.44 +12.03 8.31 +34.34 69.12 +63.59 -22.37 +-1.58 30.08 +22.34 120.17 +24.54 67.09 +-6.18 155.43 +17.56 -76.48 +50.05 19.47 +15.36 32.33 +27.42 85.22 +3.08 101.33 +29.13 47.58 +-8.51 13.14 +10.36 -66.59 +36.04 -115.09 +33.56 -118.24 +53.52 -1.39 +48.58 2.27 +0.27 9.25 +34.52 33.38 +43.11 0 +59.49 30.17 +36.51 -2.22 +51.24 12.25 +51.25 12.14 +6.1 1.15 +40.46 -73.52 +33.57 -118.24 +50.38 5.27 +51.09 -0.11 +51.28 -0.27 +50.34 3.05 +-12.01 -77.07 +45.27 9.16 +38.46 -9.08 +46.13 14.28 +35.3 12.37 +48.14 14.11 +51.28 -0.27 +6.35 3.2 +27.56 -15.23 +-16.3 -68.11 +53.21 -2.53 +6.1 1.15 +51.53 -0.22 +-25.55 32.34 +-15.2 28.27 +4.27 114 +49.37 6.12 +-17.49 25.49 +25.41 32.43 +45.44 4.56 +13 80.11 +40.29 -3.34 +31.52 -4.13 +53.21 -2.16 +-3.04 -60 +10.34 -71.44 +-4.02 39.36 +46.22 15.47 +39.18 -94.44 +28.32 -81.2 +23.36 58.17 +44.25 8.5 +-37.44 144.54 +24.31 39.42 +-37.41 144.51 +19.26 -99.04 +12.07 -86.11 +2.01 45.19 +25.48 -80.17 +20.56 -89.41 +45.27 9.16 +35.45 10.45 +39.07 -94.36 +35.52 14.29 +4.11 73.32 +47.45 7.26 +55.33 13.22 +54.31 -1.25 +14.31 121.01 +55.58 37.25 +43.35 3.58 +-25.55 32.34 +-8.58 125.13 +43.26 5.13 +-20.26 57.41 +51.21 1.21 +44.53 -93.13 +53.52 27.33 +50.55 5.47 +29.59 -90.16 +-26.31 31.19 +48.08 11.42 +-34.5 -56.02 +45.38 8.43 +49.05 6.08 +-17.45 177.27 +40.53 14.18 +25.02 -77.28 +-1.19 36.56 +43.4 7.13 +55.02 -1.41 +45.56 6.06 +12.08 15.02 +32.56 129.56 +35.09 36.17 +13.29 2.1 +18.06 -15.57 +-13 28.39 +58.35 16.15 +35.45 140.23 +47.09 -1.36 +49.3 11.05 +52.41 1.17 +40.38 -73.46 +55.28 10.2 +46.26 30.41 +26.21 127.46 +35.26 -97.46 +40.54 9.31 +41.07 -95.55 +41.14 -8.41 +41.59 -87.54 +51.5 -8.29 +28.26 -81.19 +35.38 -0.37 +48.43 2.23 +34.47 135.27 +60.12 11.05 +51.12 2.52 +44.34 26.06 +12.21 -1.31 +43.26 -5.5 +18.34 -72.17 +48.43 2.23 +40.05 116.36 +-31.56 115.58 +4.52 7.02 +37.08 -76.3 +39.52 -75.15 +33.26 -112.01 +55.52 -4.26 +46.35 0.18 +40.3 -80.14 +-5.15 39.49 +39.33 2.44 +38.1 13.06 +11.33 104.51 +36.49 11.58 +-9.27 147.13 +10.36 -61.21 +9.05 -79.23 +50.06 14.16 +43.41 10.24 +42.26 14.11 +16.16 -61.32 +9.03 -79.24 +43.23 -0.25 +45.39 12.12 +31.37 -8.03 +34.03 -6.45 +-8.08 -34.55 +38.04 15.39 +64.08 -21.57 +16.54 96.09 +49.19 4.03 +36.23 28.07 +-29.43 -53.42 +-22.5 -43.15 +45.13 14.35 +44.01 12.37 +48.04 -1.44 +6.14 -10.22 +41.49 12.15 +14.1 145.15 +-32.55 -60.47 +51.57 4.26 +24.42 46.44 +33.37 73.06 +6.3 -58.15 +15.29 44.13 +13.42 -89.07 +32.44 -117.11 +-23 -47.08 +29.32 -98.28 +-17.56 31.06 +48.31 -24.8 +-33.23 -70.47 +42.54 -8.25 +33.14 44.14 +18.26 -69.4 +47.27 -122.18 +27 14.27 +37.33 126.48 +51.34 0.42 +-4.4 55.31 +37.37 -122.23 +31.12 121.2 +25.21 55.24 +16.45 -22.57 +1.21 103.54 +37.22 -121.56 +43.49 18.2 +9.58 -84.16 +9.59 -84.12 +18.26 -66.01 +40.31 22.58 +41.58 21.38 +40.53 -111.57 +36.58 -25.1 +52.42 -8.55 +42.42 23.24 +43.32 16.18 +-12.54 -38.2 +38.45 -90.22 +51.33 0.14 +59.39 17.55 +48.41 9.13 +38.54 16.15 +58.53 5.38 +55.58 37.25 +37.26 -5.54 +48.32 7.38 +52.22 13.3 +-33.56 151.1 +29.33 52.36 +47.48 13 +40.31 17.24 +41.19 69.24 +28.29 -16.2 +38.31 -28.43 +43.11 0 +28.29 -16.2 +14.02 -87.14 +52.29 13.24 +35.41 51.19 +41.2 19.47 +32.4 13.09 +43.37 1.23 +32.01 34.53 +22.49 5.27 +0.23 6.43 +35.43 -5.55 +-18.48 47.29 +33.56 8.06 +-24.42 -53.42 +25.04 121.33 +37.55 12.29 +51.23 -2.43 +45.12 7.39 +45.5 13.28 +45.39 12.12 +47.26 0.43 +36.18 -95.52 +36.51 10.14 +52.34 13.18 +35.33 139.46 +35.54 -83.53 +40.62 13.11 +-0.08 -78.29 +12.41 101.01 +13.45 -60.57 +44.55 4.58 +43.14 27.49 +45.3 12.21 +-23 -47.08 +48.07 16.33 +39.29 -0.29 +41.42 -4.51 +45.24 10.53 +38.57 -77.27 +52.1 20.58 +36.45 -6.04 +53.19 -113.35 +44.53 -63.31 +45.41 -74.02 +45.19 -75.4 +46.48 -71.24 +42.16 -82.58 +48.57 -54.34 +45.28 -73.44 +49.11 -123.1 +49.55 -97.14 +51.07 -114.01 +47.37 -52.45 +43.41 -79.38 +44.06 15.21 +45.45 16.04 +41.4 -1.03 +-6.13 39.13 +47.28 8.33 +51.33 0.14 +24.58 91.53 diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/benchs/eil101.tsp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/benchs/eil101.tsp new file mode 100644 index 000000000..f12903349 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/benchs/eil101.tsp @@ -0,0 +1,102 @@ +101 +41 49 +35 17 +55 45 +55 20 +15 30 +25 30 +20 50 +10 43 +55 60 +30 60 +20 65 +50 35 +30 25 +15 10 +30 5 +10 20 +5 30 +20 40 +15 60 +45 65 +45 20 +45 10 +55 5 +65 35 +65 20 +45 30 +35 40 +41 37 +64 42 +40 60 +31 52 +35 69 +53 52 +65 55 +63 65 +2 60 +20 20 +5 5 +60 12 +40 25 +42 7 +24 12 +23 3 +11 14 +6 38 +2 48 +8 56 +13 52 +6 68 +47 47 +49 58 +27 43 +37 31 +57 29 +63 23 +53 12 +32 12 +36 26 +21 24 +17 34 +12 24 +24 58 +27 69 +15 77 +62 77 +49 73 +67 5 +56 39 +37 47 +37 56 +57 68 +47 16 +44 17 +46 13 +49 11 +49 42 +53 43 +61 52 +57 48 +56 37 +55 54 +15 47 +14 37 +11 31 +16 22 +4 18 +28 18 +26 52 +26 35 +31 67 +15 19 +22 22 +18 24 +26 27 +25 24 +22 27 +25 21 +19 21 +20 26 +18 18 +35 35 diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/benchs/pr2392.tsp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/benchs/pr2392.tsp new file mode 100644 index 000000000..010a2c7ec --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/benchs/pr2392.tsp @@ -0,0 +1,2393 @@ +2392 +1639 2156 +1875 2925 +2150 2925 +2425 2925 +2525 2675 +2525 2575 +2525 2375 +2525 2275 +2525 2175 +2786 2148 +2786 2249 +2786 2352 +2785 2451 +2785 2552 +2787 2651 +2925 2925 +3198 2925 +3475 2925 +3725 2925 +3675 2675 +3675 2575 +3675 2375 +3675 2275 +3675 2175 +4189 2156 +4190 2256 +4190 2355 +4189 2456 +4189 2556 +4190 2656 +4275 2975 +4425 2925 +4700 2925 +4975 2925 +5075 2675 +5075 2575 +5075 2375 +5075 2275 +5075 2175 +5336 2148 +5336 2249 +5336 2352 +5335 2451 +5335 2552 +5337 2651 +5475 2925 +5748 2925 +6025 2925 +6275 2925 +6225 2675 +6225 2575 +6225 2375 +6225 2275 +6225 2175 +6739 2156 +6740 2256 +6740 2355 +6739 2456 +6739 2556 +6740 2656 +6825 2975 +6975 2925 +7250 2925 +7525 2925 +7625 2675 +7625 2575 +7625 2375 +7625 2275 +7625 2175 +7886 2148 +7886 2249 +7886 2352 +7885 2451 +7885 2552 +7887 2651 +8025 2925 +8298 2925 +8575 2925 +8825 2925 +8775 2675 +8775 2575 +8775 2375 +8775 2275 +8775 2175 +9289 2156 +9290 2256 +9290 2355 +9289 2456 +9289 2556 +9290 2656 +9375 2975 +9525 2925 +9800 2925 +10075 2925 +10175 2675 +10175 2575 +10175 2375 +10175 2275 +10175 2175 +10436 2148 +10436 2249 +10436 2352 +10435 2451 +10435 2552 +10437 2651 +10575 2925 +10848 2925 +11125 2925 +11325 2175 +11325 2275 +11325 2375 +11325 2575 +11325 2675 +11375 2925 +11375 3125 +11400 3225 +11400 3325 +11400 3475 +11400 3625 +11300 3825 +11125 3825 +11125 3925 +11025 3975 +10925 3975 +10925 3875 +10550 3925 +10550 3725 +10550 3325 +10100 3325 +10100 3725 +10100 3925 +9725 3875 +9725 3975 +9625 3975 +9550 3875 +9425 3875 +9275 3900 +9250 3700 +9250 3575 +9250 3475 +9250 3375 +9250 3275 +8825 3125 +8850 3225 +8850 3325 +8850 3475 +8850 3625 +8750 3825 +8575 3825 +8575 3925 +8475 3975 +8375 3875 +8375 3975 +8400 4125 +8300 4175 +8400 4275 +8500 4175 +8675 4325 +8775 4425 +8825 4325 +9275 4275 +9375 4275 +9325 4375 +9400 4450 +9400 4550 +9325 4500 +9215 4560 +9215 4710 +9375 4775 +9215 4860 +9215 5010 +9215 5160 +9215 5310 +9215 5460 +9215 5610 +9475 5675 +9475 5525 +9475 5425 +9475 5275 +9475 5025 +9575 5075 +9725 5075 +9675 4975 +9575 4925 +9525 4775 +9600 4675 +9625 4775 +9775 4775 +9975 4600 +9875 4600 +9800 4525 +9700 4525 +9700 4425 +9800 4425 +9800 4325 +9700 4275 +9600 4175 +9700 4125 +9800 4175 +9875 4275 +9975 4275 +10075 4175 +10275 4175 +10375 4175 +10575 4175 +10675 4275 +10775 4275 +10850 4325 +10850 4425 +10850 4525 +10775 4575 +10675 4575 +10875 4775 +11025 4775 +11175 4725 +11050 4675 +10950 4500 +10950 4400 +10950 4275 +10850 4175 +10950 4125 +11050 4175 +11225 4325 +11375 4325 +11325 4425 +11325 4575 +11325 4675 +11325 4775 +11325 4925 +11450 4925 +11450 5075 +11422 5204 +11425 5325 +11325 5275 +11325 5375 +11175 5375 +11175 5275 +11125 5175 +11100 5025 +10975 4975 +10925 5075 +10950 5175 +10900 5275 +10900 5375 +10800 5175 +10525 5175 +10325 5175 +10325 5025 +10425 5075 +10475 4975 +10325 4875 +10175 4975 +10225 5075 +10125 5175 +9975 5175 +10050 5250 +10050 5350 +10025 5450 +10175 5450 +10325 5450 +10475 5450 +10575 5450 +10675 5450 +10525 6025 +10525 6125 +10675 6125 +10825 6025 +11025 6050 +11224 5908 +11400 5975 +11400 6375 +11400 6575 +11175 6575 +11025 6450 +10975 6675 +11075 6775 +10975 6875 +11175 6975 +11375 6975 +11325 7075 +11400 7150 +11125 7150 +10975 7150 +10875 7325 +10925 7425 +11075 7425 +11175 7475 +11075 7575 +11175 7625 +11175 7725 +11025 7725 +11025 7825 +11175 7825 +11325 7875 +11425 7925 +11425 8075 +11325 8075 +11275 8175 +11425 8225 +11425 8375 +11275 8325 +11175 8325 +11075 8225 +10975 8225 +10925 7975 +10775 7825 +10825 7600 +10725 7575 +10775 7425 +10675 7425 +10525 7425 +10525 7575 +10450 7750 +10300 7750 +10425 7875 +10525 7925 +10575 7825 +10625 7975 +10725 7975 +10725 8075 +10625 8125 +10525 8075 +10425 8025 +10425 8125 +10250 8225 +10150 8225 +10225 8125 +10275 7975 +10125 7975 +10000 7875 +10000 7775 +9825 7825 +9625 7725 +9475 7725 +9425 7625 +9575 7625 +9625 7475 +9725 7575 +9825 7475 +10025 7525 +9975 7425 +9925 7275 +9825 7075 +9625 7075 +9725 6975 +9875 6775 +9725 6775 +9575 6825 +9575 6675 +9725 6425 +9625 6200 +9725 6025 +9625 6000 +9225 6375 +9225 6525 +9375 6525 +9375 6675 +9225 6675 +9225 6875 +9225 7075 +9226 7259 +9225 7260 +9226 7409 +9225 7410 +9225 7560 +9226 7560 +9225 7710 +9225 7711 +9325 7825 +9225 7875 +9225 7975 +9225 8075 +9225 8175 +9225 8275 +9225 8375 +9225 8475 +9275 8825 +9475 8825 +9578 8820 +9847 8703 +9875 8825 +10025 8725 +10075 8825 +10175 8725 +10100 8575 +10250 8375 +10250 8475 +10250 8625 +10475 8775 +10575 8775 +10675 8775 +10775 8775 +10925 8775 +10875 8625 +10875 8525 +10975 8575 +11175 8475 +11275 8425 +11350 8575 +11450 8675 +11350 8775 +11325 9325 +11325 9425 +11325 9525 +11325 9725 +11325 9825 +11125 10075 +11375 10075 +11375 10275 +11400 10375 +11400 10475 +11400 10625 +11400 10775 +11300 10975 +11125 10975 +11125 11075 +11025 11125 +10925 11125 +10925 11025 +10550 10875 +10550 11075 +10275 11325 +10375 11325 +10575 11325 +10675 11425 +10775 11425 +10850 11475 +10850 11575 +10850 11675 +10775 11725 +10675 11725 +10875 11925 +11025 11925 +11175 11875 +11050 11825 +10950 11650 +10950 11550 +10950 11425 +10850 11325 +10950 11275 +11050 11325 +11225 11475 +11375 11475 +11325 11575 +11325 11725 +11325 11825 +11325 11925 +11325 12075 +11450 12075 +11450 12225 +11422 12354 +11425 12475 +11325 12425 +11325 12525 +11175 12525 +11175 12425 +11125 12325 +11100 12175 +10975 12125 +10925 12225 +10950 12325 +10900 12425 +10900 12525 +10800 12325 +10525 12325 +10425 12225 +10475 12125 +10325 12025 +10175 12125 +10225 12225 +10325 12175 +10325 12325 +10125 12325 +9975 12325 +10050 12400 +10050 12500 +10025 12600 +10175 12600 +10325 12600 +10475 12600 +10575 12600 +10675 12600 +10525 13175 +10525 13275 +10675 13275 +10825 13175 +11025 13200 +11224 13058 +11400 13125 +11400 13525 +11400 13725 +11175 13725 +11025 13600 +10975 13825 +11075 13925 +10975 14025 +11175 14125 +11375 14125 +11325 14225 +11400 14300 +11125 14300 +10975 14300 +10875 14475 +10925 14575 +10825 14750 +10725 14725 +10775 14575 +10675 14575 +10525 14575 +10525 14725 +10450 14900 +10300 14900 +10425 15025 +10425 15175 +10425 15275 +10525 15225 +10625 15275 +10725 15225 +10725 15125 +10625 15125 +10525 15075 +10575 14975 +10775 14975 +10925 15125 +11025 14975 +11025 14875 +11075 14725 +11075 14575 +11175 14625 +11175 14775 +11175 14875 +11175 14975 +11325 15025 +11425 15075 +11425 15225 +11325 15225 +11275 15325 +11425 15375 +11425 15525 +11350 15725 +11450 15825 +11350 15925 +11175 15625 +11275 15575 +11275 15475 +11175 15475 +11075 15375 +10975 15375 +10875 15675 +10975 15725 +10875 15775 +10925 15925 +10775 15925 +10675 15925 +10575 15925 +10475 15925 +10250 15775 +10175 15875 +10075 15975 +9875 15975 +9847 15853 +10025 15875 +10100 15725 +10250 15625 +10250 15525 +10250 15375 +10150 15375 +10225 15275 +10275 15125 +10125 15125 +10000 15025 +10000 14925 +9825 14975 +9625 14875 +9475 14875 +9425 14775 +9575 14775 +9625 14625 +9725 14725 +9825 14625 +10025 14675 +9975 14575 +9925 14425 +9825 14225 +9625 14225 +9725 14125 +9875 13925 +9725 13925 +9575 13975 +9575 13825 +9725 13575 +9625 13350 +9725 13175 +9625 13150 +9225 13525 +9225 13675 +9375 13675 +9375 13825 +9225 13825 +9225 14025 +9225 14225 +9226 14409 +9225 14410 +9226 14559 +9225 14560 +9225 14710 +9226 14710 +9225 14860 +9225 14861 +9325 14975 +9225 15025 +9225 15125 +9225 15225 +9225 15325 +9225 15425 +9225 15525 +9225 15625 +9578 15970 +9475 15975 +9275 15975 +8900 15825 +8800 15925 +8800 15725 +8725 15575 +8625 15625 +8425 15725 +8325 15675 +8325 15775 +8375 15925 +8225 15925 +8125 15925 +8025 15925 +7925 15925 +7700 15775 +7700 15625 +7700 15525 +7550 15725 +7625 15875 +7525 15975 +7475 15875 +7325 15975 +7297 15853 +7028 15970 +6925 15975 +6725 15975 +6675 15625 +6675 15525 +6675 15425 +6675 15325 +6675 15225 +6675 15125 +6675 15025 +6775 14975 +6675 14861 +6675 14860 +6676 14710 +6675 14710 +6675 14560 +6676 14559 +6675 14410 +6676 14409 +6675 14225 +6675 14025 +6675 13825 +6825 13825 +6825 13675 +6675 13675 +6675 13525 +7075 13150 +7175 13175 +7075 13350 +7175 13575 +7025 13825 +7025 13975 +7175 13925 +7325 13925 +7175 14125 +7075 14225 +7275 14225 +7375 14425 +7425 14575 +7475 14675 +7275 14625 +7175 14725 +7075 14625 +7025 14775 +6875 14775 +6925 14875 +7075 14875 +7275 14975 +7450 14925 +7450 15025 +7575 15125 +7725 15125 +7675 15275 +7600 15375 +7700 15375 +7875 15275 +7875 15175 +7975 15225 +8075 15275 +8175 15225 +8175 15125 +8075 15125 +8025 14975 +7975 15075 +7875 15025 +7750 14900 +7900 14900 +7975 14725 +7975 14575 +8125 14575 +8225 14575 +8175 14725 +8275 14750 +8225 14975 +8375 15125 +8425 15375 +8525 15375 +8625 15475 +8725 15475 +8875 15525 +8875 15375 +8725 15325 +8775 15225 +8875 15225 +8875 15075 +8775 15025 +8625 14975 +8475 14975 +8475 14875 +8625 14875 +8625 14775 +8525 14725 +8625 14625 +8525 14575 +8375 14575 +8325 14475 +8425 14300 +8575 14300 +8850 14300 +8775 14225 +8825 14125 +8625 14125 +8425 14025 +8525 13925 +8425 13825 +8475 13600 +8625 13725 +8850 13725 +8850 13525 +8850 13125 +8674 13058 +8475 13200 +8275 13175 +8125 13275 +7975 13275 +7975 13175 +8125 12600 +8025 12600 +7925 12600 +7775 12600 +7625 12600 +7475 12600 +7500 12500 +7500 12400 +7425 12325 +7575 12325 +7675 12225 +7625 12125 +7775 12025 +7925 12125 +7875 12225 +7775 12175 +7775 12325 +7975 12325 +8250 12325 +8350 12525 +8350 12425 +8400 12325 +8375 12225 +8425 12125 +8550 12175 +8575 12325 +8625 12425 +8625 12525 +8775 12525 +8775 12425 +8875 12475 +8872 12354 +8900 12225 +8900 12075 +8775 12075 +8775 11925 +8775 11825 +8775 11725 +8775 11575 +8825 11475 +8675 11475 +8500 11325 +8400 11275 +8300 11325 +8400 11425 +8400 11550 +8400 11650 +8500 11825 +8625 11875 +8475 11925 +8325 11925 +8125 11725 +8225 11725 +8300 11675 +8300 11575 +8300 11475 +8225 11425 +8125 11425 +8025 11325 +7825 11325 +7725 11325 +7525 11325 +7425 11425 +7325 11425 +7250 11325 +7150 11275 +7050 11325 +7150 11425 +7250 11475 +7250 11575 +7150 11575 +7150 11675 +7250 11675 +7325 11750 +7425 11750 +7225 11925 +7075 11925 +7050 11825 +6975 11925 +7025 12075 +7125 12125 +7175 12225 +7025 12225 +6925 12175 +6925 12425 +6925 12575 +6925 12675 +6925 12825 +6665 12760 +6665 12610 +6665 12460 +6665 12310 +6665 12160 +6665 12010 +6825 11925 +6665 11860 +6665 11710 +6775 11650 +6850 11700 +6850 11600 +6775 11525 +6825 11425 +6725 11425 +6275 11475 +6225 11575 +6125 11475 +5950 11325 +5850 11425 +5750 11325 +5850 11275 +5825 11125 +5825 11025 +5925 11125 +6025 11075 +6025 10975 +6200 10975 +6300 10775 +6300 10625 +6300 10475 +6300 10375 +6275 10275 +6700 10425 +6700 10525 +6700 10625 +6700 10725 +6700 10850 +6725 11050 +6875 11025 +7000 11025 +7075 11125 +7175 11125 +7175 11025 +7550 11075 +7550 10875 +7550 10475 +8000 10475 +8000 10875 +8000 11075 +8375 11025 +8375 11125 +8475 11125 +8575 11075 +8575 10975 +8750 10975 +8850 10775 +8850 10625 +8850 10475 +8850 10375 +8825 10275 +9250 10425 +9250 10525 +9250 10625 +9250 10725 +9250 10850 +9275 11050 +9425 11025 +9550 11025 +9625 11125 +9725 11025 +9725 11125 +9700 11275 +9800 11325 +9700 11425 +9600 11325 +9375 11425 +9275 11425 +9325 11525 +9400 11600 +9400 11700 +9325 11650 +9215 11710 +9215 11860 +9375 11925 +9215 12010 +9215 12160 +9215 12310 +9215 12460 +9215 12610 +9215 12760 +9475 12825 +9475 12675 +9475 12575 +9475 12425 +9475 12175 +9575 12225 +9725 12225 +9675 12125 +9575 12075 +9525 11925 +9600 11825 +9625 11925 +9775 11925 +9975 11750 +9875 11750 +9800 11675 +9700 11675 +9700 11575 +9800 11575 +9800 11475 +9875 11425 +9975 11425 +10075 11325 +10100 11075 +10100 10875 +10100 10475 +10550 10475 +10848 10075 +10575 10075 +10437 9801 +10435 9702 +10435 9601 +10436 9502 +10436 9399 +10436 9298 +10175 9325 +10175 9425 +10175 9525 +10175 9725 +10175 9825 +10075 10075 +9800 10075 +9525 10075 +9375 10125 +9290 9806 +9289 9706 +9289 9606 +9290 9505 +9290 9406 +9289 9306 +8775 9325 +8775 9425 +8775 9525 +8775 9725 +8775 9825 +8825 10075 +8575 10075 +8298 10075 +8025 10075 +7887 9801 +7885 9702 +7885 9601 +7886 9502 +7886 9399 +7886 9298 +7625 9325 +7625 9425 +7625 9525 +7625 9725 +7625 9825 +7525 10075 +7250 10075 +6975 10075 +6825 10125 +6740 9806 +6739 9706 +6739 9606 +6740 9505 +6740 9406 +6739 9306 +7028 8820 +6925 8825 +6725 8825 +6675 8475 +6675 8375 +6675 8275 +6675 8175 +6675 8075 +6675 7975 +6675 7875 +6775 7825 +6675 7711 +6675 7710 +6676 7560 +6675 7560 +6675 7410 +6676 7409 +6675 7260 +6676 7259 +6675 7075 +6675 6875 +6675 6675 +6825 6675 +6825 6525 +6675 6525 +6675 6375 +7075 6000 +7175 6025 +7075 6200 +7175 6425 +7025 6675 +7025 6825 +7175 6775 +7325 6775 +7175 6975 +7075 7075 +7275 7075 +7375 7275 +7425 7425 +7475 7525 +7275 7475 +7175 7575 +7075 7475 +7025 7625 +6875 7625 +6925 7725 +7075 7725 +7275 7825 +7450 7775 +7450 7875 +7575 7975 +7725 7975 +7675 8125 +7600 8225 +7700 8225 +7700 8375 +7700 8475 +7550 8575 +7475 8725 +7297 8703 +7325 8825 +7525 8825 +7625 8725 +7700 8625 +7925 8775 +8025 8775 +8125 8775 +8225 8775 +8375 8775 +8325 8625 +8425 8575 +8325 8525 +8425 8225 +8525 8225 +8625 8325 +8725 8325 +8725 8425 +8625 8475 +8800 8775 +8900 8675 +8800 8575 +8875 8375 +8875 8225 +8725 8175 +8775 8075 +8875 8075 +8875 7925 +8775 7875 +8625 7825 +8625 7725 +8625 7625 +8625 7475 +8525 7425 +8525 7575 +8475 7725 +8475 7825 +8375 7975 +8225 7825 +8025 7825 +7975 7925 +8075 7975 +8175 7975 +8175 8075 +8075 8125 +7975 8075 +7875 8125 +7875 8025 +7875 7875 +7750 7750 +7900 7750 +7975 7575 +7975 7425 +8125 7425 +8225 7425 +8175 7575 +8275 7600 +8375 7425 +8325 7325 +8425 7150 +8575 7150 +8850 7150 +8775 7075 +8825 6975 +8625 6975 +8425 6875 +8525 6775 +8425 6675 +8475 6450 +8625 6575 +8850 6575 +8850 6375 +8850 5975 +8674 5908 +8475 6050 +8275 6025 +8125 6125 +7975 6125 +7975 6025 +8125 5450 +8025 5450 +7925 5450 +7775 5450 +7625 5450 +7475 5450 +7500 5350 +7500 5250 +7425 5175 +7575 5175 +7675 5075 +7625 4975 +7775 4875 +7925 4975 +7875 5075 +7775 5025 +7775 5175 +7975 5175 +8250 5175 +8350 5375 +8350 5275 +8400 5175 +8375 5075 +8425 4975 +8550 5025 +8575 5175 +8625 5275 +8625 5375 +8775 5375 +8775 5275 +8875 5325 +8872 5204 +8900 5075 +8900 4925 +8775 4925 +8775 4775 +8775 4675 +8775 4575 +8625 4725 +8500 4675 +8475 4775 +8325 4775 +8125 4575 +8225 4575 +8300 4525 +8400 4500 +8400 4400 +8300 4425 +8300 4325 +8225 4275 +8125 4275 +8025 4175 +8000 3925 +8000 3725 +8000 3325 +7550 3325 +7550 3725 +7550 3925 +7825 4175 +7725 4175 +7525 4175 +7425 4275 +7325 4275 +7250 4325 +7250 4425 +7150 4425 +7150 4525 +7250 4525 +7325 4600 +7425 4600 +7225 4775 +7075 4775 +7050 4675 +6975 4775 +7025 4925 +7125 4975 +7175 5075 +7025 5075 +6925 5025 +6925 5275 +6925 5425 +6925 5525 +6925 5675 +6665 5610 +6665 5460 +6665 5310 +6665 5160 +6665 5010 +6665 4860 +6825 4775 +6665 4710 +6665 4560 +6775 4500 +6850 4550 +6850 4450 +6775 4375 +6725 4275 +6825 4275 +7050 4175 +7150 4275 +7250 4175 +7150 4125 +7175 3975 +7175 3875 +7075 3975 +7000 3875 +6875 3875 +6725 3900 +6700 3700 +6700 3575 +6700 3475 +6700 3375 +6700 3275 +6275 3125 +6300 3225 +6300 3325 +6300 3475 +6300 3625 +6200 3825 +6025 3825 +6025 3925 +5925 3975 +5825 3975 +5825 3875 +5450 3925 +5450 3725 +5450 3325 +5000 3325 +5000 3725 +5000 3925 +4625 3875 +4625 3975 +4525 3975 +4450 3875 +4325 3875 +4175 3900 +4150 3700 +4150 3575 +4150 3475 +4150 3375 +4150 3275 +3725 3125 +3750 3225 +3750 3325 +3750 3475 +3750 3625 +3650 3825 +3475 3825 +3475 3925 +3375 3975 +3275 3875 +3275 3975 +3300 4125 +3200 4175 +3300 4275 +3400 4175 +3575 4325 +3675 4425 +3725 4325 +4175 4275 +4275 4275 +4225 4375 +4300 4450 +4300 4550 +4225 4500 +4115 4560 +4115 4710 +4275 4775 +4115 4860 +4115 5010 +4115 5160 +4115 5310 +4115 5460 +4115 5610 +4375 5675 +4375 5525 +4375 5425 +4375 5275 +4375 5025 +4475 5075 +4625 5075 +4575 4975 +4475 4925 +4425 4775 +4500 4675 +4525 4775 +4675 4775 +4875 4600 +4775 4600 +4700 4525 +4600 4525 +4600 4425 +4700 4425 +4700 4325 +4600 4275 +4500 4175 +4600 4125 +4700 4175 +4775 4275 +4875 4275 +4975 4175 +5175 4175 +5275 4175 +5475 4175 +5575 4275 +5675 4275 +5750 4325 +5750 4425 +5750 4525 +5675 4575 +5575 4575 +5775 4775 +5925 4775 +6075 4725 +5950 4675 +5850 4500 +5850 4400 +5850 4275 +5750 4175 +5850 4125 +5950 4175 +6125 4325 +6275 4325 +6225 4425 +6225 4575 +6225 4675 +6225 4775 +6225 4925 +6350 4925 +6350 5075 +6322 5204 +6325 5325 +6225 5275 +6225 5375 +6075 5375 +6075 5275 +6025 5175 +6000 5025 +5875 4975 +5825 5075 +5850 5175 +5800 5275 +5800 5375 +5700 5175 +5425 5175 +5325 5075 +5375 4975 +5225 4875 +5075 4975 +5125 5075 +5225 5025 +5225 5175 +5025 5175 +4875 5175 +4950 5250 +4950 5350 +4925 5450 +5075 5450 +5225 5450 +5375 5450 +5475 5450 +5575 5450 +5425 6025 +5425 6125 +5575 6125 +5725 6025 +5925 6050 +6124 5908 +6300 5975 +6300 6375 +6300 6575 +6075 6575 +5925 6450 +5875 6675 +5975 6775 +5875 6875 +6075 6975 +6275 6975 +6225 7075 +6300 7150 +6025 7150 +5875 7150 +5775 7325 +5825 7425 +5975 7425 +6075 7475 +5975 7575 +6075 7625 +6075 7725 +5925 7725 +5925 7825 +6075 7825 +6225 7875 +6325 7925 +6325 8075 +6225 8075 +6175 8175 +6325 8225 +6325 8375 +6175 8325 +6075 8325 +5975 8225 +5875 8225 +5825 7975 +5675 7825 +5725 7600 +5625 7575 +5675 7425 +5575 7425 +5425 7425 +5425 7575 +5350 7750 +5200 7750 +5325 7875 +5475 7825 +5425 7925 +5525 7975 +5625 7975 +5625 8075 +5525 8125 +5425 8075 +5325 8025 +5325 8125 +5150 8225 +5050 8225 +5125 8125 +5175 7975 +5025 7975 +4900 7875 +4900 7775 +4725 7825 +4525 7725 +4375 7725 +4325 7625 +4475 7625 +4525 7475 +4625 7575 +4725 7475 +4925 7525 +4875 7425 +4825 7275 +4725 7075 +4525 7075 +4625 6975 +4775 6775 +4625 6775 +4475 6825 +4475 6675 +4625 6425 +4525 6200 +4625 6025 +4525 6000 +4125 6375 +4125 6525 +4275 6525 +4275 6675 +4125 6675 +4125 6875 +4125 7075 +4126 7259 +4125 7260 +4126 7409 +4125 7410 +4125 7560 +4126 7560 +4125 7710 +4125 7711 +4225 7825 +4125 7875 +4125 7975 +4125 8075 +4125 8175 +4125 8275 +4125 8375 +4125 8475 +4175 8825 +4375 8825 +4478 8820 +4747 8703 +4775 8825 +4925 8725 +4975 8825 +5075 8725 +5000 8575 +5150 8375 +5150 8475 +5150 8625 +5375 8775 +5475 8775 +5575 8775 +5675 8775 +5825 8775 +5775 8625 +5775 8525 +5875 8575 +6075 8475 +6175 8425 +6250 8575 +6350 8675 +6250 8775 +6225 9325 +6225 9425 +6225 9525 +6225 9725 +6225 9825 +6275 10075 +6025 10075 +5748 10075 +5475 10075 +5337 9801 +5335 9702 +5335 9601 +5336 9502 +5336 9399 +5336 9298 +5075 9325 +5075 9425 +5075 9525 +5075 9725 +5075 9825 +4975 10075 +4700 10075 +4425 10075 +4275 10125 +4190 9806 +4189 9706 +4189 9606 +4190 9505 +4190 9406 +4189 9306 +3675 9325 +3675 9425 +3675 9525 +3675 9725 +3675 9825 +3725 10075 +3475 10075 +3198 10075 +2925 10075 +2787 9801 +2785 9702 +2785 9601 +2786 9502 +2786 9399 +2786 9298 +2525 9325 +2525 9425 +2525 9525 +2525 9725 +2525 9825 +2425 10075 +2150 10075 +2450 10475 +2900 10475 +2900 10875 +2900 11075 +3275 11025 +3275 11125 +3375 11125 +3475 11075 +3475 10975 +3650 10975 +3750 10775 +3750 10625 +3750 10475 +3750 10375 +3725 10275 +4150 10425 +4150 10525 +4150 10625 +4150 10725 +4150 10850 +4175 11050 +4325 11025 +4450 11025 +4525 11125 +4625 11025 +4625 11125 +4600 11275 +4700 11325 +4600 11425 +4500 11325 +4275 11425 +4175 11425 +4225 11525 +4300 11600 +4300 11700 +4225 11650 +4115 11710 +4115 11860 +4275 11925 +4115 12010 +4115 12160 +4115 12310 +4115 12460 +4115 12610 +4115 12760 +4375 12825 +4375 12675 +4375 12575 +4375 12425 +4375 12175 +4475 12225 +4625 12225 +4575 12125 +4475 12075 +4425 11925 +4500 11825 +4525 11925 +4675 11925 +4875 11750 +4775 11750 +4700 11675 +4600 11675 +4600 11575 +4700 11575 +4700 11475 +4775 11425 +4875 11425 +4975 11325 +5175 11325 +5275 11325 +5000 11075 +5000 10875 +5000 10475 +5450 10475 +5450 10875 +5450 11075 +5475 11325 +5575 11425 +5675 11425 +5750 11475 +5750 11575 +5850 11550 +5850 11650 +5750 11675 +5675 11725 +5575 11725 +5775 11925 +5925 11925 +5950 11825 +6075 11875 +6225 11725 +6225 11825 +6225 11925 +6225 12075 +6350 12075 +6350 12225 +6322 12354 +6325 12475 +6225 12425 +6225 12525 +6075 12525 +6075 12425 +6025 12325 +6000 12175 +5875 12125 +5825 12225 +5850 12325 +5800 12425 +5800 12525 +5700 12325 +5425 12325 +5325 12225 +5375 12125 +5225 12025 +5075 12125 +5125 12225 +5225 12175 +5225 12325 +5025 12325 +4875 12325 +4950 12400 +4950 12500 +4925 12600 +5075 12600 +5225 12600 +5375 12600 +5475 12600 +5575 12600 +5425 13175 +5425 13275 +5575 13275 +5725 13175 +5925 13200 +6124 13058 +6300 13125 +6300 13525 +6300 13725 +6075 13725 +5925 13600 +5875 13825 +5975 13925 +5875 14025 +6075 14125 +6275 14125 +6225 14225 +6300 14300 +6025 14300 +5875 14300 +5775 14475 +5825 14575 +5725 14750 +5625 14725 +5675 14575 +5575 14575 +5425 14575 +5425 14725 +5350 14900 +5200 14900 +5325 15025 +5325 15175 +5325 15275 +5425 15225 +5525 15275 +5625 15225 +5625 15125 +5525 15125 +5425 15075 +5475 14975 +5675 14975 +5825 15125 +5925 14975 +5925 14875 +5975 14725 +5975 14575 +6075 14625 +6075 14775 +6075 14875 +6075 14975 +6225 15025 +6325 15075 +6325 15225 +6225 15225 +6175 15325 +6325 15375 +6325 15525 +6250 15725 +6350 15825 +6250 15925 +6075 15625 +6175 15575 +6175 15475 +6075 15475 +5975 15375 +5875 15375 +5775 15675 +5875 15725 +5775 15775 +5825 15925 +5675 15925 +5575 15925 +5475 15925 +5375 15925 +5150 15775 +5075 15875 +4975 15975 +4775 15975 +4747 15853 +4925 15875 +5000 15725 +5150 15625 +5150 15525 +5150 15375 +5050 15375 +5125 15275 +5175 15125 +5025 15125 +4900 15025 +4900 14925 +4725 14975 +4525 14875 +4375 14875 +4325 14775 +4475 14775 +4525 14625 +4625 14725 +4725 14625 +4925 14675 +4875 14575 +4825 14425 +4725 14225 +4525 14225 +4625 14125 +4775 13925 +4625 13925 +4475 13975 +4475 13825 +4625 13575 +4525 13350 +4625 13175 +4525 13150 +4125 13525 +4125 13675 +4275 13675 +4275 13825 +4125 13825 +4125 14025 +4125 14225 +4126 14409 +4125 14410 +4126 14559 +4125 14560 +4125 14710 +4126 14710 +4125 14860 +4125 14861 +4225 14975 +4125 15025 +4125 15125 +4125 15225 +4125 15325 +4125 15425 +4125 15525 +4125 15625 +4478 15970 +4375 15975 +4175 15975 +3800 15825 +3700 15925 +3700 15725 +3625 15575 +3525 15625 +3325 15725 +3225 15675 +3225 15775 +3275 15925 +3125 15925 +3025 15925 +2925 15925 +2825 15925 +2600 15775 +2600 15625 +2600 15525 +2450 15725 +2525 15875 +2425 15975 +2375 15875 +2225 15975 +2197 15853 +1928 15970 +1825 15975 +1625 15975 +1575 15625 +1575 15525 +1575 15425 +1575 15325 +1575 15225 +1575 15125 +1575 15025 +1675 14975 +1575 14861 +1575 14860 +1575 14710 +1576 14710 +1575 14560 +1576 14559 +1575 14410 +1576 14409 +1575 14225 +1575 14025 +1575 13825 +1725 13825 +1725 13675 +1575 13675 +1575 13525 +1975 13150 +2075 13175 +1975 13350 +2075 13575 +1925 13825 +1925 13975 +2075 13925 +2225 13925 +2075 14125 +1975 14225 +2175 14225 +2275 14425 +2325 14575 +2375 14675 +2175 14625 +2075 14725 +1975 14625 +1925 14775 +1775 14775 +1825 14875 +1975 14875 +2175 14975 +2350 14925 +2350 15025 +2475 15125 +2625 15125 +2575 15275 +2500 15375 +2600 15375 +2775 15275 +2775 15175 +2875 15225 +2975 15275 +3075 15225 +3075 15125 +2975 15125 +2925 14975 +2875 15075 +2775 15025 +2650 14900 +2800 14900 +2875 14725 +2875 14575 +3025 14575 +3125 14575 +3075 14725 +3175 14750 +3125 14975 +3275 15125 +3325 15375 +3425 15375 +3525 15475 +3625 15475 +3775 15525 +3775 15375 +3625 15325 +3675 15225 +3775 15225 +3775 15075 +3675 15025 +3525 14975 +3375 14975 +3375 14875 +3525 14875 +3525 14775 +3425 14725 +3525 14625 +3425 14575 +3275 14575 +3225 14475 +3325 14300 +3475 14300 +3750 14300 +3675 14225 +3725 14125 +3525 14125 +3325 14025 +3425 13925 +3325 13825 +3375 13600 +3525 13725 +3750 13725 +3750 13525 +3750 13125 +3574 13058 +3375 13200 +3175 13175 +3025 13275 +2875 13275 +2875 13175 +3025 12600 +2925 12600 +2825 12600 +2675 12600 +2525 12600 +2375 12600 +2400 12500 +2400 12400 +2325 12325 +2475 12325 +2575 12225 +2525 12125 +2675 12025 +2825 12125 +2775 12225 +2675 12175 +2675 12325 +2875 12325 +3150 12325 +3250 12525 +3250 12425 +3300 12325 +3275 12225 +3325 12125 +3450 12175 +3475 12325 +3525 12425 +3525 12525 +3675 12525 +3675 12425 +3775 12475 +3772 12354 +3800 12225 +3800 12075 +3675 12075 +3675 11925 +3675 11825 +3675 11725 +3675 11575 +3725 11475 +3575 11475 +3400 11325 +3300 11275 +3200 11325 +3300 11425 +3300 11550 +3300 11650 +3400 11825 +3525 11875 +3375 11925 +3225 11925 +3025 11725 +3125 11725 +3200 11675 +3200 11575 +3200 11475 +3125 11425 +3025 11425 +2925 11325 +2725 11325 +2625 11325 +2450 10875 +2450 11075 +2425 11325 +2325 11425 +2225 11425 +2150 11475 +2150 11575 +2050 11575 +2050 11675 +2150 11675 +2225 11750 +2325 11750 +2125 11925 +1975 11925 +1950 11825 +1875 11925 +1925 12075 +2025 12125 +2075 12225 +1925 12225 +1825 12175 +1825 12425 +1825 12575 +1825 12675 +1825 12825 +1565 12760 +1565 12610 +1565 12460 +1565 12310 +1565 12160 +1565 12010 +1725 11925 +1565 11860 +1565 11710 +1675 11650 +1750 11700 +1750 11600 +1675 11525 +1625 11425 +1725 11425 +1950 11325 +2050 11425 +2150 11325 +2050 11275 +2075 11125 +2075 11025 +1975 11125 +1900 11025 +1775 11025 +1625 11050 +1600 10850 +1600 10725 +1600 10625 +1600 10525 +1600 10425 +1725 10125 +1875 10075 +1640 9806 +1639 9706 +1639 9606 +1640 9505 +1640 9406 +1639 9306 +1928 8820 +1825 8825 +1625 8825 +1575 8475 +1575 8375 +1575 8275 +1575 8175 +1575 8075 +1575 7975 +1575 7875 +1675 7825 +1575 7711 +1575 7710 +1576 7560 +1575 7560 +1575 7410 +1576 7409 +1575 7260 +1576 7259 +1575 7075 +1575 6875 +1575 6675 +1725 6675 +1725 6525 +1575 6525 +1575 6375 +1975 6000 +2075 6025 +1975 6200 +2075 6425 +1925 6675 +1925 6825 +2075 6775 +2225 6775 +2075 6975 +1975 7075 +2175 7075 +2275 7275 +2325 7425 +2375 7525 +2175 7475 +2075 7575 +1975 7475 +1925 7625 +1775 7625 +1825 7725 +1975 7725 +2175 7825 +2350 7775 +2350 7875 +2475 7975 +2625 7975 +2575 8125 +2500 8225 +2600 8225 +2600 8375 +2600 8475 +2450 8575 +2375 8725 +2197 8703 +2225 8825 +2425 8825 +2525 8725 +2600 8625 +2825 8775 +2925 8775 +3025 8775 +3125 8775 +3275 8775 +3225 8625 +3325 8575 +3225 8525 +3325 8225 +3425 8225 +3525 8325 +3625 8325 +3625 8425 +3525 8475 +3700 8775 +3800 8675 +3700 8575 +3775 8375 +3775 8225 +3625 8175 +3675 8075 +3775 8075 +3775 7925 +3675 7875 +3525 7825 +3525 7725 +3525 7625 +3525 7475 +3425 7425 +3425 7575 +3375 7725 +3375 7825 +3275 7975 +3125 7825 +2925 7825 +2875 7925 +2975 7975 +3075 7975 +3075 8075 +2975 8125 +2875 8075 +2775 8125 +2775 8025 +2775 7875 +2650 7750 +2800 7750 +2875 7575 +2875 7425 +3025 7425 +3125 7425 +3075 7575 +3175 7600 +3275 7425 +3225 7325 +3325 7150 +3475 7150 +3750 7150 +3675 7075 +3725 6975 +3525 6975 +3325 6875 +3425 6775 +3325 6675 +3375 6450 +3525 6575 +3750 6575 +3750 6375 +3750 5975 +3574 5908 +3375 6050 +3175 6025 +3025 6125 +2875 6125 +2875 6025 +3025 5450 +2925 5450 +2825 5450 +2675 5450 +2525 5450 +2375 5450 +2400 5350 +2400 5250 +2325 5175 +2475 5175 +2575 5075 +2525 4975 +2675 4875 +2825 4975 +2775 5075 +2675 5025 +2675 5175 +2875 5175 +3150 5175 +3250 5375 +3250 5275 +3300 5175 +3275 5075 +3325 4975 +3450 5025 +3475 5175 +3525 5275 +3525 5375 +3675 5375 +3675 5275 +3775 5325 +3772 5204 +3800 5075 +3800 4925 +3675 4925 +3675 4775 +3675 4675 +3675 4575 +3525 4725 +3400 4675 +3375 4775 +3225 4775 +3025 4575 +3125 4575 +3200 4525 +3300 4500 +3300 4400 +3200 4425 +3200 4325 +3125 4275 +3025 4275 +2925 4175 +2900 3925 +2900 3725 +2900 3325 +2450 3325 +2450 3725 +2450 3925 +2725 4175 +2625 4175 +2425 4175 +2325 4275 +2225 4275 +2150 4325 +2150 4425 +2050 4425 +2050 4525 +2150 4525 +2225 4600 +2325 4600 +2125 4775 +1975 4775 +1950 4675 +1875 4775 +1925 4925 +2025 4975 +2075 5075 +1925 5075 +1825 5025 +1825 5275 +1825 5425 +1825 5525 +1825 5675 +1565 5610 +1565 5460 +1565 5310 +1565 5160 +1565 5010 +1565 4860 +1725 4775 +1565 4710 +1565 4560 +1675 4500 +1750 4550 +1750 4450 +1675 4375 +1625 4275 +1725 4275 +1950 4175 +2050 4275 +2150 4175 +2050 4125 +2075 3975 +2075 3875 +1975 3975 +1900 3875 +1775 3875 +1625 3900 +1600 3700 +1600 3575 +1600 3475 +1600 3375 +1600 3275 +1725 2975 +1640 2656 +1639 2556 +1639 2456 +1640 2355 +1640 2256 diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/benchs/readme b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/benchs/readme new file mode 100644 index 000000000..7203e5789 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/benchs/readme @@ -0,0 +1,35 @@ +NAME : eil101 +COMMENT : 101-city problem (Christofides/Eilon) +TYPE : TSP +DIMENSION : 101 +EDGE_WEIGHT_TYPE : EUC_2D + +NAME: ali535 +TYPE: TSP +COMMENT: 535 Airports around the globe (Padberg/Rinaldi) +DIMENSION: 535 +EDGE_WEIGHT_TYPE: GEO +DISPLAY_DATA_TYPE: COORD_DISPLAY + +NAME : pr2392 +COMMENT : 2392-city problem (Padberg/Rinaldi) +TYPE : TSP +DIMENSION : 2392 +EDGE_WEIGHT_TYPE : EUC_2D + +NAME : rl5915 +COMMENT : 5915-city TSP (Reinelt) +TYPE : TSP +DIMENSION : 5915 +EDGE_WEIGHT_TYPE : EUC_2D + +NAME : usa13509 +COMMENT : Cities with population at least 500 in the continental US. +COMMENT : Contributed by David Applegate and Andre Rohe, based on the +COMMENT : data set "US.lat-long" from the ftp site ftp.cs.toronto.edu. +COMMENT : The file US.lat-long.Z can be found in the directory /doc/geography. +TYPE : TSP +DIMENSION : 13509 +EDGE_WEIGHT_TYPE : EUC_2D + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/benchs/rl5915.tsp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/benchs/rl5915.tsp new file mode 100644 index 000000000..9eda5f662 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/benchs/rl5915.tsp @@ -0,0 +1,5916 @@ +5915 +18192 8954 +18192 9856 +18192 11319 +18272 8624 +18416 7348 +18416 8294 +1200 7370 +1200 8184 +1200 10912 +1200 11440 +17904 572 +17904 2684 +17904 6908 +17904 7348 +17904 8624 +8272 308 +8272 2068 +8272 2508 +8272 3080 +8272 3608 +8272 5302 +8336 7260 +8464 7260 +8496 9548 +8496 10582 +8496 11440 +15888 9064 +15888 9504 +15888 10252 +15888 11000 +15936 8184 +16048 8184 +16208 8184 +16336 572 +16336 1012 +16336 1452 +16336 2992 +16336 4818 +16336 6028 +16336 7348 +1040 7370 +1040 8184 +1040 10912 +1040 11440 +4464 308 +4640 308 +4816 308 +4944 308 +5168 308 +5440 308 +5616 308 +5728 308 +5808 3080 +5808 3608 +5808 4664 +5808 5368 +5808 6072 +5808 7128 +5936 9658 +5936 11286 +16848 572 +16848 1452 +16848 2992 +16848 4708 +16848 6028 +16848 7348 +16848 8514 +16848 9284 +16848 9922 +16848 11198 +8240 7480 +8400 9548 +8400 10582 +8400 11440 +1520 9152 +1520 10912 +1520 11440 +1584 6446 +1584 7590 +1584 8294 +5168 11440 +5280 11440 +5456 11440 +5584 11440 +5712 11440 +2672 6336 +2784 6556 +2976 6556 +3104 6556 +3264 6556 +3360 6556 +3600 6556 +3856 6556 +3920 6556 +4016 6556 +4144 6556 +4208 6556 +4352 6556 +4464 6556 +4560 6556 +4688 6556 +4720 7260 +4720 8140 +4720 9702 +4720 10582 +4720 11132 +17008 572 +17008 1452 +17008 2992 +17008 5874 +17008 7348 +17072 8096 +17136 8096 +17280 8096 +17456 8096 +17520 8404 +17520 8954 +17520 10142 +17520 11319 +880 7370 +880 8184 +880 11440 +4144 4840 +4144 7700 +4304 8360 +4416 8360 +4576 8360 +4656 8360 +4864 8360 +5040 8360 +5296 8360 +5456 8844 +5456 9812 +5520 3608 +5520 4664 +5520 5368 +5520 5918 +5520 6930 +16560 8954 +16560 9922 +16592 572 +16592 1452 +16592 2992 +16592 4818 +16592 6138 +16592 7348 +7728 7744 +7728 9548 +7728 10846 +7792 7040 +7856 7040 +7952 7040 +8016 308 +8016 2068 +8016 2508 +8016 3080 +8016 3608 +8016 4268 +8016 5852 +16272 9064 +16272 9504 +16272 9922 +16272 11000 +16640 8844 +16720 8844 +16784 6028 +16784 7348 +16784 8514 +464 11440 +528 8184 +640 8184 +784 7370 +784 7964 +7664 6446 +7664 8074 +7664 9548 +7664 10846 +7728 308 +7728 2068 +7728 2508 +7728 3080 +7728 3608 +7728 4048 +7728 4488 +5232 3608 +5232 4664 +5232 5368 +5232 5918 +5232 6776 +5520 7920 +3856 7480 +3920 7920 +4016 7920 +4176 9152 +4176 9922 +4176 10472 +4176 10912 +4176 11440 +5984 748 +6096 3080 +6096 3608 +6096 4664 +6160 5368 +6224 5368 +6320 5368 +6496 5368 +6608 5698 +6608 6336 +6608 7502 +6608 9064 +6608 10142 +6608 11022 +17200 5874 +17200 7348 +17200 9284 +17200 9922 +17200 11198 +17296 5192 +17440 5192 +17568 5192 +17616 572 +17616 2992 +7248 10362 +7248 11286 +7376 308 +7376 968 +7376 2068 +7376 2508 +7376 3080 +7376 3608 +7376 4488 +7376 5588 +7376 6556 +7376 7744 +1808 6446 +1840 7436 +1840 8404 +1840 9042 +1840 10912 +1840 11440 +12272 9878 +12464 9064 +12592 9064 +12736 9064 +12848 902 +12848 1980 +12848 2640 +12848 3168 +12848 3608 +12848 4158 +12848 5368 +12848 6556 +12848 6996 +12848 8008 +12848 8844 +1648 8404 +1648 9152 +1648 10912 +1648 11440 +1680 6446 +1680 7590 +6256 9658 +6256 11022 +16976 8514 +16976 9284 +16976 9922 +16976 11198 +17072 5720 +17136 5720 +17440 5720 +17600 5720 +11600 572 +11600 1760 +11600 3388 +11600 5258 +11600 6556 +11600 6996 +11600 7898 +11632 8602 +11632 9284 +11632 10208 +17376 10142 +17728 10142 +18416 10142 +18608 10142 +18704 10142 +18864 10142 +18992 10142 +19088 10142 +6224 968 +6224 3080 +6224 3608 +6224 4664 +6400 10912 +6768 10912 +6864 11286 +1936 6336 +1936 7436 +1968 8404 +1968 9152 +1968 10912 +1968 11440 +3984 8712 +4304 8932 +4416 8932 +4496 10802 +15440 1232 +15440 3608 +15440 4180 +15440 4818 +15536 5808 +15648 5808 +15760 5808 +15840 5808 +15936 5808 +16048 5808 +16208 5808 +5584 10252 +5728 10252 +6000 10252 +6064 10252 +6160 10252 +6320 968 +6320 3080 +6320 3608 +6320 4664 +6384 9548 +6384 10472 +16720 11198 +17088 11198 +17376 11198 +17728 11198 +18416 11198 +18608 11198 +18704 11198 +18848 11198 +15280 572 +15280 1232 +15280 3608 +15280 4180 +15280 4818 +15280 6138 +15280 7348 +15280 8228 +15280 9064 +15280 9504 +15280 10252 +15280 11000 +3472 7920 +3472 8712 +3472 9372 +3472 10472 +3472 10912 +3472 11440 +208 11440 +432 7964 +944 7964 +1104 7370 +1424 6446 +1424 7370 +1424 8294 +10096 4378 +10096 5478 +10096 6556 +10096 7480 +10096 8008 +10096 8602 +10096 9284 +10096 10318 +10096 11440 +10256 3608 +10336 3608 +10448 3608 +10544 3608 +10608 3608 +10672 3608 +10752 3608 +10864 3608 +10992 3608 +11088 3608 +11168 3608 +11280 3608 +11408 3608 +688 7370 +688 11440 +6160 968 +6496 968 +6592 968 +6736 968 +6848 968 +6944 968 +7104 968 +7232 968 +7552 968 +7600 308 +7600 2068 +7600 2508 +7600 3080 +7600 3608 +7600 4048 +7600 4488 +7632 5148 +7792 5148 +7856 5148 +7920 5148 +8112 5148 +8384 5148 +8464 5148 +8624 5148 +8800 5148 +8912 5148 +9216 5148 +9504 5148 +9616 5148 +9744 5148 +9888 5148 +9936 6556 +9936 7480 +9936 8382 +9936 9284 +9936 11440 +10032 572 +10032 1452 +10032 2728 +6496 7084 +6736 7084 +6768 9064 +6768 10142 +9936 572 +9936 1452 +5200 10032 +7408 10362 +7568 10692 +7856 10692 +7936 10692 +8032 10692 +8144 10692 +8224 10692 +8320 10692 +8784 10692 +8976 10692 +9408 10692 +10288 10692 +10400 10692 +10560 10692 +10704 10692 +10864 10692 +10960 10692 +11136 10692 +11264 10692 +11392 10692 +11472 10692 +11568 10692 +4880 9218 +4880 10032 +4880 10582 +4880 11132 +4944 3608 +4944 4664 +4944 5368 +4944 5918 +4944 6776 +4944 7436 +6944 308 +7104 308 +7232 308 +7792 308 +7856 308 +7920 308 +8128 308 +8384 308 +8464 308 +8528 308 +8592 308 +8688 308 +8800 308 +8912 308 +9008 308 +9104 308 +9200 308 +9232 1452 +9232 2288 +9232 3388 +9344 7260 +9456 8602 +9456 11440 +3568 7920 +3664 7920 +3728 7920 +8240 9548 +8240 11440 +9376 6776 +9776 572 +9776 1452 +9776 2508 +9776 3388 +6992 7854 +6992 9174 +6992 9812 +6992 10362 +7056 2068 +7056 3080 +7056 3608 +7056 4664 +7056 5588 +7056 6556 +14512 682 +14640 3608 +14640 4048 +14640 4598 +14640 6138 +14640 7568 +14640 8228 +14640 9064 +14640 9504 +14640 10252 +14640 11000 +14768 1012 +14848 1012 +14960 1012 +15376 1012 +15536 1012 +15664 1012 +15760 1012 +15840 1012 +15936 1012 +16048 1012 +16208 1012 +16464 1012 +16528 572 +14736 6138 +14736 7568 +14736 8228 +14736 9064 +14736 9504 +14736 10252 +14736 10890 +14768 4928 +14880 4928 +14976 4928 +15376 4928 +15536 4928 +15648 4928 +15760 4928 +15840 4928 +15936 4928 +16048 4928 +16208 4928 +16464 4928 +16704 4928 +13808 6028 +13808 6776 +13808 7788 +13808 8228 +13808 9504 +13808 10362 +13808 11110 +14032 4708 +14144 4708 +14320 4708 +14464 4708 +16944 4708 +3664 8712 +3728 9284 +3760 9702 +3760 10472 +3760 10912 +3760 11440 +3600 8712 +3600 9482 +4048 9812 +4336 9812 +4576 9812 +4656 9812 +4976 8844 +8976 8118 +8976 9394 +8976 11440 +10176 6556 +10304 6556 +10448 6556 +10576 6556 +10736 6556 +10832 6556 +10896 6556 +10976 6556 +11088 6556 +11168 6556 +11264 6556 +11424 6556 +11536 6556 +11664 6556 +11728 6556 +11792 6556 +11872 6556 +11968 6556 +12112 6556 +12272 6556 +12448 6556 +12608 6556 +12736 6556 +13008 6556 +13072 1012 +13072 1980 +13072 2640 +13072 3608 +13072 4268 +13072 5368 +13168 572 +13264 572 +13408 572 +13568 572 +13696 572 +14016 572 +14160 572 +14320 572 +15120 572 +15376 572 +10480 572 +10480 1452 +10480 6006 +7120 2508 +7120 3080 +7120 3608 +7120 4664 +7120 5588 +7120 6556 +7120 7744 +7120 9064 +7120 9812 +7120 10362 +7120 11286 +3728 8712 +4016 10472 +4016 10912 +4016 11440 +6480 9064 +6896 9064 +7248 2068 +7248 2508 +7248 3080 +7248 3608 +7248 4664 +7248 5588 +7248 6556 +7248 7480 +3920 8712 +5056 9372 +3536 9372 +3536 10472 +3536 10912 +3536 11440 +8784 8448 +10304 8448 +10560 8448 +10704 8448 +10768 8448 +10848 8448 +10976 8448 +11120 8448 +11264 8448 +11552 8448 +11760 8448 +11888 8448 +12080 8448 +12240 8448 +12720 572 +12720 1980 +12720 3718 +12720 5368 +12720 6996 +2800 7326 +2928 7700 +2992 7700 +3104 7700 +3264 7700 +4208 7700 +8112 2068 +8112 2508 +8112 3080 +8112 3608 +8112 4268 +8112 7480 +9584 2728 +9584 3388 +9840 2288 +11440 2288 +11728 2288 +11824 2288 +11984 2288 +12112 2288 +12256 2288 +12384 2288 +12464 2288 +12496 572 +12496 1232 +12608 1012 +5584 7920 +5680 7920 +5760 7920 +6896 7920 +7568 7920 +8144 7920 +8208 7920 +9136 7590 +10544 6116 +11088 6116 +11168 6116 +11264 6116 +11312 572 +11312 1496 +11312 5258 +10768 572 +10768 1342 +10768 4488 +10768 5038 +10768 5588 +10768 6996 +10768 9284 +10768 9878 +5584 8844 +5616 3080 +6160 3080 +6496 3080 +6608 3080 +6736 3080 +6848 3080 +6944 3080 +7792 3080 +7856 3080 +7920 3080 +8384 3080 +8464 3080 +8560 3080 +8688 3080 +8800 3080 +8912 3080 +9008 3080 +8688 2288 +8464 6116 +8528 2068 +8528 2508 +8528 3608 +8464 2068 +8464 2508 +8464 3608 +17456 572 +17456 2992 +17456 7238 +11728 2948 +11824 2948 +11984 2948 +12112 2948 +12256 2948 +12384 2948 +12464 2948 +12560 572 +12560 1980 +12560 2728 +17552 7238 +17632 8184 +17776 8184 +18080 8184 +18256 9064 +10448 10032 +10560 10032 +10704 10032 +10864 10032 +10976 10032 +11136 10032 +11760 10032 +11888 10032 +12032 10032 +12144 10032 +12880 10032 +13008 10032 +13168 10032 +13312 10032 +13472 10032 +13584 10032 +13680 3608 +13680 4268 +13680 6028 +13680 6776 +13680 8008 +13680 9504 +17760 6908 +18048 6908 +18128 7348 +12640 3388 +12784 2640 +12784 3168 +10976 8008 +11088 8008 +11264 8008 +11664 8008 +11728 8008 +11792 8008 +11888 8008 +12912 8008 +13008 8008 +13184 8008 +13328 8008 +13456 8008 +13568 8008 +8400 2068 +8400 2508 +8400 3608 +9328 1452 +9520 1452 +9632 1452 +9840 1452 +10160 1452 +10256 1452 +10336 1452 +10544 1452 +10608 1452 +10672 1452 +10864 1452 +10992 1452 +11088 1452 +11168 1452 +12304 572 +14864 3608 +14864 4048 +14864 6138 +14864 7568 +14864 8228 +14864 9064 +14864 9504 +14864 10252 +14864 10890 +7792 2068 +7792 2508 +7792 3608 +7792 4048 +7792 4488 +7792 6446 +15376 3608 +15376 4180 +15376 6138 +15376 7348 +6864 2068 +6864 3608 +6864 4774 +6928 5368 +10544 5368 +10672 5368 +10704 9284 +12464 11000 +12592 11000 +12736 11000 +12880 11000 +13008 11000 +13168 11000 +13312 11000 +13456 11000 +13584 11000 +14144 11000 +14224 11000 +14336 11000 +14416 11000 +14992 11000 +15440 11000 +15632 11000 +15760 11000 +15824 11000 +16160 11000 +16464 11000 +15952 572 +15952 1452 +16048 2992 +16208 2992 +16464 2992 +16704 2992 +17072 2992 +17136 2992 +17296 2992 +15664 572 +15664 3608 +15664 4180 +15664 7348 +15664 7788 +15664 9064 +15664 9504 +15664 10252 +16432 1452 +8144 9548 +8144 11440 +9616 572 +12112 572 +12112 3938 +12112 5258 +8304 9548 +8304 11440 +12912 8844 +13008 8844 +13184 8844 +13328 8844 +13456 8844 +13552 3608 +13552 4378 +13552 5368 +13552 6028 +13552 6776 +11920 6996 +11920 9284 +11952 572 +11952 3938 +11952 5258 +10320 572 +10448 11440 +11824 572 +11824 3938 +11824 5258 +12656 5368 +5008 10692 +5008 11132 +13168 1980 +13168 2640 +13168 3608 +13168 4378 +13168 5478 +13232 6028 +13376 6028 +13488 6028 +14032 6028 +14144 6028 +14224 6028 +14320 6028 +14464 6028 +14976 6028 +16704 6028 +3280 10912 +3280 11440 +6736 308 +6736 2068 +6736 3608 +6736 4774 +6736 5698 +6736 6336 +8784 11440 +10288 11440 +10512 11440 +11792 6996 +8720 4158 +6800 5808 +6800 6336 +6912 6556 +7856 6556 +8896 6556 +8944 2288 +8944 3608 +7568 9504 +7856 9504 +8784 9504 +14144 8228 +14224 8228 +14336 8228 +14416 8228 +14480 8228 +15440 8228 +15504 8228 +15536 3608 +15536 4180 +15536 7348 +15568 572 +15760 572 +15840 572 +16048 572 +16208 572 +16704 572 +17104 572 +17296 572 +18000 572 +18080 572 +11728 572 +11728 3938 +11728 5258 +11728 6996 +11760 9284 +12272 3938 +12272 5258 +10512 9284 +7856 4048 +7920 4048 +8784 2288 +8784 3608 +8784 4268 +7920 2068 +7920 2508 +7920 3608 +7920 4488 +8880 4268 +10544 572 +10544 6996 +10608 4488 +9008 2288 +9312 2288 +11440 572 +11440 5258 +11440 6996 +11536 6996 +15824 7348 +15824 7788 +15824 9064 +15824 9504 +15824 10252 +6608 2068 +6608 3608 +6608 4664 +6896 5808 +112 11198 +10672 4488 +10832 4488 +10864 572 +10864 5038 +11088 6996 +9520 572 +9520 2068 +12240 6996 +3280 8712 +3280 9152 +3632 10472 +3632 10912 +3632 11440 +11568 9284 +14128 10472 +14160 1342 +14160 3608 +14160 4048 +14160 6776 +14160 7678 +14160 9504 +4080 10472 +4336 10472 +4576 10472 +4976 10032 +528 7370 +16016 1452 +16016 7348 +16016 9064 +16016 9504 +16160 9922 +16464 9922 +16640 9922 +16720 9922 +17088 9922 +1744 10912 +2112 10912 +2368 10912 +2544 10912 +2944 10912 +3056 8712 +3056 9152 +3088 10912 +4080 10912 +4336 10912 +4432 10912 +13456 9504 +14224 7788 +14336 7788 +14416 7788 +14448 1342 +14448 3608 +14448 4048 +1280 8404 +1744 8404 +1904 8404 +2160 8404 +2224 8404 +2368 8404 +2544 8404 +2704 7546 +14032 1342 +14032 3608 +14032 6776 +14976 7568 +14320 4048 +14768 4048 +13392 1980 +13392 3608 +13392 4378 +13392 5368 +16688 1452 +13360 6776 +16208 1452 +16208 7348 +1504 6336 +2064 6336 +2160 6336 +2224 6336 +2384 6336 +2544 6336 +4560 7370 +4304 7260 +4384 7260 +4464 7260 +4816 7260 +4880 7260 +14352 1342 +14352 3608 +14352 9504 +14352 10252 +5744 8844 +4336 11440 +6160 3608 +6160 4664 +6160 11132 +6512 3608 +6512 4664 +6928 2068 +6928 3608 +6928 4664 +11280 6996 +12592 6996 +13488 3608 +14768 3608 +14960 3608 +15760 3608 +15840 3608 +15920 7348 +12368 572 +12368 1232 +12368 3938 +12368 5258 +11664 6996 +17776 2684 +12464 3938 +13488 4268 +13232 6666 +10192 572 +944 7370 +10848 9284 +17088 9284 +17344 9284 +4592 4840 +4592 6028 +11024 572 +11024 5038 +2384 7436 +2384 9152 +2384 11440 +2928 8712 +2928 9152 +2928 11440 +2544 7546 +2544 9152 +2544 11440 +9648 7480 +2048 7172 +2160 7172 +2224 7172 +3440 7172 +1744 9042 +1744 11440 +2096 9152 +2096 11440 +3056 11440 +10960 6996 +2992 8712 +2992 9152 +10896 6996 +4080 11440 +16144 9064 +16144 9504 +14224 6776 +14224 9504 +14224 10252 +17104 8624 +17136 7348 +15440 9064 +15440 9504 +15440 10252 +15760 7788 +15856 1452 +4208 4840 +18320 7348 +15760 4180 +9712 7480 +17072 1452 +17072 7348 +16464 9504 +7856 2068 +7856 2508 +7856 3608 +7856 4488 +16720 7348 +15504 9064 +4368 4840 +6000 11132 +6064 11132 +4688 5808 +4816 5808 +4880 5808 +9008 3608 +15760 9064 +17424 9064 +18512 8294 +4880 4664 +4880 5368 +4880 6776 +4688 4488 +4752 4488 +4816 4488 +18608 8866 +14416 9504 +14416 10252 +15760 7348 +18224 7348 +13424 6776 +18704 8866 +11088 4928 +11168 4928 +12464 5368 +15760 1452 +15760 9504 +15760 10252 +432 7480 +11168 6996 +13488 6776 +13584 9504 +13488 5368 +11184 572 +4464 4840 +4528 4840 +4816 5368 +4816 6776 +11088 572 +10672 572 +10256 572 +9840 572 +18192 10670 +18379 8624 +18416 3619 +18416 7766 +1200 3575 +1200 9658 +17904 231 +17904 1628 +17904 4796 +17904 7766 +17904 9438 +17940 9570 +18224 10670 +8272 1188 +8272 7029 +8416 7260 +8496 8866 +15888 8503 +15888 9878 +15888 10626 +15888 11429 +15984 8184 +16128 8184 +16299 8184 +16336 2222 +16336 3850 +16336 5368 +16336 6798 +16336 7887 +1040 3575 +1040 9658 +4432 220 +4496 308 +4784 308 +4848 308 +5040 308 +5296 308 +5584 308 +5648 308 +5808 220 +5808 2024 +5808 4048 +5936 8382 +5936 10802 +16848 1012 +16848 2222 +16848 3850 +16848 5368 +16848 6688 +16848 7876 +16848 10560 +16848 11528 +8240 1188 +8240 7018 +8260 7700 +8400 8756 +1520 10032 +1552 8932 +1584 3113 +1584 7018 +1584 8789 +5136 11528 +5200 11440 +5360 11440 +5552 11528 +5616 11440 +5808 11440 +5968 11528 +2672 3113 +2736 6556 +2880 6556 +3024 6556 +3200 6556 +3312 6556 +3408 6556 +3808 6556 +3888 6556 +3952 6556 +4096 6556 +4176 6556 +4256 6556 +4432 6556 +4496 6556 +4640 6556 +4720 7590 +4720 8866 +4720 11495 +17008 1012 +17008 2222 +17008 4356 +17008 6688 +17008 7843 +17028 8096 +17104 8096 +17168 8096 +17408 8096 +17499 8096 +17520 9603 +17520 10670 +880 3575 +880 9922 +4144 2365 +4144 5434 +4144 6908 +4272 8360 +4336 8360 +4512 8360 +4624 8360 +4688 8360 +4784 8360 +4944 8360 +5136 8360 +5488 7304 +5456 8481 +5456 10692 +5520 2178 +5520 4048 +5520 6402 +16560 10890 +16576 8184 +16592 1012 +16592 2222 +16592 3850 +16592 5478 +16592 6798 +16592 7887 +7728 8756 +7748 7040 +7824 7040 +7888 7040 +8016 1188 +8016 4818 +8016 6919 +16272 10461 +16272 11429 +16432 8844 +16592 8844 +16688 8844 +16763 8844 +16784 1012 +16784 2222 +16784 3850 +16784 5478 +16784 6688 +16784 7876 +464 9691 +484 8184 +560 8184 +747 8184 +784 3575 +7664 6908 +7664 8756 +7728 1188 +7728 4818 +5232 2178 +5232 4048 +5232 6402 +5232 7315 +5499 7612 +5520 8382 +5520 10692 +3856 2959 +3856 6908 +3876 7920 +3952 7920 +4096 7920 +4784 748 +4848 748 +5040 748 +5296 748 +5584 748 +5648 748 +5872 748 +6096 264 +6096 2024 +6096 4048 +6096 5225 +6116 5368 +6192 5368 +6256 5368 +6416 5368 +6571 5368 +6096 594 +6608 8646 +6608 9438 +6608 11495 +17200 5335 +17200 6688 +17200 7722 +17200 10560 +17200 11528 +17392 5192 +17504 5192 +17616 231 +17616 1782 +17616 4213 +7248 10802 +7376 638 +7376 1518 +7376 4048 +7376 4928 +7376 8756 +1808 3113 +1824 6864 +1840 8052 +1840 10032 +12272 11165 +12384 9064 +12528 9064 +12656 9064 +12827 9064 +12848 1606 +12848 2310 +12848 4708 +12848 6072 +12848 7392 +12848 8536 +1648 8778 +1648 10032 +1664 8184 +1680 3113 +1680 7018 +1680 8063 +4784 528 +4848 528 +5040 528 +5296 528 +5584 528 +5648 528 +5872 528 +5936 330 +5936 2024 +5936 4048 +5936 5324 +6096 6556 +6192 6556 +6256 8382 +6256 11495 +16976 6688 +16976 7876 +16976 10560 +16976 11528 +17040 5720 +17104 5720 +17168 5720 +17392 5720 +17504 5720 +17680 231 +17680 1782 +17680 4246 +11600 231 +11600 902 +11600 4488 +11600 6072 +11600 7392 +11616 8228 +11632 11275 +17264 10549 +17264 11528 +17284 10142 +17472 10142 +17552 10142 +17920 10142 +18368 10142 +18512 10142 +18656 10142 +18784 10142 +18928 10142 +19024 10142 +6224 429 +6224 2024 +6224 4048 +6224 8382 +6224 10813 +6352 10912 +6464 10912 +6672 10912 +6843 10912 +1936 3113 +1936 6754 +1936 8063 +1952 8184 +1968 8778 +1968 10032 +816 3575 +816 9922 +3984 2959 +3984 6908 +4128 8932 +4272 8932 +4336 8932 +4496 9031 +4496 11495 +15440 583 +15440 2530 +15440 5489 +15460 5808 +15600 5808 +15712 5808 +15792 5808 +15888 5808 +15984 5808 +16128 5808 +16288 5808 +16400 6798 +16400 7876 +16400 10461 +16400 11429 +5360 2178 +5360 4048 +5360 7194 +5552 10252 +5632 10252 +5808 10252 +5968 10252 +6032 10252 +6112 10252 +6192 10252 +6304 8536 +6288 11495 +6320 429 +6320 2024 +6320 4048 +1168 9658 +1232 3575 +1232 7843 +6352 429 +6352 2024 +6352 4048 +6352 8657 +6368 8844 +6384 11495 +16688 11407 +16784 11198 +16912 11198 +17040 11198 +17136 11198 +17296 11198 +17472 11198 +17552 11198 +17920 11198 +18368 11198 +18512 11198 +18656 11198 +18768 11198 +18928 11198 +15280 2530 +15280 5478 +15280 6798 +15280 7788 +15280 8646 +15280 9878 +15280 10626 +15280 11429 +3472 10032 +3488 7480 +3504 3113 +3504 7139 +208 9581 +308 7964 +480 7964 +560 7964 +736 7964 +848 7964 +912 7964 +976 7964 +1083 7964 +1104 3575 +1104 7843 +1392 2904 +1392 5852 +1408 6028 +1424 8778 +1424 10032 +10224 3608 +10288 3608 +10384 3608 +10512 3608 +10576 3608 +10640 3608 +10704 3608 +10800 3608 +10928 3608 +11056 3608 +11120 3608 +11216 3608 +11344 3608 +11488 3608 +11664 902 +688 3575 +688 9922 +5872 968 +6128 968 +6192 968 +6256 968 +6416 968 +6544 968 +6672 968 +6784 968 +6896 968 +7008 968 +7184 968 +7312 968 +7504 968 +7600 759 +7600 1397 +7600 4939 +7664 5148 +7760 5148 +7824 5148 +7888 5148 +7952 5148 +8048 5148 +8176 5148 +8336 5148 +8432 5148 +8496 5148 +8752 5148 +8848 5148 +8992 5148 +9440 5148 +9552 5148 +9680 5148 +9824 5148 +10011 5148 +10032 231 +10032 1012 +10032 1760 +5488 2178 +5488 4048 +5488 6402 +5648 7084 +5936 7084 +6096 7084 +6192 7084 +6416 7084 +6544 7084 +6672 7084 +6768 7161 +6768 8646 +6768 9438 +9936 231 +9936 1012 +9936 1760 +5200 2178 +5200 4048 +5200 6402 +5200 7458 +5200 10593 +7408 638 +7408 1518 +7408 4048 +7408 4928 +7408 8756 +7536 10692 +7600 10692 +7696 10692 +7824 10692 +7888 10692 +7984 10692 +8096 10692 +8176 10692 +8272 10692 +8368 10692 +8432 10692 +8720 10692 +8848 10692 +9104 10692 +9728 10692 +10032 10692 +10256 10692 +10320 10692 +10480 10692 +10656 10692 +10768 10692 +10928 10692 +11024 10692 +11216 10692 +11328 10692 +11440 10692 +11520 10692 +11600 10692 +11707 10692 +11728 11330 +11728 10868 +4880 11495 +4944 2178 +4944 4048 +4944 6402 +6896 220 +7008 308 +7184 308 +7312 308 +7504 308 +7664 308 +7760 308 +7824 308 +7888 308 +7952 308 +8048 308 +8208 308 +8336 308 +8432 308 +8496 308 +8560 308 +8624 308 +8752 308 +8848 308 +8976 308 +9040 308 +9168 308 +9232 220 +9232 759 +9232 1760 +9232 2948 +9232 7029 +3440 10032 +3504 7920 +3632 7920 +3696 7920 +3760 3113 +3760 6908 +8240 8899 +8272 8756 +8304 1188 +8304 6908 +8304 8613 +9296 6897 +9296 9878 +9456 6776 +9552 6776 +9680 6776 +9776 231 +9776 1012 +9776 1760 +6992 8646 +6992 10802 +7024 7260 +7056 638 +7056 1518 +7056 2574 +7056 4048 +7056 7139 +14640 2530 +14640 5368 +14640 6798 +14640 8646 +14640 9878 +14640 11539 +14736 1012 +14800 1012 +14912 1012 +15120 1012 +15328 1012 +15408 1012 +15472 1012 +15600 1012 +15728 1012 +15792 1012 +15888 1012 +15984 1012 +16128 1012 +16272 1012 +16400 1012 +16528 913 +14704 2530 +14720 4928 +14736 5357 +14736 6798 +14736 8646 +14736 9878 +14736 11429 +14816 4928 +14928 4928 +15136 4928 +15328 4928 +15408 4928 +15472 4928 +15600 4928 +15712 4928 +15792 4928 +15888 4928 +15984 4928 +16128 4928 +16288 4928 +16400 4928 +16544 4928 +16656 4928 +16752 4928 +16816 1012 +16816 2222 +16816 3850 +13808 5137 +13808 7282 +13808 8866 +13808 9878 +13808 11539 +13908 4708 +14080 4708 +14224 4708 +14400 4708 +14512 4708 +14736 4708 +14816 4708 +14928 4708 +15136 4708 +15328 4708 +15408 4708 +15472 4708 +15600 4708 +15712 4708 +15792 4708 +15888 4708 +15984 4708 +16128 4708 +16288 4708 +16400 4708 +16544 4708 +16656 4708 +16752 4708 +16912 4708 +16976 1012 +16976 2222 +16976 3971 +3664 3113 +3664 7018 +3664 9119 +3684 9284 +3760 10142 +3600 3113 +3600 7128 +3600 9042 +3712 9812 +3888 9812 +4128 9812 +4272 9812 +4400 9812 +4528 9812 +4624 9812 +4688 9812 +4795 9812 +4955 9152 +4816 11495 +4976 2178 +4976 4048 +4976 6402 +8976 6897 +8976 9878 +8996 6556 +9296 6556 +9456 6556 +9552 6556 +9680 6556 +9808 6556 +10016 6556 +10128 6556 +10224 6556 +10384 6556 +10512 6556 +10656 6556 +10800 6556 +10864 6556 +10928 6556 +11040 6556 +11120 6556 +11216 6556 +11328 6556 +11504 6556 +11568 6556 +11632 6556 +11696 6556 +11760 6556 +11824 6556 +11920 6556 +12032 6556 +12176 6556 +12384 6556 +12512 6556 +12688 6556 +12800 6556 +12912 6556 +13072 484 +13072 1606 +13072 2310 +13072 3124 +13072 3938 +13072 4708 +13072 6193 +13108 572 +13200 572 +13344 572 +13488 572 +13632 572 +13856 572 +14096 572 +14224 572 +14400 572 +14640 572 +14736 572 +14800 572 +14912 572 +15040 572 +15200 572 +15328 572 +15408 484 +10016 6776 +10128 6776 +10224 6776 +10384 6776 +10480 231 +10480 1012 +10480 1760 +7120 638 +7120 1518 +7120 4048 +7120 8536 +7120 10802 +3728 3113 +3728 6908 +3899 9592 +4016 10142 +5776 10802 +5796 9064 +5968 9064 +6032 9064 +6112 9064 +6192 9064 +6352 9064 +6432 9064 +6512 9064 +6672 9064 +6864 9064 +6928 9064 +7024 9064 +7211 9064 +7248 638 +7248 1518 +7248 4048 +7248 7128 +7248 8767 +3920 2959 +3920 6908 +3920 9163 +3972 9372 +4128 9372 +4272 9372 +4528 9372 +4624 9372 +4688 9372 +4784 9372 +4960 9372 +5136 9372 +5552 9372 +5632 9372 +5808 9372 +5968 9372 +6032 9372 +6112 9372 +6192 9372 +6352 9372 +6432 9372 +6512 9471 +6512 11495 +16368 2222 +16368 3850 +16368 5368 +16368 6798 +16368 7876 +16368 10461 +16368 11429 +3536 3113 +3536 7128 +3536 10032 +8464 8745 +8720 8448 +8848 8448 +9104 8448 +9728 8448 +10000 8448 +10256 8448 +10352 8448 +10464 8448 +10656 8448 +10736 8448 +10800 8448 +10912 8448 +11040 8448 +11200 8448 +11344 8448 +11504 8448 +11600 8448 +11712 8448 +11792 8448 +11984 8448 +12192 8448 +12272 8448 +12384 8448 +12528 8448 +12656 8448 +12720 1606 +12720 2574 +12720 4708 +12720 6072 +12720 7392 +12816 792 +12944 792 +13120 792 +13200 792 +13344 792 +13488 792 +13632 792 +13856 792 +14096 792 +14224 792 +14400 792 +14640 792 +14736 792 +14800 792 +14912 792 +15051 792 +2800 3113 +2800 6864 +2852 7700 +2960 7700 +3024 7700 +3200 7700 +3312 7700 +3424 7700 +3504 7700 +3632 7700 +3696 7700 +3808 7700 +3888 7700 +3952 7700 +4096 7700 +4176 7700 +4240 7799 +8048 8756 +8080 7700 +8112 1188 +8112 4818 +8112 7018 +1328 3223 +1328 6919 +1456 8778 +1456 10032 +9680 2288 +9808 2288 +9872 2288 +10000 2288 +10096 2288 +10224 2288 +10288 2288 +10384 2288 +10512 2288 +10576 2288 +10640 2288 +10704 2288 +10800 2288 +10928 2288 +11056 2288 +11120 2288 +11216 2288 +11344 2288 +11408 2288 +11488 2288 +11696 2288 +11760 2288 +11904 2288 +12048 2288 +12176 2288 +12336 2288 +12432 2288 +12496 913 +12496 1606 +12516 1012 +12688 1012 +12816 1012 +12944 1012 +13120 1012 +13200 1012 +13344 1012 +13488 1012 +13632 1012 +13867 1012 +5232 10472 +5488 7920 +5552 7920 +5632 7920 +5712 7920 +5808 7920 +5968 7920 +6096 7920 +6192 7920 +6416 7920 +6544 7920 +6672 7920 +6864 7920 +6928 7920 +7040 7920 +7184 7920 +7536 7920 +7600 7920 +7696 7920 +7760 7920 +7824 7920 +7888 7920 +8096 7920 +8176 7920 +8256 7920 +8448 7920 +8720 7920 +8848 7920 +9115 7920 +9136 1188 +9136 2948 +9136 5962 +9136 7018 +9444 6116 +9552 6116 +9680 6116 +9808 6116 +10016 6116 +10144 6116 +10224 6116 +10384 6116 +10512 6116 +10576 6116 +10656 6116 +10800 6116 +10864 6116 +10928 6116 +11056 6116 +11120 6116 +11216 6116 +11312 231 +11312 902 +11312 4488 +11312 5973 +9008 9878 +9104 1188 +9104 2948 +9104 5962 +9104 7029 +5648 10681 +5808 10472 +5968 10472 +6032 10472 +6112 10472 +6192 10472 +6352 10472 +6464 10472 +6672 10472 +6848 10472 +7024 10472 +7200 10472 +7376 10472 +7536 10472 +7600 10472 +7696 10472 +7824 10472 +7888 10472 +7984 10472 +8096 10472 +8176 10472 +8272 10472 +8368 10472 +8432 10472 +8720 10472 +8848 10472 +9104 10472 +9728 10472 +10032 10472 +10256 10472 +10320 10472 +10480 10472 +10656 10472 +10747 10472 +10768 231 +10768 902 +10768 1760 +10768 7392 +10768 10373 +10016 9064 +10064 231 +10064 1012 +10064 1760 +5584 3223 +5584 4048 +5584 6402 +5584 8382 +5584 10692 +5664 3080 +5872 3080 +6128 3080 +6192 3080 +6256 3080 +6416 3080 +6560 3080 +6672 3080 +6784 3080 +6896 3080 +7008 3080 +7088 3080 +7184 3080 +7312 3080 +7504 3080 +7664 3080 +7760 3080 +7824 3080 +7888 3080 +7952 3080 +8048 3080 +8208 3080 +8336 3080 +8432 3080 +8496 3080 +8624 3080 +8752 3080 +8848 3080 +8976 3080 +9051 3080 +9072 1188 +9072 2915 +8624 5962 +8624 8866 +8688 1188 +8592 8866 +8656 1188 +8656 5962 +7952 8756 +8048 6116 +8176 6116 +8432 6116 +8507 6116 +8528 1188 +8528 5973 +8464 1188 +8656 8866 +7056 10802 +7195 8844 +7216 638 +7216 1518 +7216 4048 +7216 7128 +7216 8657 +17456 1782 +17456 4092 +17456 6578 +17456 7722 +17456 8745 +17476 8844 +17552 8844 +17712 9603 +17712 10670 +9428 2948 +9680 2948 +9808 2948 +9872 2948 +10000 2948 +10096 2948 +10224 2948 +10288 2948 +10384 2948 +10512 2948 +10576 2948 +10640 2948 +10704 2948 +10800 2948 +10928 2948 +11056 2948 +11120 2948 +11216 2948 +11344 2948 +11488 2948 +11696 2948 +11760 2948 +11904 2948 +12048 2948 +12176 2948 +12336 2948 +12432 2948 +12523 2948 +12560 1606 +12560 2354 +17552 1782 +17552 4092 +17552 6578 +17552 7887 +17712 8184 +17856 8184 +17968 8184 +18192 8184 +18256 9427 +18256 10670 +9728 10032 +10032 10032 +10256 10032 +10320 10032 +10416 10032 +10480 10032 +10656 10032 +10736 10032 +10800 10032 +10928 10032 +11040 10032 +11216 10032 +11312 10032 +11440 10032 +11520 10032 +11600 10032 +11712 10032 +11792 10032 +11984 10032 +12080 10032 +12208 10032 +12384 10032 +12528 10032 +12656 10032 +12816 10032 +12944 10032 +13088 10032 +13232 10032 +13408 10032 +13536 10032 +13643 10032 +13680 2530 +13680 5148 +13680 7282 +13680 8866 +13680 9889 +17712 231 +17712 1782 +17712 4246 +17712 6325 +17840 6908 +17968 6908 +18128 7007 +18128 7766 +18128 10670 +9072 3487 +9072 5962 +9072 6908 +9072 9878 +9440 3388 +9520 3388 +9680 3388 +9840 3388 +10000 3388 +10096 3388 +10224 3388 +10288 3388 +10384 3388 +10512 3388 +10576 3388 +10640 3388 +10704 3388 +10800 3388 +10928 3388 +11056 3388 +11120 3388 +11216 3388 +11344 3388 +11488 3388 +11696 3388 +11760 3388 +11904 3388 +12048 3388 +12176 3388 +12336 3388 +12432 3388 +12544 3388 +12688 3388 +12763 3388 +12784 1606 +12784 2310 +9232 8107 +9232 9878 +9648 8008 +9744 8008 +9904 8008 +10016 8008 +10192 8008 +10256 8008 +10384 8008 +10496 8008 +10656 8008 +10816 8008 +10928 8008 +11040 8008 +11120 8008 +11216 8008 +11328 8008 +11504 8008 +11568 8008 +11632 8008 +11696 8008 +11760 8008 +11824 8008 +11968 8008 +12192 8008 +12272 8008 +12384 8008 +12528 8008 +12656 8008 +12800 8008 +12880 8008 +12944 8008 +13088 8008 +13264 8008 +13392 8008 +13520 8008 +13632 8008 +13712 2530 +13712 5148 +13712 7282 +8400 1188 +8400 6919 +8420 7040 +8507 7040 +8528 7139 +8528 8866 +9168 1639 +9168 2948 +9168 5962 +9168 7018 +9168 8074 +9168 9878 +9264 1452 +9424 1452 +9584 1452 +9680 1452 +9808 1452 +9872 1452 +10000 1452 +10096 1452 +10224 1452 +10288 1452 +10384 1452 +10512 1452 +10576 1452 +10640 1452 +10704 1452 +10800 1452 +10928 1452 +11056 1452 +11120 1452 +11216 1452 +11344 1452 +11488 1452 +11696 1452 +11760 1452 +11904 1452 +12048 1452 +12176 1452 +12304 902 +9360 2827 +9412 2728 +9680 2728 +9808 2728 +9872 2728 +10000 2728 +10096 2728 +10224 2728 +10288 2728 +10384 2728 +10512 2728 +10576 2728 +10640 2728 +10704 2728 +10800 2728 +10928 2728 +11056 2728 +11120 2728 +11216 2728 +11344 2728 +11488 2728 +11696 2728 +11760 2728 +11904 2728 +12048 2728 +12176 2728 +12336 2728 +12432 2728 +12512 2728 +12592 1606 +12592 2475 +14864 2530 +14864 4378 +14864 5478 +14864 6798 +14864 8646 +14864 9878 +14864 11429 +7760 8745 +7776 8448 +7792 1188 +7792 4818 +15312 7887 +15312 8646 +15312 9878 +15312 10626 +15312 11429 +15344 7788 +15376 2530 +15376 5478 +15376 6798 +15376 7689 +6864 429 +6864 1518 +6864 2574 +6864 4048 +7008 5368 +7088 5368 +7184 5368 +7328 5368 +7584 5368 +7664 5368 +7760 5368 +7824 5368 +7888 5368 +7952 5368 +8048 5368 +8176 5368 +8336 5368 +8432 5368 +8496 5368 +8752 5368 +8848 5368 +8992 5368 +9440 5368 +9552 5368 +9680 5368 +9824 5368 +10016 5368 +10160 5368 +10224 5368 +10288 5368 +10384 5368 +10512 5368 +10608 5368 +10704 7392 +10704 11495 +12400 11484 +12528 11000 +12656 11000 +12816 11000 +12944 11000 +13088 11000 +13232 11000 +13392 11000 +13536 11000 +13696 11000 +13968 11000 +14192 11000 +14272 11000 +14384 11000 +14448 11000 +12400 11176 +14576 2530 +14576 5368 +14576 6798 +14576 8646 +14576 9878 +14704 11000 +14784 11000 +14960 11000 +15120 11000 +15392 11000 +15520 11000 +15712 11000 +15792 11000 +15856 11000 +16048 11000 +16224 11000 +16432 11000 +16496 11484 +16496 11176 +7088 8536 +7088 10802 +7152 638 +7152 1518 +7152 4048 +7152 7139 +15952 2343 +15972 2992 +16128 2992 +16272 2992 +16400 2992 +16544 2992 +16656 2992 +16752 2992 +16912 2992 +17040 2992 +17104 2992 +17184 2992 +17392 2992 +17504 2992 +17744 4125 +17744 6204 +17744 7766 +17744 8734 +17744 9603 +17744 10670 +15664 2530 +15664 5368 +15664 6798 +15664 8426 +15664 9878 +15664 10626 +15664 11429 +17584 231 +17584 1782 +17584 4092 +17584 6578 +17584 7766 +17584 9603 +17584 10670 +16432 2222 +16432 3850 +16432 5478 +16432 6798 +16432 7887 +16528 10890 +8144 1188 +8144 4818 +8144 7018 +8144 8756 +9616 231 +9616 1012 +9616 1760 +9616 7139 +12112 902 +12112 4488 +12112 5962 +12112 7392 +8368 1188 +8368 6908 +8368 8767 +12784 11429 +12804 8844 +12880 8844 +12944 8844 +13088 8844 +13264 8844 +13392 8844 +13531 8844 +13552 2530 +13552 3938 +13552 4928 +13552 7282 +13552 8657 +18864 10846 +18864 11528 +18916 9086 +19024 9086 +11920 7392 +11920 11165 +11936 6776 +11952 902 +11952 4488 +11952 6072 +10320 231 +10320 1012 +10320 1760 +10320 7392 +10427 9504 +11824 902 +11824 4488 +11824 6083 +11840 6336 +11856 7392 +11856 11165 +12656 1606 +12656 2574 +12656 4708 +12656 6072 +12672 6776 +12688 7392 +12688 11429 +5008 11495 +5072 2178 +5072 4048 +5072 6402 +5072 7194 +13168 1606 +13168 2310 +13168 3124 +13168 3938 +13168 4928 +13168 5929 +13296 6028 +13456 6028 +13520 6028 +13632 6028 +13760 6028 +13920 6028 +14080 6028 +14192 6028 +14256 6028 +14400 6028 +14512 6028 +14704 6028 +14816 6028 +14928 6028 +15136 6028 +15328 6028 +15440 6028 +15600 6028 +15712 6028 +15792 6028 +15888 6028 +15984 6028 +16128 6028 +16288 6028 +16544 6028 +16656 6028 +16752 6028 +16816 6028 +16912 6028 +17040 6028 +17104 6028 +17168 6028 +17392 6028 +17504 6028 +17680 6457 +17680 7766 +17680 9603 +17680 10670 +3312 10692 +3344 3113 +3344 6864 +3344 10153 +14544 2530 +14544 5368 +14544 6798 +14544 8646 +14544 9878 +14544 11539 +6736 638 +6736 1518 +6736 2574 +6736 4048 +6736 8646 +6736 9438 +6832 11440 +7024 11440 +7200 11440 +7440 11440 +7536 11440 +7600 11440 +7696 11440 +7824 11440 +7888 11440 +8096 11440 +8176 11440 +8272 11440 +8368 11440 +8432 11440 +8720 11440 +8848 11440 +9104 11440 +9728 11440 +10032 11440 +10256 11440 +10320 11440 +10480 11440 +10544 11528 +11792 902 +11792 4488 +11792 6072 +11792 7392 +11808 8228 +11824 11165 +8720 1188 +8720 5962 +8848 7700 +9104 7700 +9232 7700 +6064 319 +6064 2024 +6064 4048 +6064 5335 +6100 5588 +6192 5588 +6256 5588 +6416 5588 +6560 5588 +6672 5588 +6779 5588 +6800 7128 +6800 8646 +6800 9438 +6864 6556 +6992 6556 +7088 6556 +7184 6556 +7328 6556 +7616 6556 +7744 6556 +7824 6556 +7888 6556 +8048 6556 +8176 6556 +8432 6556 +8512 6556 +8832 6556 +8944 1188 +8944 5962 +8944 6897 +8944 9878 +5968 319 +5968 2024 +5968 4048 +5968 5324 +6096 7700 +6192 7700 +6416 7700 +6544 7700 +6672 7700 +6864 7700 +6928 7700 +7040 7700 +7152 8536 +7152 10802 +7204 9504 +7536 9504 +7600 9504 +7696 9504 +7824 9504 +7904 9504 +8096 9504 +8176 9504 +8272 9504 +8368 9504 +8432 9504 +8720 9504 +8864 9504 +9104 9504 +9728 9504 +9968 231 +9968 1012 +9968 1760 +11952 11165 +11972 8228 +12192 8228 +12272 8228 +12384 8228 +12528 8228 +12656 8228 +12800 8228 +12880 8228 +12944 8228 +13088 8228 +13264 8228 +13392 8228 +13520 8228 +13632 8228 +13744 8228 +13968 8228 +14192 8228 +14272 8228 +14384 8228 +14448 8228 +14512 8228 +14704 8228 +14784 8228 +15120 8228 +15392 8228 +15472 8228 +15536 484 +15536 671 +15536 2530 +15536 5368 +15536 6798 +15600 572 +15728 572 +15792 572 +15888 572 +15984 572 +16128 572 +16272 572 +16400 572 +16560 572 +16656 572 +16752 572 +16912 572 +17040 572 +17184 572 +17392 572 +17504 572 +17824 572 +17968 572 +18032 572 +18128 352 +7568 8756 +7600 6116 +7632 1188 +7632 4818 +11728 902 +11728 4488 +11728 6072 +11728 7392 +11744 8228 +11760 11165 +19024 11528 +12272 902 +12272 4488 +12272 5962 +12384 6776 +12496 7392 +12496 11429 +10656 8228 +10736 231 +10736 902 +10736 1760 +10736 7392 +7504 8756 +7568 638 +7568 1518 +7568 3949 +7568 4147 +7568 4939 +7664 4048 +7760 4048 +7824 4048 +7888 4048 +7952 4048 +8048 4048 +8208 4048 +8336 4048 +8432 4048 +8496 4048 +8688 4048 +8763 4048 +8784 1188 +8784 3949 +8784 8866 +7888 9064 +7920 1188 +7920 4818 +7920 8767 +7940 4268 +8048 4268 +8208 4268 +8336 4268 +8432 4268 +8496 4268 +8688 4268 +8752 4268 +8848 4268 +8912 4268 +8992 4268 +9440 4268 +9552 4268 +9680 4268 +9824 4268 +9936 4268 +10000 4268 +10224 4268 +10288 4268 +10384 4268 +10523 4268 +10544 231 +10544 1012 +10544 1760 +10544 7392 +10656 11132 +10768 11132 +10928 11132 +10992 11550 +10992 11308 +8208 7018 +8208 8756 +8336 4708 +8432 4708 +8496 4708 +8752 4708 +8848 4708 +8992 4708 +9440 4708 +9552 4708 +9680 4708 +9824 4708 +9936 4708 +10000 4708 +10224 4708 +10288 4708 +10384 4708 +10512 4708 +10587 4708 +10608 231 +10608 902 +10608 1760 +11984 902 +11984 4488 +11984 6072 +12000 6776 +12016 7392 +12016 11165 +8560 5962 +8560 7018 +8560 8866 +8624 2288 +8752 2288 +8848 2288 +8976 2288 +9040 2288 +9264 2288 +9360 671 +9360 1760 +11376 11385 +11440 231 +11440 902 +11440 4488 +11440 6072 +11440 7392 +10256 8228 +10352 231 +10352 1012 +10352 1760 +10352 7392 +11472 7392 +11472 11275 +11492 6336 +11568 231 +11568 902 +11568 4488 +11568 6083 +11184 11385 +11204 9064 +11344 9064 +11515 9064 +11536 231 +11536 902 +11536 4488 +11536 5962 +11536 7392 +656 3575 +656 9922 +15824 5368 +15824 6798 +15824 8426 +15824 9878 +15824 10626 +15824 11429 +15888 4488 +15984 4488 +16128 4488 +16283 4488 +16304 2222 +16304 3861 +6608 429 +6608 1518 +6608 2574 +6608 4048 +6660 5060 +6784 5060 +6896 7128 +6896 8646 +6896 10802 +12048 7392 +12048 11165 +12187 6776 +12208 902 +12208 4488 +12208 5962 +155 11198 +8912 5962 +8912 7018 +8912 9878 +8992 4488 +9440 4488 +9552 4488 +9680 4488 +9824 4488 +9936 4488 +10000 4488 +10224 4488 +10288 4488 +10384 4488 +10512 4488 +10576 4488 +10640 4488 +10704 4488 +10800 4488 +10864 231 +10864 902 +10864 1760 +10864 4389 +10864 4587 +10928 5896 +11067 5896 +11088 7392 +11088 11385 +9264 6908 +9264 9878 +9440 3168 +9520 231 +9520 1012 +9520 1760 +12240 902 +12240 4488 +12240 5962 +12240 7392 +12240 11165 +7312 8756 +7312 10802 +7536 638 +7536 1518 +7536 4048 +7536 4818 +3280 3113 +3280 6864 +3300 9372 +3504 9372 +3568 9372 +3632 10142 +11376 231 +11376 902 +11376 4488 +11376 6072 +11376 7392 +11504 8228 +11568 11275 +11280 11385 +11316 10472 +11440 10472 +11520 10472 +11600 10472 +11712 10472 +11792 10472 +11984 10472 +12080 10472 +12208 10472 +12384 10472 +12528 10472 +12656 10472 +12816 10472 +12944 10472 +13088 10472 +13232 10472 +13392 10472 +13536 10472 +13696 10472 +13968 10472 +14160 2530 +14160 5258 +14160 7172 +14160 8866 +14160 9878 +3152 3113 +3152 6864 +3188 7920 +3312 7920 +3408 10153 +3408 10571 +3504 10472 +3584 10472 +3712 10472 +3888 10472 +4048 10472 +4128 10472 +4272 10472 +4400 10472 +4528 10472 +4624 10472 +4688 10472 +4784 10472 +4955 10472 +4976 10373 +4992 9812 +4976 11495 +5008 2178 +5008 4048 +5008 6402 +528 3575 +528 9812 +16016 2222 +16016 3740 +16016 5368 +16016 6798 +16016 7766 +16016 8624 +16016 9834 +16068 9922 +16208 9922 +16432 9922 +16496 9922 +16592 9922 +16688 9922 +16784 9922 +16912 9922 +17040 9922 +17136 9922 +17280 9922 +17360 10670 +17360 11528 +5872 8382 +5872 10802 +5888 5060 +5904 209 +5904 2024 +5904 4048 +976 11055 +1104 10912 +1232 10912 +1584 10912 +1712 10912 +1776 10912 +1904 10912 +2064 10912 +2240 10912 +2464 10912 +2736 10912 +3019 10912 +3056 3113 +3056 6864 +3056 10153 +3168 10912 +3344 10912 +3504 10912 +3584 10912 +3712 10912 +3888 10912 +4048 10912 +4128 10912 +4272 10912 +4400 10912 +4464 10912 +4528 10912 +4624 10912 +4688 11495 +13456 8536 +13456 9174 +13456 11429 +13520 7788 +13632 7788 +13760 7788 +13968 7788 +14192 7788 +14272 7788 +14384 7788 +14448 2530 +14448 5368 +14448 6798 +14512 7788 +14704 7788 +14816 7788 +14928 7887 +14928 8646 +14928 9878 +14928 11429 +16048 2222 +16048 3740 +16048 5368 +16048 6798 +16048 7766 +16128 8404 +16304 8404 +16432 8404 +16592 8404 +16688 8404 +16752 8404 +16816 8404 +16912 8404 +17008 10560 +17008 11528 +560 9801 +752 8404 +912 8404 +976 8404 +1104 8404 +1232 8404 +1328 8404 +1536 8404 +1616 8404 +1696 8404 +1776 8404 +1872 8404 +1936 8404 +2112 8404 +2192 8404 +2288 8404 +2464 8404 +2635 8404 +2704 3113 +2704 6864 +2804 8140 +2960 8140 +3024 8140 +3168 8140 +3312 8140 +3504 8140 +3632 8140 +3696 8140 +3824 8140 +3952 8140 +4096 8140 +4272 8140 +4336 8140 +2704 8250 +4432 11495 +14032 2530 +14032 5258 +14032 7293 +14068 7568 +14192 7568 +14272 7568 +14384 7568 +14512 7568 +14704 7568 +14816 7568 +14928 7568 +15131 7568 +15248 7777 +15248 8646 +15248 9878 +15248 10626 +15248 11429 +13584 2530 +13584 3949 +13620 4048 +13872 4048 +14096 4048 +14224 4048 +14400 4048 +14512 4048 +14736 4048 +14800 4048 +14896 4257 +14896 5478 +14896 6798 +14896 8646 +14896 9878 +14896 11429 +14608 2530 +14608 5368 +14608 6798 +14608 8646 +14608 9878 +14608 11539 +13392 1606 +13392 2794 +13392 3938 +13392 4928 +13456 6248 +13520 6248 +13632 6248 +13760 6248 +13920 6248 +14080 6248 +14192 6248 +14256 6248 +14400 6248 +14512 6248 +14704 6248 +14816 6248 +14928 6248 +15136 6248 +15328 6248 +15440 6248 +15600 6248 +15712 6248 +15792 6248 +15888 6248 +15984 6248 +16128 6248 +16288 6248 +16544 6248 +16656 6677 +16656 7876 +16656 10890 +16672 6248 +16688 1012 +16688 2222 +16688 3850 +16688 5478 +12752 1606 +12752 2431 +12816 2640 +12944 2640 +13120 2640 +13339 2640 +13360 3003 +13360 3938 +13360 4928 +13360 6402 +13360 7392 +13360 8536 +13360 9174 +13360 11429 +16208 2222 +16208 3740 +16208 5368 +16208 6798 +16208 7766 +16283 8624 +16304 10461 +16304 11429 +1392 8778 +1392 10032 +1456 6336 +1552 6336 +1648 6336 +1760 6336 +1872 6336 +2000 6336 +2112 6336 +2192 6336 +2288 6336 +2480 6336 +2608 6336 +2736 6336 +2880 6336 +3024 6336 +3200 6336 +3312 6336 +3408 3058 +3408 6160 +3808 6336 +3888 6336 +3952 6336 +4096 6336 +4176 6336 +4256 6336 +4432 6336 +4496 6336 +4560 7810 +4560 8866 +4560 11495 +3696 3113 +3696 7029 +3808 7260 +3888 7260 +3952 7260 +4096 7260 +4176 7260 +4256 7260 +4336 7260 +4432 7260 +4496 7260 +4640 7260 +4768 7260 +4848 7260 +4912 7260 +5040 11495 +4912 11495 +5104 2178 +5104 4048 +5104 6402 +5104 7315 +14352 2530 +14352 5368 +14352 6908 +14352 8866 +14352 9878 +14352 11539 +5328 6391 +5328 7194 +5328 10582 +5392 2178 +5392 4048 +5744 10802 +5760 8624 +5776 2024 +5776 4048 +5776 8393 +1488 3113 +1488 6908 +1488 8778 +1488 10032 +4016 2959 +4016 6908 +4128 9152 +4272 9152 +7984 1188 +7984 4818 +7984 8756 +6160 429 +6160 2024 +6160 4048 +6160 8382 +6160 10802 +6160 11495 +5264 2178 +5264 4048 +5264 6402 +5264 7194 +5552 9812 +5632 9812 +5808 9812 +5968 9812 +6032 9812 +6112 9812 +6192 9812 +6352 9812 +6448 9812 +6672 9812 +6848 9812 +6928 9812 +7024 9812 +7216 9812 +7536 9812 +7600 9812 +7696 9812 +7824 9812 +7904 9812 +8096 9812 +8176 9812 +8272 9812 +8368 9812 +8432 9812 +8720 9812 +8859 9812 +8880 9911 +9200 7018 +9200 8074 +9200 9878 +9296 671 +9296 1760 +9296 2838 +6512 429 +6512 2024 +6512 4048 +6512 8657 +6528 8844 +6544 9438 +6544 11495 +9904 231 +9904 1012 +9904 1760 +6928 638 +6928 1518 +6928 2574 +6928 4048 +6928 7139 +6944 7260 +6960 8646 +6960 10802 +10896 10362 +10896 11495 +10916 9504 +11040 9504 +11216 9504 +11280 231 +11280 902 +11280 4488 +11280 7392 +7408 10912 +7440 638 +7440 1518 +7440 4048 +7440 4928 +7440 8756 +12592 4708 +12592 6072 +12592 7392 +12592 11429 +12608 3608 +12624 1606 +12624 2574 +12688 3608 +12784 3608 +12928 3608 +13120 3608 +13328 3608 +13456 3608 +13520 3608 +13632 3608 +13872 3608 +14096 3608 +14224 3608 +14400 3608 +14512 3608 +14736 3608 +14800 3608 +14912 3608 +15120 3608 +15328 3608 +15408 3608 +15472 3608 +15600 3608 +15712 3608 +15792 3608 +15899 3608 +15920 3927 +15920 5368 +15920 6798 +15920 7766 +15920 8624 +15920 9878 +15920 10626 +15920 11429 +12336 7392 +12336 11165 +12352 6116 +12368 902 +12368 1606 +12368 4488 +12368 5973 +17616 6578 +17616 7766 +17616 9603 +17616 10670 +17835 5500 +17872 231 +17872 1628 +17872 4213 +11632 902 +11632 4488 +11632 6083 +11648 6336 +11664 7392 +11664 11275 +14480 2530 +14480 5368 +14480 6798 +14480 8866 +14480 9878 +14480 11539 +17648 231 +17648 1782 +17648 4246 +17648 6578 +17648 7766 +17648 9603 +17648 10670 +624 3575 +624 9922 +12400 902 +12400 1606 +12400 4488 +12400 5973 +12416 6116 +12432 7392 +12432 11429 +12080 902 +12080 4488 +12080 5962 +12080 7392 +12096 9504 +12112 11165 +17776 231 +17776 1628 +17776 4092 +17776 6204 +17776 7766 +17776 8734 +17776 9603 +17776 10670 +12464 902 +12464 1606 +12516 4268 +12688 4268 +12800 4268 +12912 4268 +13120 4268 +13328 4268 +13456 4268 +13520 4268 +13616 4268 +13872 4268 +14091 4268 +14128 5258 +14128 7172 +14128 8866 +14128 9878 +14128 11539 +17744 231 +17744 1749 +17824 2684 +17979 2684 +18000 4675 +18000 7766 +18000 10670 +16624 1012 +16624 2222 +16624 3850 +16624 5478 +16624 6798 +16624 7876 +16624 10890 +13232 1606 +13232 2310 +13232 3124 +13232 3938 +13232 4928 +13232 7282 +13232 8536 +13232 9185 +13248 9284 +13264 11429 +10192 231 +10192 1012 +10192 1760 +18416 10670 +18500 9438 +18656 9438 +18784 9438 +18928 9438 +19024 9438 +912 3410 +912 6864 +928 7040 +944 9922 +14320 2530 +14320 5368 +14320 6908 +14320 8866 +14320 9878 +14320 11539 +7696 1188 +7696 4818 +7696 6908 +7760 7700 +7824 7700 +7888 7700 +8016 8756 +18832 10725 +18832 11528 +18928 10494 +19024 10494 +14768 2530 +14768 5478 +14768 6798 +14800 8008 +14832 8646 +14832 9878 +14832 11429 +6640 220 +6676 308 +6795 308 +6832 220 +6832 517 +6832 1518 +6832 2574 +6832 4048 +6832 5434 +6832 7128 +6832 8646 +6852 9284 +6928 9284 +7024 9284 +7216 9284 +7536 9284 +7600 9284 +7696 9284 +7824 9284 +7904 9284 +8096 9284 +8176 9284 +8272 9284 +8368 9284 +8432 9284 +8720 9284 +8864 9284 +9104 9284 +9728 9284 +10032 9284 +10256 9284 +10448 9284 +10656 9284 +10736 9284 +10800 9284 +10912 9284 +11040 9284 +11216 9284 +11344 9284 +11520 9284 +11600 9284 +11712 9284 +11792 9284 +11984 9284 +12128 9284 +12208 9284 +12384 9284 +12528 9284 +12656 9284 +12843 9284 +12880 11429 +7344 8756 +7344 10802 +7600 7260 +7760 7260 +7824 7260 +7888 7260 +8043 7260 +8080 1188 +8080 4818 +8080 7029 +10128 231 +10128 1012 +10128 1760 +10148 5896 +10224 5896 +10384 5896 +10512 5896 +10587 5896 +10608 7392 +10608 11495 +16496 2222 +16496 3850 +16496 5478 +16496 6798 +16496 7766 +16592 9284 +16688 9284 +16784 9284 +16912 9284 +17040 9284 +17136 9284 +17280 9284 +17392 9592 +17392 10670 +17392 11528 +4592 2684 +4592 5434 +4592 7810 +4592 8866 +4592 11495 +10576 7392 +10576 11495 +10656 6336 +10800 6336 +10864 6336 +10928 6336 +11024 231 +11024 902 +11024 1760 +11024 4488 +2384 3113 +2384 6644 +2384 10032 +2928 10032 +2944 6952 +2960 3113 +2960 6875 +5168 2178 +5168 4048 +5168 6402 +5168 7458 +5168 10582 +2544 3113 +2544 6754 +2544 10032 +9648 231 +9648 1012 +9648 1760 +9648 7128 +9664 7788 +1808 8052 +1808 10032 +1872 7172 +1984 7172 +2112 7172 +2192 7172 +2288 7172 +2464 7172 +2624 7172 +2736 7172 +2864 7172 +2960 7172 +3024 7172 +3200 7172 +3312 7172 +3408 7172 +3472 3113 +3472 6985 +9488 231 +9488 1012 +9488 1760 +9488 7128 +2000 8041 +2000 8778 +2000 10032 +2112 7920 +2192 7920 +2288 7920 +2464 7920 +2624 7920 +2816 7920 +2960 7920 +3024 7920 +3120 3113 +3120 6864 +8752 8866 +8816 1188 +8816 3938 +8816 5973 +1008 3575 +1008 9658 +1296 7821 +1296 9658 +1316 7700 +1536 7700 +1648 7700 +1760 7700 +1872 7700 +1984 7700 +2112 7700 +2192 7700 +2288 7700 +2464 7700 +2624 7700 +2747 7700 +2768 3113 +2768 6864 +1360 3223 +1360 8778 +1360 10032 +2032 8778 +2032 10032 +2112 6952 +2192 6952 +2288 6952 +2416 3113 +2416 6765 +560 3410 +560 6864 +576 7040 +592 9922 +1712 3113 +1712 7018 +1712 8063 +1728 8184 +1744 10032 +5104 10582 +5104 11495 +5120 7920 +5136 2178 +5136 4048 +5136 6402 +5136 7469 +2064 3113 +2064 6644 +2064 8789 +2080 8932 +2096 10032 +3072 11220 +3088 3113 +3088 6864 +3088 10032 +3248 3113 +3248 6864 +3248 10032 +10960 231 +10960 902 +10960 1760 +10960 4488 +10960 7392 +10960 10362 +10960 11495 +2976 10692 +2992 3113 +2992 6864 +2992 10043 +10832 10362 +10832 11495 +10896 231 +10896 902 +10896 1760 +10896 4488 +10896 7392 +10832 231 +10832 902 +10832 1760 +10848 6776 +10864 7392 +10864 10362 +10864 11495 +17968 10670 +18368 9790 +18512 9790 +18656 9790 +18784 9790 +18928 9790 +19024 9790 +3376 3113 +3376 6864 +3504 9592 +3568 9592 +3664 10142 +2224 3113 +2224 6644 +2276 8712 +2464 8712 +2736 8712 +2960 8712 +3024 8712 +3168 8712 +3312 8712 +3504 8712 +3632 8712 +3696 8712 +3824 8712 +3952 8712 +8848 9064 +8880 1188 +8880 3938 +8880 5962 +8880 7018 +16080 2222 +16080 3740 +16080 5368 +16080 6798 +16080 7766 +16080 8745 +16112 8844 +16144 10626 +16144 11429 +13296 1606 +13296 2310 +13296 3124 +13296 3938 +13296 4928 +13456 5808 +13520 5808 +13632 5808 +13760 5808 +13920 5808 +14080 5808 +14203 5808 +14224 7172 +14224 8866 +14224 9878 +14224 11539 +14160 11539 +14180 10780 +14272 10780 +14384 10780 +14448 10780 +14704 10780 +14784 10780 +14960 2530 +14960 4158 +14960 5478 +14960 6798 +14960 7898 +14960 8646 +14960 9878 +14960 10637 +17104 10560 +17104 11528 +17120 8404 +17136 1782 +17136 4356 +17136 6688 +17136 7722 +15440 8646 +15440 9878 +15440 10626 +15440 11429 +15460 7788 +15600 7788 +15712 7788 +15792 7788 +15856 2530 +15856 4048 +15856 5368 +15856 6798 +15856 7689 +15344 8646 +15344 9878 +15344 10626 +15344 11429 +15380 8008 +15472 8008 +15568 2530 +15568 5368 +15568 6798 +4208 2365 +4208 5434 +4208 6908 +18320 3619 +18320 7876 +18320 9427 +18320 10670 +12144 902 +12144 4488 +12144 5962 +12144 7392 +12160 9064 +12176 11165 +14992 4323 +14992 5478 +14992 6798 +14992 7898 +14992 8646 +14992 9878 +14992 10626 +14992 11429 +15124 4180 +15328 4180 +15408 4180 +15472 4180 +15600 4180 +15712 4180 +15803 4180 +15824 2530 +15824 4015 +16336 10461 +16336 11429 +16432 8624 +16592 8624 +16688 8624 +16752 8624 +16816 8624 +16912 8624 +17040 8624 +17136 8624 +17243 8624 +17264 1782 +17264 4092 +17264 6688 +17264 7722 +17264 8481 +9712 231 +9712 1012 +9712 1760 +9712 7128 +17072 1012 +17072 2222 +17072 4356 +17072 6688 +17072 7722 +17072 10560 +17072 11528 +13552 11418 +13696 11220 +13968 11220 +14192 11220 +14272 11220 +14384 11220 +14448 11220 +14576 11220 +14672 2530 +14672 5368 +14672 6798 +14672 8646 +14672 9878 +14688 11220 +14704 11418 +16464 2222 +16464 3850 +16464 5478 +16464 6798 +16464 7766 +16464 10461 +16464 11429 +144 11528 +320 11440 +496 11440 +752 11440 +912 11440 +1104 11440 +1232 11440 +1584 11440 +1712 11440 +1776 11440 +1904 11440 +2064 11440 +2251 11440 +2352 3113 +2352 6644 +2352 10032 +2352 11297 +2464 11440 +2736 11440 +3008 11440 +3152 11440 +3344 11440 +3504 11440 +3584 11440 +3712 11440 +3888 11440 +4048 11440 +4128 11440 +4272 11440 +4368 11528 +13168 7282 +13168 8536 +13168 9174 +13168 11429 +13264 1606 +13264 2310 +13264 3124 +13264 3938 +13264 4928 +13264 6413 +7792 8899 +7824 8756 +7856 1188 +7856 4818 +7856 8613 +16720 1012 +16720 2222 +16720 3850 +16720 5478 +16720 6688 +16720 7876 +16720 10560 +16720 11528 +19056 11528 +12976 3938 +12976 4708 +12976 6072 +12976 7282 +12976 8536 +12976 9174 +12976 11429 +13040 473 +13040 1606 +13040 2310 +15920 2497 +15936 3300 +15952 3773 +15952 5368 +15952 6798 +15952 7766 +15952 8624 +15952 9878 +15952 10626 +15952 11429 +5296 6402 +5296 7194 +5296 10582 +5312 5588 +5328 2178 +5328 4048 +11856 902 +11856 4488 +11856 5929 +11872 6028 +11888 6171 +11888 7392 +11888 11165 +15504 583 +15504 2530 +15504 5368 +15504 6798 +15504 8646 +15552 9284 +15600 9878 +15600 10626 +15600 11429 +5840 209 +5840 2024 +5840 4048 +5840 8382 +5840 10802 +4368 2365 +4368 5434 +4368 7810 +4388 11132 +4464 11132 +4528 11132 +4624 11132 +4784 11132 +4944 11132 +5136 11132 +5200 11132 +5360 11132 +5552 11132 +5616 11132 +5808 11132 +5968 11132 +6032 11132 +6112 11132 +6208 11132 +6352 11132 +6464 11132 +6672 11132 +6832 11132 +7024 11132 +7200 11132 +7440 11132 +7536 11132 +7600 11132 +7696 11132 +7824 11132 +7888 11132 +6288 429 +6288 2024 +6288 4048 +6416 8228 +6544 8228 +6672 8228 +6864 8228 +6928 8228 +7040 8228 +7184 8228 +7536 8228 +7600 8228 +7696 8228 +7760 8228 +7824 8228 +7888 8228 +8096 8228 +8176 8228 +8256 8228 +8448 8228 +8720 8228 +8848 8228 +9115 8228 +9136 9878 +4624 2684 +4624 5445 +4644 5808 +4752 5808 +4848 5808 +4912 5808 +5040 5808 +5328 5808 +5664 5808 +6096 5808 +6192 5808 +6256 5808 +6416 5808 +6560 5808 +6672 5808 +6768 5808 +6864 5808 +6992 5808 +7088 5808 +7184 5808 +7328 5808 +7584 5808 +7664 5808 +7760 5808 +7824 5808 +7888 5808 +7952 5808 +8048 5808 +8176 5808 +8336 6908 +8336 8646 +9008 1188 +9440 3828 +9552 3828 +9680 3828 +9824 3828 +9936 3828 +10000 3828 +10224 3828 +10288 3828 +10384 3828 +10512 3828 +10576 3828 +10640 3828 +10704 3828 +10800 3828 +10928 3828 +11056 3828 +11120 3828 +11216 3828 +11344 3828 +11488 3828 +11680 3828 +11760 3828 +11904 3828 +12048 3828 +12176 3828 +12336 3828 +12432 3828 +12528 3828 +12624 3828 +12688 3828 +12752 4708 +12752 6072 +12752 7392 +12752 8646 +12752 11429 +14512 9163 +14512 9878 +14512 11539 +14704 9064 +14784 9064 +15120 9064 +15392 9064 +15472 9064 +15568 9064 +15712 9064 +15792 9064 +15856 9064 +15984 9064 +16080 9064 +16208 9064 +16432 9064 +16592 9064 +16688 9064 +16784 9064 +16912 9064 +17040 9064 +17136 9064 +17280 9064 +17392 9064 +17472 9064 +17552 9064 +17952 9064 +18224 9064 +18427 9064 +18512 4037 +18512 8855 +6480 429 +6480 2024 +6480 4048 +6480 8646 +6672 10252 +6848 10252 +7024 10252 +7200 10252 +7376 10252 +7536 10252 +7600 10252 +7696 10252 +7824 10252 +7888 10252 +7984 10252 +8096 10252 +8176 10252 +8272 10252 +8368 10252 +8432 10252 +8720 10252 +8848 10252 +9104 10252 +9728 10252 +10032 10252 +10256 10252 +10320 10252 +7472 638 +7472 1518 +7472 4048 +7472 4928 +7472 8756 +7536 10912 +7600 10912 +7696 10912 +7824 10912 +7888 10912 +7984 10912 +8096 10912 +8176 10912 +8272 10912 +8368 10912 +8432 10912 +8720 10912 +8848 10912 +9104 10912 +9728 10912 +10032 10912 +10256 10912 +10320 10912 +10480 10912 +10656 10912 +10768 10912 +10928 10912 +11024 10912 +11216 10912 +11328 10912 +11440 11440 +11440 11088 +4848 7755 +4848 11495 +4864 7612 +4880 2618 +4880 6402 +8912 1188 +8912 3949 +8992 4048 +9440 4048 +9552 4048 +9680 4048 +9824 4048 +9936 4048 +10000 4048 +10224 4048 +10288 4048 +10384 4048 +10512 4048 +10576 4048 +10640 4048 +10704 4048 +10800 4048 +10928 4048 +11056 4048 +11120 4048 +11216 4048 +11344 4048 +11488 4048 +11680 4048 +11760 4048 +11904 4048 +12048 4048 +12176 4048 +12336 4048 +12432 4048 +12528 4048 +12624 4708 +12624 6072 +12624 7392 +12624 11429 +12688 4048 +12800 4048 +12880 1606 +12880 2310 +12880 3949 +4656 2629 +4720 4488 +4784 4488 +4848 4488 +4912 4488 +5040 4488 +5296 4488 +5664 4488 +5872 4488 +6128 4488 +6192 4488 +6256 4488 +6416 4488 +6560 4488 +6672 4488 +6784 4488 +6896 4488 +7008 4488 +7088 4488 +7184 4488 +7312 4488 +7504 4488 +7664 4488 +7760 4488 +7824 4488 +7888 4488 +7952 4488 +8048 4488 +8208 4488 +8336 4488 +8432 4488 +8496 4488 +8688 5962 +8688 8866 +12016 902 +12016 4488 +12016 6083 +12036 6336 +12176 6336 +12384 6336 +12523 6336 +12560 7392 +12560 11429 +17456 11528 +17476 11440 +17552 11440 +17920 11440 +18368 11440 +18523 11440 +18608 4037 +18608 8525 +18608 10670 +18608 11528 +14416 8866 +14416 9878 +14416 11539 +14512 7348 +14704 7348 +14816 7348 +14928 7348 +15136 7348 +15328 7348 +15440 7348 +15600 7348 +15712 7348 +15792 7348 +15888 7348 +15984 7348 +16128 7348 +16288 7348 +16544 7348 +16688 7348 +16752 7348 +16816 7348 +16912 7348 +17040 7348 +17104 7348 +17168 7348 +17408 7348 +17504 7348 +17712 7348 +17856 7348 +17968 7348 +18192 7348 +18256 7348 +18384 7348 +18448 3564 +18448 7172 +8592 1188 +8592 5962 +8592 6875 +8816 7095 +8836 8756 +9104 8756 +9728 8756 +10000 8756 +10256 8756 +10352 8756 +10464 8756 +10656 8756 +10736 8756 +10800 8756 +10912 8756 +11040 8756 +11200 8756 +11344 8756 +11504 8756 +11600 8756 +11712 8756 +11792 8756 +11984 8756 +12192 8756 +12272 8756 +12384 8756 +12528 8756 +12656 8756 +12720 11429 +4912 2299 +5040 3608 +5296 3608 +5664 3608 +5872 3608 +6128 3608 +6192 3608 +6256 3608 +6416 3608 +6560 3608 +6672 3608 +6784 3608 +6896 3608 +7008 3608 +7088 3608 +7184 3608 +7312 3608 +7504 3608 +7664 3608 +7760 3608 +7824 3608 +7888 3608 +7952 3608 +8048 3608 +8208 3608 +8336 3608 +8432 3608 +8496 3608 +8624 3608 +8752 3608 +8848 3608 +8976 3608 +9040 5962 +9040 6908 +9040 9878 +9328 671 +9328 1760 +9328 2838 +9728 9724 +10032 9724 +10256 9724 +10320 9724 +10416 9724 +10480 9724 +10656 9724 +10736 9724 +10800 9724 +10928 9724 +11040 9724 +11216 9724 +11312 9724 +11440 9724 +11520 9724 +11600 9724 +11712 9724 +11792 9724 +11984 9724 +12080 9724 +12208 9724 +12384 9724 +12528 9724 +12656 9724 +12827 9724 +12848 11429 +12944 9724 +13088 9724 +13232 9724 +13403 9724 +13424 1606 +13424 2794 +13424 3938 +13424 4928 +13424 7392 +13424 8536 +13424 9174 +16880 1012 +16880 2222 +16880 3850 +16880 5368 +16880 6688 +16880 7876 +16880 10560 +16880 11528 +18576 4037 +18576 8646 +18656 8866 +18859 8866 +18992 10846 +18992 11528 +8176 1188 +8176 4829 +8336 4928 +8432 4928 +8496 4928 +8752 4928 +8848 4928 +8992 4928 +9440 4928 +9552 4928 +9680 4928 +9824 4928 +9936 4928 +10000 4928 +10224 4928 +10288 4928 +10384 4928 +10512 4928 +10608 4928 +10704 4928 +10800 4928 +10928 4928 +11056 4928 +11120 4928 +11216 4928 +11344 4928 +11488 4928 +11680 4928 +11760 4928 +11904 4928 +12048 4928 +12176 4928 +12336 4928 +12443 4928 +12464 5962 +12464 7392 +12464 11429 +6000 10802 +6000 11495 +6016 8624 +6032 319 +6032 2024 +6032 4048 +6032 5324 +7088 638 +7088 1518 +7088 2409 +7184 2508 +7312 2508 +7504 2508 +7664 2508 +7760 2508 +7824 2508 +7888 2508 +7952 2508 +8048 2508 +8208 2508 +8336 2508 +8432 2508 +8496 2508 +8624 2508 +8752 2508 +8848 2508 +8976 2508 +9040 2508 +9264 2508 +9408 2508 +9680 2508 +9808 2508 +9872 2508 +10000 2508 +10096 2508 +10224 2508 +10288 2508 +10384 2508 +10512 2508 +10576 2508 +10640 2508 +10704 2508 +10800 2508 +10928 2508 +11056 2508 +11120 2508 +11216 2508 +11344 2508 +11408 4488 +11408 6072 +11408 7392 +11408 11385 +15760 2530 +15760 5368 +15760 6798 +15760 8426 +15760 9878 +15760 10626 +15760 11429 +112 9218 +112 11528 +260 7480 +480 7480 +560 7480 +736 7480 +848 7480 +912 7480 +976 7480 +1072 7480 +1152 7480 +1312 7480 +1536 7480 +1648 7480 +1760 7480 +1872 7480 +1984 7480 +2112 7480 +2192 7480 +2288 7480 +2464 7480 +2624 7480 +2736 7480 +2864 7480 +2960 7480 +3024 7480 +3200 7480 +3312 7480 +3419 7480 +3440 3113 +3440 6864 +5616 1914 +5616 4048 +5652 6336 +6096 6336 +6192 6336 +6256 6336 +6416 6336 +6544 6336 +6672 6336 +6768 6336 +6864 6336 +6992 6336 +7088 6336 +7184 6336 +7328 6336 +7616 6336 +7744 6336 +7824 6336 +7888 6336 +8048 6336 +8176 6336 +8432 6336 +8512 6336 +8832 6336 +8992 6336 +9296 6336 +9456 6336 +9552 6336 +9680 6336 +9808 6336 +10016 6336 +10139 6336 +16944 1012 +16944 2222 +16944 3850 +16944 5368 +16944 6688 +16944 7876 +16944 10560 +16944 11528 +9744 231 +9744 1012 +9744 1760 +9764 6996 +10016 6996 +10128 6996 +10224 6996 +10384 6996 +10496 6996 +10656 6996 +10816 6996 +10928 6996 +11040 6996 +11120 6996 +11216 6996 +11328 6996 +11504 6996 +11568 6996 +11632 6996 +11696 6996 +11760 6996 +11824 6996 +11968 6996 +12192 6996 +12272 6996 +12384 6996 +12528 6996 +12656 6996 +12800 6996 +12891 6996 +12912 7271 +12912 8536 +12912 9174 +12912 11429 +12933 6776 +13088 6776 +13280 6776 +13392 6776 +13456 6776 +13520 6776 +13632 6776 +13760 6776 +13920 6776 +14080 6776 +14192 6776 +14267 6776 +12912 6908 +14288 2530 +14288 5368 +14288 6633 +13904 11528 +13920 11440 +13936 11528 +13952 11440 +13968 11528 +6576 429 +6576 1639 +6672 2068 +6784 2068 +6896 2068 +7008 2068 +7184 2068 +7312 2068 +7504 2068 +7664 2068 +7760 2068 +7824 2068 +7888 2068 +7952 2068 +8048 2068 +8208 2068 +8336 2068 +8432 2068 +8496 2068 +8560 2068 +8624 2068 +8752 2068 +8848 2068 +8976 2068 +9040 2068 +9264 2068 +9424 2068 +9584 2068 +9680 2068 +9808 2068 +9872 2068 +10000 2068 +10096 2068 +10224 2068 +10288 2068 +10384 2068 +10512 2068 +10576 2068 +10640 2068 +10704 2068 +10800 2068 +10928 2068 +11056 2068 +11120 2068 +11227 2068 +11248 4488 +11248 7392 +11248 11385 +5552 2178 +5552 4048 +5552 6402 +5552 7403 +5648 7480 +5936 7480 +6096 7480 +6192 7480 +6416 7480 +6544 7480 +6672 7480 +6864 7480 +6928 7480 +7040 7480 +7168 7480 +7312 7480 +7600 7480 +7760 7480 +7824 7480 +7888 7480 +8048 7480 +8176 7480 +8272 7480 +8416 7480 +8656 7480 +8848 7480 +9104 7480 +9232 7480 +9616 7480 +9680 7480 +9760 7480 +10016 7480 +10128 7480 +10224 7623 +10160 231 +10160 1012 +10160 1760 +10224 5148 +10288 5148 +10384 5148 +10512 5148 +10608 5148 +10704 5148 +10800 5148 +10928 5148 +11056 5148 +11120 5148 +11216 5148 +11344 5148 +11488 5148 +11680 5148 +11760 5148 +11904 5148 +12048 5148 +12176 5148 +12336 5148 +12432 5148 +12528 5148 +12688 5148 +12800 5148 +12912 5148 +13115 5148 +13136 6182 +13136 7282 +13136 8536 +13136 9174 +13136 11429 +13328 4488 +13456 4488 +13520 4488 +13616 4488 +13872 4488 +14080 4488 +14224 4488 +14400 4488 +14512 4488 +14736 4488 +14811 4488 +13136 4840 +14832 2530 +14832 4389 +6000 319 +6000 2024 +6000 4048 +6000 5324 +6000 8239 +6064 8459 +6064 10802 +6064 11495 +17168 10560 +17168 11528 +17232 1782 +17232 4092 +17232 6688 +17232 7722 +4688 2508 +4688 5324 +4688 7711 +4752 8866 +4752 11495 +17232 10560 +17232 11528 +17264 8844 +17296 1782 +17296 4092 +17296 6688 +17296 7722 +17296 8591 +10416 231 +10416 1012 +10416 1760 +10416 7392 +3632 3113 +3632 7139 +3696 7480 +3808 7480 +3888 7480 +3952 7480 +4096 7480 +4176 7480 +4256 7480 +4336 7480 +4432 7480 +4496 7480 +4635 7480 +4656 7689 +4656 8866 +4656 11495 +10576 231 +10576 1023 +10640 1232 +10704 1232 +10800 1232 +10928 1232 +11056 1232 +11120 1232 +11216 1232 +11344 1232 +11488 1232 +11696 1232 +11760 1232 +11904 1232 +12048 1232 +12176 1232 +12336 1232 +12432 1232 +12528 1232 +12688 1232 +12816 1232 +12944 1232 +13120 1232 +13200 1485 +13200 2310 +13200 3124 +13200 3938 +13200 4928 +13200 7282 +13200 8536 +13200 9174 +13200 11429 +13344 1232 +13488 1232 +13632 1232 +13872 1232 +14096 1232 +14224 1232 +14400 1232 +14512 1232 +14736 1232 +14800 1232 +14912 1232 +15120 1232 +15328 1232 +15408 1232 +15472 1232 +15600 1232 +12144 11165 +12208 9504 +12384 9504 +12528 9504 +12656 9504 +12832 9504 +12944 9504 +13088 9504 +13232 9504 +13392 9504 +13536 9504 +13632 9504 +13744 9504 +13968 9504 +14192 9504 +14272 9504 +14384 9504 +14448 9504 +14704 9504 +14784 9504 +15120 9504 +15392 9504 +15520 9504 +15712 9504 +15792 9504 +15856 9504 +15984 9504 +16080 9504 +16208 9504 +16432 9504 +16496 9504 +16592 9504 +16688 9504 +16784 9504 +16912 9504 +17040 9504 +17136 9504 +17280 9504 +17360 1782 +17360 4092 +17360 6688 +17360 7722 +17360 8580 +10992 231 +10992 902 +10992 1760 +10992 4488 +10992 7392 +11028 10252 +11216 10252 +11312 10252 +11440 10252 +11520 10252 +11600 10252 +11712 10252 +11792 10252 +11984 10252 +12080 10252 +12208 10252 +12384 10252 +12528 10252 +12656 10252 +12816 10252 +12944 10252 +13088 10252 +13232 10252 +13403 10252 +13424 11429 +13536 10252 +13696 10252 +13968 10252 +14192 10252 +14272 10252 +14384 10252 +14448 10252 +14704 10252 +14784 10252 +15120 10252 +15392 10252 +15520 10252 +15712 10252 +15792 10252 +15856 10252 +16048 10252 +16219 10252 +16240 2222 +16240 3740 +16240 5368 +16240 6798 +16240 7766 +10448 231 +10448 1012 +10448 1760 +10448 7392 +5712 8459 +5712 10802 +5728 8316 +5744 2024 +5744 4048 +5744 8239 +17424 1782 +17424 4092 +17424 6699 +17504 7128 +17712 7128 +17808 7766 +17808 8734 +17808 9603 +17808 10670 +9520 7128 +9536 3608 +9552 231 +9552 1012 +9552 1760 +17328 1782 +17328 4092 +17328 6688 +17328 7722 +17328 8580 +17328 10670 +17328 11528 +19088 11528 +11408 231 +11408 902 +11488 1980 +11696 1980 +11760 1980 +11904 1980 +12048 1980 +12176 1980 +12336 1980 +12432 1980 +12528 1980 +12688 1980 +12816 1980 +12944 1980 +13120 1980 +13344 1980 +13467 1980 +13488 2673 +13488 3938 +13488 4928 +13488 7282 +13488 8536 +13488 9174 +13488 11429 +13509 1452 +13632 1452 +13872 1452 +14096 1452 +14224 1452 +14400 1452 +14512 1452 +14736 1452 +14800 1452 +14912 1452 +15120 1452 +15328 1452 +15408 1452 +15472 1452 +15600 1452 +15712 1452 +15792 1452 +15888 1452 +15984 1452 +16128 1452 +16272 1452 +16400 1452 +16544 1452 +16656 1452 +16752 1452 +16912 1452 +17040 1452 +13488 1738 +17104 1133 +11120 11385 +11184 231 +11184 902 +11184 1760 +11184 4488 +11184 7392 +5680 8382 +5680 10802 +5696 7700 +5712 2024 +5712 4048 +4304 2365 +4304 5434 +4304 6908 +4304 7810 +2128 10032 +2144 8932 +2160 3113 +2160 6644 +2160 8789 +5424 7183 +5424 10692 +5440 6996 +5456 2178 +5456 4048 +5456 6402 +11152 231 +11152 902 +11152 1760 +11152 4488 +11152 7392 +11152 11385 +15632 2530 +15632 5368 +15632 6798 +15632 8426 +15632 9878 +15632 10626 +15632 11429 +16176 2222 +16176 3740 +16176 5368 +16176 6798 +16176 7766 +16176 8734 +16176 10626 +16176 11429 +5392 7194 +5392 10692 +5408 6556 +5424 2178 +5424 4048 +5424 6413 +4464 2574 +4464 5434 +4464 7920 +4528 10692 +4624 10692 +4688 10692 +4784 10692 +4944 10692 +5072 10791 +5072 11495 +18352 3619 +18352 7887 +18372 8184 +18464 8184 +18667 8184 +18704 8404 +18704 10670 +18704 11528 +4528 2574 +4528 5434 +4528 7931 +4624 8140 +4688 8140 +4784 8140 +4944 8140 +5136 8140 +5488 8371 +5488 10692 +1680 10032 +1700 8932 +1776 8932 +1883 8932 +1904 3113 +1904 6754 +1904 8052 +1904 8789 +19120 11528 +19122 8030 +18256 3454 +18256 6952 +18272 7128 +18288 7876 +18288 9427 +18288 10670 +4752 2618 +4752 5225 +4772 5368 +4848 5368 +4912 5368 +5040 5368 +5296 5368 +5664 5368 +5904 5467 +5904 8382 +5904 10802 +1264 6787 +1264 7832 +1264 9658 +1284 6556 +1456 6556 +1552 6556 +1648 6556 +1760 6556 +1840 3113 +17872 9603 +17872 10670 +17952 8844 +18224 3619 +18224 7766 +4816 2618 +4816 6402 +4816 7700 +4816 8723 +4944 8844 +5136 8844 +5552 8844 +5632 8844 +5792 8844 +5968 8844 +6032 8844 +6112 8844 +6192 8844 +6320 11495 +848 9922 +912 8184 +976 8184 +1104 8184 +1232 8184 +1328 8184 +1536 8184 +1616 3113 +1616 7018 +1616 8063 +17840 8723 +17840 9603 +17840 10670 +17860 8624 +17936 231 +17936 1628 +17936 4796 +17936 7766 +18000 231 +18000 1595 +18016 2376 +18032 4521 +18032 7766 +18032 10670 +17424 8613 +17424 9603 +17424 10670 +17424 11528 +17488 8404 +17552 8404 +17712 8404 +17856 8404 +17968 8404 +18192 8404 +18368 8404 +18464 8404 +18544 4037 +432 9702 +468 7260 +560 7260 +736 7260 +848 7260 +912 7260 +976 7260 +1072 7260 +1152 7260 +1312 7260 +1520 3113 +1520 7029 +11248 231 +11248 902 +11344 1760 +11488 1760 +11696 1760 +11760 1760 +11904 1760 +12048 1760 +12176 1760 +12304 4488 +12304 5962 +12304 7392 +12304 11165 +18160 3619 +18160 7766 +18160 10670 +18096 231 +18096 3740 +18096 7766 +18096 10670 +11088 231 +11088 902 +11088 1760 +11088 4488 +11108 5368 +11216 5368 +11344 5368 +11488 5368 +11680 5368 +11760 5368 +11904 5368 +12048 5368 +12176 5368 +12336 5368 +12432 5368 +12528 5368 +12688 5368 +12800 5368 +12912 5368 +13104 5368 +13328 5368 +13456 5368 +13520 5368 +13584 5467 +13584 7282 +13584 8866 +13584 11539 +10672 231 +10672 902 +10672 1760 +10800 5588 +10928 5588 +11088 5588 +11216 5588 +11344 5588 +11488 5588 +11680 5588 +11760 5588 +11904 5588 +12048 5588 +12176 5588 +12336 5588 +12432 5588 +12528 5588 +12688 5588 +12800 5588 +12912 5588 +13104 5588 +13328 6402 +13328 7392 +13328 8536 +13328 9174 +13328 11429 +3792 2904 +3792 5852 +3813 6028 +3888 6028 +3952 6028 +4096 6028 +4176 6028 +4256 6028 +4432 6028 +4496 6028 +4560 6028 +4640 6028 +4752 6028 +4848 6028 +4912 6028 +5040 6028 +5328 6028 +5664 6028 +6096 6028 +6192 6028 +6256 6028 +6416 6028 +6555 6028 +6576 8646 +6576 9438 +6576 11495 +4048 2959 +4048 6908 +4128 10032 +4272 10032 +4400 10032 +4528 10032 +4624 10032 +4688 10032 +4784 10032 +4944 10032 +5008 10032 +5136 10032 +5264 10032 +5552 10032 +5632 10032 +5808 10032 +5968 10032 +6032 10032 +6112 10032 +6192 10032 +6352 10032 +6448 10032 +6672 10032 +6848 10032 +6928 10802 +4400 2365 +4400 5434 +4400 7810 +4528 9592 +4624 9592 +4688 9592 +4784 9592 +4960 9592 +5136 9592 +5552 9592 +5632 9592 +5808 9592 +5968 9592 +6032 9592 +6112 9592 +6192 9592 +6352 9592 +6416 11495 +10256 231 +10256 1012 +10256 1760 +10256 7513 +10384 7788 +10496 7788 +10656 7788 +10816 7788 +10928 7788 +11040 7788 +11120 7788 +11216 7788 +11328 7788 +11504 7788 +11568 7788 +11632 7788 +11696 7788 +11760 7788 +11824 7788 +11968 7788 +12192 7788 +12272 7788 +12384 7788 +12528 7788 +12656 7788 +12800 7788 +12880 7788 +12944 7788 +13088 7788 +13275 7788 +13296 8536 +13296 9174 +13296 11429 +9840 231 +9840 1012 +9840 1760 +9860 3168 +10000 3168 +10096 3168 +10224 3168 +10288 3168 +10384 3168 +10512 3168 +10576 3168 +10640 3168 +10704 3168 +10800 3168 +10928 3168 +11056 3168 +11120 3168 +11216 3168 +11344 3168 +11488 3168 +11696 3168 +11760 3168 +11904 3168 +12048 3168 +12176 3168 +12336 3168 +12432 3168 +12544 3168 +12688 3168 +12752 3168 +12816 3168 +12928 3168 +13040 3267 +13040 3938 +13040 4708 +13040 6072 +13040 7282 +13040 8536 +13040 9174 +13040 11429 +4080 2310 +4080 4664 +4101 4840 +4176 4840 +4256 4840 +4432 4840 +4496 4840 +4560 4840 +4656 4840 +4720 4840 +4784 4840 +4848 4840 +4912 4840 +5040 4840 +5296 4840 +5664 4840 +5872 4840 +6128 4840 +6192 4840 +6256 4840 +6416 4840 +6560 4840 +6672 4840 +6784 4840 +6896 4840 +7008 4840 +7088 4840 +7184 4840 +7280 4983 +7280 7128 +7280 8756 +7280 10802 +4336 2365 +4336 5434 +4432 6776 +4496 6776 +4640 6776 +4768 6776 +4848 6776 +4912 6776 +5040 6776 +5424 6776 +5648 6776 +5936 6776 +6096 6776 +6192 6776 +6416 6776 +6544 6776 +6672 6776 +6768 6776 +6864 6776 +6992 6776 +7088 6776 +7184 6776 +7328 6776 +7611 6776 +7632 6897 +7632 8756 +18064 231 +18064 3740 +18064 7766 +18064 10670 +6960 638 +6960 1518 +6960 2574 +6960 4048 +6996 5588 +7088 5588 +7184 5588 +7328 5588 +7584 5588 +7664 5588 +7760 5588 +7824 5588 +7888 5588 +7952 5588 +8048 5588 +8176 5588 +8336 5588 +8432 5588 +8496 5588 +8752 5588 +8848 5588 +8992 5588 +9440 5588 +9552 5588 +9680 5588 +9824 5588 +10016 5588 +10160 5588 +10224 5588 +10288 7392 +9200 880 +9200 1760 +9200 2948 +9440 5808 +9552 5808 +9680 5808 +9819 5808 +1328 9911 +1584 9152 +1712 9152 +1776 9152 +1904 9152 +2064 9152 +2240 9152 +2464 9152 +2736 9152 +2960 9152 +3024 9152 +3168 9152 +3312 9152 +3504 9152 +3568 3113 +3568 7128 +3568 9053 +9424 352 +9444 572 +9584 572 +9680 572 +9808 572 +9872 572 +10000 572 +10096 572 +10224 572 +10288 572 +10384 572 +10512 572 +10640 572 +10704 572 +10800 572 +10928 572 +11056 572 +11120 572 +11216 572 +11344 572 +11488 572 +11696 572 +11760 572 +11904 572 +12048 572 +12176 572 +12336 572 +12432 572 +12528 572 +12688 572 +12816 572 +12955 572 diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/benchs/usa13509.tsp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/benchs/usa13509.tsp new file mode 100644 index 000000000..7fc018324 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/benchs/usa13509.tsp @@ -0,0 +1,13510 @@ +13509 +245553 817828 +247133 810906 +247206 810189 +249239 806281 +250111 805153 +254475 804794 +254683 804778 +254950 804294 +255622 803825 +255803 803469 +255972 803808 +256047 803539 +256147 803108 +256311 803692 +256789 803175 +256933 801631 +257072 802936 +257072 803258 +257211 802686 +257264 803556 +257544 803275 +257631 802964 +257739 801939 +257903 801303 +258100 803025 +258219 802897 +258403 803267 +258458 801542 +258550 801933 +258572 802783 +258628 801931 +258647 803247 +258703 802992 +258781 801258 +258822 801808 +258872 801314 +258897 801869 +258914 801272 +259014 974972 +259019 802506 +259306 803286 +259328 801628 +259403 802458 +259481 801508 +259503 801231 +259619 801769 +259647 801225 +259647 802417 +259722 817292 +259808 801486 +259869 802325 +259875 801750 +260028 802242 +260108 801497 +260519 801442 +260569 802719 +260644 802322 +260714 974761 +260731 972083 +260883 817264 +260919 979569 +261000 982628 +261006 972900 +261033 971644 +261219 801436 +261272 802333 +261322 976308 +261400 802136 +261417 817950 +261494 979133 +261586 978236 +261592 979906 +261600 801392 +261661 802086 +261700 980517 +261833 981228 +261903 976958 +261917 800967 +261944 981833 +262022 800942 +262031 982297 +262156 983250 +262189 817919 +262256 977578 +262350 975817 +262375 801250 +262442 802067 +262467 984811 +262483 977336 +262564 978247 +262614 818094 +262825 801072 +262869 983131 +262931 979928 +262936 800792 +262936 979603 +262983 979283 +263014 981631 +263181 801000 +263306 818269 +263394 817789 +263583 800833 +263728 979714 +263794 988200 +263992 800658 +264047 990156 +264119 977894 +264183 814175 +264422 980136 +264486 820225 +264517 819483 +264611 800731 +264669 818017 +265250 800667 +265267 800486 +265625 819497 +265661 800536 +265864 800522 +265886 800389 +266156 800572 +266233 801256 +266250 816250 +266403 818725 +266450 800761 +266636 807164 +266669 818803 +266744 818153 +266842 806678 +266908 801203 +267053 800367 +267089 817461 +267150 800536 +267372 809511 +267539 809339 +267600 800739 +267614 814386 +267750 800583 +267778 800358 +268000 800667 +268172 800822 +268197 806656 +268328 810933 +268417 810964 +268794 800536 +268833 822903 +269069 992711 +269097 820542 +269139 823272 +269294 820456 +269339 800944 +269467 820261 +269581 820672 +269614 819842 +269758 820908 +270269 804858 +270500 822500 +270528 824244 +270567 823786 +270592 801367 +270728 824078 +270994 824544 +271189 824444 +271300 824533 +271439 802008 +271675 802664 +271958 824906 +271972 802531 +272156 818586 +272172 802700 +272192 802394 +272217 824981 +272267 981439 +272436 808300 +272517 808142 +272542 802300 +272836 824808 +272928 813631 +273064 986781 +273294 824578 +273361 825308 +273603 981233 +274097 825694 +274122 826592 +274242 825803 +274250 825906 +274464 803258 +274472 825464 +274667 827042 +274689 826864 +274692 825417 +274931 817961 +274953 814411 +274972 827092 +274986 825750 +275061 995072 +275119 826322 +275156 978558 +275211 825725 +275214 825278 +275308 827336 +275356 825614 +275428 804025 +275469 818117 +275858 977989 +275956 815064 +275986 984078 +276381 818242 +276383 803975 +276742 977483 +276750 804094 +277122 822992 +277164 803844 +277206 824333 +277456 815308 +277481 804364 +277481 827036 +277519 818019 +277519 980694 +277547 827378 +277636 982386 +277675 806017 +277689 827692 +277814 979083 +277900 976686 +277950 819806 +277978 827975 +278003 973961 +278083 828114 +278139 827783 +278158 828208 +278258 828292 +278336 970608 +278356 804933 +278425 826997 +278625 828486 +278750 828514 +278769 973236 +278775 972114 +278803 805006 +278825 986175 +278950 819736 +278961 818433 +279011 815861 +279092 827875 +279092 971497 +279142 827056 +279211 828172 +279219 972897 +279228 828433 +279356 828064 +279375 822861 +279456 818006 +279472 824586 +279503 975819 +279525 817272 +279564 979367 +279650 818781 +279656 828003 +279675 819736 +279781 817567 +279786 816142 +279786 973983 +279906 826933 +279936 816903 +279939 822197 +279944 817383 +280033 805658 +280083 819078 +280183 821131 +280194 827719 +280203 970542 +280219 817331 +280222 816194 +280314 820150 +280339 826653 +280342 805889 +280350 823894 +280364 975089 +280408 993542 +280442 816281 +280611 970408 +280650 817889 +280681 805606 +280714 806536 +280719 806803 +280778 827639 +280786 806028 +280850 806667 +280892 805658 +280917 817236 +280942 978278 +281139 816181 +281144 819739 +281206 820233 +281356 806719 +281458 827569 +281486 805886 +281508 824617 +281611 816019 +281758 805903 +281822 818242 +281875 827397 +282164 827225 +282333 821814 +282381 973197 +282439 827194 +282586 814567 +282714 827197 +282917 814078 +283050 972750 +283197 806078 +283322 981172 +283358 822747 +283506 807256 +283644 821961 +283858 807422 +284006 977481 +284056 806050 +284150 967133 +284319 807603 +284367 992347 +284569 813917 +284581 813594 +284600 981822 +284656 821722 +284717 813681 +284858 813725 +284953 815350 +285025 813308 +285072 821706 +285217 998603 +285381 813794 +285381 814606 +285408 813008 +285492 817731 +285544 811067 +285547 816333 +285550 823881 +285578 818514 +285650 815864 +285689 815442 +285731 995683 +285742 817464 +285781 818869 +285908 813944 +285997 813394 +286097 820553 +286119 808078 +286144 813808 +286147 966258 +286192 814428 +286417 811236 +286475 968922 +286489 813514 +286497 819928 +286608 813658 +286614 814192 +286617 815097 +286647 821131 +286650 808450 +286672 991703 +286681 973881 +286697 812083 +286772 998278 +286775 813281 +286794 965600 +286803 815097 +286986 813083 +287078 962172 +287089 1.00499e+06 +287094 817331 +287308 816014 +287394 811153 +287500 822969 +287556 820950 +287586 813181 +287811 826153 +287994 820703 +288003 812733 +288022 816447 +288039 817258 +288106 818781 +288189 978483 +288356 823306 +288403 817689 +288525 816856 +288611 819067 +288617 987061 +288650 820392 +288831 977128 +288847 979006 +288919 990947 +289003 812639 +289006 823747 +289022 825928 +289172 819231 +289178 985461 +289292 816658 +289408 998494 +289442 952886 +289486 812989 +289539 953594 +289600 960650 +289669 984783 +289783 966458 +289806 812336 +289808 975025 +289825 959692 +289825 980172 +289886 809025 +290028 953317 +290175 958892 +290244 953986 +290256 809272 +290256 809722 +290297 827161 +290300 826689 +290336 954342 +290386 956983 +290403 965133 +290403 985678 +290442 955689 +290489 824611 +290550 820625 +290558 954097 +290694 980817 +290936 972889 +290961 809372 +291192 813517 +291333 981558 +291383 830353 +291397 989050 +291436 956450 +291656 810047 +291692 954317 +291758 809831 +291869 821403 +291894 988622 +291964 962694 +292094 997858 +292106 810231 +292261 986575 +292281 953447 +292367 979597 +292392 814658 +292433 810378 +292672 977642 +292856 810561 +292875 971517 +292947 952786 +293103 1.00418e+06 +293106 988097 +293114 961025 +293172 994661 +293472 991411 +293481 950158 +293489 810667 +293556 988783 +293561 981153 +293625 1.00896e+06 +293664 821975 +293789 902600 +293836 949025 +293872 824469 +293992 958375 +294236 952439 +294239 984933 +294289 971703 +294300 815108 +294383 905953 +294419 902992 +294436 969408 +294475 826425 +294506 959944 +294569 946394 +294606 950511 +294625 953578 +294631 983853 +294658 812581 +294747 811272 +294747 984506 +294786 984872 +294803 896939 +294822 954153 +294831 949219 +294847 984656 +294878 985514 +294950 986183 +295000 815917 +295014 974522 +295044 822800 +295067 949922 +295072 950947 +295153 983800 +295178 983158 +295231 985161 +295292 952008 +295297 825192 +295308 960708 +295375 907200 +295425 903381 +295425 950203 +295472 950319 +295478 982908 +295519 982694 +295533 906022 +295569 958083 +295606 1.04372e+06 +295614 982267 +295633 952858 +295639 950253 +295686 979644 +295711 981400 +295722 903817 +295747 971425 +295819 957606 +295822 984906 +295847 985522 +295894 963333 +295917 820875 +295919 980331 +295956 907194 +296003 984869 +296131 828178 +296158 955575 +296183 955375 +296194 956347 +296200 950097 +296236 818906 +296311 960650 +296342 831253 +296458 905392 +296461 826067 +296483 816378 +296514 823250 +296581 815986 +296622 948900 +296628 952353 +296656 950192 +296661 911019 +296667 901083 +296692 1.00012e+06 +296792 959769 +296803 976472 +296817 969028 +296875 971083 +296894 912708 +296897 958994 +296908 952089 +296931 913019 +296944 912189 +296992 912067 +297028 967803 +297028 981242 +297050 951236 +297056 954586 +297058 954367 +297064 965394 +297178 815083 +297178 954336 +297231 901236 +297256 849833 +297264 990733 +297272 905989 +297353 949772 +297364 848786 +297486 966008 +297597 955169 +297631 953631 +297672 952336 +297672 955297 +297703 954953 +297728 946825 +297758 951144 +297772 955169 +297781 951717 +297806 961569 +297856 958242 +297858 820317 +297858 959508 +297894 821675 +297897 943831 +297928 961006 +297944 987317 +297956 824944 +297956 908228 +297958 915014 +297975 933250 +298186 950558 +298200 943839 +298236 904750 +298267 825969 +298372 909561 +298378 915442 +298475 948906 +298531 846644 +298547 899906 +298678 951281 +298797 950628 +298831 979411 +298847 976697 +298875 955628 +298956 898978 +298986 939286 +298992 901003 +299022 955022 +299033 900772 +299053 968764 +299058 901422 +299061 903561 +299100 900325 +299108 916633 +299117 950619 +299144 900539 +299175 939242 +299183 902108 +299319 903664 +299322 953800 +299361 906786 +299403 902031 +299403 910247 +299425 899633 +299428 903517 +299439 821100 +299478 854181 +299481 919886 +299481 939169 +299500 962569 +299542 900053 +299544 900750 +299581 920358 +299589 829283 +299650 912031 +299675 989047 +299742 939922 +299764 904089 +299778 903878 +299794 818106 +299839 901528 +299889 978769 +299911 939583 +299917 816783 +299939 902417 +299978 922847 +299989 904122 +300033 918186 +300108 907194 +300156 1.00205e+06 +300206 938456 +300225 823397 +300258 925083 +300272 945914 +300356 944242 +300403 906989 +300439 820719 +300464 948850 +300472 906897 +300472 991400 +300478 943356 +300528 831750 +300536 905517 +300558 906192 +300564 917369 +300564 959267 +300664 904800 +300772 992400 +300806 926714 +300819 937581 +300850 978400 +300858 941017 +300928 937364 +300931 959875 +300972 960781 +300978 984211 +300994 919900 +301008 909928 +301025 940517 +301089 948581 +301103 973150 +301125 852006 +301131 946428 +301172 835819 +301217 924981 +301308 856033 +301314 940153 +301400 944108 +301422 1.02394e+06 +301469 919611 +301522 947389 +301528 855700 +301586 856603 +301658 817067 +301667 963975 +301686 933758 +301697 911469 +301708 856253 +301758 843753 +301764 858056 +301806 924642 +301817 932736 +301825 969361 +301842 908592 +301894 826394 +301897 925825 +301906 935811 +301922 826147 +302008 856269 +302139 923744 +302142 918319 +302172 910961 +302222 926569 +302239 920197 +302256 978033 +302264 932172 +302328 951608 +302347 922683 +302356 920944 +302356 921853 +302358 928225 +302364 933772 +302367 930136 +302383 909200 +302419 932506 +302453 856483 +302458 877008 +302500 1.0325e+06 +302531 941897 +302669 977428 +302733 918992 +302750 897811 +302750 988717 +302767 977908 +302767 984117 +302772 912236 +302819 821222 +302867 893761 +302889 912342 +302892 856406 +302944 813933 +302950 907950 +302975 937433 +302978 978017 +303025 819756 +303025 931906 +303078 1.04019e+06 +303086 892869 +303117 813967 +303117 954558 +303131 917903 +303133 899431 +303139 842475 +303156 892475 +303169 920489 +303294 827592 +303311 924956 +303319 816558 +303342 813989 +303406 975567 +303458 965281 +303489 941778 +303494 973700 +303503 891528 +303536 912653 +303547 940725 +303569 871639 +303581 900656 +303583 1.03661e+06 +303586 905861 +303656 885561 +303672 890928 +303678 979914 +303714 943122 +303758 843008 +303758 897483 +303839 872750 +303856 886117 +303878 960875 +303933 864958 +303942 912536 +303958 888853 +303975 919314 +304028 922150 +304031 882483 +304042 901569 +304056 866189 +304064 876836 +304097 866631 +304108 817081 +304108 914336 +304111 888278 +304111 920683 +304114 885344 +304189 970114 +304208 873075 +304211 872169 +304247 954797 +304250 872519 +304261 888908 +304264 872797 +304303 888422 +304319 849758 +304381 842808 +304386 904414 +304392 976197 +304403 885436 +304408 866136 +304428 872225 +304433 850453 +304439 856886 +304503 934331 +304506 911544 +304519 912100 +304556 866383 +304614 873150 +304686 872361 +304692 834131 +304692 836303 +304703 919783 +304739 879192 +304753 901008 +304761 883422 +304783 900375 +304811 926956 +304850 925958 +304853 928506 +304867 909561 +304875 876997 +304892 997717 +304911 915194 +304942 924175 +304978 949964 +304981 861361 +305019 907478 +305042 904611 +305042 905822 +305050 978200 +305081 976786 +305100 872125 +305181 829483 +305183 921847 +305186 872728 +305228 879033 +305253 896794 +305333 920814 +305367 917528 +305375 954831 +305425 975464 +305450 838703 +305453 877517 +305475 881753 +305536 877119 +305589 915558 +305600 919539 +305619 818308 +305667 1.00643e+06 +305692 847433 +305706 974092 +305772 904831 +305781 982725 +305786 978528 +305814 872914 +305869 845833 +305881 911681 +305900 881708 +305903 972967 +305922 951292 +305958 916164 +305986 870311 +305992 871611 +306033 879036 +306039 830981 +306136 972053 +306161 920569 +306169 846600 +306181 877531 +306200 927625 +306228 857122 +306236 844147 +306278 963342 +306317 816067 +306322 870397 +306325 976769 +306336 924192 +306353 905008 +306483 911564 +306581 984403 +306603 938925 +306694 814628 +306878 922714 +306908 819175 +306928 917439 +306936 853922 +306942 880431 +307014 914361 +307050 848431 +307075 849244 +307100 1.012e+06 +307108 949328 +307122 850203 +307172 911414 +307175 974425 +307214 861156 +307233 955506 +307239 873142 +307383 915942 +307386 880789 +307436 980553 +307472 832208 +307489 844839 +307542 935403 +307581 982281 +307592 986747 +307619 865706 +307636 880747 +307647 905117 +307731 858142 +307742 852269 +307750 944153 +307817 855386 +307836 924253 +307847 835600 +307908 898486 +307917 837900 +307917 856797 +307947 974253 +307969 853767 +307997 816900 +308158 926603 +308206 880706 +308231 883614 +308303 820100 +308306 906717 +308325 832786 +308372 912175 +308400 895342 +308411 977933 +308461 932889 +308469 901531 +308483 937572 +308531 880561 +308531 969767 +308558 820211 +308600 1.00601e+06 +308656 910156 +308700 851619 +308772 842014 +308781 974014 +308783 965928 +308828 843239 +308828 877731 +308917 880397 +308939 1.02879e+06 +309036 845756 +309078 944219 +309139 1.01898e+06 +309175 997861 +309197 932822 +309200 911156 +309200 939964 +309250 885900 +309381 905089 +309450 953753 +309469 975383 +309497 959114 +309528 871514 +309531 921825 +309567 855167 +309575 851622 +309597 837381 +309636 817228 +309656 864597 +309736 840531 +309764 925850 +309778 966736 +309814 863075 +309833 918000 +309839 920533 +309842 1.03744e+06 +309911 833728 +309967 948269 +310000 872608 +310011 894522 +310050 863281 +310067 904722 +310103 863497 +310111 838664 +310147 922872 +310236 874939 +310258 964850 +310294 961144 +310328 858639 +310344 919756 +310364 827472 +310397 1.0483e+06 +310403 848792 +310408 830753 +310486 853050 +310547 951256 +310558 974642 +310578 920489 +310594 921211 +310636 981814 +310681 836239 +310722 840892 +310728 969783 +310744 831994 +310786 976053 +310894 910683 +310906 882281 +310931 870628 +310944 924003 +310981 973425 +311022 856969 +311044 912994 +311050 870722 +311081 855944 +311086 888272 +311128 860461 +311147 932714 +311158 901419 +311169 977275 +311239 979028 +311267 954453 +311275 841519 +311278 920661 +311358 1.02224e+06 +311369 834236 +311392 855192 +311431 894097 +311431 904586 +311433 932608 +311497 814917 +311556 885578 +311583 944261 +311650 966767 +311692 889200 +311711 847333 +311797 837892 +311808 821350 +311828 852364 +311869 947808 +311914 1.0146e+06 +311956 987178 +311972 910217 +312022 890347 +312033 970364 +312042 819814 +312067 973025 +312072 832503 +312133 823542 +312158 861711 +312161 998453 +312169 983931 +312228 904603 +312231 853906 +312311 842106 +312356 857228 +312436 904531 +312478 939742 +312517 898375 +312617 1.00817e+06 +312689 836872 +312714 834650 +312775 945764 +312794 863256 +312822 892756 +312825 862556 +312836 904683 +312925 851117 +312975 828525 +312989 853444 +312989 870225 +313058 822422 +313061 968978 +313081 973611 +313100 857131 +313111 924450 +313114 855531 +313128 843358 +313181 954564 +313189 854939 +313194 839172 +313222 924342 +313269 892903 +313381 947289 +313392 1.02851e+06 +313403 1.10934e+06 +313406 830461 +313406 938467 +313408 835936 +313444 1.09545e+06 +313464 892600 +313511 853422 +313528 865392 +313569 1.09561e+06 +313614 961439 +313644 893061 +313700 814342 +313775 849342 +313794 841611 +313850 832231 +313856 859294 +313864 972153 +313903 926692 +313903 976842 +313972 1.0235e+06 +314128 833292 +314144 860678 +314153 924117 +314172 895422 +314217 853378 +314228 1.03493e+06 +314333 874014 +314350 977436 +314394 835194 +314397 847250 +314436 934572 +314439 974089 +314481 1.09928e+06 +314497 985706 +314503 835086 +314589 856406 +314611 1.03393e+06 +314622 971956 +314628 908500 +314636 1.00437e+06 +314650 882544 +314675 971144 +314717 836469 +314722 908967 +314747 969231 +314856 845139 +314861 820172 +314917 954783 +315022 1.06158e+06 +315044 910689 +315086 828500 +315089 878944 +315128 837878 +315172 826350 +315189 927067 +315214 971536 +315242 965336 +315278 873247 +315297 941058 +315306 838356 +315342 974428 +315392 824625 +315394 1.10756e+06 +315422 867150 +315422 968333 +315492 971464 +315536 901072 +315544 1.10303e+06 +315581 847383 +315603 914031 +315653 914258 +315686 934839 +315700 1.03001e+06 +315717 852506 +315783 841558 +315789 904406 +315811 925328 +315828 1.0292e+06 +315847 958489 +315850 1.06272e+06 +315922 1.06224e+06 +315939 971086 +315942 832506 +315942 1.02892e+06 +315972 1.00182e+06 +315983 898669 +316000 857189 +316033 946553 +316039 891956 +316072 818856 +316089 850472 +316250 828869 +316250 955792 +316264 918181 +316269 962836 +316278 1.10333e+06 +316292 971025 +316300 915544 +316314 936439 +316339 883133 +316369 867419 +316453 895553 +316503 950725 +316528 932019 +316592 974719 +316672 928906 +316747 886461 +316753 930444 +316797 964819 +316831 921336 +316925 1.06207e+06 +316939 891306 +317011 903975 +317036 981236 +317058 836533 +317078 817425 +317086 856106 +317086 877772 +317114 910606 +317128 1.10067e+06 +317147 832528 +317164 862639 +317169 991322 +317200 858161 +317225 915431 +317244 961650 +317319 841708 +317333 872047 +317381 999469 +317419 989453 +317511 1.03159e+06 +317539 966497 +317561 846153 +317586 1.06486e+06 +317606 930861 +317711 847894 +317719 918214 +317733 844467 +317739 816328 +317781 823486 +317822 975764 +317833 855558 +317839 816078 +317864 890322 +317878 964622 +317883 877272 +317958 951500 +318022 970914 +318086 859700 +318144 948403 +318192 923297 +318197 935142 +318214 930294 +318242 944908 +318272 994261 +318294 866178 +318308 843644 +318361 1.00984e+06 +318456 1.02367e+06 +318464 916561 +318467 815961 +318575 1.03092e+06 +318600 886994 +318603 903958 +318636 922958 +318736 897336 +318781 854497 +318867 889839 +318872 1.00291e+06 +318911 851456 +318922 1.00484e+06 +318933 931181 +318939 967144 +318972 986033 +319003 842519 +319028 922431 +319036 943950 +319119 1.11881e+06 +319133 877358 +319231 976564 +319253 926394 +319292 826797 +319364 819286 +319381 813036 +319436 942439 +319508 834564 +319564 999619 +319608 909839 +319617 898700 +319633 837825 +319636 952703 +319656 940536 +319678 1.10294e+06 +319753 939978 +319789 892872 +319808 916556 +319828 980333 +319844 865786 +319872 903569 +319894 832003 +319908 872906 +319919 833069 +319972 1.02078e+06 +320000 808458 +320039 1.06605e+06 +320108 971297 +320147 933419 +320167 929092 +320172 830628 +320217 937142 +320264 921389 +320333 810500 +320333 895222 +320339 843928 +320356 825083 +320375 937000 +320400 887281 +320492 916581 +320497 921092 +320525 955061 +320678 829008 +320722 842328 +320725 912408 +320736 829147 +320800 968064 +320833 811000 +320850 983417 +320853 932200 +320867 821181 +320878 846675 +320883 954717 +320894 882219 +320914 837956 +320919 967156 +320953 964686 +320958 989633 +320961 902942 +321094 906233 +321100 835011 +321142 811542 +321153 812472 +321244 969450 +321261 991650 +321292 1.01788e+06 +321322 812992 +321331 962275 +321358 816222 +321397 953200 +321439 960908 +321442 857150 +321444 951203 +321469 827781 +321489 811633 +321531 947992 +321533 901311 +321558 819339 +321572 943372 +321594 971497 +321614 819042 +321631 917206 +321686 882825 +321694 960122 +321811 821092 +321839 865803 +321839 968844 +321872 825658 +321975 831778 +321994 1.10968e+06 +322019 839086 +322042 823219 +322047 958553 +322094 997964 +322136 986703 +322161 807528 +322175 824136 +322206 982019 +322217 1.10926e+06 +322253 950575 +322267 952253 +322333 973742 +322344 977550 +322369 808606 +322381 843092 +322386 949403 +322411 927158 +322417 854164 +322428 944553 +322503 1.01478e+06 +322528 1.09831e+06 +322592 904225 +322614 837367 +322664 876253 +322686 1.07758e+06 +322700 1.068e+06 +322731 899858 +322744 949783 +322767 927233 +322783 957494 +322817 938239 +322836 834722 +322861 1.04095e+06 +322869 810808 +322936 840611 +322958 812356 +322964 1.01306e+06 +322986 901847 +323050 840275 +323053 847728 +323061 877981 +323061 924503 +323069 960064 +323078 954797 +323089 917747 +323094 901389 +323122 1.06778e+06 +323128 897983 +323131 970114 +323158 945164 +323175 890256 +323186 1.02545e+06 +323189 845172 +323203 962128 +323211 891633 +323283 932797 +323292 966250 +323300 906056 +323344 961511 +323361 813917 +323414 903217 +323431 893286 +323475 973864 +323492 904600 +323503 1.08708e+06 +323511 953008 +323525 908778 +323536 896544 +323642 887036 +323644 894742 +323664 961006 +323667 863000 +323694 841881 +323717 1.1286e+06 +323769 825925 +323789 806928 +323794 816633 +323808 1.06479e+06 +323864 968481 +323867 833547 +323881 989789 +323881 1.00864e+06 +323939 993939 +323967 973236 +323969 820603 +323969 908564 +324014 988172 +324058 994933 +324064 972114 +324067 887772 +324072 870211 +324083 911867 +324111 1.00712e+06 +324172 886478 +324206 1.04228e+06 +324239 856917 +324283 901322 +324311 966675 +324314 806700 +324322 830614 +324333 971022 +324339 866547 +324356 807242 +324367 1.11225e+06 +324372 1.03159e+06 +324389 891083 +324419 822153 +324419 977939 +324425 962297 +324453 949483 +324458 1.00538e+06 +324486 817833 +324486 997328 +324489 975264 +324494 875142 +324561 839403 +324575 914931 +324575 998711 +324581 837317 +324608 849878 +324614 973878 +324617 901153 +324639 864597 +324697 986786 +324706 1.00012e+06 +324708 850008 +324708 1.00406e+06 +324772 917547 +324786 940594 +324797 863619 +324806 809806 +324822 969942 +324861 882964 +324956 849919 +325006 947403 +325042 945739 +325092 921192 +325117 863767 +325156 954092 +325158 921917 +325158 937319 +325175 878364 +325175 968042 +325183 921475 +325231 926378 +325247 956369 +325250 937500 +325264 968861 +325275 927139 +325294 949028 +325300 925142 +325306 825894 +325325 935039 +325339 966653 +325344 927883 +325356 934108 +325358 858933 +325381 819325 +325403 829039 +325419 973206 +325431 903092 +325436 862119 +325439 930528 +325447 943672 +325481 828719 +325489 929200 +325497 858700 +325519 984978 +325536 838875 +325564 958631 +325569 842383 +325597 840964 +325606 856725 +325631 971414 +325789 973622 +325808 938925 +325828 821553 +325836 951086 +325839 1.17112e+06 +325842 881872 +325883 952039 +325883 965083 +325889 963086 +325889 966850 +325897 968567 +325908 926478 +325919 967558 +325936 948553 +325964 1.14709e+06 +325972 823339 +325997 1.1063e+06 +326039 914778 +326056 832456 +326097 854808 +326108 1.1077e+06 +326119 998139 +326125 900367 +326153 932867 +326208 836000 +326278 964556 +326308 972889 +326322 873192 +326353 860344 +326394 965381 +326400 1.17083e+06 +326408 903647 +326453 853783 +326467 972256 +326492 967128 +326517 969081 +326536 837597 +326550 799406 +326592 836189 +326631 954881 +326653 1.07152e+06 +326728 1.14146e+06 +326731 974603 +326733 957092 +326775 845394 +326781 1.17098e+06 +326789 1.15498e+06 +326833 847383 +326858 1.17182e+06 +326875 833467 +326875 939608 +326900 808508 +326947 937417 +326958 976019 +326961 920858 +326981 958850 +326989 926567 +326992 1.08131e+06 +327025 1.03136e+06 +327028 971550 +327044 875958 +327092 960081 +327142 971561 +327153 1.17156e+06 +327169 1.16875e+06 +327189 1.02644e+06 +327214 1.09105e+06 +327217 840133 +327225 1.1064e+06 +327233 992969 +327253 973206 +327253 1.14624e+06 +327286 949422 +327286 966225 +327292 827200 +327308 1.15529e+06 +327342 802419 +327358 962750 +327361 968867 +327375 1.01951e+06 +327425 1.17031e+06 +327439 939714 +327447 974133 +327458 969975 +327481 964717 +327503 816369 +327547 812422 +327556 989019 +327558 1.11554e+06 +327564 998958 +327572 943450 +327572 974106 +327578 848750 +327592 977969 +327594 974581 +327617 1.0813e+06 +327631 802503 +327675 886508 +327678 1.17022e+06 +327700 1.0828e+06 +327714 891167 +327733 924056 +327750 917925 +327764 799311 +327786 919142 +327794 1.0815e+06 +327833 968000 +327853 800353 +327872 845619 +327883 868717 +327889 851450 +327917 930556 +327919 1.15562e+06 +327928 956342 +327931 1.1569e+06 +327939 798628 +327947 1.16962e+06 +327958 954508 +327961 851839 +327964 965606 +327994 972689 +328000 947206 +328003 856536 +328039 819494 +328042 911700 +328047 974447 +328058 974028 +328083 981125 +328111 831728 +328111 1.15379e+06 +328139 969486 +328158 972278 +328189 822350 +328192 934175 +328203 851722 +328219 926578 +328233 971703 +328267 830794 +328281 884764 +328311 857636 +328339 1.09707e+06 +328342 972286 +328344 852297 +328364 964747 +328383 1.16973e+06 +328386 866294 +328403 851833 +328406 836325 +328406 878875 +328422 1.04403e+06 +328439 971428 +328467 852100 +328475 1.15569e+06 +328492 1.09759e+06 +328503 810794 +328517 800367 +328519 1.00465e+06 +328544 799750 +328550 904056 +328564 973386 +328572 1.16921e+06 +328578 972544 +328597 846200 +328600 973636 +328667 824042 +328678 843306 +328686 851906 +328708 811097 +328714 939872 +328744 957653 +328764 877425 +328778 851833 +328794 1.11757e+06 +328808 971547 +328819 833325 +328833 816583 +328836 899714 +328847 1.00126e+06 +328881 843267 +328928 934483 +328936 960292 +328950 975456 +328961 1.09827e+06 +328997 854011 +328997 945561 +329014 922419 +329028 965636 +329050 806669 +329050 936967 +329064 908781 +329103 961353 +329156 867158 +329183 800222 +329192 916769 +329253 811875 +329264 968958 +329311 964594 +329328 843494 +329342 970778 +329344 972514 +329358 828117 +329372 871647 +329411 971339 +329439 859539 +329439 1.03348e+06 +329442 1.02564e+06 +329444 871386 +329453 998025 +329478 1.12716e+06 +329481 967294 +329536 968900 +329544 970147 +329572 952900 +329572 1.05742e+06 +329589 812367 +329594 1.17264e+06 +329597 867467 +329617 968289 +329619 931400 +329628 1.17035e+06 +329636 1.01832e+06 +329644 1.02829e+06 +329689 934506 +329700 899122 +329719 1.10776e+06 +329739 908244 +329750 817578 +329750 963322 +329761 965950 +329778 1.05941e+06 +329778 1.11517e+06 +329783 885700 +329786 1.15529e+06 +329808 800328 +329814 828103 +329836 845828 +329856 801100 +329875 1.1077e+06 +329911 1.1727e+06 +329922 890661 +329950 975425 +329953 949656 +329975 876300 +329983 946306 +330014 824114 +330039 972256 +330047 1.10785e+06 +330067 801556 +330078 813086 +330122 943653 +330136 927250 +330144 970967 +330150 966128 +330161 927242 +330183 801758 +330197 966986 +330203 1.17202e+06 +330308 850611 +330314 1.11387e+06 +330317 947217 +330342 839383 +330369 1.17291e+06 +330372 1.15621e+06 +330392 850314 +330394 921825 +330483 1.1663e+06 +330508 1.09296e+06 +330544 841558 +330569 1.1091e+06 +330572 915733 +330575 895875 +330606 954719 +330656 860533 +330656 962275 +330678 1.09359e+06 +330681 1.17302e+06 +330739 1.06018e+06 +330750 898544 +330767 1.11739e+06 +330786 868817 +330786 1.09365e+06 +330786 1.16601e+06 +330800 832322 +330847 972958 +330897 820158 +330917 970464 +330956 803156 +330981 936547 +331003 934608 +331006 868642 +331028 867536 +331031 966703 +331053 885608 +331075 923347 +331094 912619 +331131 900531 +331136 941642 +331150 1.04326e+06 +331181 871250 +331192 970253 +331192 1.17086e+06 +331211 971831 +331214 855664 +331236 890550 +331256 1.15513e+06 +331281 919611 +331283 1.07252e+06 +331294 881514 +331333 1.00227e+06 +331372 958392 +331386 1.10124e+06 +331408 919939 +331433 1.17165e+06 +331481 959511 +331486 941500 +331506 968233 +331511 853722 +331575 997333 +331575 1.05774e+06 +331581 1.1735e+06 +331611 983853 +331633 963597 +331650 970292 +331656 919414 +331667 1.01793e+06 +331689 908539 +331731 849150 +331731 862517 +331781 866072 +331786 991772 +331800 964978 +331806 947439 +331811 1.02274e+06 +331828 902228 +331842 904892 +331844 998933 +331886 952211 +331908 1.01378e+06 +331939 987383 +331958 800133 +331958 1.17379e+06 +331972 1.04372e+06 +331975 966150 +332000 1.17242e+06 +332031 946800 +332075 823919 +332075 926661 +332097 875692 +332100 847444 +332100 977544 +332144 804481 +332183 981583 +332183 1.17033e+06 +332281 917975 +332289 875772 +332333 825956 +332342 864836 +332342 975858 +332344 885822 +332347 848358 +332361 968008 +332378 915114 +332400 1.15518e+06 +332436 842289 +332442 868164 +332447 813589 +332467 842642 +332469 958997 +332481 1.00573e+06 +332511 808158 +332558 1.16374e+06 +332569 1.03317e+06 +332611 938853 +332614 972378 +332619 905922 +332653 842817 +332667 892908 +332669 932392 +332697 908797 +332736 858361 +332756 829764 +332775 850981 +332781 863550 +332858 965725 +332939 1.11096e+06 +332942 961944 +332944 839661 +332958 977986 +332961 868436 +332969 810350 +332975 914936 +333022 845539 +333042 969858 +333047 836833 +333061 1.11841e+06 +333089 854847 +333100 891728 +333106 857544 +333139 820969 +333158 926628 +333200 879028 +333208 902322 +333225 804139 +333225 811425 +333244 967842 +333267 833886 +333286 912817 +333289 925383 +333289 1.05604e+06 +333317 1.05672e+06 +333319 897411 +333328 943425 +333369 1.02206e+06 +333428 1.18327e+06 +333439 864381 +333453 1.10452e+06 +333458 841092 +333478 932097 +333486 806831 +333489 965483 +333506 847767 +333514 932956 +333528 1.11788e+06 +333536 905925 +333578 812708 +333583 935775 +333583 976944 +333625 951044 +333631 971736 +333647 927247 +333653 934950 +333703 1.12583e+06 +333706 960686 +333706 987525 +333708 1.11962e+06 +333733 956881 +333764 1.1725e+06 +333767 792947 +333783 880153 +333794 962472 +333806 847997 +333869 842831 +333942 1.04522e+06 +333942 1.10786e+06 +333944 803475 +333964 969603 +333967 845958 +333992 1.10868e+06 +334017 869544 +334025 814203 +334053 908975 +334069 826622 +334100 910617 +334111 930694 +334111 1.10842e+06 +334131 823853 +334144 823128 +334147 1.11909e+06 +334150 1.11549e+06 +334153 886439 +334181 998186 +334208 821622 +334214 816858 +334214 965769 +334222 1.11822e+06 +334247 959461 +334250 940475 +334256 869267 +334267 941061 +334269 1.17611e+06 +334306 963383 +334336 841489 +334342 869472 +334353 1.12297e+06 +334353 1.12358e+06 +334356 1.12349e+06 +334358 861058 +334372 1.01643e+06 +334417 940375 +334433 895717 +334472 841469 +334483 1.12073e+06 +334486 844550 +334486 867878 +334492 996225 +334500 905056 +334500 1.12259e+06 +334503 821983 +334503 888183 +334508 906550 +334511 795611 +334511 869967 +334517 811256 +334539 910072 +334561 1.02489e+06 +334597 944153 +334614 869089 +334636 1.17678e+06 +334661 942883 +334667 820167 +334667 969181 +334669 1.17697e+06 +334672 995242 +334706 825047 +334706 952136 +334750 804867 +334764 1.00855e+06 +334819 897281 +334917 808558 +334933 1.12357e+06 +334936 1.17148e+06 +334939 849139 +334950 903197 +334956 884272 +334967 812794 +334967 818922 +335006 1.17742e+06 +335017 819653 +335017 1.17662e+06 +335044 818692 +335058 1.02009e+06 +335086 946161 +335086 966119 +335092 1.11898e+06 +335128 963922 +335172 820758 +335178 818442 +335181 899206 +335200 964836 +335206 868025 +335214 798789 +335214 843539 +335225 1.17707e+06 +335253 914358 +335261 953156 +335308 805722 +335308 819450 +335311 1.11942e+06 +335317 811233 +335358 869972 +335378 852533 +335378 924697 +335381 867072 +335386 1.12185e+06 +335400 891242 +335406 892669 +335422 1.17782e+06 +335442 842339 +335453 1.05572e+06 +335461 957256 +335481 865444 +335508 790417 +335508 818042 +335519 947808 +335539 828961 +335553 890847 +335575 807147 +335589 978483 +335603 817197 +335606 1.17157e+06 +335614 969108 +335633 880814 +335636 818081 +335656 813036 +335669 845811 +335700 868964 +335717 1.16076e+06 +335725 844133 +335750 838939 +335756 831825 +335772 961781 +335772 962731 +335778 1.01855e+06 +335806 1.12237e+06 +335808 799892 +335831 843394 +335833 867728 +335833 959097 +335844 928342 +335861 862861 +335869 845425 +335869 879844 +335872 1.02378e+06 +335908 864908 +335939 1.12302e+06 +335942 992600 +335956 834681 +335956 986253 +335967 838603 +335975 1.12271e+06 +335992 797444 +335992 963664 +336000 1.17671e+06 +336008 869561 +336017 907736 +336047 867939 +336058 789733 +336064 843353 +336075 886503 +336078 927400 +336081 803514 +336086 912067 +336103 964106 +336103 1.14596e+06 +336106 950525 +336106 1.14573e+06 +336125 920644 +336125 1.17712e+06 +336131 859611 +336131 1.12324e+06 +336142 858350 +336156 811022 +336189 838675 +336189 1.17928e+06 +336197 866089 +336206 869714 +336214 858442 +336219 843692 +336258 836125 +336258 1.17693e+06 +336261 859189 +336289 913994 +336289 917908 +336289 919314 +336306 1.12332e+06 +336331 897111 +336356 966086 +336358 972225 +336386 1.17343e+06 +336411 1.17918e+06 +336417 1.05877e+06 +336417 1.1729e+06 +336447 843258 +336456 859125 +336489 855875 +336517 973761 +336522 813614 +336533 844494 +336561 837183 +336561 969067 +336597 858317 +336597 876000 +336600 844103 +336600 868128 +336600 1.01238e+06 +336603 1.17998e+06 +336608 955553 +336614 952664 +336614 953856 +336647 791028 +336664 1.01682e+06 +336669 935914 +336675 798308 +336675 840178 +336694 1.17822e+06 +336706 1.01535e+06 +336742 941311 +336742 1.01387e+06 +336772 863967 +336794 844394 +336803 1.16173e+06 +336833 789986 +336844 878308 +336861 864750 +336889 788869 +336889 1.01998e+06 +336939 817672 +336950 802111 +336986 858397 +337039 907264 +337067 840317 +337072 842719 +337092 1.17196e+06 +337092 1.17953e+06 +337122 841053 +337133 873886 +337206 1.16215e+06 +337211 851456 +337214 1.16388e+06 +337244 926156 +337258 905514 +337286 870903 +337306 872844 +337319 849192 +337367 827394 +337369 850325 +337372 1.01836e+06 +337381 810981 +337397 1.16412e+06 +337414 1.18104e+06 +337431 1.17108e+06 +337444 852881 +337444 861558 +337456 1.17867e+06 +337458 1.17174e+06 +337458 1.17825e+06 +337475 1.16971e+06 +337481 868086 +337489 843881 +337519 858114 +337536 794478 +337547 842675 +337556 965364 +337569 881089 +337569 1.18353e+06 +337592 966692 +337592 1.18006e+06 +337597 871833 +337669 1.18188e+06 +337689 898083 +337714 842672 +337733 868139 +337739 1.17941e+06 +337747 842964 +337750 864717 +337786 907214 +337789 924917 +337797 1.16464e+06 +337803 843361 +337825 1.17228e+06 +337833 860025 +337839 1.16958e+06 +337856 1.18084e+06 +337867 977256 +337878 1.17852e+06 +337878 1.18357e+06 +337894 819297 +337897 842642 +337903 843061 +337914 908569 +337922 824792 +337922 1.18314e+06 +337936 842061 +337939 846606 +337947 837133 +338006 1.18389e+06 +338014 1.17145e+06 +338025 851886 +338025 933808 +338025 1.17992e+06 +338031 1.18072e+06 +338081 841703 +338094 842397 +338094 905264 +338111 1.02163e+06 +338125 846344 +338136 857614 +338136 924128 +338142 868094 +338144 1.17812e+06 +338161 986947 +338169 811011 +338169 1.18036e+06 +338172 981950 +338178 794494 +338181 867428 +338186 845825 +338200 1.16389e+06 +338247 870861 +338250 885436 +338303 1.16544e+06 +338311 872775 +338314 1.18072e+06 +338314 1.18281e+06 +338319 818011 +338322 1.01842e+06 +338333 1.1195e+06 +338353 1.17914e+06 +338358 790481 +338358 1.1834e+06 +338369 1.09964e+06 +338389 839008 +338389 907261 +338453 816619 +338464 1.18046e+06 +338492 1.18388e+06 +338531 965022 +338533 910278 +338536 1.18133e+06 +338544 842172 +338553 893114 +338556 892844 +338572 840200 +338575 1.15486e+06 +338594 846839 +338622 1.18399e+06 +338628 834089 +338650 843367 +338658 1.18082e+06 +338675 827414 +338675 1.17997e+06 +338694 1.01597e+06 +338703 1.17924e+06 +338708 797556 +338722 1.17869e+06 +338753 1.17566e+06 +338756 847622 +338756 891772 +338767 806931 +338781 907272 +338781 1.1752e+06 +338817 1.18116e+06 +338839 845144 +338847 1.1841e+06 +338869 914917 +338883 1.18308e+06 +338886 1.17812e+06 +338894 1.18159e+06 +338900 841431 +338906 800186 +338917 875261 +338919 842989 +338956 948261 +338958 1.18219e+06 +338967 979361 +338981 842833 +338983 889992 +339017 881344 +339022 1.18081e+06 +339056 914989 +339078 815475 +339103 811047 +339108 811358 +339133 822936 +339136 984931 +339164 815136 +339164 845447 +339164 1.18352e+06 +339167 928481 +339167 1.17899e+06 +339172 1.02324e+06 +339172 1.18011e+06 +339175 797442 +339192 1.18416e+06 +339203 803417 +339203 1.17278e+06 +339208 931539 +339214 780206 +339236 848408 +339242 843786 +339244 860225 +339256 1.16876e+06 +339289 878172 +339294 1.16976e+06 +339303 1.18211e+06 +339319 1.17945e+06 +339344 964283 +339353 799328 +339369 971164 +339381 1.18352e+06 +339383 943569 +339397 862017 +339400 1.17243e+06 +339400 1.18132e+06 +339411 842136 +339428 918433 +339442 909450 +339456 938469 +339461 843347 +339472 903442 +339472 1.18084e+06 +339481 864728 +339492 835347 +339508 907678 +339514 986683 +339533 1.17395e+06 +339547 860419 +339561 839881 +339583 921900 +339606 1.18184e+06 +339608 833781 +339608 1.1795e+06 +339608 1.18041e+06 +339611 1.16501e+06 +339617 1.18352e+06 +339650 835967 +339653 1.18151e+06 +339656 810742 +339656 879147 +339669 832783 +339672 941683 +339681 1.18224e+06 +339686 1.12729e+06 +339725 1.16976e+06 +339731 783861 +339761 1.17904e+06 +339767 896756 +339775 1.18186e+06 +339792 1.18032e+06 +339814 812364 +339817 1.18224e+06 +339831 1.18096e+06 +339839 997244 +339842 884881 +339844 1.01337e+06 +339850 915608 +339867 1.18184e+06 +339875 802083 +339875 822981 +339886 838981 +339897 834258 +339911 963739 +339919 893489 +339925 837203 +339925 1.17516e+06 +339933 810742 +339958 795703 +339961 1.17405e+06 +339967 779075 +339981 858664 +339986 967194 +339997 791997 +340006 810350 +340014 817722 +340017 887553 +340022 950936 +340025 850417 +340028 841447 +340067 900567 +340094 1.18104e+06 +340106 955094 +340117 1.17484e+06 +340119 1.00822e+06 +340122 1.00302e+06 +340122 1.17688e+06 +340131 982319 +340136 838278 +340142 860067 +340144 867469 +340147 904317 +340172 961425 +340186 952661 +340192 809900 +340194 1.1849e+06 +340200 979572 +340200 1.17949e+06 +340203 1.17864e+06 +340211 1.18396e+06 +340217 860886 +340231 843617 +340233 846156 +340239 1.18171e+06 +340253 877583 +340261 863261 +340272 958689 +340292 947389 +340292 989186 +340336 1.17042e+06 +340339 1.17313e+06 +340350 778939 +340378 943411 +340444 907447 +340453 1.17943e+06 +340456 850561 +340469 875497 +340469 1.1658e+06 +340483 1.1726e+06 +340514 840714 +340519 1.18046e+06 +340522 1.18243e+06 +340536 809614 +340536 852550 +340553 1.17751e+06 +340561 788906 +340583 1.06891e+06 +340600 800717 +340600 950031 +340606 867675 +340622 936897 +340625 1.18089e+06 +340625 1.18122e+06 +340633 1.1765e+06 +340636 831256 +340639 809583 +340642 1.01843e+06 +340658 846769 +340678 1.02524e+06 +340681 981903 +340686 1.17938e+06 +340686 1.18027e+06 +340700 883911 +340703 1.17395e+06 +340722 860333 +340736 1.09856e+06 +340736 1.18399e+06 +340739 1.17313e+06 +340750 925553 +340753 842942 +340806 1.18072e+06 +340808 844114 +340814 865911 +340853 1.1796e+06 +340858 811833 +340889 886222 +340900 1.17889e+06 +340900 1.18361e+06 +340903 967714 +340922 825958 +340922 1.17434e+06 +340953 1.18126e+06 +340961 1.18105e+06 +340967 1.17719e+06 +340975 1.17648e+06 +340978 985703 +341008 1.17767e+06 +341014 845194 +341031 1.17845e+06 +341067 1.17806e+06 +341069 1.17934e+06 +341072 1.18057e+06 +341111 828672 +341111 1.09291e+06 +341161 887117 +341161 1.18149e+06 +341167 1.07243e+06 +341172 913764 +341192 940164 +341192 1.16445e+06 +341206 840044 +341208 930536 +341214 1.17302e+06 +341214 1.18106e+06 +341244 1.01441e+06 +341258 1.09937e+06 +341267 962631 +341283 1.17208e+06 +341333 1.09285e+06 +341336 1.17907e+06 +341344 778819 +341347 799400 +341347 1.16312e+06 +341356 1.16053e+06 +341361 1.17864e+06 +341394 1.17976e+06 +341397 1.18034e+06 +341422 879886 +341464 874022 +341469 1.1797e+06 +341478 1.18144e+06 +341478 1.19194e+06 +341481 1.17998e+06 +341486 788769 +341500 1.14288e+06 +341514 896314 +341519 856789 +341542 1.17343e+06 +341544 992647 +341544 1.09973e+06 +341603 1.18651e+06 +341617 1.18052e+06 +341650 848000 +341669 979972 +341686 800628 +341706 1.18837e+06 +341733 901375 +341739 845014 +341742 971433 +341747 868436 +341750 820242 +341753 972625 +341781 794008 +341781 823792 +341783 975922 +341792 778478 +341833 1.02134e+06 +341850 839253 +341858 968803 +341861 1.03334e+06 +341867 851747 +341872 969842 +341897 1.1813e+06 +341942 887197 +341953 797628 +341953 821619 +341975 1.19176e+06 +342000 905708 +342006 861664 +342017 902833 +342022 871814 +342039 834572 +342047 830308 +342056 792547 +342072 841403 +342083 777967 +342092 778439 +342092 815333 +342103 778869 +342117 1.0169e+06 +342133 886644 +342164 1.19037e+06 +342178 905419 +342181 802486 +342200 856078 +342256 779450 +342264 876214 +342264 1.02723e+06 +342272 806894 +342275 838844 +342283 920031 +342283 986842 +342308 1.11324e+06 +342311 956200 +342322 1.19172e+06 +342331 974875 +342331 1.0241e+06 +342336 791489 +342361 966783 +342367 844908 +342369 849442 +342408 990753 +342419 853358 +342419 1.17285e+06 +342464 806072 +342478 889986 +342483 1.17188e+06 +342528 835617 +342542 1.10029e+06 +342564 902719 +342564 995164 +342569 851647 +342575 887033 +342639 858606 +342647 934608 +342675 862089 +342719 982356 +342722 778189 +342739 884092 +342739 920908 +342744 816189 +342772 878286 +342819 1.18438e+06 +342828 847453 +342847 831444 +342856 1.18881e+06 +342869 831103 +342883 779214 +342928 913378 +342978 838242 +342978 997400 +342997 798764 +343047 819831 +343064 826639 +343069 924011 +343083 908519 +343114 899442 +343133 790375 +343144 971425 +343181 864958 +343189 785003 +343192 918472 +343206 784022 +343219 788272 +343242 884911 +343267 935506 +343333 823881 +343336 834992 +343367 850714 +343369 794314 +343381 843767 +343386 787033 +343456 791658 +343461 831100 +343508 877064 +343514 860008 +343528 829322 +343531 890231 +343542 1.19058e+06 +343556 779003 +343581 862947 +343597 983075 +343608 1.17632e+06 +343617 810856 +343622 928128 +343661 1.01057e+06 +343664 1.01748e+06 +343683 869086 +343686 849342 +343689 979636 +343694 906389 +343714 1.19306e+06 +343739 800736 +343764 886817 +343806 810867 +343819 843711 +343847 1.1853e+06 +343850 1.02115e+06 +343858 961281 +343875 836664 +343886 1.03051e+06 +343919 990181 +343925 1.00897e+06 +343936 800697 +343983 822469 +343989 1.19518e+06 +343992 1.18917e+06 +344000 1.19299e+06 +344047 1.03205e+06 +344147 818114 +344153 1.18793e+06 +344164 793714 +344219 917061 +344233 1.19703e+06 +344244 930950 +344264 1.00204e+06 +344264 1.173e+06 +344303 1.03632e+06 +344319 902208 +344358 831069 +344361 847000 +344397 881408 +344433 869353 +344436 1.18609e+06 +344442 857197 +344450 921831 +344464 823917 +344467 859042 +344481 1.19242e+06 +344550 936800 +344600 976736 +344650 1.10091e+06 +344667 960531 +344672 835739 +344678 844292 +344689 802561 +344706 826708 +344717 1.04245e+06 +344719 996478 +344725 818808 +344742 1.01304e+06 +344750 782025 +344806 853478 +344811 872933 +344811 983828 +344839 1.14322e+06 +344847 854764 +344872 786564 +344917 835375 +344942 858478 +344942 890078 +344967 791144 +344989 820144 +345003 915525 +345008 1.17185e+06 +345014 926364 +345022 979575 +345025 849511 +345025 901986 +345028 816117 +345028 991406 +345033 826503 +345036 930550 +345044 971192 +345078 877286 +345078 969681 +345094 886353 +345106 899397 +345114 835272 +345125 798511 +345133 1.10078e+06 +345136 1.02882e+06 +345186 835008 +345203 1.06241e+06 +345228 824944 +345231 869703 +345250 868947 +345286 862533 +345325 839850 +345358 1.01758e+06 +345361 1.1729e+06 +345364 792917 +345381 962183 +345386 787878 +345400 1.12468e+06 +345439 853106 +345442 919689 +345486 994219 +345506 906417 +345508 1.02311e+06 +345517 805839 +345519 779264 +345556 909128 +345567 936339 +345622 858125 +345636 1.11854e+06 +345644 925867 +345650 835453 +345689 856150 +345719 931731 +345750 809022 +345772 833325 +345794 795467 +345794 1.18116e+06 +345811 1.13204e+06 +345828 1.17408e+06 +345861 942394 +345894 953525 +345931 806756 +345958 911997 +345958 1.20137e+06 +345969 837633 +346017 1.05208e+06 +346047 964239 +346058 869833 +346081 821136 +346086 983900 +346100 1.12315e+06 +346125 835250 +346136 1.20192e+06 +346144 1.20079e+06 +346172 796850 +346175 899686 +346181 790089 +346183 824781 +346200 923953 +346228 973961 +346275 968406 +346278 862744 +346292 786056 +346294 986283 +346350 857672 +346378 978172 +346381 993336 +346392 1.20457e+06 +346403 784842 +346417 1.02724e+06 +346433 971642 +346447 824703 +346453 1.18217e+06 +346461 893053 +346481 979578 +346500 803892 +346517 827839 +346525 965258 +346564 819653 +346581 885667 +346589 989514 +346628 1.06776e+06 +346647 830967 +346686 795456 +346708 890264 +346719 929986 +346722 860342 +346778 769511 +346781 829317 +346800 791953 +346811 874061 +346833 828375 +346844 903828 +346856 829533 +346875 771194 +346883 999117 +346889 821958 +346931 913136 +346950 765597 +346972 989492 +346975 798836 +346981 1.18136e+06 +346989 767406 +347008 875289 +347017 863758 +347022 824647 +347047 812144 +347047 852819 +347142 856808 +347181 766642 +347203 807711 +347206 958989 +347228 767264 +347242 827814 +347247 1.00534e+06 +347297 889506 +347303 865861 +347311 877025 +347339 824439 +347350 793492 +347356 779956 +347358 800883 +347369 822544 +347394 820372 +347400 972219 +347436 1.01854e+06 +347447 876675 +347464 922894 +347503 981714 +347514 950478 +347539 774306 +347569 879728 +347575 1.12453e+06 +347583 1.06055e+06 +347589 796108 +347600 827539 +347647 830642 +347650 876986 +347658 847700 +347694 922669 +347697 849703 +347711 794439 +347711 1.12057e+06 +347731 803919 +347736 907575 +347739 794631 +347744 966781 +347781 923489 +347786 823103 +347794 993350 +347803 982919 +347808 915808 +347825 979567 +347831 917464 +347839 918997 +347861 783944 +347864 768594 +347878 826925 +347967 969592 +347997 876772 +348000 824244 +348028 869717 +348061 1.06733e+06 +348117 881900 +348150 791833 +348150 922242 +348150 1.02397e+06 +348172 974056 +348228 1.18944e+06 +348231 982439 +348239 899936 +348247 824194 +348253 1.06838e+06 +348256 872947 +348258 774597 +348267 972589 +348289 958436 +348297 826017 +348347 976022 +348406 850428 +348406 883147 +348422 826447 +348450 955572 +348481 1.14613e+06 +348514 865722 +348525 823942 +348544 955819 +348561 1.00213e+06 +348611 966653 +348614 824317 +348628 875375 +348639 800014 +348639 843242 +348642 1.18162e+06 +348661 921100 +348686 858394 +348697 1.1176e+06 +348711 852908 +348719 855092 +348719 995039 +348722 896906 +348761 839583 +348767 1.17103e+06 +348778 824242 +348781 834011 +348789 769017 +348789 964122 +348794 819664 +348833 827075 +348847 796944 +348853 824561 +348878 793664 +348878 911944 +348892 946006 +348906 809567 +348936 983656 +348964 982003 +348983 940906 +348989 817619 +349022 1.10158e+06 +349025 790119 +349047 772317 +349050 1.16819e+06 +349069 1.0668e+06 +349106 818531 +349128 911100 +349147 977783 +349158 851092 +349181 797628 +349181 833856 +349181 973142 +349186 953089 +349203 822964 +349225 817428 +349236 777742 +349239 819331 +349244 807436 +349278 957156 +349283 820992 +349319 981400 +349322 865719 +349331 837772 +349331 838472 +349333 957694 +349364 818794 +349378 821453 +349378 1.00888e+06 +349386 822272 +349386 1.04682e+06 +349392 797742 +349431 797872 +349447 818378 +349475 857144 +349481 821275 +349492 904714 +349494 819322 +349508 821061 +349508 950800 +349511 946369 +349528 785089 +349531 1.20435e+06 +349569 924272 +349581 819908 +349581 852233 +349594 967525 +349611 819675 +349617 898294 +349622 779625 +349622 993803 +349672 947244 +349675 799847 +349675 824436 +349681 800769 +349692 873711 +349703 789456 +349717 1.20571e+06 +349722 909025 +349744 920164 +349769 914950 +349775 853578 +349808 792244 +349831 852861 +349842 804494 +349842 819267 +349853 805497 +349861 843714 +349883 803672 +349894 969233 +349894 992492 +349900 1.06049e+06 +349919 818350 +349919 868467 +349919 868469 +349936 802647 +349942 812422 +349942 853494 +349958 792264 +349978 783236 +349992 780914 +349994 1.17649e+06 +350025 809800 +350047 928025 +350072 809453 +350075 802011 +350081 907897 +350081 912511 +350122 857044 +350131 907225 +350133 786942 +350136 973608 +350142 852519 +350147 973353 +350153 785033 +350158 819750 +350167 818042 +350169 1.17835e+06 +350228 943811 +350242 810281 +350242 1.10697e+06 +350294 990928 +350308 766933 +350319 787950 +350322 932231 +350414 821044 +350419 896644 +350428 1.20475e+06 +350450 896217 +350456 853097 +350469 820903 +350478 856719 +350511 862697 +350522 868886 +350525 788786 +350525 831969 +350525 979361 +350525 1.18173e+06 +350531 850503 +350536 946233 +350539 933933 +350550 777467 +350553 871575 +350561 884353 +350589 1.194e+06 +350594 942525 +350644 888908 +350706 918794 +350711 797617 +350717 816500 +350725 982433 +350742 856261 +350767 806694 +350778 874397 +350800 816331 +350803 963989 +350822 942631 +350831 808925 +350833 980875 +350839 922078 +350844 1.06651e+06 +350872 973347 +350875 840347 +350886 770353 +350886 924419 +350906 806864 +350931 934483 +350950 789558 +350964 787842 +350975 987461 +350978 984353 +350989 1.20611e+06 +351036 986033 +351044 801094 +351056 830967 +351083 770444 +351097 794725 +351111 812267 +351117 1.01363e+06 +351128 918222 +351136 851381 +351161 781364 +351167 807239 +351186 1.2059e+06 +351211 815161 +351217 1.2062e+06 +351225 853439 +351228 953708 +351258 1.17985e+06 +351303 967756 +351314 794297 +351322 1.18448e+06 +351347 1.19455e+06 +351347 1.19472e+06 +351378 976578 +351392 973944 +351400 939214 +351411 848722 +351425 1.19456e+06 +351428 767706 +351428 1.2064e+06 +351436 828214 +351447 768025 +351461 966697 +351464 901844 +351483 818611 +351494 900489 +351497 949706 +351508 927439 +351508 938067 +351519 865706 +351522 1.07842e+06 +351536 781056 +351544 1.19455e+06 +351578 991750 +351586 964931 +351594 848767 +351600 926406 +351608 848578 +351619 1.06642e+06 +351644 860106 +351647 853014 +351672 946722 +351678 789731 +351697 1.0789e+06 +351700 885922 +351717 1.03724e+06 +351739 793925 +351742 846536 +351742 877378 +351744 814500 +351750 821894 +351794 806475 +351858 861122 +351864 947856 +351872 773211 +351883 982603 +351894 854858 +351894 1.14052e+06 +351903 944108 +351958 851847 +351981 1.11651e+06 +351997 870308 +352006 1.06701e+06 +352014 855192 +352017 838242 +352031 859211 +352036 1.01106e+06 +352044 898739 +352086 851269 +352092 1.18828e+06 +352097 860794 +352144 901964 +352153 998661 +352192 812058 +352219 1.01831e+06 +352225 974392 +352231 931578 +352244 907867 +352244 966703 +352247 882492 +352250 903250 +352256 803292 +352269 808433 +352303 810428 +352311 944778 +352317 916675 +352325 1.00599e+06 +352333 827344 +352336 886064 +352339 923875 +352353 815147 +352358 883906 +352361 823494 +352361 851986 +352369 974061 +352375 962414 +352378 1.06606e+06 +352381 1.18914e+06 +352386 810753 +352386 1.06667e+06 +352392 944258 +352400 858397 +352411 946197 +352422 873347 +352428 1.02428e+06 +352436 893500 +352450 813414 +352464 929364 +352472 975994 +352481 930489 +352494 1.1219e+06 +352506 917361 +352531 821972 +352536 951228 +352542 827003 +352556 793725 +352556 949214 +352561 792825 +352561 889878 +352561 912000 +352569 783525 +352578 969364 +352592 810756 +352597 804256 +352597 1.18913e+06 +352603 857361 +352606 971194 +352619 811875 +352625 775819 +352633 905711 +352678 811031 +352700 916397 +352706 861281 +352722 810483 +352747 812103 +352750 904667 +352767 991347 +352783 931336 +352800 824222 +352822 913653 +352828 1.20659e+06 +352831 863742 +352847 812842 +352861 811306 +352872 955822 +352889 811450 +352908 978119 +352911 996397 +352919 937297 +352922 815358 +352928 936344 +352950 797456 +352964 847481 +352969 940361 +352981 810161 +352983 824833 +353000 1.06551e+06 +353053 767889 +353061 786092 +353067 777883 +353083 771544 +353089 983417 +353097 915678 +353106 818589 +353111 824442 +353128 979442 +353164 811764 +353186 824611 +353194 877622 +353228 838075 +353233 845250 +353236 806561 +353236 873036 +353256 943014 +353258 896161 +353264 891494 +353267 786764 +353272 969250 +353289 817589 +353289 932528 +353339 818653 +353356 961361 +353361 941731 +353375 857042 +353394 974864 +353414 898972 +353425 779089 +353458 794172 +353464 824722 +353489 991700 +353500 802003 +353511 855678 +353544 944339 +353561 952653 +353575 780061 +353583 798947 +353589 810972 +353597 797800 +353600 819294 +353614 868397 +353619 862094 +353628 842942 +353653 1.0341e+06 +353658 1.20849e+06 +353692 819569 +353694 824931 +353714 853906 +353725 774378 +353733 1.19018e+06 +353736 832261 +353781 987817 +353786 813792 +353797 902578 +353819 785489 +353833 1.19109e+06 +353842 922156 +353842 977242 +353847 779931 +353858 943983 +353869 879953 +353878 805958 +353917 979411 +353992 788161 +354006 1.19469e+06 +354014 931142 +354019 797844 +354019 907531 +354019 974811 +354025 812025 +354025 1.08223e+06 +354058 801169 +354061 945986 +354078 786722 +354106 808431 +354117 902783 +354119 994039 +354131 787358 +354133 780711 +354175 816431 +354197 1.1902e+06 +354211 945144 +354219 992792 +354231 914558 +354244 844875 +354267 918367 +354286 794933 +354289 815017 +354294 857231 +354303 942314 +354308 834475 +354325 936153 +354325 963047 +354339 795872 +354339 1.06446e+06 +354342 806208 +354353 1.01172e+06 +354358 970911 +354364 1.00805e+06 +354367 943481 +354372 936728 +354392 886414 +354397 959817 +354406 933878 +354411 897781 +354419 974406 +354428 845931 +354428 1.20891e+06 +354447 784272 +354453 1.00271e+06 +354469 850844 +354492 867889 +354492 898150 +354494 973964 +354581 959411 +354603 947872 +354622 894019 +354639 815219 +354658 781608 +354667 856542 +354675 975161 +354686 830042 +354700 955228 +354714 934664 +354714 983553 +354725 774158 +354736 812547 +354778 942217 +354797 791806 +354817 860886 +354833 864603 +354867 808603 +354867 966847 +354869 938275 +354872 806219 +354886 829889 +354894 971633 +354894 1.2067e+06 +354900 903586 +354911 973228 +354914 920311 +354922 941375 +354939 850125 +354942 953053 +354969 779822 +354975 972686 +354983 949694 +354992 808489 +355006 940514 +355033 969025 +355042 974458 +355067 977622 +355069 787394 +355078 901469 +355083 783397 +355125 771008 +355133 845453 +355147 847903 +355147 1.06365e+06 +355150 882453 +355156 989669 +355186 976319 +355197 843636 +355225 976186 +355228 973769 +355261 987072 +355272 863336 +355281 1.08742e+06 +355289 774014 +355297 806683 +355322 979547 +355325 770328 +355328 828375 +355328 904206 +355333 829108 +355336 825286 +355361 1.00959e+06 +355364 782847 +355400 766233 +355453 779750 +355456 806111 +355464 770525 +355478 875519 +355494 985778 +355497 826503 +355508 975486 +355511 804067 +355608 975511 +355642 896464 +355642 907167 +355642 1.2108e+06 +355658 972867 +355692 805819 +355742 1.05674e+06 +355753 1.01184e+06 +355756 812119 +355778 989642 +355842 788003 +355842 881194 +355847 808103 +355869 804631 +355881 1.18491e+06 +355900 842419 +355914 924603 +355942 1.1934e+06 +355961 781244 +355978 824000 +356008 825542 +356014 844611 +356028 859197 +356056 851889 +356067 778236 +356075 958600 +356081 968208 +356092 1.18483e+06 +356111 773731 +356111 903297 +356122 804469 +356139 996711 +356139 1.06725e+06 +356144 888139 +356150 870353 +356172 878394 +356178 823214 +356203 908983 +356225 1.1767e+06 +356233 959603 +356289 821808 +356311 983169 +356328 993814 +356333 801161 +356333 825822 +356350 779333 +356356 941672 +356361 833778 +356383 912650 +356397 1.01603e+06 +356419 977461 +356442 823031 +356453 780100 +356486 956558 +356497 881267 +356497 910739 +356506 784567 +356508 883933 +356508 1.17661e+06 +356528 974778 +356578 820256 +356611 841722 +356617 971953 +356650 988828 +356678 1.01397e+06 +356697 812217 +356708 804744 +356728 895733 +356736 905072 +356744 900997 +356781 1.08151e+06 +356781 1.19228e+06 +356806 1.09052e+06 +356817 804325 +356839 820094 +356842 819919 +356869 1.05937e+06 +356914 1.00638e+06 +356919 848608 +356922 804350 +356942 970631 +356969 825608 +357006 808883 +357017 914414 +357017 968806 +357044 820361 +357047 967650 +357050 899694 +357064 812189 +357069 1.18455e+06 +357072 810758 +357078 798139 +357111 786144 +357111 890875 +357139 814222 +357142 835103 +357144 811464 +357200 791775 +357233 794625 +357258 979761 +357272 814708 +357289 814000 +357289 817794 +357292 1.18549e+06 +357306 911983 +357319 1.05151e+06 +357325 788506 +357328 843339 +357331 806772 +357333 796528 +357406 815633 +357422 905622 +357425 960700 +357436 796925 +357442 987472 +357444 1.09076e+06 +357453 816850 +357453 895297 +357472 854667 +357478 953694 +357486 966578 +357519 776703 +357547 1.18424e+06 +357561 899281 +357564 839706 +357578 816044 +357581 903222 +357603 841358 +357636 1.05932e+06 +357689 1.19246e+06 +357697 916408 +357719 786389 +357719 877839 +357739 814314 +357758 889900 +357808 783700 +357825 808875 +357847 891172 +357875 784808 +357883 776381 +357883 835544 +357894 839739 +357900 782042 +357914 787814 +357950 839319 +357964 814308 +357967 1.19107e+06 +357972 826842 +357972 842561 +357975 952503 +357981 976783 +358028 887747 +358028 965058 +358064 778636 +358083 970125 +358103 805561 +358111 768969 +358144 946283 +358147 892256 +358161 904342 +358178 798033 +358197 889158 +358203 956739 +358217 911283 +358239 772556 +358239 802536 +358242 783150 +358264 825494 +358269 1.01442e+06 +358275 839408 +358275 860717 +358303 925578 +358306 963908 +358383 894061 +358422 907042 +358425 756389 +358447 984128 +358456 863903 +358483 814961 +358506 953181 +358544 770558 +358589 1.08761e+06 +358614 979314 +358656 846850 +358656 1.01973e+06 +358667 767489 +358669 778294 +358681 835619 +358683 921175 +358708 955222 +358728 917539 +358756 893961 +358764 960608 +358778 766156 +358789 974250 +358800 901669 +358808 845086 +358825 800822 +358842 1.19271e+06 +358894 775325 +358906 903442 +358922 828292 +358922 904525 +358939 805617 +358967 775361 +359000 905819 +359028 802572 +359081 756761 +359089 926311 +359092 848781 +359100 790756 +359128 1.00382e+06 +359139 815392 +359153 820647 +359153 949697 +359175 762525 +359197 887589 +359217 811767 +359242 941883 +359250 868689 +359258 854642 +359272 899189 +359325 951411 +359339 845525 +359358 902578 +359381 777908 +359417 915483 +359419 958831 +359444 772100 +359447 960650 +359489 850269 +359494 944233 +359517 956506 +359525 975944 +359553 960086 +359556 800056 +359572 756244 +359594 953692 +359597 899719 +359606 839208 +359606 858142 +359608 782539 +359619 797625 +359625 1.19043e+06 +359669 831878 +359686 1.19291e+06 +359731 886781 +359739 970333 +359744 779658 +359758 943175 +359786 1.14832e+06 +359797 785100 +359806 889414 +359814 979108 +359819 841139 +359850 967667 +359883 966008 +359911 1.0608e+06 +359925 945678 +359939 788989 +359942 799356 +359942 941750 +359983 769464 +359986 961139 +360006 884281 +360014 940081 +360025 1.0593e+06 +360042 1.20128e+06 +360081 931864 +360083 1.19961e+06 +360103 842697 +360111 778578 +360114 886228 +360153 834150 +360156 865819 +360167 1.01824e+06 +360211 879669 +360214 803822 +360222 1.06958e+06 +360228 959681 +360317 840281 +360344 893856 +360358 894797 +360364 788236 +360381 882444 +360381 882736 +360397 1.14981e+06 +360417 901139 +360419 942469 +360444 843444 +360469 902928 +360489 777494 +360503 909750 +360508 902386 +360525 957906 +360533 873125 +360536 985881 +360583 905000 +360589 880978 +360594 919083 +360594 1.02513e+06 +360594 1.19311e+06 +360606 766094 +360625 941572 +360653 1.19016e+06 +360667 889939 +360689 794008 +360719 841333 +360725 797922 +360753 791000 +360764 888100 +360769 873878 +360775 860333 +360839 877947 +360839 898292 +360844 965833 +360861 937411 +360872 819275 +360914 793644 +360944 1.15041e+06 +360956 794381 +360958 792672 +360958 844425 +360967 811825 +360969 804194 +360981 1.19559e+06 +360989 783014 +360997 802444 +361006 870511 +361017 784583 +361019 871150 +361028 795069 +361033 841319 +361039 835528 +361047 845972 +361053 777131 +361056 795425 +361072 796589 +361075 832869 +361075 872208 +361078 876331 +361083 910972 +361092 978983 +361128 892617 +361131 794767 +361142 966989 +361156 970581 +361161 983167 +361169 867664 +361194 921358 +361197 800739 +361219 794292 +361222 786864 +361222 834925 +361275 889858 +361294 774206 +361306 824247 +361319 787569 +361325 885186 +361342 901597 +361344 806597 +361350 816778 +361350 1.11239e+06 +361397 961086 +361397 1.20359e+06 +361450 824169 +361456 1.1906e+06 +361458 811608 +361475 852683 +361481 989239 +361497 992978 +361511 955092 +361533 888006 +361536 856436 +361539 959925 +361542 837042 +361544 1.09552e+06 +361572 819783 +361583 811478 +361628 855017 +361631 818717 +361631 828311 +361661 948544 +361714 811942 +361725 859297 +361750 1.15136e+06 +361772 873397 +361778 942333 +361808 776669 +361858 953428 +361867 941286 +361869 903831 +361881 945403 +361889 957456 +361894 829586 +361900 764664 +361931 896556 +361956 840681 +361958 854486 +361961 820706 +361983 811531 +361983 1.01192e+06 +361989 1.15117e+06 +362000 865186 +362000 951675 +362022 802811 +362022 890122 +362025 911744 +362028 1.20102e+06 +362031 891908 +362031 1.19087e+06 +362061 942342 +362078 1.19346e+06 +362086 799050 +362128 1.21125e+06 +362136 886125 +362139 832950 +362164 805128 +362167 816747 +362178 841547 +362189 764642 +362211 919292 +362239 916083 +362261 926847 +362272 808336 +362294 771144 +362297 931075 +362325 807083 +362333 888244 +362336 897494 +362339 897694 +362361 900556 +362369 799797 +362381 963164 +362392 808447 +362403 802936 +362419 859519 +362419 959756 +362442 808486 +362506 837975 +362522 859517 +362553 941306 +362569 830861 +362586 831953 +362589 891917 +362614 909711 +362631 902925 +362633 894878 +362642 946928 +362650 1.01406e+06 +362675 944844 +362689 984794 +362694 958544 +362711 925353 +362739 772847 +362742 870642 +362758 998808 +362789 925969 +362803 978978 +362806 803594 +362808 835150 +362831 924939 +362842 821728 +362867 769850 +362894 972878 +362914 887081 +362928 951531 +362942 824736 +362953 801419 +362961 1.19141e+06 +362972 959911 +362972 970078 +362978 1.19206e+06 +362989 842233 +363008 1.19782e+06 +363019 762236 +363019 883267 +363047 866200 +363064 821933 +363075 975861 +363081 784069 +363100 964639 +363106 785911 +363119 877733 +363125 956158 +363133 823536 +363156 997572 +363158 914825 +363158 1.19708e+06 +363183 876947 +363200 906019 +363208 1.21243e+06 +363231 867133 +363275 1.19645e+06 +363294 783994 +363300 841839 +363303 1.19291e+06 +363314 772131 +363319 941183 +363353 934358 +363358 944606 +363361 1.02072e+06 +363378 968036 +363386 891639 +363417 783903 +363433 888503 +363486 822108 +363511 1.19419e+06 +363528 1.09617e+06 +363547 796647 +363556 856589 +363586 1.05609e+06 +363611 1.04595e+06 +363628 907536 +363644 958386 +363647 935678 +363683 960011 +363722 822258 +363728 942086 +363783 894719 +363808 848844 +363828 841200 +363828 901906 +363833 853231 +363839 925814 +363853 799597 +363864 804697 +363872 1.19217e+06 +363875 980894 +363883 864467 +363908 861672 +363911 950464 +363922 824117 +363936 789831 +363950 867794 +363956 769322 +363956 807228 +363956 978781 +363983 781556 +363992 900236 +364000 1.00802e+06 +364011 937378 +364036 814931 +364039 793364 +364053 984403 +364072 830056 +364072 1.05572e+06 +364078 905797 +364122 799672 +364142 963950 +364158 776033 +364169 1.09228e+06 +364181 826239 +364197 824767 +364203 814736 +364211 947967 +364219 944533 +364242 890569 +364247 1.21325e+06 +364253 896994 +364269 775958 +364333 1.19686e+06 +364336 993900 +364339 1.00141e+06 +364344 779122 +364356 978686 +364367 952711 +364369 772292 +364369 975853 +364392 992044 +364394 824558 +364422 770989 +364425 835997 +364442 883344 +364456 781986 +364508 775592 +364511 776797 +364517 899669 +364517 1.03184e+06 +364519 899192 +364533 1.00537e+06 +364542 835694 +364614 776544 +364639 950475 +364644 929200 +364664 799072 +364703 866514 +364708 828519 +364742 822611 +364744 818050 +364761 1.19442e+06 +364778 825933 +364797 1.21731e+06 +364850 825033 +364878 878383 +364883 797669 +364900 774417 +364933 900750 +364956 915406 +364981 845128 +364992 806075 +365003 776453 +365003 806267 +365008 888753 +365042 888742 +365050 1.01782e+06 +365053 811211 +365067 1.21443e+06 +365092 868850 +365108 1.04915e+06 +365139 1.19553e+06 +365147 946111 +365189 896125 +365211 860264 +365222 827136 +365225 939394 +365233 1.19286e+06 +365244 915381 +365289 974436 +365297 832175 +365297 873594 +365303 959233 +365331 823269 +365333 858500 +365356 954322 +365428 1.19832e+06 +365433 1.14446e+06 +365433 1.19386e+06 +365450 1.19286e+06 +365456 944850 +365461 963269 +365461 982697 +365483 824558 +365483 825619 +365486 866961 +365500 855053 +365556 824681 +365569 899664 +365619 862481 +365619 961614 +365681 896006 +365708 1.19611e+06 +365711 891861 +365736 967039 +365736 995719 +365744 851289 +365753 906039 +365769 825678 +365789 984619 +365817 865164 +365822 870656 +365822 988794 +365831 772003 +365844 824894 +365858 793953 +365864 895278 +365878 841269 +365886 793664 +365914 825736 +365922 896153 +365933 1.21834e+06 +365936 947689 +365944 943839 +365950 821889 +365953 1.01636e+06 +365958 902472 +365964 821886 +365964 1.19449e+06 +366003 1.21894e+06 +366031 924281 +366061 1.18062e+06 +366067 1.20188e+06 +366103 883147 +366111 1.21851e+06 +366117 1.19526e+06 +366136 898164 +366208 908233 +366211 932153 +366222 811511 +366244 1.19313e+06 +366283 799511 +366306 1.19678e+06 +366336 817839 +366378 825811 +366386 951539 +366408 802658 +366422 887389 +366436 932183 +366483 871664 +366503 1.1979e+06 +366506 944433 +366508 844386 +366592 1.19593e+06 +366611 809242 +366672 889933 +366675 868519 +366678 963369 +366689 899686 +366692 978008 +366722 939408 +366769 938686 +366775 769228 +366778 1.21654e+06 +366783 973097 +366828 1.01481e+06 +366844 1.21801e+06 +366850 931197 +366858 775428 +366889 831111 +366906 975561 +366908 851347 +366914 798728 +366936 949628 +366942 913992 +366986 789017 +366989 844775 +367000 781000 +367000 799389 +367006 956378 +367022 856917 +367039 1.05594e+06 +367069 970853 +367081 1.19555e+06 +367097 819775 +367097 998931 +367106 1.19758e+06 +367111 1.07984e+06 +367133 788289 +367150 799156 +367161 770683 +367161 809789 +367222 865772 +367233 844706 +367236 1.20059e+06 +367264 781292 +367278 1.10254e+06 +367281 765839 +367281 918522 +367281 1.08218e+06 +367286 809992 +367294 1.02513e+06 +367342 1.08359e+06 +367417 886367 +367417 943989 +367433 841597 +367472 959806 +367478 1.19771e+06 +367511 948472 +367533 861906 +367536 1.20381e+06 +367544 983564 +367569 903928 +367575 778472 +367583 830272 +367592 799906 +367592 895867 +367619 836950 +367625 807350 +367628 940558 +367647 882953 +367658 789286 +367658 1.21757e+06 +367758 873556 +367786 956392 +367797 893856 +367819 966608 +367856 1.08686e+06 +367892 815822 +367903 853706 +367911 817714 +367958 899578 +367958 959353 +367983 816825 +367992 784586 +368044 972825 +368050 986661 +368069 977333 +368083 767444 +368097 1.02255e+06 +368100 871542 +368125 898614 +368142 774686 +368161 1.00519e+06 +368172 939206 +368222 1.07992e+06 +368253 1.19702e+06 +368256 793983 +368347 815150 +368353 762986 +368356 996300 +368406 763106 +368414 946108 +368431 833219 +368453 868872 +368456 1.21537e+06 +368467 762856 +368472 896853 +368486 832192 +368519 833542 +368525 1.21401e+06 +368528 759783 +368572 883503 +368589 1.20455e+06 +368600 1.01213e+06 +368642 867103 +368650 878353 +368656 874886 +368658 831906 +368664 838889 +368672 814236 +368689 943678 +368706 890097 +368736 950956 +368744 948772 +368767 895878 +368817 827472 +368822 970531 +368833 979217 +368858 899292 +368900 822797 +368914 895383 +368936 812761 +368942 817769 +368975 959258 +369008 820803 +369031 1.06579e+06 +369033 1.04439e+06 +369042 1.21748e+06 +369053 935714 +369067 827819 +369069 1.00539e+06 +369086 1.11473e+06 +369094 894525 +369103 1.21756e+06 +369172 948794 +369192 942550 +369208 893506 +369289 939275 +369333 826292 +369333 948728 +369336 1.06998e+06 +369353 1.21772e+06 +369367 1.21864e+06 +369439 824642 +369444 940042 +369456 1.12526e+06 +369483 810850 +369486 840969 +369497 901583 +369519 926603 +369536 793592 +369542 1.01065e+06 +369544 947878 +369606 840933 +369608 1.21963e+06 +369614 1.2006e+06 +369619 781253 +369639 937956 +369647 829486 +369647 890892 +369661 829225 +369683 1.21899e+06 +369708 937178 +369742 1.2203e+06 +369753 1.21952e+06 +369758 825758 +369772 1.21898e+06 +369781 829886 +369783 822978 +369786 764283 +369800 856122 +369847 850631 +369861 1.20626e+06 +369869 948306 +369881 1.21956e+06 +369889 846000 +369903 864436 +369911 914925 +369922 919697 +369928 786014 +369944 956200 +369947 782275 +369953 917036 +369953 943158 +369956 910144 +369958 859119 +369975 798922 +370011 930814 +370031 936372 +370053 891764 +370058 1.21567e+06 +370081 1.0189e+06 +370097 913233 +370114 959350 +370161 819744 +370172 984850 +370175 885314 +370208 932058 +370236 898197 +370297 763456 +370303 934728 +370322 976067 +370333 883500 +370358 770956 +370369 944967 +370372 950897 +370372 956161 +370403 784836 +370406 944725 +370431 1.00921e+06 +370433 932942 +370436 896103 +370475 1.12526e+06 +370478 807800 +370478 874850 +370500 789444 +370511 1.22014e+06 +370514 1.22072e+06 +370517 890467 +370525 862078 +370561 850886 +370564 786386 +370583 1.20849e+06 +370589 881325 +370597 953592 +370619 970381 +370625 817519 +370667 766767 +370675 935519 +370692 941164 +370758 946394 +370767 889736 +370767 944592 +370803 779975 +370833 886000 +370836 944133 +370842 945131 +370850 896553 +370850 1.21609e+06 +370853 891625 +370869 818553 +370892 1.22085e+06 +370919 846042 +370925 792967 +370931 817939 +370939 860464 +370944 880803 +371028 853064 +371036 938183 +371042 965000 +371042 1.13583e+06 +371044 899106 +371056 806856 +371067 925806 +371092 878819 +371117 792858 +371142 891978 +371147 815197 +371150 1.07632e+06 +371156 933700 +371169 930556 +371183 828269 +371200 934800 +371222 763461 +371231 1.20259e+06 +371236 826014 +371236 886303 +371239 921011 +371261 1.22121e+06 +371267 961867 +371289 840833 +371297 804092 +371306 922633 +371306 1.13508e+06 +371306 1.21653e+06 +371331 1.13653e+06 +371367 859569 +371389 884033 +371425 945106 +371464 927686 +371464 944628 +371492 944428 +371500 824561 +371506 913575 +371511 887319 +371533 980308 +371536 837619 +371544 906956 +371575 929406 +371658 872475 +371672 876925 +371675 951097 +371686 1.13679e+06 +371692 948439 +371694 1.045e+06 +371731 781236 +371733 826311 +371742 1.05937e+06 +371753 1.01349e+06 +371753 1.13289e+06 +371764 943100 +371767 945653 +371769 846358 +371792 916567 +371794 859069 +371800 896550 +371836 873836 +371875 782017 +371883 944700 +371886 997653 +371903 952969 +371908 874528 +371967 897361 +372008 1.05423e+06 +372011 871789 +372011 1.13269e+06 +372014 994836 +372064 888447 +372075 826719 +372081 880567 +372147 938397 +372153 932981 +372167 895244 +372175 870489 +372197 895089 +372242 957081 +372256 866836 +372256 1.07598e+06 +372267 1.21974e+06 +372275 800131 +372278 774022 +372303 774778 +372322 820992 +372350 892700 +372364 1.21991e+06 +372367 874753 +372369 871592 +372397 969953 +372400 774303 +372414 982264 +372417 909686 +372422 784600 +372494 831933 +372508 925103 +372525 812714 +372539 764972 +372578 1.20998e+06 +372583 1.05904e+06 +372608 854989 +372639 1.22022e+06 +372653 973714 +372658 977653 +372678 760178 +372683 931169 +372689 993264 +372694 1.07009e+06 +372697 812225 +372703 955522 +372706 767078 +372708 799417 +372722 858911 +372742 875119 +372742 971686 +372750 1.0596e+06 +372753 1.07879e+06 +372769 891833 +372775 948247 +372778 820992 +372808 798972 +372811 985800 +372856 1.0034e+06 +372867 980256 +372872 1.21949e+06 +372894 759717 +372908 1.20318e+06 +372936 889753 +372939 871233 +372992 862286 +373003 899811 +373011 816911 +373019 783922 +373022 1.20482e+06 +373039 823511 +373050 934283 +373058 895181 +373058 899703 +373100 947717 +373125 812600 +373128 967539 +373139 1.2102e+06 +373153 935850 +373194 806392 +373206 792578 +373231 1.22031e+06 +373250 813119 +373261 919558 +373264 807353 +373281 874989 +373281 1.19648e+06 +373314 808114 +373325 827211 +373328 880811 +373339 869961 +373342 795233 +373353 1.21894e+06 +373358 814367 +373358 829806 +373361 943011 +373386 929069 +373403 952608 +373411 799433 +373433 853419 +373442 867547 +373450 1.08289e+06 +373458 948086 +373475 1.21268e+06 +373489 1.08585e+06 +373539 812528 +373567 774419 +373569 788256 +373603 963036 +373611 891658 +373636 815503 +373636 1.18394e+06 +373661 811028 +373661 1.21826e+06 +373672 884864 +373689 1.22035e+06 +373783 798072 +373797 1.22136e+06 +373819 869225 +373822 808228 +373822 896661 +373839 931511 +373842 1.22234e+06 +373856 939531 +373856 1.00195e+06 +373861 1.02278e+06 +373869 1.20722e+06 +373875 971139 +373894 1.20612e+06 +373903 976419 +373931 940936 +373939 972808 +373972 807994 +374019 868758 +374028 1.04653e+06 +374042 844139 +374083 1.02614e+06 +374108 947047 +374111 935494 +374136 791425 +374153 888978 +374153 938408 +374158 872656 +374183 956800 +374200 812433 +374208 814403 +374217 774378 +374222 810164 +374236 883461 +374242 864883 +374256 815069 +374283 1.21906e+06 +374300 1.22253e+06 +374303 839981 +374308 791233 +374322 1.20778e+06 +374328 815847 +374372 1.01972e+06 +374419 1.22142e+06 +374433 1.00015e+06 +374450 828053 +374450 871439 +374511 869092 +374517 892681 +374539 1.22181e+06 +374556 912094 +374556 946889 +374603 892469 +374614 1.22197e+06 +374636 1.22428e+06 +374644 818139 +374644 845067 +374650 858933 +374689 1.2214e+06 +374694 1.05869e+06 +374703 962633 +374717 1.21129e+06 +374739 1.08504e+06 +374744 972436 +374747 758586 +374767 878200 +374783 816536 +374792 825189 +374800 862939 +374817 1.00843e+06 +374850 1.19965e+06 +374861 1.22233e+06 +374931 871319 +374931 954700 +374947 1.20846e+06 +374950 942764 +374953 862214 +374994 918569 +375019 928208 +375028 975042 +375028 1.22468e+06 +375050 1.05007e+06 +375111 948378 +375178 876903 +375203 1.22275e+06 +375239 956611 +375264 1.20796e+06 +375272 796800 +375275 1.22512e+06 +375297 1.22039e+06 +375311 846619 +375314 767967 +375314 892533 +375317 758233 +375339 958264 +375389 872583 +375422 1.22515e+06 +375428 784575 +375439 947000 +375456 972686 +375458 773281 +375467 879839 +375472 996339 +375536 774606 +375544 889722 +375547 763372 +375569 946217 +375581 945197 +375583 971347 +375586 1.2227e+06 +375597 902939 +375631 1.22324e+06 +375658 973539 +375686 842964 +375697 852528 +375717 837069 +375728 827528 +375739 857400 +375742 1.22378e+06 +375792 1.06148e+06 +375808 774072 +375814 1.01355e+06 +375831 813806 +375831 815372 +375842 1.22365e+06 +375850 790517 +375867 847939 +375881 906289 +375900 775567 +375914 805439 +375950 1.20957e+06 +375958 816361 +375958 1.00443e+06 +375969 1.20865e+06 +375972 906272 +375986 1.22386e+06 +376028 992922 +376036 774917 +376069 875286 +376075 774772 +376133 779050 +376142 818667 +376144 934103 +376150 1.14511e+06 +376194 845781 +376194 888367 +376194 991061 +376211 906403 +376219 821633 +376242 1.0478e+06 +376242 1.09478e+06 +376264 894978 +376300 977822 +376306 1.2241e+06 +376339 794506 +376353 854008 +376361 867175 +376375 765747 +376414 1.20759e+06 +376439 930922 +376439 984308 +376439 987372 +376453 836489 +376456 847722 +376456 915358 +376458 981133 +376486 1.18971e+06 +376547 1.22407e+06 +376578 855911 +376583 976833 +376597 975750 +376614 764194 +376625 1.21874e+06 +376656 827717 +376658 775067 +376719 822842 +376739 808894 +376742 822775 +376775 1.13061e+06 +376789 812106 +376789 1.06353e+06 +376792 954569 +376806 926636 +376808 1.22399e+06 +376811 1.22123e+06 +376819 1.21767e+06 +376831 868714 +376833 879167 +376844 839531 +376853 852222 +376867 979764 +376881 972633 +376903 967819 +376908 757164 +376919 816242 +376922 973372 +376939 858592 +376942 1.22085e+06 +376947 1.22113e+06 +376989 937958 +377006 839739 +377022 1.21935e+06 +377033 822811 +377075 812508 +377103 763800 +377106 821842 +377117 757494 +377131 881867 +377139 971361 +377153 911350 +377194 756658 +377203 1.22526e+06 +377242 898611 +377250 1.22155e+06 +377258 806422 +377272 892167 +377306 818381 +377306 889331 +377339 883433 +377342 793542 +377347 812997 +377361 1.20934e+06 +377383 885406 +377397 818778 +377397 1.21424e+06 +377406 812308 +377417 1.21123e+06 +377431 811231 +377433 877039 +377478 842947 +377497 804631 +377519 890678 +377525 830689 +377528 1.00017e+06 +377531 1.06108e+06 +377533 847667 +377583 812128 +377589 774803 +377600 890772 +377622 848433 +377644 893350 +377661 1.08905e+06 +377667 1.20846e+06 +377692 906247 +377703 1.11601e+06 +377708 812086 +377733 1.13024e+06 +377739 890264 +377742 871133 +377750 1.22418e+06 +377753 879306 +377781 811883 +377792 964669 +377792 975361 +377800 864606 +377800 980194 +377800 1.21977e+06 +377806 804572 +377808 904217 +377814 891192 +377819 756539 +377831 812661 +377839 794431 +377889 971083 +377906 976292 +377931 819878 +377933 799942 +377944 935778 +377964 802978 +377975 797914 +377975 969994 +377975 1.20996e+06 +377975 1.21215e+06 +377992 882611 +378000 973181 +378017 804458 +378031 890275 +378044 1.2227e+06 +378067 1.00348e+06 +378092 854669 +378100 859814 +378106 954367 +378119 1.07664e+06 +378133 820247 +378136 884381 +378144 828072 +378158 811525 +378161 798247 +378172 968619 +378175 892278 +378206 889275 +378217 1.21999e+06 +378228 1.12435e+06 +378228 1.21276e+06 +378239 962889 +378242 820597 +378244 1.22231e+06 +378261 759919 +378286 922006 +378314 1.22284e+06 +378331 891428 +378333 866328 +378344 857319 +378347 973731 +378361 811350 +378361 875900 +378364 812019 +378367 905328 +378392 943544 +378397 947081 +378403 859492 +378406 886092 +378422 1.12827e+06 +378436 824094 +378456 838583 +378486 819936 +378492 1.06926e+06 +378500 997564 +378503 904986 +378503 1.22031e+06 +378511 905206 +378567 924050 +378589 808544 +378592 839186 +378592 1.22484e+06 +378619 846617 +378667 819867 +378672 905931 +378686 976647 +378714 1.09342e+06 +378717 1.22272e+06 +378728 905278 +378736 1.22456e+06 +378769 891144 +378772 1.22179e+06 +378803 862839 +378806 845731 +378811 957331 +378831 870494 +378858 1.22117e+06 +378869 1.22297e+06 +378883 894947 +378967 981783 +378978 889314 +378989 977825 +378994 890519 +379000 867550 +379061 1.22544e+06 +379064 1.22064e+06 +379086 881292 +379094 1.22685e+06 +379100 892358 +379103 853167 +379106 1.22279e+06 +379114 867444 +379136 898219 +379142 919025 +379161 951700 +379167 974222 +379169 952989 +379175 887622 +379214 832597 +379231 905553 +379231 994094 +379236 953458 +379244 953997 +379253 768594 +379256 1.22526e+06 +379331 753792 +379358 1.22347e+06 +379361 992522 +379364 907878 +379369 859917 +379369 869022 +379375 1.07812e+06 +379389 970194 +379403 918808 +379406 1.01254e+06 +379444 874053 +379481 1.2206e+06 +379489 922636 +379508 836258 +379514 867678 +379514 917711 +379533 1.20422e+06 +379578 1.2129e+06 +379586 767583 +379622 986003 +379622 1.22344e+06 +379631 806897 +379647 971472 +379681 913547 +379686 807672 +379717 1.00872e+06 +379725 890533 +379736 820175 +379736 838419 +379736 1.21694e+06 +379736 1.2253e+06 +379747 758342 +379747 815292 +379747 875558 +379747 1.22561e+06 +379772 1.22294e+06 +379781 1.2203e+06 +379797 1.01133e+06 +379806 1.01752e+06 +379811 883292 +379831 890161 +379833 758542 +379839 895894 +379842 1.20381e+06 +379850 1.03543e+06 +379861 1.00989e+06 +379872 1.22588e+06 +379883 857158 +379900 841797 +379917 920936 +379942 838878 +379953 867978 +379967 889200 +379969 1.03531e+06 +379975 1.21711e+06 +379978 1.20269e+06 +379989 861694 +379994 859436 +380014 975083 +380044 1.22298e+06 +380050 1.21805e+06 +380072 896583 +380081 927444 +380128 1.22644e+06 +380144 1.03628e+06 +380147 870364 +380150 1.21639e+06 +380153 890425 +380164 896186 +380172 1.22288e+06 +380228 1.07671e+06 +380239 976694 +380250 780044 +380269 1.21936e+06 +380281 979400 +380281 1.21884e+06 +380292 784769 +380300 790339 +380317 853425 +380331 1.22266e+06 +380372 848967 +380397 1.20232e+06 +380467 937042 +380467 973447 +380492 872742 +380494 773469 +380494 1.22158e+06 +380500 855458 +380522 1.02122e+06 +380525 847300 +380528 811042 +380564 839433 +380608 979294 +380628 914033 +380633 785028 +380639 1.0231e+06 +380667 1.03222e+06 +380669 818194 +380672 1.17229e+06 +380683 788897 +380694 787008 +380722 973453 +380756 755683 +380786 793833 +380803 893819 +380808 818342 +380831 900958 +380839 956342 +380844 998931 +380864 831264 +380872 1.0262e+06 +380875 1.06094e+06 +380903 899383 +380903 922925 +380908 881586 +380917 890503 +380933 885356 +380989 813242 +380992 875789 +380994 883375 +381042 1.22256e+06 +381050 857589 +381075 1.22569e+06 +381089 788578 +381111 858703 +381142 826033 +381161 825958 +381169 784419 +381200 869142 +381231 897017 +381236 857197 +381292 1.04023e+06 +381297 879350 +381303 1.21271e+06 +381344 977697 +381356 961356 +381361 810997 +381372 781881 +381375 1.20459e+06 +381378 892300 +381383 974311 +381400 937267 +381411 856878 +381428 948133 +381450 841114 +381472 980833 +381494 790719 +381503 926178 +381506 812875 +381522 1.21242e+06 +381542 1.213e+06 +381547 912439 +381558 1.2169e+06 +381597 855878 +381597 874483 +381600 856597 +381617 880653 +381619 834289 +381619 1.21611e+06 +381636 1.21149e+06 +381683 811950 +381689 869900 +381694 971064 +381700 877831 +381769 753931 +381778 947111 +381783 857097 +381803 813286 +381806 990983 +381811 813072 +381864 896056 +381867 919469 +381869 813656 +381875 877103 +381906 940292 +381942 855644 +381944 957425 +381950 856519 +381961 872967 +381961 1.20679e+06 +381969 856633 +381981 886844 +382000 858228 +382008 848733 +382019 790086 +382028 756928 +382031 975189 +382039 857253 +382050 875742 +382081 911603 +382097 842531 +382100 813842 +382100 982067 +382117 899942 +382119 852236 +382119 861219 +382119 896825 +382125 857403 +382142 856139 +382142 1.12923e+06 +382153 814247 +382181 814431 +382181 1.03756e+06 +382183 1.08568e+06 +382206 903958 +382211 903789 +382214 824425 +382225 853553 +382233 800947 +382239 868622 +382247 805333 +382289 856775 +382319 815378 +382319 977731 +382322 905628 +382325 1.22636e+06 +382369 859858 +382383 1.22039e+06 +382403 855242 +382431 933817 +382444 969278 +382453 781111 +382453 815672 +382456 870361 +382494 1.22039e+06 +382500 897500 +382511 875811 +382522 855922 +382542 857594 +382544 769639 +382544 1.04609e+06 +382547 856314 +382547 1.21299e+06 +382567 856017 +382575 879936 +382586 943303 +382614 856292 +382667 764542 +382667 855331 +382672 788261 +382678 856717 +382683 903800 +382694 1.08547e+06 +382717 846864 +382719 876878 +382722 855836 +382731 856231 +382739 856344 +382750 856150 +382769 1.1264e+06 +382786 821031 +382794 856500 +382806 952417 +382811 808528 +382825 855744 +382833 855911 +382833 903950 +382856 821958 +382856 858242 +382858 917203 +382911 766361 +382919 1.22457e+06 +382944 903158 +382972 856033 +382972 1.22284e+06 +382978 1.22491e+06 +382989 869550 +383000 831742 +383003 765078 +383017 916328 +383019 841475 +383028 855961 +383050 899942 +383056 856964 +383083 959556 +383106 854875 +383119 840275 +383139 1.22481e+06 +383150 919225 +383167 866958 +383172 889031 +383175 815211 +383219 756206 +383225 752181 +383239 774686 +383239 1.21821e+06 +383264 898769 +383269 1.22706e+06 +383294 891908 +383306 806533 +383308 887258 +383322 874453 +383325 829486 +383336 856536 +383344 864642 +383358 901497 +383364 750853 +383386 873450 +383397 1.227e+06 +383422 862761 +383436 893806 +383450 856156 +383450 982014 +383453 885878 +383456 915014 +383483 925814 +383483 970169 +383489 1.20773e+06 +383497 816328 +383500 947611 +383517 859417 +383519 972042 +383528 1.20932e+06 +383550 983492 +383553 875675 +383556 985806 +383567 1.21987e+06 +383606 755997 +383606 817375 +383642 1.22523e+06 +383644 987644 +383683 816997 +383700 851806 +383708 976639 +383722 965425 +383756 863447 +383775 880561 +383819 789769 +383819 975372 +383822 872128 +383861 974278 +383903 842942 +383903 1.05118e+06 +383908 933344 +383911 753489 +383914 869311 +383931 1.20801e+06 +383939 956028 +383953 754133 +383964 825589 +383969 1.1301e+06 +383975 943514 +383981 857550 +383981 980117 +383989 825783 +383997 913306 +384000 1.05217e+06 +384017 1.2236e+06 +384028 942536 +384039 961814 +384047 826006 +384069 875856 +384075 853789 +384078 786239 +384078 861100 +384086 899919 +384089 1.21371e+06 +384094 805581 +384094 822947 +384108 877614 +384147 789389 +384147 818442 +384167 958528 +384178 825864 +384192 824453 +384200 756881 +384200 820556 +384222 837339 +384275 899136 +384278 824572 +384292 1.05219e+06 +384314 928408 +384325 820203 +384328 903775 +384333 851697 +384342 895503 +384344 821325 +384364 1.22869e+06 +384369 823772 +384392 891628 +384406 1.22713e+06 +384408 929917 +384417 892742 +384428 814806 +384436 902011 +384456 910056 +384494 788692 +384528 999061 +384531 856703 +384558 755778 +384564 755775 +384597 940006 +384600 932025 +384603 752211 +384603 810853 +384614 900917 +384656 1.23008e+06 +384697 1.01752e+06 +384722 818144 +384731 779969 +384783 826381 +384783 1.07876e+06 +384794 946083 +384797 1.01358e+06 +384806 1.02781e+06 +384808 767783 +384817 943542 +384819 907414 +384819 1.00467e+06 +384819 1.20844e+06 +384825 1.00907e+06 +384850 786253 +384858 918503 +384886 813483 +384889 921742 +384897 766825 +384903 816475 +384903 897931 +384903 904869 +384919 872786 +384925 826903 +384961 1.21408e+06 +384972 949503 +385019 1.22995e+06 +385025 906278 +385033 826472 +385069 962617 +385086 906025 +385089 891406 +385094 818400 +385131 904358 +385158 884375 +385161 902103 +385172 752353 +385172 826978 +385181 987778 +385200 899839 +385208 880047 +385222 772939 +385225 827172 +385247 1.18624e+06 +385250 891333 +385250 985333 +385250 1.2197e+06 +385267 877097 +385314 993083 +385322 935219 +385325 767842 +385333 902869 +385339 899889 +385347 1.05998e+06 +385364 848419 +385364 859286 +385367 826831 +385369 903797 +385375 819325 +385386 903350 +385389 904072 +385400 827286 +385403 765847 +385411 902800 +385417 857678 +385419 902328 +385425 757197 +385433 896122 +385450 1.21739e+06 +385458 1.06925e+06 +385467 773369 +385489 866200 +385492 904925 +385503 827781 +385506 903331 +385531 903094 +385536 895383 +385542 903450 +385556 978333 +385561 864683 +385564 755717 +385569 903817 +385581 910119 +385594 835761 +385611 941911 +385614 898972 +385631 760792 +385672 866283 +385675 773283 +385708 901900 +385722 948789 +385731 828303 +385733 1.09549e+06 +385736 976742 +385753 771558 +385753 785028 +385758 1.22449e+06 +385767 921733 +385789 1.22579e+06 +385806 1.21529e+06 +385817 1.21493e+06 +385831 936944 +385833 901250 +385833 904067 +385869 984108 +385892 1.21302e+06 +385897 901200 +385903 769406 +385903 903367 +385908 822831 +385914 752917 +385922 899111 +385925 853178 +385925 903572 +385925 905869 +385950 905461 +385969 905092 +385992 833189 +386000 771625 +386008 904328 +386039 898072 +386050 1.07982e+06 +386056 894358 +386056 896819 +386067 896075 +386067 1.21266e+06 +386072 903833 +386075 903783 +386083 912189 +386086 771408 +386103 893725 +386106 895269 +386106 1.22868e+06 +386122 904633 +386125 903244 +386131 787992 +386153 873544 +386156 891142 +386156 952675 +386158 838086 +386172 890522 +386172 1.21327e+06 +386175 819819 +386175 903492 +386183 905892 +386194 946806 +386242 758547 +386244 769394 +386269 770733 +386269 889456 +386275 925664 +386283 910575 +386286 903194 +386300 1.1212e+06 +386339 958256 +386350 900928 +386356 756103 +386356 904150 +386367 900256 +386369 773114 +386381 845606 +386389 787742 +386403 921222 +386411 756114 +386411 837444 +386425 903236 +386450 828489 +386478 786717 +386497 900931 +386497 903806 +386514 862611 +386533 943486 +386556 837611 +386556 927797 +386581 772500 +386592 871728 +386608 904225 +386611 964917 +386617 864264 +386636 873094 +386644 807100 +386653 784597 +386653 903758 +386658 1.20925e+06 +386664 867911 +386675 770286 +386689 884856 +386703 899844 +386711 969422 +386722 901697 +386728 902992 +386731 807750 +386753 917694 +386764 1.21335e+06 +386767 843303 +386769 869142 +386772 875286 +386772 1.23134e+06 +386781 1.21175e+06 +386786 1.21225e+06 +386800 930928 +386808 851794 +386819 845900 +386822 1.047e+06 +386825 840658 +386825 901569 +386828 1.12148e+06 +386833 902839 +386833 903078 +386858 903239 +386858 1.21371e+06 +386861 765350 +386864 761719 +386886 883542 +386900 753858 +386900 903425 +386906 902872 +386911 1.21448e+06 +386922 1.22016e+06 +386931 902822 +386942 757739 +386947 902783 +386947 1.20814e+06 +386953 903139 +386967 768481 +386975 882236 +387000 902922 +387008 903497 +387011 903622 +387014 901486 +387019 903169 +387025 903433 +387042 772281 +387042 902817 +387042 914372 +387044 932281 +387058 877600 +387072 765314 +387072 1.2128e+06 +387078 770864 +387083 902928 +387106 902981 +387111 981569 +387131 904297 +387133 777956 +387142 854736 +387142 939911 +387144 903672 +387169 878614 +387175 902656 +387183 902922 +387183 950814 +387192 902603 +387192 944583 +387203 920911 +387208 750764 +387208 829583 +387208 902747 +387236 853694 +387236 899558 +387239 770100 +387253 902967 +387264 903586 +387275 903108 +387292 876817 +387292 898831 +387297 1.20798e+06 +387303 828556 +387306 982278 +387308 880853 +387314 799703 +387317 829978 +387317 900803 +387328 763939 +387358 853800 +387358 903639 +387383 771853 +387394 896711 +387400 903264 +387403 902264 +387422 1.08068e+06 +387425 756047 +387431 948253 +387442 903061 +387456 838450 +387458 786425 +387467 1.05178e+06 +387469 902400 +387475 770833 +387478 850672 +387483 899831 +387494 902856 +387508 774756 +387517 769789 +387522 829369 +387544 903311 +387547 828689 +387553 890953 +387553 950022 +387583 830292 +387583 858081 +387594 874156 +387614 1.20586e+06 +387628 937358 +387647 903136 +387647 950078 +387650 768986 +387650 935564 +387714 903708 +387717 840058 +387722 885025 +387725 772214 +387725 1.12083e+06 +387733 888467 +387742 760767 +387742 873078 +387744 751397 +387744 922569 +387750 951861 +387764 765556 +387775 753103 +387800 895981 +387806 955569 +387817 957383 +387819 771467 +387828 846053 +387833 849017 +387839 774700 +387861 829792 +387864 843697 +387864 897775 +387875 942692 +387878 902158 +387892 903225 +387908 1.21235e+06 +387931 774481 +387933 772719 +387933 902672 +387944 835453 +387956 967356 +387997 1.07719e+06 +388006 858417 +388019 813511 +388019 944525 +388033 769900 +388039 769069 +388042 772050 +388047 770472 +388061 871522 +388069 755917 +388072 753972 +388094 769983 +388097 822025 +388106 906997 +388108 949269 +388114 899531 +388114 908528 +388114 911414 +388119 945317 +388133 827269 +388139 769458 +388158 767500 +388183 771436 +388186 817108 +388186 956889 +388189 769989 +388208 785661 +388214 1.02353e+06 +388214 1.21192e+06 +388250 861700 +388250 984750 +388275 910200 +388278 895400 +388283 1.0797e+06 +388294 900628 +388300 768917 +388303 771967 +388328 769597 +388333 769519 +388336 821383 +388339 1.04821e+06 +388342 887722 +388389 774278 +388389 840964 +388403 976111 +388417 765125 +388422 1.06131e+06 +388428 869914 +388444 821372 +388450 768753 +388461 773067 +388467 919478 +388483 900761 +388517 943436 +388528 991472 +388533 913058 +388536 772597 +388561 806550 +388575 768897 +388589 961089 +388597 1.04917e+06 +388611 864872 +388611 900975 +388683 1.07591e+06 +388689 1.17921e+06 +388697 1.06987e+06 +388703 769214 +388711 874414 +388719 771556 +388747 929114 +388783 870858 +388789 860419 +388792 993264 +388794 823806 +388794 829969 +388803 901111 +388808 773011 +388814 948189 +388844 758275 +388850 769161 +388858 945328 +388875 765122 +388878 900847 +388883 897314 +388889 898453 +388906 901842 +388917 1.21292e+06 +388922 894131 +388933 772219 +388942 774314 +388950 770367 +388950 772119 +388953 988594 +388961 769069 +388964 871867 +388967 1.21076e+06 +388975 768306 +388978 1.01752e+06 +388983 900067 +389008 769158 +389008 865253 +389011 772656 +389017 1.07926e+06 +389028 971167 +389061 958158 +389092 900406 +389103 914481 +389106 1.22609e+06 +389125 754283 +389128 772011 +389144 900858 +389172 972136 +389178 839833 +389181 781947 +389186 772314 +389194 973708 +389206 886614 +389208 768719 +389222 1.11933e+06 +389231 942439 +389233 810961 +389236 755781 +389236 768803 +389250 892689 +389258 798469 +389281 769161 +389292 768619 +389314 898389 +389331 769461 +389339 768969 +389342 771778 +389342 808378 +389350 749064 +389350 1.05016e+06 +389378 764603 +389381 769486 +389381 995603 +389386 749422 +389392 769342 +389400 764953 +389414 769653 +389419 835725 +389431 768925 +389431 769569 +389431 845442 +389433 950983 +389453 769519 +389458 846806 +389458 1.1997e+06 +389467 769314 +389478 758847 +389481 817611 +389486 842800 +389489 834058 +389494 848539 +389517 923339 +389519 765783 +389536 947333 +389558 769458 +389561 903597 +389578 1.11859e+06 +389581 762106 +389592 858903 +389592 989683 +389606 890936 +389636 769911 +389636 934147 +389658 770964 +389667 946167 +389683 874056 +389686 773414 +389686 777358 +389689 1.12323e+06 +389694 773864 +389697 768803 +389700 904314 +389703 769422 +389711 770767 +389711 819144 +389717 952350 +389722 970222 +389736 758053 +389736 927431 +389747 748339 +389775 915047 +389778 770078 +389781 1.22838e+06 +389783 764925 +389786 799497 +389792 949683 +389794 765308 +389794 909806 +389806 749083 +389806 769372 +389806 771006 +389819 749583 +389822 946706 +389833 935683 +389858 1.19162e+06 +389864 819736 +389886 769817 +389886 783589 +389892 870822 +389906 770264 +389908 881625 +389917 748153 +389925 791242 +389939 769108 +389939 802322 +389939 1.05056e+06 +389953 1.10161e+06 +389958 889528 +389972 907383 +389975 819742 +389975 844964 +389981 772886 +389989 846267 +389989 895736 +389992 939533 +390006 747997 +390011 1.21021e+06 +390017 766878 +390017 820489 +390019 879089 +390031 769722 +390036 774008 +390036 876128 +390039 819892 +390044 768758 +390053 877392 +390061 856236 +390061 1.11861e+06 +390067 767794 +390078 838086 +390086 944633 +390089 754661 +390100 1.21422e+06 +390122 897911 +390125 846047 +390131 1.047e+06 +390144 748819 +390150 941983 +390167 846008 +390167 962889 +390169 942814 +390172 927372 +390175 1.22057e+06 +390178 850589 +390178 946167 +390181 918969 +390203 1.20817e+06 +390217 820292 +390217 844400 +390222 946317 +390236 946933 +390242 1.22674e+06 +390250 799358 +390250 998792 +390253 844175 +390253 885697 +390256 770767 +390264 769744 +390272 845850 +390275 820339 +390275 839197 +390278 946556 +390283 842178 +390286 749389 +390286 968311 +390294 895242 +390297 843664 +390303 770728 +390306 975939 +390319 765031 +390331 844519 +390344 843903 +390347 769078 +390347 871658 +390356 845692 +390356 1.04297e+06 +390375 946319 +390381 770933 +390383 804675 +390397 769933 +390397 901406 +390406 946167 +390417 760667 +390428 899517 +390431 1.08552e+06 +390431 1.22915e+06 +390444 953944 +390453 821306 +390483 956778 +390508 747583 +390514 845817 +390517 845342 +390536 765694 +390542 840531 +390561 985361 +390569 849014 +390575 769361 +390594 845475 +390597 948833 +390611 948194 +390619 883797 +390619 887481 +390622 789697 +390633 813953 +390639 1.0855e+06 +390644 1.09181e+06 +390681 830144 +390694 872600 +390694 1.00232e+06 +390703 765456 +390708 898561 +390714 845322 +390719 844728 +390719 852519 +390719 915700 +390722 897272 +390725 937169 +390750 844472 +390756 770022 +390758 953931 +390761 769581 +390769 841769 +390775 846031 +390794 770733 +390825 748242 +390833 782183 +390836 845086 +390839 767006 +390839 771531 +390892 893906 +390908 848500 +390911 944153 +390914 844958 +390917 1.04872e+06 +390919 768181 +390919 1.08448e+06 +390925 845475 +390928 846128 +390928 898039 +390936 1.11132e+06 +390953 874058 +390956 1.21551e+06 +390964 796811 +390992 768486 +390997 945783 +391008 1.20952e+06 +391011 747181 +391042 958583 +391064 844789 +391069 764853 +391072 765714 +391081 769981 +391094 876564 +391097 944444 +391097 950875 +391103 1.0835e+06 +391111 769328 +391111 967058 +391128 844728 +391133 755422 +391133 850881 +391136 826114 +391142 946272 +391156 775639 +391175 900442 +391178 772528 +391181 755592 +391200 885433 +391200 903283 +391211 846064 +391211 851314 +391219 977064 +391222 1.04917e+06 +391231 931967 +391233 825331 +391244 843617 +391247 852892 +391250 869794 +391253 1.11818e+06 +391278 1.2155e+06 +391297 898194 +391300 945619 +391308 894919 +391308 1.23165e+06 +391317 755253 +391319 755328 +391325 941983 +391331 884719 +391333 1.00863e+06 +391342 939825 +391350 858133 +391361 959514 +391361 1.03469e+06 +391367 777150 +391367 847092 +391369 766986 +391394 765481 +391397 771756 +391406 1.21616e+06 +391417 949383 +391433 772017 +391444 891086 +391450 843744 +391453 771444 +391458 774172 +391458 926836 +391458 1.2159e+06 +391489 794983 +391489 1.21666e+06 +391492 767756 +391503 1.23207e+06 +391517 779825 +391522 800406 +391525 847481 +391531 770672 +391531 846372 +391533 746933 +391542 945467 +391547 1.22148e+06 +391553 1.11818e+06 +391567 906178 +391569 846133 +391581 755247 +391589 1.08728e+06 +391592 843072 +391597 825269 +391597 1.21748e+06 +391611 803522 +391611 894936 +391617 847492 +391619 844569 +391625 766250 +391631 871992 +391639 1.19766e+06 +391642 894636 +391653 865264 +391667 765083 +391667 907808 +391697 918828 +391744 901431 +391753 842944 +391758 855731 +391772 767433 +391783 873936 +391792 987889 +391831 766406 +391831 945925 +391836 965714 +391847 938797 +391856 781636 +391864 873017 +391872 844464 +391872 844881 +391889 955694 +391908 843636 +391908 990283 +391911 1.06817e+06 +391928 844006 +391950 946819 +391958 952081 +391964 755492 +392008 804044 +392014 859214 +392019 963047 +392022 836117 +392025 944922 +392039 945544 +392047 760517 +392047 844281 +392053 843947 +392058 894044 +392089 760669 +392094 810519 +392094 935175 +392103 921378 +392106 843672 +392122 1.11019e+06 +392128 941225 +392133 970053 +392144 1.22008e+06 +392150 844556 +392153 953125 +392172 766375 +392181 930689 +392183 845508 +392192 1.2106e+06 +392214 944511 +392217 817975 +392231 845869 +392272 928464 +392272 1.11053e+06 +392275 822025 +392281 843542 +392283 766167 +392300 1.21076e+06 +392311 844658 +392319 843783 +392336 845458 +392339 866250 +392342 922806 +392347 992978 +392353 816314 +392369 850947 +392378 946958 +392378 1.20026e+06 +392403 768397 +392417 748156 +392419 764483 +392425 916453 +392458 750356 +392464 824786 +392464 845836 +392475 1.14888e+06 +392478 881633 +392478 957061 +392483 888622 +392486 873819 +392486 949000 +392506 765208 +392508 803125 +392508 1.06292e+06 +392519 844703 +392544 767003 +392561 844181 +392564 893481 +392567 802925 +392581 758375 +392617 1.21015e+06 +392619 848200 +392631 886297 +392633 803200 +392636 816294 +392639 1.03692e+06 +392667 815617 +392672 767986 +392681 844133 +392681 845231 +392683 1.11636e+06 +392692 803125 +392708 938342 +392719 767322 +392725 776369 +392725 915744 +392728 793647 +392736 882436 +392739 815731 +392739 977717 +392775 745750 +392786 939767 +392797 898817 +392806 803447 +392850 809686 +392864 802564 +392867 867625 +392869 844853 +392883 772042 +392886 803061 +392889 778600 +392903 766125 +392906 756347 +392931 839889 +392931 1.03067e+06 +392950 778608 +392958 859508 +392964 807772 +392964 1.19775e+06 +392989 968306 +392992 879925 +392997 756050 +392997 842633 +393000 852222 +393011 892850 +393022 904069 +393025 936772 +393039 857714 +393047 925125 +393061 1.02269e+06 +393078 1.23798e+06 +393092 764753 +393092 772975 +393108 914883 +393111 949222 +393122 846506 +393142 745253 +393142 776281 +393175 745950 +393183 843689 +393194 884528 +393194 895719 +393200 765158 +393222 952667 +393233 777531 +393236 836911 +393267 1.10964e+06 +393269 815486 +393278 745039 +393281 1.20182e+06 +393292 821014 +393331 829825 +393342 764397 +393356 878819 +393372 854836 +393383 764800 +393392 942258 +393397 852044 +393403 744778 +393406 767225 +393408 800192 +393419 787569 +393419 911950 +393433 954600 +393436 902125 +393450 835531 +393483 796711 +393483 974458 +393489 1.10851e+06 +393508 866669 +393508 1.0171e+06 +393519 833828 +393522 1.12576e+06 +393544 841272 +393567 978408 +393575 1.00441e+06 +393578 780403 +393583 934956 +393597 1.11586e+06 +393600 843100 +393603 1.04596e+06 +393633 765208 +393639 1.21692e+06 +393642 744233 +393647 998417 +393672 767956 +393678 943619 +393689 821325 +393689 1.07032e+06 +393703 947822 +393706 909050 +393708 842133 +393714 862611 +393722 1.04856e+06 +393736 769681 +393739 803486 +393742 767228 +393761 771550 +393772 765400 +393794 812586 +393817 752203 +393869 945808 +393878 889606 +393889 890800 +393914 876936 +393917 797486 +393931 793733 +393939 964133 +393942 765239 +393950 865625 +393956 803003 +393958 1.01052e+06 +393978 821294 +393983 793819 +394014 766022 +394022 1.07211e+06 +394036 769506 +394039 758678 +394050 1.14778e+06 +394064 887900 +394097 1.23354e+06 +394100 743650 +394111 949014 +394119 747428 +394125 764639 +394125 1.21712e+06 +394142 774108 +394153 814550 +394167 953333 +394175 766214 +394183 924381 +394186 775039 +394194 767806 +394200 894556 +394228 765850 +394231 850128 +394233 931303 +394239 928014 +394272 752344 +394278 864283 +394283 744961 +394300 778044 +394311 916750 +394344 929381 +394347 845369 +394356 1.21537e+06 +394369 904031 +394381 992647 +394383 942039 +394389 986944 +394406 925450 +394408 789742 +394408 885947 +394433 896517 +394453 838286 +394456 795467 +394458 1.23804e+06 +394464 897808 +394486 764181 +394489 910514 +394494 757167 +394522 747281 +394561 779642 +394561 981058 +394564 879961 +394575 777492 +394586 822319 +394619 821819 +394625 802183 +394650 874500 +394653 957361 +394667 874139 +394694 762047 +394694 768297 +394717 796836 +394728 765233 +394733 827394 +394736 814792 +394736 922097 +394736 1.18776e+06 +394739 829108 +394783 745756 +394800 845519 +394808 844578 +394808 920011 +394811 766442 +394817 1.06038e+06 +394825 1.11495e+06 +394831 883728 +394839 903714 +394847 820792 +394850 801428 +394853 790450 +394861 750261 +394861 773522 +394886 836369 +394889 961697 +394919 872672 +394922 809039 +394950 798153 +394961 881761 +394967 1.21551e+06 +395008 851864 +395008 897678 +395022 985464 +395031 787689 +395031 820847 +395036 801669 +395050 946331 +395069 847453 +395081 915286 +395106 797986 +395114 821636 +395125 984333 +395128 802492 +395136 749250 +395139 1.21555e+06 +395144 764114 +395147 867939 +395161 843764 +395203 890489 +395206 744861 +395208 861678 +395214 857769 +395219 947697 +395222 954006 +395225 887536 +395236 871250 +395244 1.22192e+06 +395250 1.1159e+06 +395258 871125 +395286 746483 +395297 801169 +395297 840867 +395297 1.19813e+06 +395306 790178 +395308 758078 +395308 803436 +395331 773150 +395331 880222 +395347 1.07782e+06 +395350 1.19752e+06 +395358 763486 +395367 871058 +395381 897631 +395392 863692 +395400 824072 +395419 771083 +395425 1.10735e+06 +395464 750253 +395469 1.11455e+06 +395478 816397 +395483 817931 +395483 943297 +395486 1.07656e+06 +395489 892944 +395492 760919 +395500 860797 +395506 1.07324e+06 +395514 1.10387e+06 +395522 797981 +395522 842333 +395522 940406 +395528 879394 +395539 832569 +395581 801819 +395581 860953 +395589 843042 +395592 742436 +395600 760717 +395608 753628 +395631 951214 +395642 809961 +395656 896572 +395656 944478 +395658 789806 +395672 972783 +395675 848161 +395689 771772 +395708 976622 +395717 754675 +395728 1.07536e+06 +395731 742319 +395744 1.06097e+06 +395753 769961 +395778 755892 +395778 822378 +395853 914008 +395856 902519 +395864 1.0643e+06 +395869 937958 +395886 894144 +395900 789500 +395911 973986 +395917 895803 +395917 897464 +395917 899528 +395928 788336 +395950 751706 +395956 748819 +395994 886078 +395994 1.1081e+06 +396000 759417 +396006 778208 +396006 829461 +396011 1.05032e+06 +396019 748431 +396025 820883 +396028 809369 +396031 743406 +396036 933422 +396044 764781 +396047 761156 +396047 768503 +396047 822117 +396047 828292 +396050 833956 +396067 758336 +396078 908050 +396089 777047 +396092 854464 +396108 945992 +396111 876961 +396117 799047 +396128 863742 +396133 1.05016e+06 +396144 787753 +396172 1.0495e+06 +396203 900439 +396206 777592 +396228 872833 +396236 774111 +396247 890189 +396264 1.11439e+06 +396283 1.05049e+06 +396289 902189 +396294 799561 +396297 904561 +396300 1.11634e+06 +396314 1.06522e+06 +396325 787847 +396333 1.05317e+06 +396344 799700 +396356 840708 +396356 849311 +396364 748028 +396375 1.06061e+06 +396400 891928 +396403 852622 +396403 1.06374e+06 +396414 787747 +396417 777203 +396417 1.04959e+06 +396428 741808 +396428 842867 +396442 775861 +396444 808578 +396444 868647 +396456 887381 +396458 799875 +396469 1.05025e+06 +396469 1.06951e+06 +396478 845272 +396478 1.04987e+06 +396486 818533 +396492 818622 +396494 827444 +396511 776911 +396514 753286 +396525 788972 +396528 787628 +396528 837869 +396533 755169 +396536 835639 +396536 917344 +396539 880261 +396547 775731 +396553 1.06828e+06 +396572 893894 +396578 771747 +396581 789286 +396581 837350 +396583 799867 +396600 750925 +396606 955261 +396611 768853 +396617 995700 +396619 741656 +396619 755667 +396636 794056 +396669 757272 +396697 742322 +396700 861314 +396714 981533 +396717 842528 +396733 856986 +396756 898467 +396761 897044 +396764 1.2024e+06 +396794 844292 +396803 874175 +396819 966594 +396831 776964 +396836 757500 +396842 1.10854e+06 +396847 839297 +396847 883064 +396861 749956 +396867 755847 +396883 1.23482e+06 +396892 865225 +396894 841689 +396911 967472 +396928 777450 +396928 787931 +396939 920428 +396942 910389 +396953 742592 +396956 788800 +396978 760631 +396989 781800 +397011 891231 +397017 824269 +397028 751122 +397044 773272 +397047 1.05081e+06 +397056 964167 +397061 842194 +397061 1.05697e+06 +397069 912067 +397083 913583 +397086 902281 +397089 907244 +397103 1.11836e+06 +397111 754706 +397119 888044 +397119 929481 +397128 889969 +397136 756097 +397136 825994 +397147 884722 +397156 756411 +397156 829531 +397156 886325 +397161 838778 +397183 829869 +397194 832653 +397211 822989 +397219 858892 +397253 899106 +397269 763269 +397278 764522 +397286 1.21836e+06 +397294 754683 +397294 1.04831e+06 +397322 748814 +397328 751319 +397339 902289 +397367 775353 +397378 767017 +397383 855719 +397383 1.04323e+06 +397389 798989 +397392 752244 +397392 755983 +397392 1.04984e+06 +397419 922583 +397422 924725 +397425 1.05013e+06 +397428 1.22012e+06 +397436 775542 +397436 939981 +397442 838086 +397444 770883 +397444 845322 +397453 843850 +397458 755469 +397469 925639 +397475 753108 +397475 1.22195e+06 +397478 815167 +397500 755000 +397508 944964 +397508 1.01532e+06 +397519 905350 +397528 790811 +397531 742233 +397531 1.05064e+06 +397536 765917 +397556 948722 +397556 1.05221e+06 +397558 775781 +397561 993236 +397572 896536 +397575 741067 +397589 841917 +397589 1.04427e+06 +397592 949494 +397606 865264 +397611 799817 +397611 868119 +397622 938042 +397625 811156 +397625 872292 +397656 808714 +397658 903989 +397661 755097 +397661 892617 +397661 1.05077e+06 +397669 990314 +397675 896806 +397683 861581 +397686 766800 +397689 820922 +397714 888742 +397761 859572 +397769 896792 +397792 987847 +397811 769636 +397817 928900 +397819 860503 +397831 950897 +397842 749925 +397844 930733 +397850 857694 +397853 759792 +397872 982097 +397894 769983 +397903 777281 +397911 749294 +397914 741956 +397928 873708 +397931 767306 +397931 1.23247e+06 +397942 915231 +397944 751492 +397953 935522 +397956 855264 +397969 885917 +397972 843114 +397975 842536 +397986 879858 +397989 827011 +397992 882831 +397994 884622 +398006 754600 +398017 896436 +398022 750644 +398022 862672 +398028 828064 +398028 1.05087e+06 +398031 798081 +398036 876736 +398058 920414 +398064 838869 +398067 1.01042e+06 +398069 822972 +398072 770117 +398072 820714 +398078 874950 +398089 755492 +398092 754869 +398094 893972 +398097 825222 +398097 863225 +398106 1.20468e+06 +398114 749833 +398119 771375 +398122 852089 +398125 851717 +398128 793569 +398136 790250 +398161 1.11855e+06 +398169 751556 +398169 912422 +398181 970506 +398183 1.00528e+06 +398192 754189 +398200 750067 +398208 840194 +398219 758278 +398222 1.04933e+06 +398231 787183 +398242 749981 +398244 976322 +398247 797547 +398253 836344 +398267 750158 +398269 805667 +398275 754147 +398278 779036 +398289 848903 +398303 752408 +398308 772314 +398311 905594 +398314 757578 +398339 998911 +398342 960639 +398367 844114 +398367 1.04959e+06 +398367 1.05037e+06 +398381 749653 +398381 751531 +398383 854389 +398386 860253 +398394 750739 +398403 825461 +398403 889547 +398411 966469 +398428 828047 +398433 863978 +398439 750231 +398439 841247 +398442 775586 +398442 895394 +398453 826008 +398461 845397 +398467 757119 +398467 799000 +398481 861725 +398483 810369 +398489 868022 +398494 753561 +398514 1.04998e+06 +398522 750683 +398525 894086 +398525 955356 +398528 894633 +398536 831831 +398536 892419 +398539 890839 +398539 891661 +398556 767078 +398556 767689 +398569 847933 +398583 748033 +398597 866425 +398600 753447 +398600 808156 +398611 819069 +398631 790583 +398636 770561 +398639 864669 +398647 750556 +398653 776128 +398658 751792 +398664 750286 +398675 750950 +398681 1.04971e+06 +398692 753828 +398728 899211 +398744 768661 +398769 870444 +398772 750650 +398772 797022 +398775 843022 +398781 751211 +398781 839369 +398783 750931 +398783 799250 +398789 829508 +398811 753242 +398814 830931 +398831 767108 +398842 827536 +398842 874086 +398850 906558 +398856 1.04987e+06 +398864 769850 +398878 900078 +398892 840267 +398892 943617 +398900 754758 +398900 861572 +398906 841989 +398906 887281 +398908 750733 +398908 752842 +398911 749222 +398914 750381 +398917 751167 +398917 753000 +398919 855769 +398922 747025 +398922 997067 +398925 797472 +398936 896047 +398939 968792 +398956 876519 +398964 801794 +398964 824203 +398967 799747 +398969 761639 +398975 830869 +398978 843064 +398992 820064 +398994 766406 +399000 752894 +399000 825342 +399008 750850 +399017 753289 +399019 753503 +399019 846750 +399022 958006 +399033 844856 +399044 844017 +399064 752719 +399089 766372 +399097 753239 +399097 878211 +399111 851617 +399117 752775 +399122 752542 +399136 868011 +399144 939619 +399147 882733 +399161 765847 +399167 753881 +399175 797175 +399181 750717 +399183 752594 +399203 807433 +399206 789581 +399206 1.05086e+06 +399214 752883 +399219 885719 +399231 772989 +399242 838089 +399258 751200 +399267 740775 +399267 741342 +399278 1.22178e+06 +399283 752742 +399286 749442 +399289 853703 +399292 752967 +399303 772483 +399322 858481 +399325 779992 +399325 889511 +399328 890619 +399336 824725 +399356 914097 +399358 741714 +399361 840256 +399375 776614 +399381 752722 +399386 888656 +399389 741933 +399389 752558 +399403 820133 +399417 948300 +399419 741503 +399419 742047 +399425 745444 +399442 740733 +399444 899372 +399453 799958 +399456 752617 +399472 750669 +399478 810575 +399481 743611 +399486 741375 +399486 874597 +399492 759739 +399508 862619 +399511 902122 +399522 751642 +399525 767517 +399531 1.119e+06 +399536 741983 +399542 895486 +399542 1.12119e+06 +399547 759972 +399547 828122 +399556 849175 +399556 860139 +399569 858053 +399583 841722 +399586 759197 +399594 825958 +399606 756058 +399608 897239 +399611 829989 +399614 1.0551e+06 +399617 824914 +399625 746792 +399625 767281 +399625 843281 +399633 752506 +399667 758000 +399667 828856 +399675 872775 +399678 847092 +399681 753417 +399686 891622 +399689 829378 +399697 815367 +399700 812994 +399703 740692 +399708 807508 +399719 746833 +399719 765203 +399742 758203 +399747 938008 +399756 1.11784e+06 +399778 796147 +399778 1.05131e+06 +399781 767333 +399783 861181 +399786 820036 +399814 740667 +399819 888228 +399825 772497 +399831 758242 +399831 761844 +399836 768228 +399853 1.0482e+06 +399861 882589 +399867 830617 +399869 951447 +399872 907633 +399881 807317 +399881 811767 +399928 747881 +399936 817342 +399936 1.05089e+06 +399947 844081 +399956 826744 +399958 866200 +399964 1.11842e+06 +399967 749931 +399967 795861 +399969 767069 +399975 857467 +399978 763544 +400017 768506 +400025 799983 +400064 757036 +400069 881581 +400083 752608 +400083 790783 +400089 771158 +400103 799011 +400108 892822 +400114 750153 +400114 783736 +400144 743117 +400150 1.0527e+06 +400158 741453 +400161 810728 +400175 904242 +400178 795897 +400181 807344 +400186 785042 +400192 828794 +400208 980697 +400214 1.22099e+06 +400217 767283 +400228 824447 +400242 798908 +400247 801003 +400250 880733 +400272 808153 +400278 748694 +400278 885733 +400289 756211 +400292 810392 +400297 746189 +400314 909606 +400322 859125 +400331 796617 +400333 831583 +400336 765047 +400347 879581 +400361 746183 +400361 755142 +400364 889569 +400375 1.07912e+06 +400378 763058 +400392 764311 +400392 910692 +400394 842033 +400411 868744 +400419 754767 +400422 876386 +400428 914975 +400444 1.11731e+06 +400456 860086 +400456 878306 +400467 941356 +400469 796547 +400481 901550 +400483 864692 +400492 1.01532e+06 +400497 849397 +400503 1.05049e+06 +400506 749539 +400506 775206 +400514 874333 +400514 945239 +400525 806286 +400531 1.11673e+06 +400547 882517 +400553 840261 +400569 765525 +400581 824014 +400589 1.06388e+06 +400608 956017 +400614 876381 +400631 767042 +400639 807211 +400650 877019 +400653 749194 +400653 800239 +400675 745311 +400681 749011 +400681 825197 +400683 858483 +400692 807839 +400697 753167 +400706 807611 +400711 748653 +400717 740547 +400736 1.04642e+06 +400756 798983 +400758 1.02223e+06 +400764 829439 +400789 936164 +400792 753019 +400794 798658 +400811 750900 +400819 830253 +400831 897381 +400833 798483 +400847 1.04812e+06 +400847 1.04939e+06 +400861 918131 +400861 1.05939e+06 +400869 797508 +400875 805706 +400875 870597 +400878 1.0881e+06 +400883 912836 +400886 829167 +400889 985192 +400911 740483 +400911 795878 +400931 830181 +400942 759117 +400953 876475 +400958 751256 +400958 807247 +400961 989522 +400975 993617 +400978 742181 +400992 1.04937e+06 +401003 795872 +401003 798408 +401003 895908 +401006 748522 +401011 800675 +401017 760856 +401028 846331 +401036 798694 +401053 856803 +401072 808414 +401075 832675 +401078 740569 +401083 837525 +401083 961542 +401083 1.04519e+06 +401092 910175 +401097 765036 +401100 867719 +401106 882072 +401108 767161 +401108 770353 +401119 800175 +401125 855969 +401125 1.04936e+06 +401131 872625 +401139 878731 +401139 879561 +401150 1.11654e+06 +401161 877783 +401164 882433 +401167 800086 +401172 821194 +401172 843539 +401178 804106 +401183 771903 +401189 788183 +401203 1.23822e+06 +401211 887453 +401211 905631 +401214 753403 +401214 820108 +401222 886453 +401222 966622 +401222 1.02725e+06 +401236 876533 +401239 860133 +401244 798800 +401244 876300 +401250 798667 +401250 916250 +401261 740497 +401261 829292 +401292 798683 +401292 994550 +401300 765708 +401303 755153 +401303 1.11578e+06 +401311 952314 +401314 750678 +401319 740350 +401322 844308 +401350 862206 +401364 747292 +401372 971803 +401375 998292 +401378 798983 +401392 748150 +401394 966589 +401408 977225 +401411 806883 +401417 873947 +401447 842425 +401461 747122 +401469 789122 +401483 798881 +401483 893647 +401489 1.02962e+06 +401494 810664 +401497 754022 +401497 771286 +401500 742139 +401503 740314 +401511 762514 +401511 799078 +401519 749169 +401528 766031 +401533 740286 +401536 826853 +401536 889644 +401539 797414 +401544 752219 +401544 807106 +401567 758331 +401567 762025 +401572 760508 +401572 763072 +401597 790667 +401606 1.03214e+06 +401614 790292 +401633 763953 +401633 1.10402e+06 +401639 959447 +401653 1.1161e+06 +401664 975856 +401667 807000 +401669 749181 +401672 1.05101e+06 +401675 921725 +401697 805939 +401708 740278 +401719 849814 +401733 798578 +401736 802378 +401736 854942 +401742 751072 +401744 749231 +401756 1.01012e+06 +401758 860217 +401767 755481 +401778 745839 +401783 740222 +401783 751289 +401786 834356 +401786 1.22235e+06 +401794 1.18472e+06 +401797 761792 +401808 754294 +401825 806914 +401831 798244 +401842 755383 +401856 754519 +401872 767303 +401878 851275 +401881 869039 +401889 852042 +401906 747028 +401917 852689 +401922 740164 +401933 853864 +401933 863606 +401944 1.10061e+06 +401947 925831 +401950 779833 +401950 866672 +401953 884042 +401964 762014 +401964 807753 +401989 754767 +401994 848053 +402000 740283 +402014 771892 +402017 980675 +402019 848092 +402019 1.00625e+06 +402022 740125 +402022 896981 +402022 931250 +402031 799264 +402053 742142 +402056 805569 +402067 751000 +402078 750731 +402078 799472 +402089 789839 +402097 797672 +402106 812664 +402108 752786 +402108 767914 +402114 761236 +402114 885061 +402144 846369 +402150 750111 +402150 1.04822e+06 +402153 782447 +402153 860264 +402169 747433 +402178 945381 +402186 808731 +402192 796097 +402200 744736 +402203 740125 +402203 889619 +402225 844844 +402228 857789 +402231 835575 +402233 769539 +402247 1.05271e+06 +402264 806517 +402269 789367 +402275 903594 +402297 1.00838e+06 +402300 909500 +402306 1.04072e+06 +402314 756344 +402319 927083 +402322 768850 +402331 761375 +402333 740161 +402333 910625 +402339 1.11658e+06 +402344 1.00417e+06 +402353 768417 +402361 740011 +402389 891231 +402394 756514 +402397 769203 +402397 788353 +402403 795769 +402411 760567 +402411 768944 +402414 752842 +402417 881842 +402419 743017 +402428 778933 +402431 740011 +402431 792378 +402433 886425 +402436 788492 +402450 755956 +402453 756500 +402456 748464 +402464 802117 +402469 867250 +402472 796775 +402483 996331 +402497 788492 +402503 1.03799e+06 +402525 756778 +402561 754642 +402589 768322 +402589 1.03623e+06 +402594 892333 +402600 742742 +402625 801875 +402628 769142 +402628 856758 +402639 744917 +402644 758044 +402647 806264 +402653 767086 +402681 967467 +402686 929531 +402692 798900 +402694 745236 +402694 857281 +402700 873867 +402708 798994 +402708 807817 +402719 806097 +402719 818597 +402722 816061 +402728 809969 +402736 764064 +402736 768847 +402750 769158 +402750 1.06958e+06 +402753 768483 +402753 817511 +402761 748494 +402769 858419 +402783 795450 +402794 753875 +402794 865108 +402808 742517 +402819 1.00165e+06 +402819 1.04777e+06 +402822 860411 +402842 841556 +402858 759847 +402858 766506 +402872 788897 +402883 752094 +402883 872939 +402892 850289 +402903 740181 +402908 788692 +402911 795472 +402917 793894 +402917 909189 +402922 798819 +402942 872489 +402942 904278 +402961 740514 +402967 784500 +402969 1.11694e+06 +402972 743586 +402986 830681 +402986 894850 +402989 751814 +402989 788925 +402992 839689 +402994 1.09988e+06 +403000 900608 +403008 852419 +403014 795392 +403031 969886 +403042 739928 +403042 741008 +403042 999000 +403044 826964 +403050 878006 +403056 896028 +403058 880211 +403064 1.21231e+06 +403078 759658 +403083 881558 +403083 1.05081e+06 +403089 765936 +403106 759397 +403106 789389 +403111 783244 +403117 753256 +403119 839158 +403133 889736 +403139 855006 +403144 891697 +403147 883500 +403156 798314 +403161 745142 +403172 746203 +403181 740156 +403200 756106 +403211 793797 +403217 806100 +403219 753283 +403231 793128 +403244 797014 +403247 798925 +403247 805778 +403253 809014 +403272 760114 +403275 805961 +403278 906069 +403281 758911 +403281 796156 +403283 747911 +403289 796414 +403294 759656 +403294 765156 +403294 1.04855e+06 +403300 760808 +403303 739819 +403325 984483 +403336 756378 +403336 759478 +403353 820069 +403356 759272 +403358 783911 +403358 798700 +403367 740475 +403367 754694 +403369 1.04912e+06 +403372 764758 +403375 759800 +403375 797136 +403386 856444 +403386 953931 +403392 767258 +403403 853508 +403408 764117 +403433 1.1172e+06 +403444 866653 +403453 756333 +403456 763903 +403461 742883 +403461 948722 +403469 925689 +403478 798644 +403486 746594 +403486 788839 +403489 851500 +403489 1.04701e+06 +403494 762136 +403506 798864 +403514 843739 +403514 903244 +403517 761347 +403519 887642 +403525 744406 +403539 753053 +403553 800497 +403561 801103 +403583 814344 +403592 914344 +403606 740386 +403611 837597 +403614 739744 +403617 761844 +403642 749517 +403642 1.11738e+06 +403647 800225 +403650 804142 +403658 749433 +403667 961958 +403672 769314 +403672 787917 +403678 810056 +403697 806342 +403706 799750 +403708 802350 +403717 752019 +403719 739994 +403719 752931 +403722 979711 +403725 895472 +403733 756294 +403742 867689 +403753 807039 +403756 823972 +403764 1.04692e+06 +403767 744250 +403769 1.11795e+06 +403772 1.05521e+06 +403781 939367 +403789 745469 +403792 876686 +403794 860886 +403803 790756 +403814 798600 +403817 824925 +403819 803931 +403831 798067 +403844 778825 +403856 797592 +403858 1.2228e+06 +403875 1.04561e+06 +403881 759183 +403886 786725 +403886 854994 +403908 754925 +403908 798103 +403917 743989 +403917 1.1185e+06 +403922 799003 +403922 800911 +403928 958386 +403931 813467 +403931 843761 +403931 901547 +403933 813339 +403933 824858 +403936 779414 +403936 797864 +403936 969225 +403939 799122 +403944 841728 +403947 814072 +403956 798389 +403958 800333 +403958 810850 +403964 913389 +403969 791519 +403969 888706 +403972 913847 +403978 1.05074e+06 +403981 770233 +403983 798900 +403986 794222 +403989 798411 +403997 746347 +404008 935803 +404019 835453 +404022 755875 +404031 797783 +404036 739919 +404058 798253 +404058 799122 +404064 755022 +404075 896428 +404078 740347 +404078 749786 +404086 759219 +404086 798392 +404086 800836 +404089 829556 +404092 925675 +404106 753786 +404125 798794 +404128 847764 +404131 795706 +404142 790203 +404142 799881 +404142 822411 +404147 742300 +404147 743658 +404153 856506 +404156 741914 +404164 1.20652e+06 +404167 868750 +404169 865947 +404172 798653 +404175 862714 +404183 1.01371e+06 +404189 805897 +404197 798503 +404203 917194 +404208 745611 +404208 894144 +404233 784342 +404233 1.04709e+06 +404236 798831 +404256 800942 +404258 786203 +404258 869081 +404258 897792 +404264 832969 +404264 907925 +404267 885261 +404272 783892 +404272 861256 +404311 792611 +404317 981056 +404331 742000 +404333 807719 +404336 893131 +404339 830739 +404344 800825 +404344 849778 +404347 892178 +404350 800664 +404369 843797 +404378 813733 +404383 798433 +404400 816992 +404403 953775 +404403 993694 +404406 799961 +404417 741303 +404417 753419 +404417 798822 +404456 950658 +404461 800678 +404464 741786 +404464 743864 +404469 759667 +404483 1.22297e+06 +404503 831886 +404511 853700 +404514 743083 +404533 1.11777e+06 +404539 758183 +404556 1.09528e+06 +404567 742469 +404578 921711 +404592 743614 +404592 906717 +404592 963772 +404597 785919 +404597 795233 +404603 880953 +404608 799511 +404614 836700 +404642 806011 +404650 878964 +404656 800658 +404672 876683 +404678 841806 +404681 769322 +404700 753208 +404711 838928 +404742 957333 +404756 854944 +404769 930031 +404772 1.09586e+06 +404775 1.04901e+06 +404778 742911 +404781 785411 +404781 859667 +404783 991264 +404792 792000 +404797 846283 +404797 856278 +404800 799786 +404803 863947 +404814 789189 +404814 969603 +404819 757581 +404822 785519 +404842 889936 +404847 780106 +404850 787250 +404850 1.06831e+06 +404861 744522 +404864 794517 +404864 861336 +404872 856131 +404875 944108 +404897 814458 +404897 1.11938e+06 +404906 870964 +404914 799050 +404919 1.07257e+06 +404933 798608 +404936 843147 +404944 896517 +404950 819847 +404967 806069 +404986 989475 +404992 743994 +405006 828936 +405008 759703 +405008 800678 +405031 786306 +405033 757017 +405042 799492 +405064 798433 +405067 742658 +405067 837481 +405083 858256 +405083 868417 +405100 800947 +405108 756033 +405114 753908 +405122 748597 +405122 1.11474e+06 +405142 889906 +405153 1.07546e+06 +405158 755556 +405169 1.01643e+06 +405183 801669 +405186 783950 +405194 808842 +405197 872478 +405206 814742 +405208 925278 +405211 873783 +405217 980550 +405219 1.11938e+06 +405222 800344 +405247 1.11863e+06 +405261 750619 +405267 996333 +405269 975956 +405275 894925 +405289 794617 +405294 891772 +405303 1.04711e+06 +405308 1.12298e+06 +405317 801692 +405322 914147 +405344 835206 +405364 801847 +405369 893575 +405394 754972 +405394 769611 +405408 745881 +405417 797994 +405431 743636 +405433 787881 +405433 791625 +405489 768122 +405489 784294 +405489 845703 +405492 828275 +405500 913847 +405508 948192 +405511 801931 +405528 905061 +405531 797575 +405533 745319 +405539 852775 +405544 819181 +405544 1.23182e+06 +405556 759822 +405561 908658 +405575 828625 +405581 900350 +405589 791514 +405622 1.11929e+06 +405631 802086 +405639 888989 +405644 871069 +405647 878931 +405667 767008 +405669 886164 +405675 882478 +405675 896406 +405678 841936 +405683 745389 +405686 750950 +405694 746333 +405694 774031 +405697 773972 +405697 797650 +405717 807267 +405719 857692 +405725 744931 +405725 898133 +405728 810858 +405733 766917 +405736 802358 +405742 746103 +405747 769894 +405764 1.24263e+06 +405772 742286 +405789 861903 +405792 744119 +405794 753411 +405800 797669 +405814 795667 +405825 1.04731e+06 +405833 909692 +405844 1.02302e+06 +405853 1.05084e+06 +405861 795317 +405861 983881 +405867 1.22391e+06 +405875 866750 +405883 736583 +405883 824250 +405886 831286 +405889 737294 +405892 744722 +405892 765528 +405892 802253 +405900 985058 +405903 998606 +405917 1.11883e+06 +405942 751947 +405947 815269 +405961 795558 +405969 880381 +405981 795614 +405983 760936 +405983 1.24156e+06 +406000 1.12464e+06 +406006 839753 +406011 813614 +406014 753956 +406014 797600 +406028 787089 +406028 795650 +406028 806492 +406028 868672 +406033 783250 +406042 736558 +406044 956575 +406050 777258 +406056 978589 +406058 889872 +406081 742781 +406081 797414 +406086 865400 +406097 1.11938e+06 +406111 1.11899e+06 +406114 798372 +406117 767189 +406128 894592 +406131 805631 +406150 896222 +406156 737300 +406167 873208 +406172 855047 +406175 896003 +406183 806044 +406186 805775 +406189 980969 +406197 1.11809e+06 +406200 825108 +406200 966289 +406211 904619 +406211 986572 +406214 791528 +406219 742450 +406225 808381 +406228 737247 +406228 939339 +406239 737089 +406256 1.03207e+06 +406264 753461 +406267 761931 +406283 763875 +406283 876961 +406297 892747 +406297 913150 +406300 744278 +406300 893325 +406300 1.00515e+06 +406306 761714 +406308 929244 +406319 737131 +406336 744078 +406350 802283 +406353 822333 +406356 1.04755e+06 +406358 782961 +406361 736819 +406361 911672 +406364 829692 +406367 791444 +406367 802403 +406369 975850 +406378 744514 +406386 736406 +406386 775689 +406386 1.11938e+06 +406403 917428 +406408 743111 +406408 743839 +406408 748817 +406411 1.02626e+06 +406414 887833 +406417 748364 +406419 736700 +406422 798511 +406425 742858 +406428 787731 +406428 915644 +406431 736961 +406431 775808 +406431 1.1128e+06 +406442 974500 +406444 804164 +406458 805981 +406461 1.11497e+06 +406469 836097 +406472 895911 +406472 971131 +406500 814522 +406503 896519 +406511 812992 +406531 815811 +406536 972858 +406539 750869 +406542 841508 +406547 736722 +406547 754750 +406547 761011 +406553 743903 +406572 961861 +406575 735836 +406578 849519 +406583 743000 +406586 736417 +406589 743478 +406594 743233 +406597 754772 +406597 802394 +406600 1.11996e+06 +406608 862419 +406625 787803 +406628 735519 +406631 868694 +406639 742111 +406639 775961 +406642 737089 +406642 742636 +406642 904347 +406644 742647 +406658 734886 +406661 806233 +406661 895800 +406669 751578 +406669 947211 +406669 1.11887e+06 +406672 813550 +406678 1.11938e+06 +406686 735275 +406686 741147 +406689 1.11824e+06 +406700 754958 +406706 782389 +406722 743578 +406733 805767 +406733 845189 +406733 921619 +406739 857214 +406764 742911 +406767 818706 +406767 958589 +406786 735894 +406786 752372 +406789 734175 +406789 736744 +406789 910728 +406792 804950 +406800 965061 +406800 1.22351e+06 +406803 734556 +406806 734747 +406806 1.2237e+06 +406814 734003 +406814 820219 +406825 931208 +406828 854272 +406833 744431 +406836 735106 +406842 746361 +406844 803292 +406844 896800 +406850 737022 +406856 761958 +406858 926772 +406861 754972 +406867 733739 +406867 841378 +406872 802717 +406875 802542 +406911 735636 +406914 735339 +406917 811814 +406917 897950 +406925 896278 +406928 837856 +406933 735081 +406936 751906 +406936 895889 +406953 803050 +406956 733261 +406958 800119 +406964 761692 +406967 749411 +406975 734256 +406983 744019 +406994 990811 +407000 802683 +407000 1.1181e+06 +407003 735933 +407008 734625 +407008 737133 +407011 742306 +407022 802867 +407036 894072 +407039 1.05008e+06 +407044 963872 +407047 736506 +407061 733067 +407061 838439 +407064 839214 +407064 933650 +407069 749564 +407069 815983 +407072 736764 +407086 732817 +407089 843536 +407092 1.12101e+06 +407106 902661 +407139 775908 +407139 1.16103e+06 +407142 733819 +407142 737006 +407142 740064 +407147 942350 +407150 880061 +407164 733222 +407167 914500 +407172 734842 +407181 733547 +407186 745697 +407189 1.11888e+06 +407192 736889 +407194 748361 +407194 761161 +407194 993717 +407206 734406 +407208 740178 +407214 892728 +407219 954806 +407236 737053 +407242 737156 +407244 815222 +407250 732458 +407256 753944 +407258 735147 +407264 788069 +407267 736347 +407278 730981 +407281 740781 +407294 760858 +407297 732108 +407297 811056 +407303 803103 +407303 919622 +407311 948994 +407311 1.22941e+06 +407317 1.06283e+06 +407319 731861 +407322 906644 +407336 778858 +407336 827900 +407350 736883 +407356 741728 +407358 730825 +407361 732631 +407372 1.14037e+06 +407383 730511 +407386 851717 +407386 995372 +407392 890164 +407394 743044 +407394 803294 +407397 937475 +407403 753100 +407408 736631 +407408 743842 +407408 752575 +407414 743600 +407417 887197 +407419 950381 +407431 731931 +407433 888814 +407439 740328 +407442 734825 +407453 867647 +407464 741567 +407469 909039 +407472 731703 +407472 885147 +407472 895739 +407478 785347 +407483 741622 +407483 756122 +407483 956472 +407483 988444 +407486 847911 +407492 736411 +407494 868717 +407503 786711 +407517 763364 +407517 818394 +407517 924147 +407519 803194 +407519 884111 +407525 736108 +407536 860689 +407536 882919 +407539 733608 +407539 752625 +407539 798103 +407542 755992 +407544 863567 +407553 736672 +407564 736453 +407567 881911 +407569 729397 +407569 933186 +407581 870417 +407583 736353 +407583 825156 +407589 735700 +407594 825903 +407597 744175 +407608 871508 +407608 1.1189e+06 +407617 733297 +407625 734536 +407631 769397 +407633 872936 +407656 730156 +407656 953719 +407664 894678 +407667 728525 +407667 879922 +407669 729967 +407672 742053 +407683 735256 +407683 741458 +407692 731156 +407692 800631 +407692 875639 +407694 740208 +407694 838228 +407700 1.24142e+06 +407703 874453 +407706 737181 +407706 742331 +407714 846156 +407719 983692 +407733 736436 +407739 742739 +407742 729433 +407744 785536 +407744 970503 +407756 777928 +407758 746011 +407761 877364 +407764 734678 +407775 929436 +407778 899664 +407786 900147 +407794 740242 +407797 978119 +407800 803386 +407808 736769 +407808 997411 +407811 732467 +407811 737250 +407811 766733 +407839 762306 +407842 746972 +407858 747806 +407861 737142 +407867 737269 +407869 730094 +407869 737372 +407872 812828 +407875 827367 +407878 740147 +407878 743886 +407883 741336 +407886 736000 +407886 736478 +407886 842039 +407889 765592 +407892 836433 +407894 740569 +407906 732022 +407906 893606 +407914 762839 +407919 740042 +407933 734156 +407933 764728 +407933 778603 +407936 736275 +407936 741506 +407942 736608 +407942 737489 +407944 801369 +407953 814736 +407958 743153 +407961 891972 +407972 759697 +407978 737000 +407978 858206 +407981 783975 +407986 736803 +407986 742394 +407989 768625 +407989 813786 +407989 816956 +407994 762128 +407994 780544 +407997 736514 +407997 756622 +407997 764281 +408000 966667 +408003 727903 +408006 737289 +408014 756106 +408017 835106 +408019 728414 +408022 1.24162e+06 +408025 737047 +408031 726150 +408031 749900 +408042 740125 +408042 763408 +408042 764653 +408042 821958 +408044 904017 +408050 819353 +408053 742042 +408067 737039 +408067 741858 +408072 736817 +408075 911128 +408083 829756 +408103 795297 +408106 778186 +408119 741247 +408122 730789 +408125 761419 +408153 730456 +408161 736978 +408164 736375 +408164 795222 +408167 964300 +408175 730006 +408178 800144 +408192 831306 +408197 737356 +408203 762011 +408203 879778 +408206 742942 +408206 985997 +408214 739881 +408217 744814 +408222 741603 +408231 726100 +408236 733992 +408236 759806 +408239 735481 +408244 726667 +408244 742850 +408250 783514 +408250 911564 +408256 732031 +408256 736986 +408258 742094 +408261 735025 +408264 741072 +408269 739761 +408272 832814 +408275 762072 +408292 853356 +408297 742406 +408297 750781 +408311 730300 +408317 758828 +408317 768361 +408325 1.15762e+06 +408336 757142 +408336 953081 +408339 740975 +408339 805406 +408342 740092 +408342 803225 +408347 736958 +408350 731317 +408356 803997 +408375 796322 +408381 857303 +408386 735656 +408389 898864 +408397 742769 +408403 740911 +408406 725819 +408408 743022 +408411 740456 +408417 962933 +408419 1.01725e+06 +408428 732933 +408431 737153 +408436 817642 +408447 737022 +408450 806147 +408453 733356 +408456 740883 +408475 776864 +408481 739981 +408481 752919 +408483 799622 +408486 768200 +408486 1.11906e+06 +408489 736453 +408500 782708 +408508 739706 +408517 737192 +408519 731544 +408528 731156 +408528 740425 +408531 741142 +408533 734119 +408539 748294 +408542 1.06965e+06 +408556 1.11892e+06 +408558 732011 +408561 731878 +408567 734700 +408567 741289 +408569 740219 +408581 740811 +408583 731000 +408583 741642 +408589 934972 +408597 999869 +408611 798956 +408614 739886 +408617 896786 +408622 736342 +408625 767947 +408625 856017 +408639 802592 +408644 758114 +408644 765528 +408644 864997 +408644 913144 +408656 735325 +408656 752069 +408658 907483 +408661 860775 +408664 730361 +408664 873636 +408667 1.24082e+06 +408672 980039 +408678 868789 +408681 734261 +408681 777469 +408681 975917 +408686 730019 +408686 752553 +408686 823183 +408689 725181 +408689 733656 +408689 742086 +408694 845842 +408700 961403 +408708 735114 +408711 747344 +408711 984678 +408714 734572 +408717 1.11891e+06 +408728 787244 +408758 745428 +408758 757328 +408758 814025 +408761 735769 +408761 740303 +408767 733250 +408772 807556 +408778 798467 +408778 882692 +408781 888611 +408789 769872 +408794 751842 +408803 879550 +408806 752150 +408806 851664 +408814 741136 +408814 826619 +408817 945617 +408822 740836 +408825 1.2166e+06 +408831 854975 +408831 895025 +408831 1.23983e+06 +408839 745625 +408842 723900 +408842 729378 +408853 739528 +408858 740439 +408858 782211 +408861 732578 +408869 735556 +408881 803383 +408883 738286 +408883 806942 +408894 1.1188e+06 +408897 741953 +408897 782286 +408897 815978 +408908 724642 +408908 774769 +408908 928150 +408917 767978 +408928 739731 +408931 745822 +408939 1.11901e+06 +408947 744333 +408953 736014 +408953 738075 +408953 838889 +408975 740164 +408983 956711 +408989 740931 +408989 747069 +408994 973992 +408997 734153 +409003 807642 +409008 733436 +409011 745147 +409022 817342 +409025 740622 +409025 744075 +409028 747094 +409033 731583 +409033 734603 +409039 741189 +409044 890344 +409050 742103 +409064 842967 +409069 970986 +409072 740756 +409083 902847 +409097 738083 +409100 759917 +409106 735625 +409114 737828 +409114 906472 +409117 859244 +409117 871553 +409125 733014 +409133 759669 +409133 777786 +409153 811061 +409167 741722 +409167 847028 +409169 726625 +409175 770481 +409175 965281 +409178 1.11399e+06 +409181 1.11871e+06 +409186 922228 +409192 892911 +409194 840569 +409222 894861 +409225 900144 +409228 810192 +409231 750969 +409231 809939 +409250 983417 +409253 730478 +409253 739633 +409253 742769 +409256 731414 +409258 746353 +409269 913994 +409275 739978 +409278 733603 +409278 737522 +409281 759150 +409286 740403 +409294 1.0016e+06 +409297 897575 +409297 949758 +409311 738992 +409319 909469 +409322 843389 +409328 724147 +409328 746597 +409328 803636 +409350 740194 +409353 879344 +409356 741867 +409367 871508 +409378 723014 +409381 738325 +409403 741322 +409406 739972 +409414 739597 +409417 777853 +409436 789711 +409444 740758 +409461 874533 +409464 730697 +409467 1.24099e+06 +409469 730300 +409478 903100 +409478 903711 +409481 797431 +409481 839611 +409486 737331 +409492 741542 +409494 725819 +409508 730844 +409519 764600 +409525 833825 +409550 741864 +409558 739317 +409561 729683 +409567 744983 +409572 729081 +409572 739639 +409583 759750 +409586 740372 +409586 759964 +409589 768994 +409597 729967 +409597 730683 +409597 731300 +409608 739906 +409622 828544 +409625 853733 +409628 741333 +409628 964408 +409633 711833 +409633 766131 +409636 813314 +409636 915578 +409644 768847 +409689 737131 +409700 816967 +409714 821100 +409731 739619 +409731 1.17735e+06 +409736 721442 +409747 848683 +409756 785253 +409761 740267 +409778 803453 +409781 817822 +409792 741169 +409806 736842 +409806 1.11887e+06 +409817 951039 +409819 931983 +409828 841994 +409836 739803 +409853 868794 +409858 747425 +409858 796133 +409867 751950 +409869 818939 +409883 1.02264e+06 +409892 741411 +409900 752167 +409900 887292 +409900 947406 +409911 725347 +409911 740331 +409919 760569 +409939 743039 +409942 921672 +409953 740125 +409956 723417 +409964 741017 +409978 722931 +409978 961619 +409981 739622 +409994 751817 +410006 857686 +410011 986072 +410017 736661 +410017 743675 +410017 793317 +410025 784636 +410028 738792 +410028 955850 +410031 879081 +410036 743419 +410036 885253 +410042 923736 +410050 737850 +410053 742911 +410061 764103 +410064 739494 +410081 911639 +410086 919625 +410094 741733 +410097 952253 +410100 818625 +410106 738442 +410106 739917 +410106 741183 +410114 958819 +410128 723133 +410128 816053 +410139 933064 +410144 738731 +410144 763814 +410161 721597 +410167 742061 +410167 758975 +410167 1.11498e+06 +410172 954019 +410186 864133 +410186 957989 +410189 737986 +410192 840472 +410208 814361 +410219 739478 +410233 740669 +410242 806150 +410242 806631 +410247 894111 +410250 807611 +410253 902797 +410256 817300 +410261 989122 +410264 819333 +410267 928056 +410275 941978 +410286 894383 +410289 840792 +410300 825158 +410308 779497 +410317 741025 +410322 1.11901e+06 +410333 820122 +410339 737633 +410339 937653 +410353 805367 +410353 1.11938e+06 +410358 719550 +410375 740411 +410381 742944 +410383 860281 +410389 738656 +410392 963681 +410414 741294 +410414 795033 +410417 939492 +410419 739186 +410442 836500 +410458 762825 +410464 813981 +410467 740233 +410469 957422 +410478 724636 +410492 880978 +410503 788225 +410514 866031 +410519 762211 +410519 830150 +410525 806081 +410525 890503 +410531 827264 +410533 735392 +410544 762336 +410547 797269 +410550 738206 +410572 741414 +410572 966444 +410581 747531 +410583 740989 +410586 943611 +410589 740222 +410603 1.1197e+06 +410606 757744 +410614 1.02074e+06 +410617 897731 +410619 762228 +410633 905558 +410639 800567 +410647 724267 +410647 828878 +410647 862158 +410681 723392 +410706 850144 +410722 858917 +410722 902253 +410758 775889 +410767 818964 +410775 847272 +410781 764147 +410783 805994 +410786 734697 +410797 878114 +410806 868919 +410811 1.11919e+06 +410814 815192 +410817 745928 +410819 961342 +410831 739206 +410844 768642 +410847 856281 +410856 738589 +410886 740139 +410892 906381 +410894 1.12064e+06 +410906 739183 +410928 1.0247e+06 +410936 898647 +410944 884250 +410958 796828 +410961 912575 +410964 739733 +410969 788889 +410972 1.04814e+06 +410983 839847 +410994 909425 +410997 806497 +411000 813467 +411003 821233 +411003 842664 +411014 814419 +411017 807647 +411019 767714 +411033 723597 +411039 826119 +411069 739206 +411072 737964 +411072 774847 +411075 837928 +411078 787714 +411083 835169 +411108 1.12025e+06 +411111 740689 +411114 893564 +411117 1.14964e+06 +411133 742458 +411142 975986 +411144 831781 +411147 741500 +411147 901644 +411158 980014 +411161 791869 +411169 809836 +411175 734083 +411181 739558 +411183 1.12083e+06 +411192 787603 +411200 878611 +411203 765303 +411208 888353 +411219 753650 +411219 830158 +411222 803331 +411231 914411 +411233 737794 +411239 741697 +411239 1.00765e+06 +411242 1.01356e+06 +411247 774300 +411253 848533 +411264 737144 +411264 774719 +411281 1.01719e+06 +411306 851289 +411325 1.11929e+06 +411333 1.04817e+06 +411339 814847 +411358 929039 +411364 740828 +411364 1.1203e+06 +411367 800094 +411367 958906 +411369 774472 +411381 845806 +411383 818639 +411408 962394 +411414 733583 +411417 878750 +411419 878611 +411428 890600 +411428 1.02978e+06 +411444 814400 +411450 788047 +411456 738242 +411458 774217 +411464 747528 +411472 916606 +411475 739897 +411506 739458 +411531 761506 +411533 745767 +411536 813581 +411539 807017 +411544 741933 +411544 960419 +411550 759786 +411564 805694 +411569 834169 +411569 1.01126e+06 +411572 854883 +411575 812422 +411578 800889 +411586 1.01002e+06 +411589 814544 +411594 814406 +411606 926311 +411611 790833 +411617 1.12026e+06 +411628 738619 +411656 808578 +411667 876628 +411669 732053 +411669 740436 +411675 900425 +411689 822181 +411703 909967 +411725 835564 +411725 923086 +411728 882767 +411728 1.11976e+06 +411733 860347 +411742 804536 +411747 918194 +411750 760750 +411769 1.12003e+06 +411772 744692 +411772 797081 +411772 896575 +411789 903158 +411797 975472 +411814 847406 +411814 911853 +411817 743825 +411819 1.04069e+06 +411822 937286 +411828 807656 +411828 836783 +411847 773142 +411856 883097 +411856 919928 +411883 809783 +411917 903800 +411919 1.11971e+06 +411922 974250 +411967 908803 +411969 759286 +411975 739650 +411992 798731 +411997 907492 +412003 857056 +412022 793278 +412031 905869 +412042 737275 +412044 928825 +412053 760053 +412053 960422 +412056 767858 +412069 830553 +412075 838992 +412083 738917 +412094 739858 +412094 1.06789e+06 +412097 746081 +412103 758969 +412108 849669 +412111 805381 +412114 966200 +412122 804969 +412125 924353 +412147 793856 +412150 867758 +412158 890667 +412189 864231 +412197 1.22274e+06 +412219 932411 +412222 730569 +412222 758633 +412225 742947 +412225 770372 +412231 1.11973e+06 +412269 802400 +412269 882647 +412272 858219 +412278 964875 +412283 851725 +412292 840342 +412306 853194 +412319 769994 +412325 956128 +412331 804936 +412339 805697 +412344 795375 +412350 810494 +412350 951372 +412358 1.03662e+06 +412367 954178 +412369 888314 +412375 808186 +412381 818419 +412381 858531 +412392 813461 +412397 816383 +412400 814408 +412400 836433 +412403 759450 +412411 767242 +412411 770014 +412411 815528 +412414 884194 +412425 826158 +412428 732011 +412450 759311 +412450 963969 +412456 899247 +412458 758817 +412464 832358 +412489 841331 +412492 787997 +412503 794597 +412506 878314 +412528 971297 +412539 836044 +412542 769208 +412542 893422 +412542 947681 +412544 823997 +412556 734353 +412558 1.22138e+06 +412561 830517 +412564 743603 +412586 959375 +412592 804722 +412597 906078 +412608 1.11769e+06 +412611 892275 +412611 961317 +412619 739386 +412619 958608 +412647 815133 +412650 882122 +412683 1.10962e+06 +412694 759167 +412706 729475 +412708 737781 +412725 820547 +412736 828417 +412753 758506 +412756 989664 +412761 728689 +412769 926794 +412781 758975 +412783 730261 +412786 725281 +412789 758786 +412794 725989 +412794 728156 +412797 767133 +412800 759125 +412800 913606 +412814 734986 +412814 1.11988e+06 +412833 701000 +412839 812242 +412842 810967 +412844 843558 +412853 723994 +412853 724481 +412861 804278 +412864 962342 +412872 845536 +412878 882856 +412878 993814 +412886 882517 +412889 726822 +412889 758058 +412889 915522 +412897 945614 +412900 739208 +412906 959178 +412917 723767 +412917 758750 +412917 934422 +412919 999222 +412922 895061 +412931 847619 +412939 822175 +412939 902919 +412942 882711 +412953 890594 +412956 861164 +412958 897903 +412964 926442 +412975 826056 +412981 1.12085e+06 +412992 916928 +413036 901928 +413042 829753 +413053 944611 +413072 1.11959e+06 +413078 881467 +413081 729286 +413083 741450 +413089 820058 +413097 742294 +413100 721458 +413100 1.22309e+06 +413111 886097 +413114 1.05591e+06 +413117 758378 +413125 811439 +413125 814403 +413128 963458 +413136 817247 +413139 816853 +413144 818358 +413164 730936 +413167 870258 +413175 868914 +413186 872003 +413189 905058 +413197 758464 +413197 816269 +413206 730894 +413206 758194 +413208 931092 +413217 802589 +413231 777486 +413242 834386 +413250 757458 +413253 721936 +413253 824933 +413256 856978 +413258 757897 +413261 896789 +413264 777511 +413269 757736 +413275 757933 +413275 891289 +413275 891997 +413275 1.10292e+06 +413278 719911 +413278 831322 +413297 906703 +413303 807256 +413306 741872 +413308 887081 +413308 940136 +413317 741214 +413317 743572 +413319 858500 +413322 877853 +413333 922044 +413336 888781 +413358 719064 +413361 759636 +413367 755189 +413392 801053 +413397 757367 +413406 876214 +413436 863097 +413439 757389 +413447 837972 +413450 720253 +413450 815286 +413456 888425 +413458 813953 +413461 730794 +413469 741267 +413486 800825 +413494 851356 +413500 720789 +413503 831219 +413506 719825 +413533 723911 +413533 757386 +413542 719669 +413547 903814 +413556 721000 +413558 822539 +413572 884211 +413578 891761 +413581 935572 +413583 897372 +413614 818131 +413625 742717 +413633 979689 +413639 919536 +413647 961575 +413650 958578 +413653 895839 +413656 815614 +413658 852389 +413661 818544 +413669 799294 +413669 850589 +413681 894647 +413683 821078 +413692 739667 +413711 734144 +413714 839419 +413722 737339 +413747 836514 +413750 746931 +413750 819083 +413772 718342 +413775 718278 +413825 892189 +413833 760250 +413844 833206 +413856 724361 +413858 932692 +413889 705139 +413897 814414 +413900 817597 +413906 809736 +413908 728600 +413914 739564 +413922 841253 +413931 815367 +413947 734544 +413947 757069 +413953 816764 +413969 966111 +413972 736175 +413972 899044 +413978 822225 +413983 818047 +413989 717475 +414000 747236 +414000 828086 +414014 923544 +414019 743247 +414019 996389 +414031 724514 +414036 950136 +414039 881117 +414047 817231 +414050 1.02344e+06 +414061 736331 +414081 929161 +414089 756628 +414092 741956 +414092 1.12035e+06 +414097 797119 +414108 834611 +414119 838644 +414139 733039 +414153 815661 +414156 819236 +414169 815275 +414169 816061 +414169 873653 +414181 864858 +414189 832214 +414197 756328 +414200 877417 +414203 787289 +414208 900150 +414211 820964 +414214 798814 +414219 823647 +414225 879858 +414225 1.00193e+06 +414228 1.22385e+06 +414233 717861 +414244 739469 +414253 816883 +414269 892133 +414278 741664 +414278 857525 +414286 904608 +414294 882286 +414297 720825 +414297 813908 +414297 848714 +414297 973681 +414306 868983 +414314 813656 +414322 714569 +414333 964978 +414344 721103 +414347 815258 +414350 815364 +414353 816575 +414392 740456 +414392 907175 +414397 817356 +414414 818644 +414414 852650 +414428 860014 +414433 840089 +414442 744003 +414444 876314 +414453 947644 +414458 744233 +414464 861481 +414472 970592 +414478 814278 +414481 901542 +414486 847481 +414486 977303 +414489 827081 +414489 956153 +414500 816636 +414506 834875 +414514 756122 +414517 820356 +414525 963508 +414528 821825 +414531 905719 +414542 705625 +414542 706042 +414542 740581 +414550 1.06806e+06 +414553 819181 +414553 882617 +414558 960261 +414564 907233 +414569 728236 +414569 1.22894e+06 +414594 934047 +414614 736714 +414619 810739 +414619 967794 +414622 814808 +414642 918381 +414644 815089 +414647 837061 +414658 855875 +414667 864831 +414683 756033 +414686 755625 +414689 796911 +414700 876364 +414700 926511 +414706 811453 +414714 756081 +414731 870611 +414731 903575 +414733 745389 +414739 815372 +414747 845525 +414756 818394 +414756 936786 +414758 751825 +414761 832958 +414767 740242 +414767 953378 +414775 952217 +414783 814639 +414803 715231 +414806 866917 +414808 755950 +414808 876378 +414814 743606 +414817 726817 +414819 817983 +414828 873328 +414831 917058 +414839 742181 +414839 903531 +414844 877033 +414847 819222 +414858 730511 +414872 1.20541e+06 +414875 821017 +414881 914258 +414883 875675 +414886 757089 +414892 814019 +414900 713133 +414914 876744 +414919 941239 +414928 757000 +414942 875217 +414947 755372 +414947 903906 +414953 794561 +414958 878486 +414961 853767 +414969 713678 +414969 725575 +414978 815375 +414989 729011 +414994 816956 +415003 858281 +415006 874614 +415006 946433 +415008 837183 +415008 904442 +415008 934908 +415028 724506 +415033 740108 +415033 943183 +415036 844142 +415039 877131 +415047 739700 +415053 820283 +415061 876356 +415061 881144 +415064 875917 +415067 905150 +415075 717167 +415089 907658 +415094 905786 +415103 1.12015e+06 +415119 829378 +415119 879656 +415122 782353 +415122 904150 +415133 876742 +415139 920761 +415161 954500 +415175 814036 +415183 942261 +415189 838039 +415192 814581 +415200 800486 +415200 814889 +415200 815564 +415200 882017 +415214 843072 +415217 739269 +415222 813381 +415222 931017 +415231 815186 +415236 905775 +415242 720764 +415242 764011 +415244 862733 +415244 905156 +415250 880817 +415256 741533 +415258 853667 +415261 878892 +415264 706736 +415264 875386 +415272 850656 +415275 742372 +415283 874236 +415286 1.09466e+06 +415300 886797 +415306 739781 +415308 755458 +415317 940094 +415319 939539 +415322 872550 +415331 815792 +415342 757364 +415342 864272 +415347 740153 +415350 740706 +415350 808683 +415356 738994 +415356 878475 +415369 885833 +415381 728075 +415386 759469 +415392 855397 +415397 740986 +415414 869006 +415425 816264 +415425 876022 +415428 876847 +415439 738686 +415444 732094 +415444 961247 +415472 891175 +415475 865822 +415486 985308 +415486 987306 +415492 841417 +415511 1.12109e+06 +415514 706153 +415519 814786 +415528 815103 +415542 915347 +415547 880986 +415558 904092 +415564 847689 +415564 958875 +415569 836272 +415572 876656 +415575 894608 +415581 730519 +415583 872744 +415600 740036 +415619 736031 +415622 726511 +415644 875125 +415647 875389 +415661 834247 +415681 876081 +415681 877203 +415689 1.11837e+06 +415700 912636 +415717 876944 +415728 726411 +415733 877844 +415736 755022 +415736 840053 +415736 876464 +415750 872389 +415756 723325 +415758 725031 +415758 871761 +415767 744875 +415767 752592 +415769 734089 +415772 937111 +415783 705592 +415783 928447 +415803 754086 +415817 903433 +415833 875000 +415839 738092 +415839 935197 +415847 907719 +415853 878431 +415858 925272 +415861 844350 +415869 712839 +415875 1.09202e+06 +415878 834933 +415886 838911 +415889 910167 +415894 880578 +415894 889219 +415894 941958 +415908 948753 +415917 950597 +415931 815269 +415933 730858 +415933 873464 +415964 739114 +415978 937081 +415983 814186 +415994 932350 +415997 909106 +416006 936089 +416008 876069 +416028 877439 +416031 937239 +416033 803056 +416033 989258 +416056 739719 +416056 741844 +416061 738733 +416064 903353 +416067 719814 +416067 805725 +416078 1.22839e+06 +416097 835644 +416100 876467 +416106 867225 +416106 965478 +416111 876347 +416117 938850 +416125 887994 +416136 901728 +416142 760469 +416142 811492 +416144 940172 +416147 1.12126e+06 +416156 870742 +416156 875294 +416186 813842 +416217 837117 +416228 738711 +416239 813072 +416253 877175 +416258 712139 +416258 871903 +416261 757808 +416267 937119 +416269 796739 +416269 882039 +416283 703875 +416289 813617 +416303 878539 +416303 897861 +416311 780917 +416314 724603 +416317 876608 +416331 754708 +416331 814689 +416336 886811 +416342 1.11851e+06 +416347 849994 +416353 727692 +416361 709347 +416378 859217 +416386 1.11933e+06 +416386 1.12079e+06 +416389 875567 +416389 876072 +416392 874547 +416397 732089 +416397 814067 +416406 993708 +416411 884472 +416414 801517 +416417 854167 +416431 957886 +416436 834869 +416439 877036 +416442 934644 +416458 886217 +416475 880894 +416500 702417 +416514 754669 +416525 797272 +416528 702833 +416531 953253 +416539 814506 +416556 738753 +416556 746897 +416561 804242 +416564 768536 +416564 900792 +416572 876800 +416581 905844 +416583 701292 +416583 708167 +416603 808608 +416611 727800 +416611 877525 +416611 915300 +416611 920089 +416619 861586 +416628 788114 +416628 876606 +416628 885369 +416639 835553 +416642 836433 +416644 701733 +416650 860758 +416653 1.03099e+06 +416658 814433 +416658 1.11181e+06 +416661 813397 +416667 701853 +416667 966656 +416672 878303 +416681 762622 +416681 877964 +416686 933575 +416689 877386 +416714 899361 +416714 913464 +416717 729497 +416731 936975 +416731 1.07979e+06 +416733 843269 +416736 880017 +416747 903403 +416750 712711 +416750 733522 +416764 719156 +416764 915803 +416772 945031 +416778 932450 +416781 730114 +416794 721708 +416794 770642 +416797 874944 +416800 845531 +416803 903189 +416811 699917 +416817 1.11822e+06 +416819 699603 +416819 859767 +416819 869603 +416828 883514 +416833 862500 +416842 877003 +416844 939608 +416861 700764 +416883 937908 +416889 889811 +416889 983631 +416897 877972 +416908 980033 +416917 943628 +416917 974842 +416919 713792 +416925 869775 +416947 740517 +416967 878169 +416972 862450 +416975 905825 +416978 727242 +416983 868592 +416986 880683 +416994 840703 +416997 930478 +417000 703000 +417000 707633 +417003 739214 +417003 865094 +417006 934619 +417014 711556 +417014 877792 +417019 702500 +417039 790358 +417050 813606 +417053 972378 +417061 715236 +417064 1.11816e+06 +417075 868950 +417092 746289 +417103 865342 +417106 722086 +417106 745747 +417117 839097 +417119 1.12165e+06 +417122 726086 +417128 718814 +417142 726531 +417142 893286 +417161 862525 +417169 743961 +417175 899258 +417181 929072 +417181 949322 +417183 738531 +417189 801478 +417189 837131 +417194 842181 +417206 877017 +417208 739606 +417208 877542 +417211 968825 +417214 858175 +417217 1.11821e+06 +417233 917903 +417244 732367 +417244 812458 +417250 970025 +417256 786386 +417256 878250 +417267 971219 +417278 844189 +417283 1.22527e+06 +417297 936056 +417306 883458 +417308 849328 +417317 922978 +417331 776422 +417336 924453 +417344 877314 +417356 1.11834e+06 +417356 1.22633e+06 +417383 957025 +417406 713092 +417408 878603 +417411 705994 +417411 735769 +417411 1.12161e+06 +417417 706583 +417431 927222 +417439 743719 +417444 878378 +417453 706186 +417456 868508 +417472 731892 +417475 740872 +417486 773008 +417489 879183 +417492 915978 +417500 878042 +417500 977750 +417550 1.03324e+06 +417561 1.24201e+06 +417578 803681 +417589 704944 +417600 700833 +417603 811411 +417606 883200 +417611 938242 +417619 727425 +417619 1.08966e+06 +417625 707222 +417628 878000 +417636 726856 +417653 721986 +417658 836281 +417675 764431 +417681 888769 +417689 878578 +417689 886408 +417694 711292 +417694 1.11804e+06 +417697 911278 +417700 705289 +417703 879022 +417711 730603 +417711 810500 +417714 937128 +417717 887736 +417747 742986 +417747 780208 +417750 1.07112e+06 +417756 954172 +417758 725219 +417783 962208 +417794 1.10538e+06 +417797 714378 +417797 896889 +417800 790933 +417808 749342 +417817 991328 +417822 726125 +417828 878781 +417850 736944 +417858 881472 +417881 902561 +417886 896961 +417894 902192 +417897 699903 +417897 707608 +417911 1.07238e+06 +417925 1.10537e+06 +417939 867439 +417956 860808 +417958 879756 +417967 718978 +417975 879547 +417981 856433 +417981 864992 +417981 920706 +417986 866106 +417989 1.11818e+06 +417992 854192 +418006 731217 +418006 803692 +418008 879369 +418011 747469 +418011 880747 +418019 810492 +418025 718864 +418036 800567 +418061 883272 +418069 834425 +418072 770778 +418072 914939 +418083 722500 +418086 877933 +418089 880111 +418094 1.03503e+06 +418097 728311 +418097 879006 +418097 899650 +418108 782800 +418111 784450 +418128 729206 +418133 878181 +418136 713706 +418178 881733 +418214 877828 +418233 905381 +418239 714133 +418239 878517 +418242 906478 +418244 728942 +418258 1.0366e+06 +418261 931514 +418272 863611 +418281 866925 +418283 974547 +418289 740689 +418297 862542 +418317 908381 +418325 838625 +418328 879289 +418347 878617 +418350 878228 +418358 964667 +418383 1.11832e+06 +418386 941069 +418389 894794 +418394 847481 +418411 856686 +418417 893003 +418417 967083 +418428 878231 +418439 791453 +418444 901886 +418456 877539 +418456 916928 +418458 709500 +418472 853186 +418475 1.03661e+06 +418492 735572 +418500 876500 +418500 879644 +418500 883125 +418506 877936 +418506 878819 +418519 945581 +418525 726442 +418544 956003 +418550 843539 +418569 939217 +418575 909281 +418594 809542 +418617 881608 +418628 1.1199e+06 +418639 711250 +418639 878533 +418650 699917 +418650 807900 +418661 881069 +418661 892211 +418667 1.03667e+06 +418672 901594 +418700 1.06561e+06 +418708 786617 +418708 946772 +418711 715525 +418722 851947 +418725 757275 +418728 807731 +418731 728586 +418742 791525 +418742 801319 +418758 728017 +418767 938231 +418775 880669 +418778 879028 +418778 936783 +418786 713831 +418789 927892 +418792 878431 +418800 880078 +418814 878831 +418822 729775 +418847 882039 +418850 877844 +418875 883053 +418889 837789 +418889 879033 +418889 910564 +418897 879889 +418897 952319 +418906 713928 +418908 806764 +418919 933994 +418922 884722 +418931 911506 +418956 1.06204e+06 +418969 922781 +418975 840372 +418978 878139 +418983 935289 +418994 798456 +418994 879403 +419000 710903 +419003 748286 +419006 878567 +419011 837150 +419028 919214 +419039 777622 +419044 912544 +419050 803439 +419053 739767 +419056 878836 +419058 806906 +419067 713911 +419075 885992 +419086 727606 +419086 771333 +419092 950647 +419094 920842 +419103 880717 +419117 860100 +419125 881347 +419150 719094 +419164 833978 +419172 878956 +419172 1.04039e+06 +419183 834306 +419192 775392 +419194 917808 +419200 846306 +419200 886886 +419203 796406 +419203 1.12049e+06 +419211 730606 +419211 878092 +419211 913853 +419219 914167 +419228 1.11813e+06 +419233 855283 +419236 710528 +419239 890686 +419244 740617 +419258 878358 +419267 739131 +419269 739978 +419289 954936 +419292 726278 +419294 887503 +419297 888608 +419300 968114 +419308 889644 +419311 833269 +419317 879889 +419353 878656 +419375 964769 +419386 761361 +419389 719600 +419403 850006 +419403 1.03808e+06 +419414 931031 +419439 856325 +419442 848839 +419444 712861 +419464 863389 +419475 805544 +419503 972236 +419508 882422 +419511 890644 +419536 735111 +419539 727892 +419539 752808 +419539 860647 +419542 723028 +419550 879400 +419556 717028 +419558 786442 +419558 878708 +419561 1.21476e+06 +419572 765183 +419572 836597 +419575 864856 +419575 880808 +419578 783856 +419583 706678 +419583 853250 +419589 900992 +419611 757436 +419633 878272 +419633 879789 +419633 897744 +419633 1.03926e+06 +419636 781911 +419639 908175 +419656 716750 +419667 711875 +419667 925767 +419672 878075 +419675 1.21917e+06 +419708 845258 +419717 757436 +419750 880072 +419758 1.11856e+06 +419761 725922 +419767 714592 +419789 765158 +419797 736564 +419817 726511 +419825 793389 +419833 980833 +419836 909561 +419842 846619 +419842 861086 +419847 880797 +419850 862997 +419853 724467 +419856 718992 +419856 739886 +419861 773111 +419861 895792 +419864 843472 +419867 838311 +419872 725453 +419872 969139 +419889 886867 +419903 709756 +419942 882922 +419944 707250 +419950 881856 +419956 919675 +419956 925767 +419969 918619 +419972 741053 +419975 765375 +419981 911414 +419983 921972 +419994 881450 +419994 975981 +420003 803183 +420022 906069 +420028 715153 +420036 798111 +420039 839450 +420039 879703 +420044 877300 +420061 841900 +420064 854500 +420069 927753 +420075 962494 +420083 916439 +420086 920908 +420111 878406 +420128 965725 +420128 1.21408e+06 +420133 898906 +420144 865194 +420147 893322 +420153 943772 +420161 767272 +420167 740767 +420167 931633 +420178 933150 +420178 953550 +420181 740153 +420189 878028 +420225 945450 +420228 934522 +420231 706833 +420236 719503 +420253 1.21599e+06 +420256 881783 +420258 858156 +420267 960969 +420272 733297 +420317 942406 +420333 712194 +420333 877333 +420333 878833 +420333 880833 +420342 915975 +420347 936197 +420358 916819 +420372 882811 +420386 783411 +420392 940275 +420406 877825 +420411 876900 +420417 706728 +420428 880797 +420428 1.01042e+06 +420431 733456 +420436 739478 +420439 847575 +420456 802700 +420472 978336 +420494 929078 +420500 718806 +420500 725833 +420503 894311 +420503 904139 +420528 1.24283e+06 +420533 1.24266e+06 +420544 791583 +420544 1.04952e+06 +420569 947286 +420583 701792 +420583 739097 +420592 833908 +420592 910072 +420594 914425 +420597 938800 +420600 754281 +420639 832611 +420650 864950 +420650 1.04181e+06 +420658 948667 +420661 917953 +420664 879372 +420667 851361 +420683 955914 +420689 906656 +420694 761550 +420700 843306 +420708 832467 +420711 901739 +420711 916667 +420719 839717 +420722 717139 +420722 877228 +420750 708806 +420750 720339 +420750 794833 +420758 756408 +420775 739533 +420775 784300 +420781 768456 +420825 1.10954e+06 +420833 710189 +420833 713972 +420842 880131 +420853 836825 +420858 877175 +420864 779225 +420867 714750 +420869 864558 +420886 852347 +420897 768081 +420900 784944 +420914 881217 +420917 707061 +420925 888511 +420931 707931 +420933 849858 +420936 926756 +420942 883025 +420944 901567 +420944 918692 +420950 831897 +420950 899781 +420953 879375 +420964 1.11876e+06 +420969 792356 +420972 886928 +420978 885303 +420983 760497 +420986 759183 +420997 877808 +421014 725903 +421022 898333 +421028 772339 +421033 762625 +421042 723194 +421042 793333 +421058 842483 +421069 726208 +421069 936494 +421072 891792 +421081 859744 +421081 877358 +421083 720792 +421083 912850 +421094 792833 +421103 880342 +421111 716667 +421125 929883 +421128 760214 +421142 856378 +421142 967069 +421156 759592 +421161 721139 +421167 864542 +421181 880961 +421186 791986 +421200 855328 +421211 882578 +421217 770375 +421236 711792 +421236 724319 +421250 727500 +421256 894036 +421261 895792 +421269 892556 +421275 878289 +421275 961492 +421286 980294 +421292 800853 +421297 768211 +421306 715417 +421311 864072 +421333 758967 +421350 877581 +421372 769372 +421389 832417 +421392 879289 +421394 831783 +421397 715167 +421403 800153 +421417 712500 +421428 770550 +421458 707403 +421458 848089 +421461 771119 +421483 964881 +421486 726083 +421486 746486 +421503 840378 +421514 879597 +421519 944742 +421539 881361 +421547 897397 +421550 710092 +421564 777958 +421578 787153 +421583 723292 +421592 795956 +421606 842461 +421608 880814 +421611 932969 +421619 770944 +421619 789756 +421625 710417 +421625 834031 +421631 1.23647e+06 +421653 954367 +421656 882942 +421658 957928 +421664 935017 +421667 837817 +421669 768208 +421672 858469 +421675 878969 +421681 884281 +421686 920233 +421694 751297 +421706 880478 +421711 878444 +421717 923061 +421728 789481 +421778 846431 +421783 879978 +421811 723611 +421817 878003 +421817 883303 +421817 949767 +421861 863083 +421867 862606 +421872 935956 +421875 713069 +421878 927150 +421889 1.20345e+06 +421908 917850 +421917 1.1225e+06 +421933 843911 +421933 878664 +421936 924653 +421944 712000 +421944 719064 +421947 1.22708e+06 +421956 741342 +421958 707264 +421958 733625 +421969 880933 +421986 765528 +421992 975264 +421997 878092 +422008 882144 +422011 855800 +422039 915239 +422042 726167 +422047 834853 +422050 845528 +422064 781378 +422067 861667 +422069 1.21736e+06 +422075 880556 +422078 881406 +422094 857844 +422097 764936 +422119 882381 +422122 862719 +422125 721917 +422125 723458 +422125 881525 +422136 742192 +422139 721028 +422139 831939 +422156 798344 +422169 880494 +422172 738650 +422175 782756 +422178 858911 +422189 707861 +422192 860514 +422194 879794 +422208 709403 +422208 863694 +422222 710000 +422222 833967 +422231 780347 +422236 761836 +422242 918742 +422247 928744 +422250 1.21781e+06 +422272 1.114e+06 +422278 720472 +422281 755269 +422286 715231 +422306 970175 +422328 763428 +422328 962278 +422331 843272 +422339 738828 +422347 889489 +422353 721417 +422358 964722 +422383 853350 +422383 911869 +422408 832697 +422411 836131 +422411 883161 +422417 708903 +422417 711667 +422425 882019 +422431 847531 +422433 1.13881e+06 +422439 719928 +422444 831458 +422456 930644 +422458 712833 +422458 844014 +422458 1.22788e+06 +422464 882428 +422483 736536 +422486 886083 +422500 710667 +422506 831786 +422508 842131 +422525 788058 +422528 710028 +422528 737914 +422539 795047 +422542 733667 +422542 777908 +422564 725167 +422564 902794 +422575 832111 +422578 983461 +422583 845997 +422586 904228 +422589 881392 +422597 722403 +422603 738100 +422614 940683 +422625 718028 +422631 880039 +422639 792589 +422639 888442 +422653 898258 +422661 892411 +422667 720833 +422669 797108 +422675 947336 +422689 715244 +422692 968647 +422694 716167 +422697 1.04741e+06 +422703 776061 +422703 945483 +422711 890939 +422711 950928 +422714 939269 +422722 849633 +422733 831344 +422750 786731 +422756 1.22817e+06 +422761 881919 +422769 724014 +422781 749164 +422786 967264 +422789 878342 +422792 714167 +422806 942906 +422808 915303 +422814 833864 +422825 831753 +422831 879531 +422833 712333 +422833 837458 +422861 737392 +422867 917806 +422875 733208 +422886 772186 +422886 854181 +422900 882247 +422917 855872 +422933 754797 +422942 833100 +422944 791000 +422964 712931 +422967 896211 +422986 910147 +422989 739989 +423019 709083 +423031 855503 +423042 732486 +423056 933000 +423067 780161 +423083 852192 +423122 952503 +423125 722083 +423125 861131 +423136 1.22966e+06 +423139 893592 +423147 753919 +423147 884486 +423150 921919 +423153 934342 +423156 955983 +423178 902214 +423181 840206 +423189 851425 +423189 882581 +423194 716417 +423200 890581 +423208 713647 +423211 851797 +423217 964892 +423217 1.03072e+06 +423222 777386 +423222 795783 +423222 831764 +423222 1.11297e+06 +423236 925992 +423242 834003 +423250 726417 +423253 753128 +423256 833311 +423256 878411 +423267 1.22874e+06 +423278 776614 +423281 855697 +423286 881989 +423289 759681 +423292 757703 +423292 788683 +423314 830458 +423364 853522 +423367 767889 +423369 712097 +423369 773181 +423369 784583 +423369 832733 +423383 838886 +423403 725056 +423428 879981 +423428 890519 +423439 912483 +423442 793097 +423444 880417 +423447 882739 +423450 954714 +423458 715528 +423461 776617 +423472 768456 +423483 878842 +423497 900067 +423497 977917 +423508 738033 +423533 880933 +423564 732853 +423569 880767 +423583 710603 +423600 940519 +423600 975964 +423608 858794 +423608 930994 +423617 927683 +423636 878447 +423642 735953 +423642 790558 +423683 833528 +423683 882925 +423694 719486 +423703 879019 +423708 711833 +423708 725986 +423717 880900 +423736 725208 +423750 709833 +423758 829375 +423758 896331 +423764 712361 +423783 846986 +423786 973567 +423794 898222 +423800 881042 +423806 768736 +423811 881397 +423828 859569 +423861 829119 +423875 711000 +423883 958664 +423886 794414 +423886 895261 +423917 710333 +423917 715667 +423928 830497 +423933 883403 +423944 776969 +423944 917608 +423953 736983 +423953 946336 +423958 711792 +423967 881836 +423972 751739 +423986 880525 +423997 887403 +424031 862736 +424039 963583 +424067 924553 +424072 746147 +424075 1.24421e+06 +424078 772239 +424081 881317 +424083 710125 +424083 710542 +424086 882064 +424092 828919 +424094 774217 +424103 725314 +424106 880261 +424133 736736 +424133 890092 +424153 711569 +424156 964181 +424161 922147 +424167 716833 +424167 904289 +424169 880739 +424183 711067 +424222 886136 +424222 949894 +424228 721056 +424233 781575 +424247 941500 +424250 710667 +424264 709194 +424286 879239 +424286 1.12124e+06 +424292 764953 +424294 970894 +424297 913308 +424311 834833 +424331 829242 +424333 714500 +424361 1.23171e+06 +424364 893319 +424367 828769 +424375 1.22858e+06 +424392 1.23327e+06 +424394 837439 +424400 793319 +424400 856489 +424406 764969 +424408 736614 +424414 849242 +424417 760325 +424428 910061 +424433 850181 +424436 829069 +424444 716875 +424450 909319 +424461 878328 +424472 712250 +424500 732458 +424511 841806 +424514 844325 +424522 711375 +424528 750642 +424567 839464 +424578 986472 +424583 710667 +424583 713958 +424592 929383 +424594 764869 +424606 831347 +424606 836517 +424606 856964 +424614 777772 +424614 951517 +424625 831042 +424631 789361 +424642 926281 +424644 833764 +424647 710106 +424661 781153 +424667 709500 +424667 979058 +424669 922564 +424683 738167 +424683 791772 +424683 829556 +424683 896439 +424686 918892 +424689 922194 +424692 922808 +424694 938158 +424706 939933 +424708 709181 +424711 831422 +424717 884322 +424728 1.22802e+06 +424733 832219 +424733 917342 +424739 964133 +424750 957853 +424756 920636 +424772 726083 +424772 880956 +424775 830278 +424789 878236 +424792 711528 +424794 793342 +424800 711000 +424806 831669 +424806 834756 +424817 912722 +424842 914553 +424844 911228 +424850 830278 +424858 831053 +424889 960722 +424892 784811 +424892 955447 +424894 831447 +424908 762975 +424922 906428 +424928 923428 +424931 890367 +424947 1.07827e+06 +424964 832228 +424964 899894 +424969 828889 +424972 829372 +424975 941678 +424983 883297 +424994 975417 +425000 708583 +425000 952928 +425000 964000 +425006 906644 +425022 775075 +425025 887289 +425031 831836 +425047 711961 +425061 972033 +425064 710733 +425083 890317 +425092 846558 +425144 907514 +425158 736106 +425158 832733 +425183 737517 +425194 708972 +425203 933758 +425222 833061 +425225 932511 +425233 769769 +425247 835364 +425250 717603 +425256 710958 +425272 964828 +425278 709292 +425278 924453 +425292 712286 +425292 858553 +425294 837803 +425297 1.14305e+06 +425300 784731 +425311 755239 +425311 882481 +425311 885994 +425314 989778 +425328 904344 +425333 831464 +425339 784233 +425339 1.14364e+06 +425347 881436 +425358 1.13792e+06 +425364 997003 +425378 834811 +425381 883508 +425383 1.10114e+06 +425389 710486 +425392 829494 +425422 766664 +425436 716500 +425442 791669 +425458 714750 +425464 711742 +425467 832114 +425486 752456 +425489 748214 +425500 998622 +425511 946836 +425536 882944 +425536 1.10109e+06 +425542 930531 +425567 834739 +425578 888650 +425583 708806 +425586 1.13763e+06 +425608 776964 +425611 715903 +425631 1.1446e+06 +425636 848358 +425669 926219 +425678 775900 +425697 903806 +425700 921603 +425703 1.14607e+06 +425733 902308 +425750 709306 +425750 719986 +425761 1.1173e+06 +425775 881050 +425775 927867 +425778 1.21865e+06 +425781 885408 +425794 779428 +425803 830303 +425814 948458 +425819 724931 +425822 762094 +425833 718028 +425836 832456 +425842 886325 +425842 928842 +425847 878211 +425858 995375 +425875 726000 +425878 763672 +425883 959672 +425903 723103 +425906 749456 +425936 835994 +425939 861017 +425944 717250 +425953 789414 +425958 722272 +425961 760936 +425969 980333 +425972 828781 +425986 916419 +425989 976453 +425992 991422 +425992 1.14759e+06 +426011 761808 +426011 896383 +426017 887075 +426025 965589 +426028 850931 +426042 725569 +426042 727397 +426056 904297 +426056 950025 +426072 839294 +426081 833439 +426081 1.13782e+06 +426083 720764 +426103 719394 +426111 715750 +426114 833286 +426122 884822 +426144 941458 +426153 770925 +426153 774028 +426158 706625 +426169 767253 +426183 825311 +426183 893761 +426192 1.13676e+06 +426208 919000 +426214 951731 +426219 738331 +426225 972642 +426236 857603 +426242 731181 +426242 753319 +426242 790672 +426261 830336 +426272 905919 +426275 892531 +426278 962914 +426289 780547 +426289 850242 +426292 847389 +426319 707833 +426331 886436 +426333 713167 +426339 735542 +426342 745644 +426369 761792 +426375 709500 +426383 790281 +426389 832911 +426392 920469 +426406 845153 +426411 952094 +426425 737433 +426433 736092 +426444 914011 +426456 846489 +426461 924628 +426506 1.12192e+06 +426525 737567 +426539 739292 +426544 1.11604e+06 +426550 862019 +426567 935008 +426583 711375 +426606 780858 +426606 840731 +426608 770542 +426611 709972 +426642 939042 +426653 715736 +426658 715889 +426658 743100 +426667 717056 +426669 841742 +426708 892089 +426714 923372 +426728 885444 +426733 919133 +426736 952903 +426739 856447 +426764 768233 +426778 744858 +426781 754989 +426781 882761 +426792 708417 +426806 831339 +426811 827369 +426822 768689 +426828 890186 +426831 901175 +426831 1.03412e+06 +426833 966833 +426836 915339 +426839 1.02689e+06 +426856 787769 +426861 720444 +426881 880514 +426889 842831 +426894 907119 +426903 735650 +426911 738692 +426919 737250 +426950 738075 +426958 724533 +426981 878944 +427006 740342 +427006 749247 +427008 731092 +427011 898669 +427022 834028 +427022 922253 +427047 737553 +427069 711636 +427078 894369 +427103 925828 +427119 732042 +427125 764219 +427128 954364 +427131 854619 +427144 909906 +427156 780058 +427167 708792 +427178 738339 +427183 1.02464e+06 +427194 824922 +427197 962483 +427200 942000 +427203 1.11885e+06 +427208 942150 +427222 844275 +427242 1.14518e+06 +427250 1.10931e+06 +427256 778744 +427258 924753 +427261 877828 +427283 736922 +427289 974953 +427294 944475 +427300 737017 +427317 937328 +427325 845556 +427342 904783 +427356 946689 +427358 834189 +427361 903342 +427364 1.23422e+06 +427369 844839 +427400 781331 +427414 882242 +427419 932022 +427442 736919 +427456 895947 +427458 1.24496e+06 +427469 737594 +427469 844011 +427494 955514 +427519 929753 +427528 927950 +427533 847464 +427539 767028 +427583 758847 +427597 1.05382e+06 +427600 772267 +427622 848964 +427622 849925 +427625 1.04452e+06 +427631 882142 +427647 714403 +427653 714681 +427672 718128 +427675 787442 +427678 786136 +427703 832642 +427733 723836 +427739 918822 +427742 737006 +427756 889439 +427758 1.14703e+06 +427761 710778 +427794 969289 +427797 738461 +427803 892992 +427819 949483 +427844 832397 +427844 877661 +427847 851383 +427847 926675 +427853 884050 +427858 910994 +427861 724869 +427861 1.12854e+06 +427875 861089 +427892 855167 +427914 838464 +427919 836278 +427925 736817 +427942 961653 +427956 747536 +427958 746175 +427958 778172 +427964 1.12253e+06 +427972 788236 +427978 837050 +427981 761097 +428028 830131 +428047 1.02203e+06 +428081 922581 +428092 827558 +428103 898619 +428122 1.14898e+06 +428125 708778 +428125 860186 +428128 945267 +428139 720236 +428142 739400 +428144 837825 +428144 896350 +428147 959731 +428208 824861 +428214 776689 +428228 839444 +428239 721817 +428247 832647 +428256 788236 +428258 958072 +428264 739647 +428264 780900 +428264 842194 +428269 755450 +428289 965592 +428294 1.03e+06 +428297 786364 +428331 1.0873e+06 +428336 887322 +428353 716494 +428353 890675 +428386 841783 +428397 766936 +428406 1.06365e+06 +428408 856636 +428417 708611 +428419 918019 +428433 717356 +428442 828844 +428461 936139 +428467 948517 +428475 907106 +428475 920914 +428508 725583 +428522 834431 +428533 749858 +428536 893703 +428539 914053 +428542 978969 +428558 726036 +428583 709306 +428597 895381 +428600 1.06268e+06 +428614 1.05872e+06 +428642 782806 +428667 883333 +428667 1.06312e+06 +428667 1.0986e+06 +428686 773358 +428686 912358 +428689 769781 +428692 849031 +428694 856447 +428706 719522 +428708 858650 +428711 973969 +428714 1.12445e+06 +428728 1.00551e+06 +428739 987011 +428744 740469 +428778 885861 +428781 731972 +428786 840639 +428792 752514 +428794 884742 +428806 713278 +428814 882067 +428836 1.24072e+06 +428853 751936 +428853 909233 +428858 878631 +428864 788786 +428903 843514 +428906 785781 +428933 787942 +428933 932150 +428933 951508 +428944 739283 +428950 774350 +428958 928022 +428964 827689 +428986 756406 +429000 735858 +429000 784922 +429000 904308 +429006 786706 +429011 733519 +429022 774200 +429028 736878 +429033 735631 +429039 786925 +429042 722083 +429047 768631 +429047 776117 +429056 745722 +429058 881389 +429061 1.08583e+06 +429072 857919 +429086 765406 +429097 857631 +429106 767969 +429106 878606 +429108 745744 +429114 988489 +429119 777458 +429119 839847 +429125 824869 +429133 857053 +429169 835064 +429169 892178 +429189 767267 +429206 830450 +429208 1.12465e+06 +429261 893844 +429275 836300 +429275 1.2328e+06 +429289 888369 +429294 847986 +429294 852131 +429300 758531 +429303 732431 +429314 746231 +429317 765664 +429336 722786 +429336 853419 +429344 884053 +429347 746139 +429361 1.14405e+06 +429375 708394 +429375 880486 +429378 937931 +429386 737903 +429386 741886 +429386 919500 +429389 1.14712e+06 +429392 754614 +429392 840294 +429406 879958 +429411 856100 +429414 832892 +429442 1.12838e+06 +429461 831239 +429469 764294 +429478 743708 +429511 1.23363e+06 +429522 775906 +429528 925361 +429544 743769 +429550 1.153e+06 +429553 742856 +429558 772211 +429569 944408 +429572 838306 +429575 770578 +429575 916306 +429583 742333 +429597 878614 +429600 784058 +429603 901300 +429614 880125 +429617 771403 +429628 918081 +429639 787381 +429644 825231 +429647 786778 +429653 921994 +429658 788703 +429697 772306 +429708 824250 +429717 904331 +429731 778531 +429742 954972 +429744 741514 +429747 963181 +429764 881083 +429783 779844 +429792 956878 +429814 709483 +429819 841178 +429819 849469 +429825 774092 +429828 763408 +429836 906553 +429853 931917 +429856 839283 +429872 850711 +429875 960103 +429908 895331 +429933 978625 +429956 714553 +429958 849425 +429958 964850 +429978 841767 +429981 781878 +430008 738494 +430014 857681 +430017 847397 +430019 759772 +430022 899903 +430036 890164 +430036 916522 +430044 883767 +430050 980594 +430056 888072 +430058 843717 +430067 743681 +430069 936028 +430072 960581 +430078 842847 +430086 897383 +430106 786378 +430114 750044 +430117 882314 +430125 829281 +430125 836875 +430125 879725 +430125 892897 +430142 884725 +430150 750358 +430156 898953 +430167 880069 +430183 911825 +430203 788806 +430203 1.23292e+06 +430208 784956 +430214 966306 +430247 830778 +430250 1.08379e+06 +430256 749864 +430256 1.02556e+06 +430258 777456 +430281 733817 +430297 760047 +430333 710747 +430344 764483 +430344 766242 +430347 835181 +430361 711839 +430386 788644 +430386 856700 +430389 750708 +430389 879064 +430392 763044 +430431 880789 +430433 748600 +430444 911781 +430450 758669 +430467 770956 +430467 903797 +430472 762389 +430475 762208 +430481 761478 +430483 753789 +430486 765631 +430494 880075 +430514 833189 +430517 911411 +430517 913892 +430519 890756 +430522 929483 +430528 743442 +430581 762078 +430586 741969 +430592 923175 +430606 881064 +430608 884036 +430619 944267 +430622 893339 +430631 838511 +430631 862283 +430639 772336 +430639 859347 +430642 769906 +430650 1.24138e+06 +430653 760789 +430653 764733 +430656 952836 +430658 782700 +430664 926722 +430692 772992 +430700 942328 +430706 921500 +430717 707631 +430719 959042 +430731 894011 +430733 752881 +430736 755986 +430747 731544 +430753 757072 +430761 760011 +430761 887742 +430761 891994 +430769 861969 +430772 781872 +430775 894456 +430794 755397 +430794 757511 +430797 961753 +430797 982928 +430806 882611 +430806 967733 +430814 889117 +430825 756339 +430831 737850 +430831 971603 +430842 768697 +430844 862203 +430847 915681 +430853 779425 +430853 908831 +430858 706975 +430869 956269 +430881 707367 +430883 939900 +430886 843869 +430892 878875 +430906 734992 +430906 775153 +430922 753800 +430925 756517 +430944 790569 +430967 714656 +430972 895042 +430978 761456 +430978 852289 +430978 884022 +430978 938017 +430986 774422 +431000 735822 +431008 747733 +431008 752331 +431025 936017 +431044 742653 +431044 884592 +431047 846919 +431050 883419 +431053 752917 +431058 880694 +431064 762181 +431081 707781 +431086 774878 +431117 883922 +431117 884992 +431128 752714 +431128 946828 +431133 879000 +431144 896556 +431153 761461 +431167 839700 +431183 893794 +431186 836950 +431192 1.24407e+06 +431194 969611 +431200 855600 +431219 752919 +431225 1.23411e+06 +431264 934775 +431292 948989 +431306 714536 +431319 861547 +431331 1.1569e+06 +431333 724444 +431339 709269 +431339 882219 +431344 907053 +431347 761303 +431372 897467 +431378 725103 +431381 755711 +431414 951442 +431428 930042 +431433 771894 +431461 881661 +431464 917644 +431467 883067 +431497 977172 +431500 786969 +431536 932008 +431547 776158 +431564 985411 +431567 834106 +431572 753331 +431575 879017 +431586 763331 +431600 953272 +431606 1.23367e+06 +431608 857100 +431633 879644 +431636 730728 +431661 835244 +431683 890667 +431689 862639 +431703 970811 +431706 786906 +431722 733281 +431725 790361 +431725 1.01732e+06 +431742 879242 +431753 900678 +431767 838928 +431767 897947 +431769 730575 +431769 848464 +431772 1.24186e+06 +431775 837342 +431775 852528 +431789 881172 +431797 718228 +431800 954767 +431806 879006 +431811 958558 +431817 956553 +431819 903244 +431825 992917 +431836 892136 +431836 918639 +431839 889883 +431847 841150 +431850 904431 +431864 778042 +431867 844744 +431886 961333 +431906 1.12344e+06 +431911 960056 +431919 894556 +431947 887289 +431972 766547 +431975 942194 +431978 708742 +431992 785764 +432011 862389 +432053 962947 +432081 715381 +432097 776933 +432122 774303 +432122 829897 +432122 850736 +432136 779394 +432167 1.23341e+06 +432200 783872 +432200 857511 +432206 768153 +432219 717144 +432233 855514 +432239 771864 +432256 750617 +432256 979656 +432264 780269 +432294 831967 +432311 763011 +432322 994300 +432342 862483 +432344 708100 +432358 1.0811e+06 +432361 708208 +432364 879844 +432369 940411 +432375 879786 +432378 770617 +432378 947511 +432381 761411 +432386 724250 +432386 789100 +432397 975775 +432403 758842 +432417 752572 +432444 738328 +432464 781939 +432467 924358 +432472 767239 +432472 790503 +432478 760006 +432489 705997 +432506 895014 +432508 837942 +432547 861097 +432561 862675 +432586 828175 +432617 708658 +432625 936369 +432658 708650 +432669 735850 +432681 825308 +432694 914756 +432708 897219 +432717 769894 +432756 826211 +432789 900436 +432794 962325 +432814 835297 +432842 928108 +432867 761464 +432867 787106 +432869 897239 +432872 932019 +432881 777936 +432917 846075 +432925 850814 +432928 942178 +432947 945114 +432967 879875 +432983 724828 +432992 736356 +433000 736844 +433006 735864 +433008 965925 +433011 1.03825e+06 +433033 917856 +433036 707339 +433044 709761 +433050 888447 +433058 713247 +433058 1.00658e+06 +433072 964317 +433094 736444 +433097 788264 +433103 885181 +433139 895264 +433175 908447 +433178 883789 +433186 983464 +433197 879533 +433211 765792 +433228 764175 +433239 881667 +433247 951497 +433267 783892 +433269 751872 +433269 830803 +433300 785550 +433317 837381 +433336 882861 +433344 757483 +433347 903867 +433361 858108 +433369 833525 +433378 787150 +433381 890153 +433439 960019 +433525 974369 +433542 968917 +433561 1.24204e+06 +433617 704772 +433622 912164 +433636 1.24192e+06 +433639 925539 +433653 721739 +433681 1.24216e+06 +433714 937733 +433719 835833 +433767 723472 +433767 998586 +433789 846597 +433814 921139 +433814 1.12122e+06 +433817 879406 +433839 705453 +433844 890450 +433858 939464 +433864 951481 +433869 988442 +433872 878756 +433897 710656 +433903 894028 +433903 1.23311e+06 +433953 907742 +433956 854678 +433958 727011 +433961 944781 +433975 971361 +433981 764778 +433989 979833 +433992 957517 +433997 885325 +434017 948325 +434056 887050 +434061 761261 +434067 1.24223e+06 +434078 732600 +434081 844750 +434081 850386 +434097 843289 +434100 863486 +434114 1.06279e+06 +434131 1.06249e+06 +434139 719856 +434142 734881 +434147 842306 +434161 955344 +434167 863569 +434194 839508 +434194 935331 +434197 858000 +434203 828297 +434222 951019 +434222 1.23297e+06 +434231 972603 +434253 881833 +434253 984069 +434261 737128 +434269 826714 +434272 961756 +434308 825425 +434314 966969 +434317 880464 +434317 1.03474e+06 +434361 927822 +434392 707747 +434442 716478 +434442 932208 +434464 968356 +434478 892397 +434506 836964 +434514 886311 +434536 964339 +434553 765108 +434556 953206 +434578 888372 +434586 839303 +434594 762292 +434597 898683 +434636 1.1426e+06 +434667 707942 +434667 1.12033e+06 +434675 859419 +434697 1.11966e+06 +434706 879506 +434711 897442 +434717 729778 +434744 897703 +434764 839206 +434800 1.10762e+06 +434836 753369 +434908 854439 +434911 833969 +434919 1.16419e+06 +434925 704539 +434942 885447 +434958 893083 +434967 737767 +434967 912894 +434997 878503 +435008 704433 +435050 940878 +435053 929439 +435061 906681 +435072 863475 +435097 925036 +435169 732367 +435172 703781 +435172 884511 +435181 960181 +435197 1.14314e+06 +435206 917694 +435208 882289 +435236 835433 +435244 846947 +435250 841228 +435264 1.11932e+06 +435267 827353 +435278 714708 +435281 963583 +435325 900025 +435336 946314 +435336 1.0963e+06 +435364 937119 +435378 893000 +435392 890067 +435392 894625 +435408 1.16562e+06 +435422 891072 +435456 1.16812e+06 +435500 967000 +435503 857719 +435517 975072 +435522 879617 +435553 920100 +435556 734042 +435569 908886 +435592 863456 +435611 916358 +435642 1.1908e+06 +435653 927192 +435656 889064 +435669 761281 +435681 835142 +435681 1.00745e+06 +435689 860394 +435697 878233 +435725 932811 +435758 1.24174e+06 +435781 703222 +435825 964675 +435831 753456 +435839 712078 +435864 1.19053e+06 +435911 717372 +435914 884436 +435931 730456 +435944 838889 +435947 732661 +435964 1.11963e+06 +435978 882789 +435978 972903 +435986 1.23282e+06 +436008 831747 +436011 897936 +436033 840697 +436086 863639 +436106 729731 +436122 1.16391e+06 +436153 838419 +436156 842472 +436178 1.16933e+06 +436192 879519 +436200 955961 +436208 949883 +436222 1.16237e+06 +436228 877944 +436231 969422 +436242 725189 +436253 753675 +436275 897708 +436319 1.11773e+06 +436333 887294 +436347 914967 +436350 959325 +436367 1.13299e+06 +436375 941019 +436406 721444 +436414 702414 +436422 722522 +436433 760689 +436442 760864 +436461 1.08211e+06 +436481 933681 +436489 723197 +436522 903439 +436522 944608 +436522 947267 +436528 902233 +436536 834661 +436536 977825 +436542 962125 +436569 908542 +436575 715008 +436583 880069 +436589 1.23318e+06 +436614 702558 +436619 912183 +436631 1.16686e+06 +436647 968106 +436667 929744 +436669 946192 +436703 920831 +436703 935758 +436714 1.16815e+06 +436725 1.11914e+06 +436728 723092 +436728 843806 +436767 1.16911e+06 +436769 703717 +436775 951714 +436794 704447 +436808 1.14363e+06 +436861 885464 +436869 923889 +436936 883608 +436953 716311 +436958 1.1201e+06 +436972 1.14351e+06 +436981 854836 +436983 863639 +436986 954683 +437022 722900 +437022 910131 +437025 1.24096e+06 +437058 925719 +437067 730286 +437069 1.16619e+06 +437072 889900 +437094 980294 +437097 929694 +437100 749747 +437100 829317 +437156 984847 +437175 965025 +437208 919767 +437208 1.11989e+06 +437233 1.11111e+06 +437242 973886 +437292 878106 +437322 834511 +437347 702083 +437353 887811 +437403 928692 +437408 902722 +437419 907792 +437461 937286 +437467 989581 +437467 1.22461e+06 +437486 879769 +437508 877144 +437567 845858 +437569 716886 +437594 913464 +437614 967400 +437622 947069 +437633 915683 +437639 933289 +437667 1.03598e+06 +437678 941656 +437731 884469 +437817 864331 +437853 1.16942e+06 +437861 969272 +437867 754922 +437914 893197 +437950 953200 +437964 702594 +437972 900772 +437978 1.23058e+06 +437981 730881 +438006 701872 +438014 912394 +438019 830008 +438067 917914 +438078 886747 +438083 917528 +438108 993303 +438114 884833 +438194 831808 +438194 847686 +438261 967058 +438261 1.11789e+06 +438264 882461 +438278 944369 +438300 832700 +438306 906214 +438333 726344 +438333 880178 +438339 878200 +438339 1.01509e+06 +438342 704389 +438350 848669 +438419 938317 +438422 888358 +438442 889600 +438447 826514 +438456 921889 +438486 734239 +438500 963983 +438508 891217 +438522 696286 +438536 839650 +438547 1.04204e+06 +438556 924883 +438569 701036 +438600 760058 +438664 951167 +438667 930508 +438706 956000 +438725 961283 +438728 933011 +438731 1.11748e+06 +438736 1.16498e+06 +438750 855100 +438769 1.16994e+06 +438792 901653 +438822 844847 +438836 894933 +438844 912350 +438867 1.11677e+06 +438881 941564 +438883 1.00712e+06 +438906 928475 +438931 909903 +438933 756739 +438939 934936 +438958 753928 +438992 910811 +439006 852581 +439011 858517 +439097 1.00058e+06 +439106 698211 +439125 880356 +439144 699658 +439147 1.13612e+06 +439147 1.16197e+06 +439150 877472 +439181 1.23023e+06 +439186 1.22782e+06 +439225 902714 +439250 726664 +439275 699764 +439289 939558 +439325 1.03575e+06 +439389 949294 +439394 829969 +439411 832714 +439442 908128 +439461 761194 +439500 880842 +439547 862800 +439553 864525 +439583 947944 +439633 912561 +439681 889433 +439700 1.16818e+06 +439706 898167 +439742 756156 +439747 759111 +439781 756097 +439786 905039 +439792 711208 +439808 844864 +439822 1.17237e+06 +439825 968142 +439828 1.24099e+06 +439831 839589 +439844 918692 +439878 957556 +439883 922283 +439925 721294 +439925 1.02241e+06 +439961 700611 +440006 963172 +440011 759667 +440047 940656 +440056 914419 +440061 971136 +440078 760447 +440078 1.16916e+06 +440108 975264 +440125 757947 +440153 731678 +440164 709811 +440169 1.07955e+06 +440192 847994 +440217 924697 +440247 885425 +440261 900739 +440267 1.16962e+06 +440275 917697 +440281 928544 +440289 881628 +440300 927506 +440328 926453 +440394 887442 +440394 1.01665e+06 +440419 890983 +440422 954358 +440444 929975 +440461 829942 +440464 1.23021e+06 +440483 734603 +440486 836958 +440489 1.2335e+06 +440494 965950 +440500 916392 +440508 944181 +440522 1.23086e+06 +440536 711289 +440536 982753 +440547 707133 +440583 1.21314e+06 +440625 916956 +440661 878842 +440669 761306 +440692 927556 +440717 882989 +440717 1.11448e+06 +440747 892878 +440758 885250 +440778 935072 +440783 1.16933e+06 +440789 691822 +440792 985692 +440806 1.03231e+06 +440817 913489 +440839 932258 +440872 697994 +440881 758075 +440886 876575 +440953 693761 +440978 702317 +440978 918167 +440997 1.04628e+06 +441003 702153 +441025 851469 +441036 691094 +441036 1.2313e+06 +441058 942186 +441103 949044 +441108 887125 +441117 703922 +441125 1.03068e+06 +441161 937078 +441197 701081 +441278 763333 +441303 922514 +441306 909981 +441319 917186 +441333 730794 +441372 1.23065e+06 +441403 881639 +441447 878214 +441511 726569 +441511 1.03308e+06 +441522 720378 +441536 879567 +441536 928994 +441539 875692 +441544 757092 +441572 1.08871e+06 +441597 750319 +441636 939992 +441650 921714 +441650 938811 +441661 925347 +441672 732544 +441733 940336 +441742 932461 +441769 725061 +441772 880642 +441839 734361 +441858 884625 +441936 852133 +441969 725025 +441992 756072 +441994 877214 +442014 926461 +442022 884464 +442044 938153 +442097 690653 +442097 951283 +442133 719114 +442139 705453 +442139 894922 +442153 757975 +442189 935678 +442194 1.23204e+06 +442231 954692 +442236 705139 +442272 934444 +442275 918350 +442300 697758 +442303 697672 +442311 952639 +442333 956189 +442333 958719 +442361 964808 +442389 949756 +442392 876411 +442394 760861 +442444 697719 +442444 862961 +442444 863242 +442511 1.16968e+06 +442519 854011 +442528 915014 +442597 888647 +442600 725758 +442611 962872 +442619 884153 +442633 1.0495e+06 +442658 883142 +442694 835147 +442722 883389 +442722 929853 +442728 1.21173e+06 +442731 925447 +442742 1.23169e+06 +442761 941872 +442764 842386 +442781 724269 +442781 882719 +442783 961344 +442794 739803 +442794 834903 +442797 683256 +442800 883183 +442842 966853 +442858 697914 +442911 1.05502e+06 +442911 1.21548e+06 +442925 939647 +442942 926689 +442944 912350 +442947 908514 +442950 932686 +442972 947239 +443044 927903 +443050 699775 +443061 717706 +443106 697800 +443114 967981 +443125 899042 +443125 944603 +443147 847647 +443200 919147 +443214 889336 +443236 969261 +443244 752514 +443256 938375 +443258 881628 +443294 741317 +443347 886381 +443353 852150 +443358 759181 +443367 754633 +443378 727567 +443478 878272 +443483 1.06698e+06 +443508 898653 +443514 1.17266e+06 +443522 1.03765e+06 +443536 1.00373e+06 +443569 914203 +443581 890858 +443633 982139 +443636 862050 +443636 973769 +443644 971328 +443675 913164 +443683 1.00351e+06 +443731 716106 +443767 1.03729e+06 +443800 1.08038e+06 +443836 898172 +443839 920328 +443842 1.23109e+06 +443875 682044 +443875 975500 +443878 711736 +443894 937300 +443897 1.18949e+06 +443928 887397 +443936 1.22984e+06 +443978 1.22735e+06 +444006 926236 +444019 952556 +444053 729933 +444064 1.04375e+06 +444078 740875 +444097 1.03509e+06 +444108 833322 +444108 853989 +444161 1.18952e+06 +444169 949253 +444178 1.19112e+06 +444203 833308 +444214 841167 +444239 897803 +444258 690069 +444269 1.24068e+06 +444389 935811 +444392 901244 +444411 921478 +444447 885789 +444467 943950 +444469 957881 +444489 880603 +444494 922667 +444508 892847 +444511 908411 +444564 895439 +444583 689247 +444583 875031 +444583 931614 +444611 1.03638e+06 +444633 962469 +444633 1.18709e+06 +444644 889197 +444653 726850 +444669 731714 +444686 711856 +444753 701886 +444758 732125 +444775 884506 +444803 934283 +444814 702000 +444822 899639 +444889 715697 +444892 1.08056e+06 +444906 731114 +444908 1.03859e+06 +444914 731861 +444936 895586 +444983 845919 +445047 723686 +445047 1.14231e+06 +445050 734806 +445069 929053 +445072 964239 +445081 891306 +445150 883303 +445164 1.16041e+06 +445183 989881 +445192 880197 +445194 895458 +445214 994411 +445236 895744 +445258 1.21212e+06 +445264 1.09056e+06 +445283 939075 +445292 947206 +445328 675989 +445336 720036 +445339 704564 +445339 945261 +445367 1.22906e+06 +445386 877039 +445394 951167 +445403 697225 +445403 1.23366e+06 +445431 943661 +445433 684200 +445433 935758 +445469 696217 +445497 913925 +445514 949842 +445519 696322 +445531 942203 +445536 705514 +445600 905961 +445608 705458 +445617 725989 +445625 925336 +445647 1.23261e+06 +445678 916708 +445722 912272 +445736 687961 +445747 969019 +445758 914700 +445856 924503 +445883 695992 +445908 897672 +445928 702286 +445956 751694 +445986 715117 +446003 909628 +446083 940803 +446089 874325 +446089 956739 +446181 754075 +446194 862264 +446206 887622 +446217 1.23937e+06 +446228 937683 +446264 919656 +446269 900075 +446278 893086 +446292 921922 +446336 862344 +446336 1.21128e+06 +446356 726808 +446367 1.23105e+06 +446369 1.24052e+06 +446378 688456 +446378 695036 +446397 731108 +446403 931433 +446497 932425 +446531 1.23101e+06 +446564 832947 +446614 847147 +446622 1.11103e+06 +446689 901717 +446697 749817 +446706 701517 +446714 1.03852e+06 +446722 882425 +446803 911197 +446811 1.2306e+06 +446931 735625 +446942 754867 +446994 734533 +447050 1.22848e+06 +447081 1.00059e+06 +447089 962761 +447131 697911 +447133 934225 +447147 1.0342e+06 +447150 674619 +447197 1.23009e+06 +447214 737242 +447219 1.23919e+06 +447228 970297 +447300 1.16437e+06 +447319 932175 +447319 943500 +447322 924872 +447342 851758 +447369 904958 +447372 946167 +447394 931256 +447403 884447 +447408 890631 +447433 928522 +447439 947153 +447444 688375 +447458 966806 +447481 721767 +447489 928019 +447514 749947 +447539 1.08757e+06 +447542 1.22477e+06 +447578 902967 +447631 856206 +447636 912769 +447636 936256 +447650 697197 +447675 948953 +447678 932775 +447681 939272 +447692 941514 +447717 937811 +447747 1.22614e+06 +447764 949894 +447783 1.17828e+06 +447811 921458 +447822 886089 +447825 693839 +447828 939133 +447869 953514 +447892 952114 +447894 936019 +447906 958083 +447919 950969 +447931 897031 +447964 1.08506e+06 +447967 687619 +447972 1.06956e+06 +447975 698803 +447981 935267 +448008 749914 +448008 1.22793e+06 +448011 687783 +448011 900792 +448047 914431 +448086 1.24062e+06 +448100 955453 +448114 914983 +448117 722036 +448125 920714 +448147 718808 +448272 891694 +448278 929436 +448297 1.22793e+06 +448303 745139 +448342 873769 +448353 692744 +448375 1.08389e+06 +448386 687058 +448408 932981 +448411 1.2287e+06 +448433 1.22952e+06 +448481 930425 +448486 742953 +448486 1.23233e+06 +448508 937867 +448514 1.23186e+06 +448531 887881 +448547 934706 +448586 936614 +448614 926236 +448622 935306 +448644 752044 +448664 930003 +448664 1.23435e+06 +448731 916908 +448739 881428 +448753 1.07262e+06 +448756 919192 +448758 985183 +448778 977328 +448831 686725 +448833 694481 +448833 932828 +448836 931381 +448839 940414 +448872 878644 +448872 896200 +448878 943694 +448897 933497 +448900 883072 +448944 714964 +448956 854164 +448994 971147 +449008 935889 +449022 850608 +449028 927833 +449033 935661 +449033 941953 +449061 669906 +449069 728069 +449086 935928 +449089 1.07163e+06 +449097 896044 +449100 903156 +449111 1.16098e+06 +449133 935031 +449150 935531 +449181 731247 +449194 1.23316e+06 +449250 934625 +449264 913008 +449272 899633 +449281 748922 +449297 935222 +449328 960542 +449339 951872 +449342 686458 +449353 936319 +449361 946964 +449364 722056 +449367 936658 +449369 913928 +449397 935764 +449425 957233 +449431 1.23034e+06 +449461 686444 +449481 911506 +449508 929764 +449511 880467 +449519 910347 +449531 922911 +449531 929950 +449550 953661 +449564 905975 +449564 927656 +449583 1.24017e+06 +449592 896300 +449600 909369 +449611 907997 +449633 735878 +449636 938469 +449639 940472 +449667 923742 +449694 935139 +449714 936042 +449714 1.16283e+06 +449747 927567 +449767 856506 +449789 924356 +449800 932636 +449803 852111 +449808 888308 +449839 925558 +449861 1.22982e+06 +449864 734469 +449867 935714 +449903 1.23025e+06 +449917 931661 +449931 927567 +449939 733653 +449944 724003 +449958 928792 +449969 726717 +449975 917269 +449983 1.20215e+06 +449986 932056 +449992 883719 +450031 903356 +450050 720994 +450053 1.22782e+06 +450061 931564 +450072 936556 +450097 933489 +450097 961956 +450106 934553 +450117 999553 +450158 952383 +450214 927808 +450231 1.02036e+06 +450239 692903 +450269 930875 +450275 846747 +450314 927928 +450322 933383 +450328 933600 +450331 900739 +450350 991236 +450381 933864 +450408 932628 +450419 937889 +450436 920408 +450475 1.01601e+06 +450503 931564 +450533 932472 +450542 929564 +450544 877492 +450564 928058 +450575 930736 +450586 698828 +450586 921722 +450608 940731 +450617 834328 +450650 880342 +450650 939108 +450656 932017 +450681 1.22799e+06 +450697 929514 +450700 852644 +450725 934556 +450758 941897 +450761 933325 +450789 1.23485e+06 +450792 931469 +450817 943067 +450847 930097 +450861 932631 +450883 937342 +450900 929722 +450942 933561 +450953 935472 +450994 1.23394e+06 +451000 876306 +451003 914886 +451028 930789 +451050 932083 +451078 876142 +451078 932378 +451083 1.22896e+06 +451158 1.23206e+06 +451194 934022 +451200 932875 +451219 950431 +451231 925364 +451244 926733 +451272 945278 +451314 856167 +451386 903400 +451389 947778 +451403 891522 +451428 846603 +451439 1.22854e+06 +451475 1.22576e+06 +451486 931514 +451506 946828 +451558 936661 +451569 674053 +451581 851242 +451600 929931 +451603 930886 +451608 932347 +451672 911492 +451689 693850 +451719 938744 +451758 1.13895e+06 +451806 896833 +451825 1.22807e+06 +451833 692275 +451858 1.09246e+06 +451872 871208 +451889 672792 +451889 933972 +451931 953203 +451969 960194 +451978 933869 +452086 1.17864e+06 +452103 1.23198e+06 +452164 1.12637e+06 +452167 850139 +452192 966353 +452208 1.23075e+06 +452292 940017 +452311 1.22755e+06 +452325 880075 +452331 949397 +452333 932911 +452344 1.20184e+06 +452378 936542 +452386 686642 +452436 997767 +452439 935147 +452444 1.23114e+06 +452519 922711 +452536 689864 +452628 941242 +452631 1.22691e+06 +452661 932342 +452783 1.2301e+06 +452789 929850 +452897 1.22332e+06 +452917 964625 +452944 1.23175e+06 +452958 1.08913e+06 +453000 1.22772e+06 +453003 1.22972e+06 +453011 949439 +453039 935669 +453047 964444 +453056 937939 +453069 923619 +453142 916508 +453144 1.07362e+06 +453150 955997 +453153 944083 +453175 902083 +453181 852583 +453194 932022 +453206 927047 +453247 1.18087e+06 +453261 945458 +453319 973047 +453322 975197 +453325 937458 +453364 929969 +453417 1.23186e+06 +453489 1.11729e+06 +453533 1.19557e+06 +453544 1.17229e+06 +453561 926333 +453567 1.22839e+06 +453575 842239 +453575 1.22606e+06 +453622 685056 +453658 1.22611e+06 +453708 879522 +453733 849553 +453736 928897 +453806 947117 +453808 1.22594e+06 +453842 1.22763e+06 +453894 928478 +453933 938767 +453944 921422 +453975 1.2226e+06 +453981 929872 +454014 918489 +454019 926522 +454022 1.22752e+06 +454086 917439 +454086 968575 +454153 876075 +454169 920328 +454208 1.22669e+06 +454214 838183 +454222 1.16314e+06 +454264 1.17278e+06 +454314 1.2277e+06 +454317 849919 +454439 1.05407e+06 +454442 847867 +454444 990289 +454464 1.22638e+06 +454467 1.22758e+06 +454469 1.22529e+06 +454475 980983 +454514 925539 +454522 924544 +454531 996536 +454533 1.21129e+06 +454542 945181 +454556 1.12196e+06 +454558 944286 +454564 1.23843e+06 +454569 912731 +454594 695911 +454603 964333 +454631 911039 +454647 984861 +454686 1.22608e+06 +454711 897297 +454719 943406 +454833 1.18829e+06 +454836 1.22754e+06 +454853 929617 +454853 1.0897e+06 +454872 1.22802e+06 +454903 932475 +454944 1.22866e+06 +454975 957964 +454983 1.2243e+06 +454989 1.22763e+06 +455011 951242 +455042 1.22536e+06 +455050 1.22797e+06 +455061 917381 +455064 1.00032e+06 +455114 929800 +455200 1.23059e+06 +455200 1.23109e+06 +455228 1.23888e+06 +455231 1.22989e+06 +455236 1.22675e+06 +455261 925083 +455322 920192 +455344 1.22418e+06 +455372 1.00428e+06 +455394 1.22386e+06 +455461 902864 +455528 847839 +455572 942239 +455597 1.22559e+06 +455650 1.17916e+06 +455692 964342 +455700 935814 +455703 1.17527e+06 +455717 961731 +455719 889028 +455728 932242 +455761 924825 +455828 1.22352e+06 +455861 959136 +455864 929744 +455872 1.22398e+06 +455919 941658 +455953 968331 +455972 1.22992e+06 +456092 944514 +456136 1.23942e+06 +456144 955308 +456217 942067 +456275 685750 +456300 945697 +456367 894119 +456367 1.09251e+06 +456389 1.2266e+06 +456469 844744 +456503 953894 +456572 687103 +456592 924669 +456625 1.1056e+06 +456628 946897 +456647 939094 +456647 970494 +456667 1.2256e+06 +456692 1.08771e+06 +456700 1.21889e+06 +456717 1.22662e+06 +456722 1.18788e+06 +456747 948072 +456797 1.11038e+06 +456856 929653 +456967 904003 +457056 1.2152e+06 +457150 1.21463e+06 +457169 1.202e+06 +457228 931706 +457228 989406 +457278 1.21485e+06 +457311 944697 +457325 1.07611e+06 +457375 949522 +457394 919253 +457425 1.19194e+06 +457453 870644 +457544 1.22876e+06 +457558 936542 +457575 929622 +457694 996192 +457714 879947 +457761 1.11176e+06 +457764 926825 +457806 1.19216e+06 +457811 1.22532e+06 +457833 1.085e+06 +457839 847278 +457858 923808 +457869 879036 +457917 977506 +457950 880719 +458044 964989 +458086 961431 +458119 1.18489e+06 +458139 1.18424e+06 +458144 1.0081e+06 +458153 1.22741e+06 +458203 880658 +458208 1.20821e+06 +458225 918892 +458261 929683 +458294 957917 +458300 942933 +458347 1.00069e+06 +458350 1.09955e+06 +458400 1.19699e+06 +458406 1.19288e+06 +458406 1.22841e+06 +458528 870217 +458567 1.11332e+06 +458589 1.23192e+06 +458661 1.22405e+06 +458669 951519 +458708 1.12097e+06 +458769 932936 +458775 923672 +458842 1.06623e+06 +458853 953772 +458889 1.04552e+06 +458903 1.22806e+06 +458919 1.2396e+06 +458958 1.1949e+06 +459047 1.22743e+06 +459172 892442 +459175 1.19341e+06 +459267 1.16121e+06 +459344 904414 +459408 1.02159e+06 +459578 862461 +459747 948653 +459764 943622 +459817 941044 +459933 1.23921e+06 +459942 959764 +459964 684467 +460014 1.02636e+06 +460028 985267 +460042 956825 +460086 1.22843e+06 +460114 929442 +460131 914844 +460228 1.14177e+06 +460244 1.2391e+06 +460314 993786 +460342 1.12535e+06 +460494 1.18387e+06 +460522 1.18402e+06 +460642 886314 +460647 1.18342e+06 +460697 969014 +460706 936675 +460756 971514 +460811 886269 +460858 948656 +460892 1.22935e+06 +460911 945033 +460922 1.00629e+06 +460928 886422 +460981 883339 +460994 918247 +461014 1.23206e+06 +461078 976361 +461261 678408 +461303 949483 +461311 928672 +461336 1.00161e+06 +461381 934706 +461383 1.22937e+06 +461386 980900 +461450 1.15977e+06 +461469 1.22907e+06 +461531 953286 +461644 1.2294e+06 +461650 950389 +461653 1.23922e+06 +461831 1.03394e+06 +461875 1.22904e+06 +461881 1.2383e+06 +462003 1.2395e+06 +462033 1.23382e+06 +462069 1.19768e+06 +462114 1.19136e+06 +462150 1.19996e+06 +462258 976622 +462272 1.16028e+06 +462286 1.19099e+06 +462350 1.1624e+06 +462367 1.1212e+06 +462414 1.16466e+06 +462469 1.14159e+06 +462511 1.19901e+06 +462592 974558 +462633 1.19487e+06 +462636 965878 +462653 966056 +462664 1.06677e+06 +462667 950625 +462667 971319 +462667 1.00232e+06 +462706 1.18152e+06 +462753 1.22906e+06 +462806 957133 +462811 874408 +462831 960772 +462858 1.19283e+06 +463011 989542 +463044 1.1936e+06 +463192 1.1152e+06 +463217 954450 +463256 906608 +463322 1.13293e+06 +463394 1.17047e+06 +463422 1.20186e+06 +463433 942864 +463525 1.24053e+06 +463533 918222 +463550 855094 +463556 947919 +463572 982942 +463581 942006 +463592 987153 +463669 1.04284e+06 +463725 1.02327e+06 +463761 1.15937e+06 +463775 1.20308e+06 +463958 1.12729e+06 +463983 950144 +464022 1.20261e+06 +464039 1.01846e+06 +464050 1.16804e+06 +464081 943556 +464083 1.0584e+06 +464111 866478 +464164 1.17044e+06 +464167 1.17017e+06 +464281 902458 +464356 1.09834e+06 +464400 1.22846e+06 +464417 976808 +464425 951358 +464453 1.08541e+06 +464478 1.20419e+06 +464497 901864 +464542 927617 +464547 901708 +464736 938986 +464750 1.17602e+06 +464753 899397 +464775 939775 +464794 1.16254e+06 +464814 900528 +464822 939575 +464856 943603 +464886 876675 +464911 1.15798e+06 +464914 1.22937e+06 +464947 873542 +464992 876117 +465083 997708 +465100 1.14092e+06 +465150 916997 +465181 953758 +465206 942883 +465331 937100 +465392 1.02868e+06 +465436 873953 +465483 1.10901e+06 +465508 1.16924e+06 +465539 1.20382e+06 +465567 874372 +465575 1.20474e+06 +465586 1.22274e+06 +465622 921472 +465706 1.23296e+06 +465708 960828 +465747 1.22907e+06 +465789 1.16705e+06 +465839 917989 +465897 1.11915e+06 +465925 908836 +465928 1.12035e+06 +465944 955722 +466022 1.20505e+06 +466031 943092 +466064 1.20439e+06 +466181 1.20552e+06 +466231 976011 +466300 950886 +466486 970167 +466522 964194 +466542 1.20529e+06 +466622 1.22963e+06 +466636 1.1886e+06 +466639 924247 +466733 908947 +466811 680164 +466867 1.23732e+06 +467022 1.20754e+06 +467067 924281 +467164 1.22953e+06 +467181 944039 +467208 921039 +467217 924592 +467281 957006 +467311 939578 +467311 1.20698e+06 +467314 1.17179e+06 +467325 1.16999e+06 +467353 1.22988e+06 +467369 1.16769e+06 +467472 922253 +467539 895839 +467539 950978 +467567 884528 +467589 1.1408e+06 +467722 678344 +467786 884889 +467833 921064 +467900 681581 +467911 1.17249e+06 +467931 1.05312e+06 +467992 1.22869e+06 +467994 1.16555e+06 +468083 1.00783e+06 +468108 908181 +468150 1.01829e+06 +468172 958450 +468261 1.19174e+06 +468267 1.00889e+06 +468406 1.23231e+06 +468450 1.01411e+06 +468547 999156 +468569 1.22852e+06 +468606 680125 +468633 1.14048e+06 +468675 1.22265e+06 +468708 1.13944e+06 +468711 893139 +468722 1.13993e+06 +468739 967672 +468750 969000 +468753 965786 +468767 967031 +468772 967894 +468792 1.02789e+06 +468803 1.17363e+06 +468808 963164 +468839 1.02315e+06 +468853 1.03199e+06 +468864 960942 +468883 1.22687e+06 +468903 1.24103e+06 +468939 992994 +469006 972108 +469006 1.02045e+06 +469011 1.19629e+06 +469086 678264 +469103 1.17075e+06 +469106 987081 +469181 1.04004e+06 +469217 1.16897e+06 +469222 950583 +469233 980028 +469292 929194 +469422 1.22605e+06 +469556 1.23772e+06 +469631 1.24164e+06 +469678 1.19039e+06 +469722 1.18614e+06 +469736 1.23691e+06 +469811 1.23888e+06 +469814 1.23601e+06 +469833 1.20416e+06 +469850 1.04188e+06 +469933 935983 +469967 1.20547e+06 +470036 1.23408e+06 +470075 1.22908e+06 +470081 1.1714e+06 +470228 916706 +470344 1.22822e+06 +470381 1.22899e+06 +470533 1.23264e+06 +470625 1.09428e+06 +470700 886431 +470789 962586 +470969 1.2263e+06 +470981 1.22203e+06 +471014 945869 +471042 1.22433e+06 +471053 1.04712e+06 +471164 1.01299e+06 +471219 885689 +471269 885808 +471275 1.18379e+06 +471303 1.19277e+06 +471536 1.10218e+06 +471556 1.22433e+06 +471572 679358 +471586 1.00783e+06 +471633 1.22026e+06 +471700 1.22601e+06 +471733 884292 +471772 1.22185e+06 +471911 1.22289e+06 +471917 1.14891e+06 +471942 884072 +471956 1.20938e+06 +472033 1.22239e+06 +472044 1.2199e+06 +472156 1.23096e+06 +472233 1.17071e+06 +472236 1.20992e+06 +472283 934889 +472344 1.19851e+06 +472358 1.22549e+06 +472361 1.17369e+06 +472372 935300 +472375 884431 +472394 1.22356e+06 +472397 1.22515e+06 +472467 884539 +472483 1.22312e+06 +472531 1.22443e+06 +472586 685900 +472603 962586 +472633 1.01778e+06 +472647 1.22249e+06 +472711 1.117e+06 +472792 1.22251e+06 +472864 1.01922e+06 +472889 934275 +472892 1.01029e+06 +472944 912572 +472944 1.01622e+06 +472956 934186 +472994 1.22507e+06 +472997 965150 +473075 1.22227e+06 +473089 1.22002e+06 +473153 959683 +473178 1.19552e+06 +473206 932983 +473211 1.01381e+06 +473294 1.22579e+06 +473331 937925 +473333 1.1869e+06 +473353 1.16888e+06 +473458 1.05592e+06 +473517 968283 +473719 1.02754e+06 +473794 946039 +473803 931681 +473811 1.22234e+06 +473853 1.17171e+06 +473861 1.10925e+06 +473894 1.19489e+06 +473997 930722 +474019 1.22323e+06 +474039 970617 +474158 1.20292e+06 +474236 1.20309e+06 +474364 1.22339e+06 +474444 981236 +474497 991258 +474564 1.01137e+06 +474603 1.14882e+06 +474625 925397 +474703 1.15801e+06 +474706 1.22346e+06 +474736 948800 +474742 1.15927e+06 +474742 1.2226e+06 +474811 1.18253e+06 +474831 1.22216e+06 +474844 1.22293e+06 +474858 1.00443e+06 +474875 1.17575e+06 +474889 924647 +474892 928836 +474936 927778 +474958 1.21786e+06 +474981 973242 +474983 973700 +475000 1.113e+06 +475061 1.15998e+06 +475142 978356 +475197 921383 +475200 1.0089e+06 +475217 953981 +475225 1.20469e+06 +475233 925364 +475236 1.22623e+06 +475289 1.14101e+06 +475289 1.21824e+06 +475300 922369 +475303 1.22031e+06 +475325 926233 +475331 923400 +475361 962800 +475383 1.16118e+06 +475406 1.22635e+06 +475411 1.22175e+06 +475428 1.16181e+06 +475536 1.22663e+06 +475606 1.11545e+06 +475669 1.22157e+06 +475675 1.22631e+06 +475708 1.22221e+06 +475731 1.17681e+06 +475764 957511 +475831 1.22707e+06 +475850 1.22598e+06 +475964 1.2066e+06 +475972 1.15343e+06 +476000 1.22692e+06 +476064 1.22331e+06 +476092 1.14668e+06 +476092 1.22654e+06 +476106 1.22199e+06 +476114 1.19291e+06 +476147 1.11979e+06 +476211 1.22226e+06 +476225 1.22067e+06 +476247 1.2252e+06 +476319 1.22217e+06 +476369 958861 +476397 974531 +476447 1.17592e+06 +476464 1.22216e+06 +476472 1.2007e+06 +476481 1.21913e+06 +476483 1.17091e+06 +476492 996289 +476522 1.01415e+06 +476542 1.18149e+06 +476569 1.17195e+06 +476569 1.17282e+06 +476575 1.17239e+06 +476589 1.17425e+06 +476675 960097 +476742 1.2212e+06 +476778 1.16779e+06 +476800 991375 +476814 1.17282e+06 +476817 1.22208e+06 +476919 954308 +476936 1.14162e+06 +477033 1.22206e+06 +477086 919444 +477167 1.04156e+06 +477181 1.16951e+06 +477297 1.16769e+06 +477314 1.22551e+06 +477331 945483 +477342 975664 +477361 1.22645e+06 +477425 1.21984e+06 +477506 903342 +477569 1.2228e+06 +477575 1.22243e+06 +477589 1.18704e+06 +477600 1.22204e+06 +477614 1.22345e+06 +477639 981769 +477661 1.16786e+06 +477697 999350 +477736 971094 +477742 966078 +477847 1.22273e+06 +477883 1.22308e+06 +477964 1.22382e+06 +478022 1.03283e+06 +478056 922744 +478108 1.22376e+06 +478125 1.16896e+06 +478139 1.12679e+06 +478200 1.10672e+06 +478211 1.22314e+06 +478222 1.22281e+06 +478392 958542 +478411 1.20015e+06 +478525 926894 +478556 1.2197e+06 +478564 1.04044e+06 +478569 1.21696e+06 +478628 1.21815e+06 +478822 962739 +479033 918669 +479067 976264 +479131 1.22097e+06 +479189 973647 +479253 970325 +479300 970242 +479325 1.19037e+06 +479417 1.19002e+06 +479447 1.22303e+06 +479506 1.24384e+06 +479533 1.02134e+06 +479625 995297 +479656 1.18975e+06 +479664 1.16868e+06 +479772 1.02496e+06 +479792 1.22201e+06 +480083 1.1967e+06 +480403 1.22405e+06 +480428 983358 +480511 1.19902e+06 +480519 1.22176e+06 +480561 1.00929e+06 +480633 1.14072e+06 +480797 1.23101e+06 +480842 1.21968e+06 +480906 1.0564e+06 +480961 1.19779e+06 +480981 1.09048e+06 +481128 988647 +481131 1.05198e+06 +481172 1.22759e+06 +481183 1.23429e+06 +481192 961808 +481333 1.03633e+06 +481444 1.04516e+06 +481703 1.11945e+06 +481786 1.10111e+06 +481808 1.17036e+06 +481958 1.14312e+06 +481967 967725 +481969 1.06636e+06 +481989 1.22124e+06 +482200 1.22685e+06 +482258 1.14275e+06 +482325 1.01296e+06 +482364 1.01133e+06 +482414 1.22369e+06 +482556 1.216e+06 +482753 1.01428e+06 +482764 1.17714e+06 +482767 1.16552e+06 +482889 994372 +482917 973711 +482933 1.22642e+06 +483078 1.12249e+06 +483172 1.0239e+06 +483328 968206 +483444 1.03165e+06 +483458 1.00405e+06 +483597 1.07874e+06 +483614 1.19582e+06 +483636 1.20121e+06 +483689 999958 +483725 1.14181e+06 +483883 1.15555e+06 +483925 1.22494e+06 +483972 1.02938e+06 +483986 977408 +483989 935556 +484111 1.14337e+06 +484111 1.19526e+06 +484122 974103 +484214 1.22333e+06 +484500 968722 +484633 1.15889e+06 +484758 1.22324e+06 +484867 992094 +485039 1.22236e+06 +485053 1.11856e+06 +485106 1.10967e+06 +485128 1.22611e+06 +485333 1.08783e+06 +485344 1.23016e+06 +485394 1.21745e+06 +485467 1.17904e+06 +485500 1.09683e+06 +485569 1.13012e+06 +485711 971775 +485775 965203 +485867 933989 +485900 1.09231e+06 +486011 934108 +486108 1.18055e+06 +486331 1.12325e+06 +486483 1.18737e+06 +486608 998411 +486747 1.02082e+06 +486914 1.16315e+06 +487006 961814 +487053 1.19438e+06 +487125 945997 +487411 1.17416e+06 +487458 1.22401e+06 +487597 1.22487e+06 +487600 983678 +487633 1.01513e+06 +487744 969461 +487747 1.04562e+06 +487925 1.0542e+06 +487939 976219 +488031 1.02246e+06 +488131 1.00061e+06 +488272 1.00445e+06 +488392 997444 +488461 957625 +488467 1.2259e+06 +488578 996175 +488800 1.15052e+06 +489053 953142 +489094 1.0102e+06 +489142 1.03294e+06 +489203 1.22341e+06 +489233 979178 +489392 1.19434e+06 +489467 1.22451e+06 +489664 972433 +489939 1.22746e+06 +490000 1.22264e+06 diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/Makefile.am new file mode 100644 index 000000000..319cac57b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/Makefile.am @@ -0,0 +1,31 @@ +INCLUDES = -I ${EO_DIR}/src/ -I ../../../../src/ + + +AM_CXXFLAGS =\ + -Wall\ + -Werror\ + -Wno-deprecated\ + -ansi\ + -pedantic + +lib_LIBRARIES = libtsp.a + +libtsp_a_SOURCES =\ + graph.cpp\ + route_init.cpp\ + route_eval.cpp\ + part_route_eval.cpp\ + edge_xover.cpp\ + order_xover.cpp\ + route_valid.cpp\ + partial_mapped_xover.cpp\ + city_swap.cpp\ + two_opt.cpp\ + two_opt_init.cpp\ + two_opt_next.cpp\ + two_opt_incr_eval.cpp\ + two_opt_tabu_list.cpp\ + two_opt_rand.cpp + + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/city_swap.cpp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/city_swap.cpp new file mode 100644 index 000000000..567f53fb6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/city_swap.cpp @@ -0,0 +1,24 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "city_swap.cpp" + +// (c) OPAC Team, LIFL, 2002-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "city_swap.h" + +bool CitySwap :: operator () (Route & __route) { + + std :: swap (__route [rng.random (__route.size ())], + __route [rng.random (__route.size ())]) ; + + __route.invalidate () ; + + return true ; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/city_swap.h b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/city_swap.h new file mode 100644 index 000000000..784324e1f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/city_swap.h @@ -0,0 +1,29 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "city_swap.h" + +// (c) OPAC Team, LIFL, 2002-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef city_swap_h +#define city_swap_h + +#include + +#include "route.h" + +/** Its swaps two vertices + randomly choosen */ +class CitySwap : public eoMonOp { + +public : + + bool operator () (Route & __route) ; + +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/edge_xover.cpp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/edge_xover.cpp new file mode 100644 index 000000000..5107ba098 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/edge_xover.cpp @@ -0,0 +1,126 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "edge_xover.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include + +#include "edge_xover.h" +#include "route_valid.h" + +#define MAXINT 1000000 + +void EdgeXover :: build_map (const Route & __par1, const Route & __par2) { + + unsigned len = __par1.size () ; + + /* Initialization */ + _map.clear () ; + _map.resize (len) ; + + for (unsigned i = 0 ; i < len ; i ++) { + _map [__par1 [i]].insert (__par1 [(i + 1) % len]) ; + _map [__par2 [i]].insert (__par2 [(i + 1) % len]) ; + _map [__par1 [i]].insert (__par1 [(i - 1 + len) % len]) ; + _map [__par2 [i]].insert (__par2 [(i - 1 + len) % len]) ; + } + + visited.clear () ; + visited.resize (len, false) ; +} + +void EdgeXover :: remove_entry (unsigned __vertex, std :: vector > & __map) { + + std :: set & neigh = __map [__vertex] ; + + for (std :: set :: iterator it = neigh.begin () ; + it != neigh.end () ; + it ++) + __map [* it].erase (__vertex) ; + +} + +void EdgeXover :: add_vertex (unsigned __vertex, Route & __child) { + + visited [__vertex] = true ; + __child.push_back (__vertex) ; + remove_entry (__vertex, _map) ; /* Removing entries */ +} + +void EdgeXover :: cross (const Route & __par1, const Route & __par2, Route & __child) { + + build_map (__par1, __par2) ; + + unsigned len = __par1.size () ; + + /* Go ! */ + __child.clear () ; + + unsigned cur_vertex = rng.random (len) ; + + add_vertex (cur_vertex, __child) ; + + for (unsigned i = 1 ; i < len ; i ++) { + + unsigned len_min_entry = MAXINT ; + + std :: set & neigh = _map [cur_vertex] ; + + for (std :: set :: iterator it = neigh.begin () ; + it != neigh.end () ; + it ++) { + unsigned l = _map [* it].size () ; + if (len_min_entry > l) + len_min_entry = l ; + } + + std :: vector cand ; /* Candidates */ + + for (std :: set :: iterator it = neigh.begin () ; + it != neigh.end () ; + it ++) { + unsigned l = _map [* it].size () ; + if (len_min_entry == l) + cand.push_back (* it) ; + } + + if (! cand.size ()) { + + /* Oh no ! Implicit mutation */ + for (unsigned j = 0 ; j < len ; j ++) + if (! visited [j]) + cand.push_back (j) ; + } + + cur_vertex = cand [rng.random (cand.size ())] ; + + add_vertex (cur_vertex, __child) ; + } +} + +bool EdgeXover :: operator () (Route & __route1, Route & __route2) { + + // Init. copy + Route par [2] ; + par [0] = __route1 ; + par [1] = __route2 ; + + cross (par [0], par [1], __route1) ; + cross (par [1], par [0], __route2) ; + + assert (valid (__route1)) ; + assert (valid (__route2)) ; + + __route1.invalidate () ; + __route2.invalidate () ; + + return true ; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/edge_xover.h b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/edge_xover.h new file mode 100644 index 000000000..0fd20544b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/edge_xover.h @@ -0,0 +1,46 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "edge_xover.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef edge_xover_h +#define edge_xover_h + +#include +#include + +#include + +#include "route.h" + +/** Edge Crossover */ +class EdgeXover : public eoQuadOp { + +public : + + bool operator () (Route & __route1, Route & __route2) ; + +private : + + void cross (const Route & __par1, const Route & __par2, Route & __child) ; /* Binary */ + + void remove_entry (unsigned __vertex, std :: vector > & __map) ; + /* Updating the map of entries */ + + void build_map (const Route & __par1, const Route & __par2) ; + + void add_vertex (unsigned __vertex, Route & __child) ; + + std :: vector > _map ; /* The handled map */ + + std :: vector visited ; /* Vertices that are already visited */ + +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/graph.cpp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/graph.cpp new file mode 100644 index 000000000..e73a8d670 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/graph.cpp @@ -0,0 +1,80 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "graph.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include +#include + +#include "graph.h" + +namespace Graph { + + static std :: vector > vectCoord ; // Coordinates + + static std :: vector > dist ; // Distances Mat. + + unsigned size () { + + return dist.size () ; + } + + void computeDistances () { + + // Dim. + unsigned numCities = vectCoord.size () ; + dist.resize (numCities) ; + for (unsigned i = 0 ; i < dist.size () ; i ++) + dist [i].resize (numCities) ; + + // Computations. + for (unsigned i = 0 ; i < dist.size () ; i ++) + for (unsigned j = i + 1 ; j < dist.size () ; j ++) { + double distX = vectCoord [i].first - vectCoord [j].first ; + double distY = vectCoord [i].second - vectCoord [j].second ; + dist [i] [j] = dist [j] [i] = (unsigned) (sqrt ((float) (distX * distX + distY * distY)) + 0.5) ; + } + } + + void load (const char * __fileName) { + + std :: ifstream f (__fileName) ; + + std :: cout << ">> Loading [" << __fileName << "]" << std :: endl ; + + if (f) { + + unsigned num_vert ; + + f >> num_vert ; + vectCoord.resize (num_vert) ; + + for (unsigned i = 0 ; i < num_vert ; i ++) + f >> vectCoord [i].first >> vectCoord [i].second ; + + f.close () ; + + computeDistances () ; + } + else { + + std :: cout << __fileName << " doesn't exist !!!" << std :: endl ; + // Bye !!! + exit (1) ; + } + } + + float distance (unsigned __from, unsigned __to) { + + return dist [__from] [__to] ; + } +} + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/graph.h b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/graph.h new file mode 100644 index 000000000..b6a4adc21 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/graph.h @@ -0,0 +1,30 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "graph.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef graph_h +#define graph_h + +#include +#include + +namespace Graph { + + void load (const char * __file_name) ; + /* Loading cities + (expressed by their coordinates) + from the given file name */ + + float distance (unsigned __from, unsigned __to) ; + + unsigned size () ; // How many cities ? +} + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/libtsp.a b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/libtsp.a new file mode 100644 index 000000000..f4e446f7e Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/libtsp.a differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/mix.h b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/mix.h new file mode 100644 index 000000000..979f0b079 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/mix.h @@ -0,0 +1,23 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "mix.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef mix_h +#define mix_h + +#include + +template void mix (std :: vector & __vect) { + + for (unsigned i = 0 ; i < __vect.size () ; i ++) + std :: swap (__vect [i], __vect [rng.random (__vect.size ())]) ; +} + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/order_xover.cpp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/order_xover.cpp new file mode 100644 index 000000000..c845e0b5c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/order_xover.cpp @@ -0,0 +1,90 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "order_xover.cpp" + +// (c) OPAC Team, LIFL, 2002-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include + +#include + +#include "order_xover.h" +#include "route_valid.h" + +void OrderXover :: cross (const Route & __par1, const Route & __par2, Route & __child) { + + unsigned cut = rng.random (__par1.size ()) ; + + /* To store vertices that have + already been crossed */ + vector v; + v.resize(__par1.size()); + + for (unsigned i = 0 ; i < __par1.size () ; i ++) + { + v [i] = false ; + } + + /* Copy of the left partial + route of the first parent */ + for (unsigned i = 0 ; i < cut ; i ++) { + __child [i] = __par1 [i] ; + v [__par1 [i]] = true ; + } + + /* Searching the vertex of the second path, that ended + the previous first one */ + unsigned from = 0 ; + for (unsigned i = 0 ; i < __par2.size () ; i ++) + { + if (__par2 [i] == __child [cut - 1]) { + from = i ; + break ; + } + } + + /* Selecting a direction + Left or Right */ + char direct = rng.flip () ? 1 : -1 ; + + /* Copy of the left vertices from + the second parent path */ + unsigned l = cut ; + + for (unsigned i = 0 ; i < __par2.size () ; i ++) + { + unsigned bidule /* :-) */ = (direct * i + from + __par2.size ()) % __par2.size () ; + if (! v [__par2 [bidule]]) + { + __child [l ++] = __par2 [bidule] ; + v [__par2 [bidule]] = true ; + } + } + + v.clear(); +} + +bool OrderXover :: operator () (Route & __route1, Route & __route2) { + + // Init. copy + Route par [2] ; + par [0] = __route1 ; + par [1] = __route2 ; + + cross (par [0], par [1], __route1) ; + cross (par [1], par [0], __route2) ; + + assert (valid (__route1)) ; + assert (valid (__route2)) ; + + __route1.invalidate () ; + __route2.invalidate () ; + + return true ; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/order_xover.h b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/order_xover.h new file mode 100644 index 000000000..e41761b6d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/order_xover.h @@ -0,0 +1,31 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "order_xover.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef order_xover_h +#define order_xover_h + +#include + +#include "route.h" + +/** Order Crossover */ +class OrderXover : public eoQuadOp { + +public : + + bool operator () (Route & __route1, Route & __route2) ; + +private : + + void cross (const Route & __par1, const Route & __par2, Route & __child) ; +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/part_route_eval.cpp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/part_route_eval.cpp new file mode 100644 index 000000000..8f0ba935a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/part_route_eval.cpp @@ -0,0 +1,33 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "part_route_eval.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "part_route_eval.h" +#include "graph.h" + +PartRouteEval :: PartRouteEval (float __from, + float __to + ) : from (__from), + to (__to) { + +} + +void PartRouteEval :: operator () (Route & __route) { + + + float len = 0 ; + + for (unsigned i = (unsigned) (__route.size () * from) ; + i < (unsigned) (__route.size () * to) ; + i ++) + len -= Graph :: distance (__route [i], __route [(i + 1) % Graph :: size ()]) ; + + __route.fitness (len) ; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/part_route_eval.h b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/part_route_eval.h new file mode 100644 index 000000000..8ad5886d4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/part_route_eval.h @@ -0,0 +1,36 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "part_route_eval.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef part_route_eval_h +#define part_route_eval_h + +#include + +#include "route.h" + +/** Route Evaluator */ +class PartRouteEval : public eoEvalFunc { + +public : + + /** Constructor */ + PartRouteEval (float __from, float __to) ; + + void operator () (Route & __route) ; + +private : + + float from, to ; + +} ; + + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/part_two_opt_init.cpp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/part_two_opt_init.cpp new file mode 100644 index 000000000..05b12925c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/part_two_opt_init.cpp @@ -0,0 +1,20 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "part_two_opt_init.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "part_two_opt_init.h" + +void PartTwoOptInit :: operator () (TwoOpt & __move, const Route & __route) { + + __move.first = rng.random (__route.size () - 6) ; + __move.second = __move.first + 2 ; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/part_two_opt_init.h b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/part_two_opt_init.h new file mode 100644 index 000000000..92d7ec0aa --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/part_two_opt_init.h @@ -0,0 +1,28 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "part_two_opt_init.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef part_two_opt_init_h +#define part_two_opt_init_h + +#include + +#include "two_opt.h" + +/** It sets the first couple of edges */ +class PartTwoOptInit : public eoMoveInit { + +public : + + void operator () (TwoOpt & __move, const Route & __route) ; + +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/part_two_opt_next.cpp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/part_two_opt_next.cpp new file mode 100644 index 000000000..e7b1d7665 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/part_two_opt_next.cpp @@ -0,0 +1,30 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "part_two_opt_next.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "part_two_opt_next.h" +#include "graph.h" + +bool TwoOptNext :: operator () (TwoOpt & __move, const Route & __route) { + + if (__move.first == Graph :: size () - 4 && __move.second == __move.first + 2) + return false ; + + else { + + __move.second ++ ; + if (__move.second == Graph :: size () - 1) { + __move.first ++ ; + __move.second = __move.first + 2 ; + } + + return true ; + } +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/part_two_opt_next.h b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/part_two_opt_next.h new file mode 100644 index 000000000..67bd181d3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/part_two_opt_next.h @@ -0,0 +1,27 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "part_two_opt_next.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef part_two_opt_next_h +#define part_two_opt_next_h + +#include +#include "two_opt.h" + +/** It updates a couple of edges */ +class PartTwoOptNext : public eoNextMove { + +public : + + bool operator () (TwoOpt & __move, const Route & __route) ; + +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/partial_mapped_xover.cpp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/partial_mapped_xover.cpp new file mode 100644 index 000000000..9414a5c9c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/partial_mapped_xover.cpp @@ -0,0 +1,88 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "partial_mapped_xover.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include + +#include + +#include "partial_mapped_xover.h" +#include "route_valid.h" +#include "mix.h" + +void PartialMappedXover :: repair (Route & __route, unsigned __cut1, unsigned __cut2) { + + vector v; // Number of times a cities are visited ... + + v.resize(__route.size ()); + + for (unsigned i = 0 ; i < __route.size () ; i ++) + { + v [i] = 0 ; + } + + for (unsigned i = 0 ; i < __route.size () ; i ++) + { + v [__route [i]] ++ ; + } + + std :: vector vert ; + + for (unsigned i = 0 ; i < __route.size () ; i ++) + { + if (! v [i]) + { + vert.push_back (i) ; + } + } + + mix (vert) ; + + for (unsigned i = 0 ; i < __route.size () ; i ++) + { + if (i < __cut1 || i >= __cut2) + { + if (v [__route [i]] > 1) + { + __route [i] = vert.back () ; + vert.pop_back () ; + } + } + } + + v.clear(); +} + +bool PartialMappedXover :: operator () (Route & __route1, Route & __route2) { + + unsigned cut1 = rng.random (__route1.size ()), cut2 = rng.random (__route2.size ()) ; + + if (cut2 < cut1) + std :: swap (cut1, cut2) ; + + // Between the cuts + for (unsigned i = cut1 ; i < cut2 ; i ++) + std :: swap (__route1 [i], __route2 [i]) ; + + // Outside the cuts + repair (__route1, cut1, cut2) ; + repair (__route2, cut1, cut2) ; + + // Debug + assert (valid (__route1)) ; + assert (valid (__route2)) ; + + __route1.invalidate () ; + __route2.invalidate () ; + + return true ; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/partial_mapped_xover.h b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/partial_mapped_xover.h new file mode 100644 index 000000000..a128fb9de --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/partial_mapped_xover.h @@ -0,0 +1,31 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "partial_mapped_xover.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef partial_mapped_xover_h +#define partial_mapped_xover_h + +#include + +#include "route.h" + +/** Partial Mapped Crossover */ +class PartialMappedXover : public eoQuadOp { + +public : + + bool operator () (Route & __route1, Route & __route2) ; + +private : + + void repair (Route & __route, unsigned __cut1, unsigned __cut2) ; +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route.h b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route.h new file mode 100644 index 000000000..cde1f96ba --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route.h @@ -0,0 +1,19 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "route.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef route_h +#define route_h + +#include + +typedef eoVector Route ; // [Fitness (- length), Gene (city)] + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route_eval.cpp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route_eval.cpp new file mode 100644 index 000000000..09be9102c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route_eval.cpp @@ -0,0 +1,23 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "route_eval.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "route_eval.h" +#include "graph.h" + +void RouteEval :: operator () (Route & __route) { + + float len = 0 ; + + for (unsigned i = 0 ; i < Graph :: size () ; i ++) + len -= Graph :: distance (__route [i], __route [(i + 1) % Graph :: size ()]) ; + + __route.fitness (len) ; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route_eval.h b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route_eval.h new file mode 100644 index 000000000..60b38661e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route_eval.h @@ -0,0 +1,29 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "route_eval.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef route_eval_h +#define route_eval_h + +#include + +#include "route.h" + +/** Route Evaluator */ +class RouteEval : public eoEvalFunc { + +public : + + void operator () (Route & __route) ; + +} ; + + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route_init.cpp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route_init.cpp new file mode 100644 index 000000000..c37c1652e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route_init.cpp @@ -0,0 +1,34 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "route_init.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "route_init.h" +#include "graph.h" + +void RouteInit :: operator () (Route & __route) { + + // Init. + __route.clear () ; + for (unsigned i = 0 ; i < Graph :: size () ; i ++) + __route.push_back (i) ; + + // Swap. cities + + for (unsigned i = 0 ; i < Graph :: size () ; i ++) { + //unsigned j = rng.random (Graph :: size ()) ; + + unsigned j = (unsigned) (Graph :: size () * (rand () / (RAND_MAX + 1.0))) ; + unsigned city = __route [i] ; + __route [i] = __route [j] ; + __route [j] = city ; + } +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route_init.h b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route_init.h new file mode 100644 index 000000000..ab6b7ecb1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route_init.h @@ -0,0 +1,27 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "route_init.h" + +// (c) OPAC Team, LIFL, 2002-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef route_init_h +#define route_init_h + +#include + +#include "route.h" + +class RouteInit : public eoInit { + +public : + + void operator () (Route & __route) ; + +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route_valid.cpp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route_valid.cpp new file mode 100644 index 000000000..057ebb722 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route_valid.cpp @@ -0,0 +1,42 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "route_valid.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "route_valid.h" + +#include + +bool valid (Route & __route) { + + vector t; + t.resize(__route.size()); + + for (unsigned i = 0 ; i < __route.size () ; i ++) + { + t [i] = 0 ; + } + + for (unsigned i = 0 ; i < __route.size () ; i ++) + { + t [__route [i]] ++ ; + } + + for (unsigned i = 0 ; i < __route.size () ; i ++) + { + if (t [i] != 1) + { + t.clear(); + return false ; + } + } + + t.clear(); + return true ; // OK. +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route_valid.h b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route_valid.h new file mode 100644 index 000000000..90763d7fc --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/route_valid.h @@ -0,0 +1,19 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "route_valid.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef route_valid_h +#define route_valid_h + +#include "route.h" + +bool valid (Route & __route) ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt.cpp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt.cpp new file mode 100644 index 000000000..ad1bc0400 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt.cpp @@ -0,0 +1,42 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "two_opt.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "two_opt.h" + +TwoOpt TwoOpt :: operator ! () const { + + TwoOpt move = * this ; + std :: swap (move.first, move.second) ; + + return move ; +} + +void TwoOpt :: operator () (Route & __route) { + + std :: vector seq_cities ; + + for (unsigned i = second ; i > first ; i --) + seq_cities.push_back (__route [i]) ; + + unsigned j = 0 ; + for (unsigned i = first + 1 ; i < second + 1 ; i ++) + __route [i] = seq_cities [j ++] ; +} + +void TwoOpt :: readFrom (std :: istream & __is) { + + __is >> first >> second ; +} + +void TwoOpt :: printOn (std :: ostream & __os) const { + + __os << first << ' ' << second ; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt.h b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt.h new file mode 100644 index 000000000..395b13442 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt.h @@ -0,0 +1,35 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "two_opt.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef two_opt_h +#define two_opt_h + +#include + +#include +#include + +#include "route.h" + +class TwoOpt : public moMove , public std :: pair , public eoPersistent { + +public : + + TwoOpt operator ! () const ; + + void operator () (Route & __route) ; + + void readFrom (std :: istream & __is) ; + + void printOn (std :: ostream & __os) const ; +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_incr_eval.cpp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_incr_eval.cpp new file mode 100644 index 000000000..41adba2ab --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_incr_eval.cpp @@ -0,0 +1,24 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "TwoOptIncrEval.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "two_opt_incr_eval.h" +#include "graph.h" + +float TwoOptIncrEval :: operator () (const TwoOpt & __move, const Route & __route) { + + // From + unsigned v1 = __route [__move.first], v1_next = __route [__move.first + 1] ; + + // To + unsigned v2 = __route [__move.second], v2_next = __route [__move.second + 1] ; + + return __route.fitness () - Graph :: distance (v1, v2) - Graph :: distance (v1_next, v2_next) + Graph :: distance (v1, v1_next) + Graph :: distance (v2, v2_next) ; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_incr_eval.h b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_incr_eval.h new file mode 100644 index 000000000..64581c9f6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_incr_eval.h @@ -0,0 +1,26 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "TwoOptIncrEval.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef two_optincr_eval_h +#define two_optincr_eval_h + +#include +#include "two_opt.h" + +class TwoOptIncrEval : public moMoveIncrEval { + +public : + + float operator () (const TwoOpt & __move, const Route & __route) ; + +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_init.cpp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_init.cpp new file mode 100644 index 000000000..63a53df84 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_init.cpp @@ -0,0 +1,18 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "two_opt_init.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "two_opt_init.h" + +void TwoOptInit :: operator () (TwoOpt & __move, const Route & __route) { + + __move.first = 0 ; + __move.second = 2 ; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_init.h b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_init.h new file mode 100644 index 000000000..b0dc1d963 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_init.h @@ -0,0 +1,28 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "two_opt_init.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef two_opt_init_h +#define two_opt_init_h + +#include + +#include "two_opt.h" + +/** It sets the first couple of edges */ +class TwoOptInit : public moMoveInit { + +public : + + void operator () (TwoOpt & __move, const Route & __route) ; + +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_next.cpp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_next.cpp new file mode 100644 index 000000000..0fd1cdf1f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_next.cpp @@ -0,0 +1,30 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "two_opt_next.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "two_opt_next.h" +#include "graph.h" + +bool TwoOptNext :: operator () (TwoOpt & __move, const Route & __route) { + + if (__move.first == Graph :: size () - 4 && __move.second == __move.first + 2) + return false ; + + else { + + __move.second ++ ; + if (__move.second == Graph :: size () - 1) { + __move.first ++ ; + __move.second = __move.first + 2 ; + } + + return true ; + } +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_next.h b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_next.h new file mode 100644 index 000000000..bacdcdfb0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_next.h @@ -0,0 +1,27 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "two_opt_next.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef two_opt_next_h +#define two_opt_next_h + +#include +#include "two_opt.h" + +/** It updates a couple of edges */ +class TwoOptNext : public moNextMove { + +public : + + bool operator () (TwoOpt & __move, const Route & __route) ; + +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_rand.cpp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_rand.cpp new file mode 100644 index 000000000..5bf3e37b1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_rand.cpp @@ -0,0 +1,20 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "two_opt_rand.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "two_opt_rand.h" +#include "graph.h" +#include + +void TwoOptRand :: operator () (TwoOpt & __move) { + + __move.first = rng.random (Graph :: size () - 3) ; + __move.second = __move.first + 2 + rng.random (Graph :: size () - __move.first - 3) ; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_rand.h b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_rand.h new file mode 100644 index 000000000..ce26889a5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_rand.h @@ -0,0 +1,27 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "two_opt_rand.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef two_opt_rand_h +#define two_opt_rand_h + +#include + +#include "two_opt.h" + +class TwoOptRand : public moRandMove { + +public : + + void operator () (TwoOpt & __move) ; + +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_tabu_list.cpp b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_tabu_list.cpp new file mode 100644 index 000000000..c8bca955f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_tabu_list.cpp @@ -0,0 +1,58 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "two_opt_tabu_list.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "two_opt_tabu_list.h" +#include "graph.h" + +#define TABU_LENGTH 10 + +void TwoOptTabuList :: init () { + + // Size (eventually) + tabu_span.resize (Graph :: size ()) ; + for (unsigned i = 0 ; i < tabu_span.size () ; i ++) + { + tabu_span [i].resize (Graph :: size ()) ; + } + + // Clear + for (unsigned i = 0 ; i < tabu_span.size () ; i ++) + { + for (unsigned j = 0 ; j < tabu_span [i].size () ; j ++) + { + tabu_span [i] [j] = 0 ; + } + } +} + +bool TwoOptTabuList :: operator () (const TwoOpt & __move, const Route & __sol) { + + return tabu_span [__move.first] [__move.second] > 0 ; +} + +void TwoOptTabuList :: add (const TwoOpt & __move, const Route & __sol) { + + tabu_span [__move.first] [__move.second] = tabu_span [__move.second] [__move.first] = TABU_LENGTH ; +} + +void TwoOptTabuList :: update () { + + for (unsigned i = 0 ; i < tabu_span.size () ; i ++) + { + for (unsigned j = 0 ; j < tabu_span [i].size () ; j ++) + { + if (tabu_span [i] [j] > 0) + { + tabu_span [i] [j] -- ; + } + } + } +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_tabu_list.h b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_tabu_list.h new file mode 100644 index 000000000..d42de82d3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-mo/tutorial/examples/tsp/src/two_opt_tabu_list.h @@ -0,0 +1,38 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "two_opt_tabu_list.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef two_opt_tabu_list_h +#define two_opt_tabu_list_h + +#include +#include "two_opt.h" +#include "route.h" + +/** The table of tabu movements, i.e. forbidden edges */ +class TwoOptTabuList : public moTabuList { + +public : + + bool operator () (const TwoOpt & __move, const Route & __sol) ; + + void add (const TwoOpt & __move, const Route & __sol) ; + + void update () ; + + void init () ; + +private : + + std :: vector > tabu_span ; + +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/AUTHORS b/tags/paradiseo-i386-0.2/paradiseo-moeo/AUTHORS new file mode 100644 index 000000000..50787a3ef --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/AUTHORS @@ -0,0 +1,4 @@ +Sébastien Cahon +Arnaud Liefooghe +Thomas Legrand +Abdelhakim Deneche diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/ChangeLog b/tags/paradiseo-i386-0.2/paradiseo-moeo/ChangeLog new file mode 100755 index 000000000..e69de29bb diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-moeo/Makefile.am new file mode 100755 index 000000000..f82d6f279 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/Makefile.am @@ -0,0 +1,16 @@ +SUBDIRS = docs src tutorials + +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 docs; rm -rf Makefile Makefile.in *.doxytag; cd ../src ; rm -rf Makefile Makefile.in; cd ../tutorials; rm -rf Makefile Makefile.in;\ + cd lesson1; rm -rf .deps/ Makefile Makefile.in) + +clean_aux: + -@find . \( -name "*~" -o -name "*.old" -o -name "#*" -o -name "*.bak" \) -print -exec rm -rf \{\} \; + +doc: + -@(cd docs; make doc) + +clean_doc: + -@(cd docs; make clean-local) diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/NEWS b/tags/paradiseo-i386-0.2/paradiseo-moeo/NEWS new file mode 100644 index 000000000..31fe551dc --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/NEWS @@ -0,0 +1,7 @@ +* release 0.1 + +# Local Variables: +# coding: iso-8859-1 +# mode: text +# fill-column: 80 +# End: diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/README b/tags/paradiseo-i386-0.2/paradiseo-moeo/README new file mode 100644 index 000000000..7da34dc2b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/README @@ -0,0 +1,60 @@ + 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 + $(SRCDIR)/configure + make + make doc + +where $(SRCDIR) is the top-level source directory of PARADISEO-MOEO, +i.e. where the sources where unpacked. + +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. + | | + | +-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-i386-0.2/paradiseo-moeo/autogen.sh b/tags/paradiseo-i386-0.2/paradiseo-moeo/autogen.sh new file mode 100755 index 000000000..293b7972e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/autogen.sh @@ -0,0 +1,148 @@ +#!/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-i386-0.2/paradiseo-moeo/configure.in b/tags/paradiseo-i386-0.2/paradiseo-moeo/configure.in new file mode 100755 index 000000000..253a290ba --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/configure.in @@ -0,0 +1,43 @@ +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 +docs/Makefile +tutorials/Makefile +tutorials/lesson1/Makefile +tutorials/lesson2/Makefile +]) diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/Makefile.am new file mode 100644 index 000000000..254b2661c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/Makefile.am @@ -0,0 +1,5 @@ +doc: + -@doxygen moeo.doxyfile + +clean-local: + rm -rf html latex man diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/README-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/README-source.html new file mode 100644 index 000000000..c68183072 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/README-source.html @@ -0,0 +1,30 @@ + + +ParadisEO-MOEO: README Source File + + + + +
+
+

README

00001 All the files contained in src/old/ will be fully rebuilt in the next version of ParadisEO-MOEO. 
+00002 For more informations, please contact paradiseo-help@lists.gforge.inria.fr.
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/annotated.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/annotated.html new file mode 100644 index 000000000..65dc0e43c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/annotated.html @@ -0,0 +1,73 @@ + + +ParadisEO-MOEO: Class List + + + + +
+
+ +

ParadisEO-MOEO Class List

Here are the classes, structs, unions and interfaces with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moeoAdditiveBinaryEpsilonIndicator< EOFitness >Functor Additive binary epsilon indicator for eoParetoFitness
moeoArchive< EOT >An archive is a secondary population that stores non-dominated solutions
moeoArchiveFitnessSavingUpdater< EOT >This class allows to save the fitnesses of solutions contained in an archive into a file at each generation
moeoArchiveUpdater< EOT >This class allows to update the archive at each generation with newly found non-dominated solutions
moeoBinaryHypervolumeIndicator< EOFitness >Functor Binary hypervolume indicator for eoParetoFitness
moeoBinaryMetricSavingUpdater< EOT >This class allows to save the progression of a binary metric comparing the fitness values of the current population (or archive) with the fitness values of the population (or archive) of the generation (n-1) into a file
moeoBinaryQualityIndicator< EOFitness >Functor Binary quality indicator Binary performance measure to use in the replacement selection process of IBEA (Indicator-Based Evolutionary Algorithm) Of course, EOFitness needs to be an eoParetoFitness object
moeoBinaryQualityIndicator< EOFitness >::RangePrivate class to represent the bounds
moeoBM< A1, A2, R >Base class for binary metrics
moeoCombinedMOLS< EOT >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
moeoContributionMetric< EOT >The contribution metric evaluates the proportion of non-dominated solutions given by a Pareto set relatively to another Pareto set
moeoDisctinctElitistReplacement< EOT, WorthT >Same than moeoElitistReplacement except that distinct individuals are privilegied
moeoElitistReplacement< EOT, WorthT >Keep all the best individuals (almost cut-and-pasted from eoNDPlusReplacement, (c) Maarten Keijzer, Marc Schoenauer and GeNeura Team, 2002)
moeoEntropyMetric< EOT >The entropy gives an idea of the diversity of a Pareto set relatively to another Pareto set
moeoHybridMOLS< EOT >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
moeoIBEA< EOT, Fitness >Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm)
moeoIBEAAvgSorting< EOT, FitnessEval >Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty using averaged values for each objective Follow the idea presented in the Deb & Gupta paper "Searching for Robust Pareto-Optimal Solutions in Multi-Objective Optimization", 2005 Of course, the fitness of an individual needs to be an eoStochasticParetoFitness object
moeoIBEASorting< EOT, Fitness >Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) without uncertainty Adapted from the Zitzler and Künzli paper "Indicator-Based Selection in Multiobjective Search" (2004) Of course, Fitness needs to be an eoParetoFitness object
moeoIBEAStochSorting< EOT, FitnessEval >Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty Adapted from the Basseur and Zitzler paper "Handling Uncertainty in Indicator-Based Multiobjective Optimization" (2006) Of course, the fitness of an individual needs to be an eoStochasticParetoFitness object
moeoMetricBase class for performance metrics (also called quality indicators)
moeoMOLS< EOT >Abstract class for local searches applied to multi-objective optimization
moeoNDSorting_II< EOT >Fast Elitist Non-Dominant Sorting Genetic Algorithm assignment strategie Note : This is a corrected version of the original eoNDSorting_II class
moeoNDSorting_II< EOT >::compare_nodesA class to compare the nodes
moeoNSGA_II< EOT >
moeoParetoEuclidDist< EOT, DistType >
moeoParetoPhenDist< EOT, DistType >
moeoParetoSharing< EOT, worthT >
moeoParetoSharing< EOT, worthT >::dMatrix
moeoReplacement< EOT, WorthT >Replacement strategy for multi-objective optimization
moeoSelectOneFromPopAndArch< EOT >Elitist selection process that consists in choosing individuals in the archive as well as in the current population
moeoSolutionUM< EOT, R, EOFitness >Base class for unary metrics dedicated to the performance evaluation of a single solution's Pareto fitness
moeoSolutionVsSolutionBM< EOT, R, EOFitness >Base class for binary metrics dedicated to the performance comparison between two solutions's Pareto fitnesses
moeoUM< A, R >Base class for unary metrics
moeoVectorUM< EOT, R, EOFitness >Base class for unary metrics dedicated to the performance evaluation of a Pareto set (a vector of Pareto fitnesses)
moeoVectorVsSolutionBM< EOT, R, EOFitness >Base class for binary metrics dedicated to the performance comparison between a Pareto set (a vector of Pareto fitnesses) and a single solution's Pareto fitness
moeoVectorVsVectorBM< EOT, R, EOFitness >Base class for binary metrics dedicated to the performance comparison between two Pareto sets (two vectors of Pareto fitnesses)
+
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classes.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classes.html new file mode 100644 index 000000000..6e9003d1c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classes.html @@ -0,0 +1,52 @@ + + +ParadisEO-MOEO: Alphabetical List + + + + +
+
+ +

ParadisEO-MOEO Class Index

A | B | C | D | E | H | I | M | N | P | R | S | U | V

+ +
  A  
+
moeoElitistReplacement   moeoParetoEuclidDist   
moeoAdditiveBinaryEpsilonIndicator   moeoEntropyMetric   moeoParetoPhenDist   
moeoArchive   
  H  
+
moeoParetoSharing   
moeoArchiveFitnessSavingUpdater   moeoHybridMOLS   moeoParetoSharing::dMatrix   
moeoArchiveUpdater   
  I  
+
  R  
+
  B  
+
moeoIBEA   moeoReplacement   
moeoBinaryHypervolumeIndicator   moeoIBEAAvgSorting   
  S  
+
moeoBinaryMetricSavingUpdater   moeoIBEASorting   moeoSelectOneFromPopAndArch   
moeoBinaryQualityIndicator   moeoIBEAStochSorting   moeoSolutionUM   
moeoBinaryQualityIndicator::Range   
  M  
+
moeoSolutionVsSolutionBM   
moeoBM   moeoMetric   
  U  
+
  C  
+
moeoMOLS   moeoUM   
moeoCombinedMOLS   
  N  
+
  V  
+
moeoContributionMetric   moeoNDSorting_II   moeoVectorUM   
  D  
+
moeoNDSorting_II::compare_nodes   moeoVectorVsSolutionBM   
moeoDisctinctElitistReplacement   moeoNSGA_II   moeoVectorVsVectorBM   
  E  
+
  P  
+

A | B | C | D | E | H | I | M | N | P | R | S | U | V

+


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoAdditiveBinaryEpsilonIndicator-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoAdditiveBinaryEpsilonIndicator-members.html new file mode 100644 index 000000000..6daefa711 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoAdditiveBinaryEpsilonIndicator-members.html @@ -0,0 +1,47 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoAdditiveBinaryEpsilonIndicator< EOFitness > Member List

This is the complete list of members for moeoAdditiveBinaryEpsilonIndicator< EOFitness >, including all inherited members.

+ + + + + + + + + + + +
boundsmoeoBinaryQualityIndicator< EOFitness > [protected]
epsilonValue(const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2, const unsigned _iObj)moeoAdditiveBinaryEpsilonIndicator< EOFitness > [inline, private]
functor_category()eoBF< A1, A2, R > [static]
moeoAdditiveBinaryEpsilonIndicator()moeoAdditiveBinaryEpsilonIndicator< EOFitness > [inline]
moeoBinaryQualityIndicator()moeoBinaryQualityIndicator< EOFitness > [inline]
operator()(const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2)moeoAdditiveBinaryEpsilonIndicator< EOFitness > [inline]
moeoBinaryQualityIndicator::operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
setBounds(const unsigned _iObj, const double _min, const double _max)moeoBinaryQualityIndicator< EOFitness > [inline]
traits typedefmoeoAdditiveBinaryEpsilonIndicator< EOFitness > [private]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoAdditiveBinaryEpsilonIndicator.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoAdditiveBinaryEpsilonIndicator.html new file mode 100644 index 000000000..0fed0a944 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoAdditiveBinaryEpsilonIndicator.html @@ -0,0 +1,173 @@ + + +ParadisEO-MOEO: moeoAdditiveBinaryEpsilonIndicator< EOFitness > Class Template Reference + + + + +
+
+ +

moeoAdditiveBinaryEpsilonIndicator< EOFitness > Class Template Reference

Functor Additive binary epsilon indicator for eoParetoFitness. +More... +

+#include <moeoBinaryQualityIndicator.h> +

+

Inheritance diagram for moeoAdditiveBinaryEpsilonIndicator< EOFitness >: +

+ +moeoBinaryQualityIndicator< EOFitness > +eoBF< A1, A2, R > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + +

Public Member Functions

moeoAdditiveBinaryEpsilonIndicator ()
 constructor
double operator() (const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2)
 computation of the maximum epsilon value by which individual _eo1 must be decreased in all objectives such that individual _eo2 is weakly dominated (do not forget to set the bounds before the call of this function)

Private Types

+typedef EOFitness::fitness_traits traits
 fitness traits

Private Member Functions

double epsilonValue (const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2, const unsigned _iObj)
 computation of the epsilon value by which individual _eo1 must be decreased in the objective _iObj such that individual _eo2 is weakly dominated
+

Detailed Description

+

template<class EOFitness>
+ class moeoAdditiveBinaryEpsilonIndicator< EOFitness >

+ +Functor Additive binary epsilon indicator for eoParetoFitness. +

+ +

+Definition at line 115 of file moeoBinaryQualityIndicator.h.


Member Function Documentation

+ +
+
+
+template<class EOFitness>
+ + + + + + + + + + + + + + + + + + +
double moeoAdditiveBinaryEpsilonIndicator< EOFitness >::operator() (const EOFitness &  _fitness_eo1,
const EOFitness &  _fitness_eo2 
) [inline]
+
+
+ +

+computation of the maximum epsilon value by which individual _eo1 must be decreased in all objectives such that individual _eo2 is weakly dominated (do not forget to set the bounds before the call of this function) +

+

Parameters:
+ + + +
EOFitness & _fitness_eo1 the fitness of the first individual
EOFitness & _fitness_eo2 the fitness of the second individual
+
+ +

+Definition at line 138 of file moeoBinaryQualityIndicator.h. +

+References moeoAdditiveBinaryEpsilonIndicator< EOFitness >::epsilonValue(). +

+

+ +

+
+
+template<class EOFitness>
+ + + + + + + + + + + + + + + + + + + + + + + + +
double moeoAdditiveBinaryEpsilonIndicator< EOFitness >::epsilonValue (const EOFitness &  _fitness_eo1,
const EOFitness &  _fitness_eo2,
const unsigned  _iObj 
) [inline, private]
+
+
+ +

+computation of the epsilon value by which individual _eo1 must be decreased in the objective _iObj such that individual _eo2 is weakly dominated +

+

Parameters:
+ + + + +
EOFitness & _fitness_eo1 the fitness of the first individual
EOFitness & _fitness_eo2 the fitness of the second individual
unsigned _iObj the index of the objective
+
+ +

+Definition at line 170 of file moeoBinaryQualityIndicator.h. +

+References moeoBinaryQualityIndicator< EOFitness >::bounds. +

+Referenced by moeoAdditiveBinaryEpsilonIndicator< EOFitness >::operator()(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoAdditiveBinaryEpsilonIndicator.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoAdditiveBinaryEpsilonIndicator.png new file mode 100644 index 000000000..ab02eb8af Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoAdditiveBinaryEpsilonIndicator.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchive-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchive-members.html new file mode 100644 index 000000000..416e07db6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchive-members.html @@ -0,0 +1,74 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoArchive< EOT > Member List

This is the complete list of members for moeoArchive< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
append(unsigned _newPopSize, eoInit< EOT > &_chromInit)eoPop< EOT >
best_element() consteoPop< EOT >
className() consteoPop< EOT > [virtual]
contains(const EOFitness &_fit) constmoeoArchive< EOT > [inline]
dominates(const EOFitness &_fit) constmoeoArchive< EOT > [inline]
EOFitness typedefmoeoArchive< EOT >
eoPop()eoPop< EOT >
eoPop(unsigned _popSize, eoInit< EOT > &_chromInit)eoPop< EOT >
eoPop(std::istream &_is)eoPop< EOT >
Fitness typedefeoPop< EOT >
fitness_traits typedefeoPop< EOT >
getPerf2Worth()eoPop< EOT >
invalidate()eoPop< EOT > [virtual]
it_best_element()eoPop< EOT >
it_worse_element()eoPop< EOT >
nth_element(int nth)eoPop< EOT >
nth_element(int which, std::vector< const EOT * > &result) consteoPop< EOT >
nth_element_fitness(int which) consteoPop< EOT >
printOn(std::ostream &_os) consteoPop< EOT > [virtual]
readFrom(std::istream &_is)eoPop< EOT > [virtual]
scale()eoPop< EOT >
setPerf2Worth(eoPerf2Worth< EOT > &_p2w)eoPop< EOT >
setPerf2Worth(eoPerf2Worth< EOT > *_p2w)eoPop< EOT >
shuffle(void)eoPop< EOT >
shuffle(std::vector< const EOT * > &result) consteoPop< EOT >
sort(void)eoPop< EOT >
sort(std::vector< const EOT * > &result) consteoPop< EOT >
sort()eoPop< EOT >
sortedPrintOn(std::ostream &_os) consteoPop< EOT > [virtual]
swap(eoPop< EOT > &other)eoPop< EOT >
swap(eoPop< EOT > &other)eoPop< EOT >
update(const EOT &_eo)moeoArchive< EOT > [inline]
update(const eoPop< EOT > &_pop)moeoArchive< EOT > [inline]
worse_element() consteoPop< EOT >
~eoObject()eoObject [virtual]
~eoPersistent()eoPersistent [virtual]
~eoPop()eoPop< EOT > [virtual]
~eoPrintable()eoPrintable [virtual]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchive.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchive.html new file mode 100644 index 000000000..086c3b81e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchive.html @@ -0,0 +1,212 @@ + + +ParadisEO-MOEO: moeoArchive< EOT > Class Template Reference + + + + +
+
+ +

moeoArchive< EOT > Class Template Reference

An archive is a secondary population that stores non-dominated solutions. +More... +

+#include <moeoArchive.h> +

+

Inheritance diagram for moeoArchive< EOT >: +

+ +eoPop< EOT > +eoObject +eoPersistent +eoPrintable + +List of all members. + + + + + + + + + + + + + + + + + + +

Public Types

+typedef EOT::Fitness EOFitness
 The fitness type of a solution.

Public Member Functions

bool dominates (const EOFitness &_fit) const
 Returns true if the current archive dominates _fit.
bool contains (const EOFitness &_fit) const
 Returns true if the current archive contains _fit.
void update (const EOT &_eo)
 Updates the archive with a given individual _eo.
void update (const eoPop< EOT > &_pop)
 Updates the archive with a given population _pop.
+

Detailed Description

+

template<class EOT>
+ class moeoArchive< EOT >

+ +An archive is a secondary population that stores non-dominated solutions. +

+ +

+Definition at line 21 of file moeoArchive.h.


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
bool moeoArchive< EOT >::dominates (const EOFitness _fit  )  const [inline]
+
+
+ +

+Returns true if the current archive dominates _fit. +

+

Parameters:
+ + +
_fit the (Pareto) fitness to compare with the current archive
+
+ +

+Definition at line 39 of file moeoArchive.h. +

+Referenced by moeoArchive< EOT >::update(). +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + + +
bool moeoArchive< EOT >::contains (const EOFitness _fit  )  const [inline]
+
+
+ +

+Returns true if the current archive contains _fit. +

+

Parameters:
+ + +
_fit the (Pareto) fitness to search within the current archive
+
+ +

+Definition at line 51 of file moeoArchive.h. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + + +
void moeoArchive< EOT >::update (const EOT &  _eo  )  [inline]
+
+
+ +

+Updates the archive with a given individual _eo. +

+

Parameters:
+ + +
_eo the given individual
+
+ +

+Definition at line 63 of file moeoArchive.h. +

+References moeoArchive< EOT >::dominates(). +

+Referenced by moeoArchive< EOT >::update(). +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + + +
void moeoArchive< EOT >::update (const eoPop< EOT > &  _pop  )  [inline]
+
+
+ +

+Updates the archive with a given population _pop. +

+

Parameters:
+ + +
_pop the given population
+
+ +

+Definition at line 98 of file moeoArchive.h. +

+References moeoArchive< EOT >::update(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchive.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchive.png new file mode 100644 index 000000000..c691aff76 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchive.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchiveFitnessSavingUpdater-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchiveFitnessSavingUpdater-members.html new file mode 100644 index 000000000..ef776c99b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchiveFitnessSavingUpdater-members.html @@ -0,0 +1,48 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoArchiveFitnessSavingUpdater< EOT > Member List

This is the complete list of members for moeoArchiveFitnessSavingUpdater< EOT >, including all inherited members.

+ + + + + + + + + + + + +
archmoeoArchiveFitnessSavingUpdater< EOT > [private]
className(void) consteoUpdater [virtual]
countermoeoArchiveFitnessSavingUpdater< EOT > [private]
filenamemoeoArchiveFitnessSavingUpdater< EOT > [private]
functor_category()eoF< void > [static]
idmoeoArchiveFitnessSavingUpdater< EOT > [private]
lastCall()eoUpdater [virtual]
moeoArchiveFitnessSavingUpdater(moeoArchive< EOT > &_arch, const std::string &_filename="Res/Arch", int _id=-1)moeoArchiveFitnessSavingUpdater< EOT > [inline]
operator()()moeoArchiveFitnessSavingUpdater< EOT > [inline, virtual]
result_type typedefeoF< void >
~eoF()eoF< void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchiveFitnessSavingUpdater.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchiveFitnessSavingUpdater.html new file mode 100644 index 000000000..2b2432e73 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchiveFitnessSavingUpdater.html @@ -0,0 +1,134 @@ + + +ParadisEO-MOEO: moeoArchiveFitnessSavingUpdater< EOT > Class Template Reference + + + + +
+
+ +

moeoArchiveFitnessSavingUpdater< EOT > Class Template Reference

This class allows to save the fitnesses of solutions contained in an archive into a file at each generation. +More... +

+#include <moeoArchiveFitnessSavingUpdater.h> +

+

Inheritance diagram for moeoArchiveFitnessSavingUpdater< EOT >: +

+ +eoUpdater +eoF< void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moeoArchiveFitnessSavingUpdater (moeoArchive< EOT > &_arch, const std::string &_filename="Res/Arch", int _id=-1)
 Ctor.
+void operator() ()
 Saves the fitness of the archive's members into the file.

Private Attributes

+moeoArchive< EOT > & arch
 local archive
+std::string filename
 target filename
+int id
 own ID
+unsigned counter
 counter
+

Detailed Description

+

template<class EOT>
+ class moeoArchiveFitnessSavingUpdater< EOT >

+ +This class allows to save the fitnesses of solutions contained in an archive into a file at each generation. +

+ +

+Definition at line 27 of file moeoArchiveFitnessSavingUpdater.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + + + + + + + +
moeoArchiveFitnessSavingUpdater< EOT >::moeoArchiveFitnessSavingUpdater (moeoArchive< EOT > &  _arch,
const std::string &  _filename = "Res/Arch",
int  _id = -1 
) [inline]
+
+
+ +

+Ctor. +

+

Parameters:
+ + + + +
_arch local archive
_filename target filename
_id own ID
+
+ +

+Definition at line 37 of file moeoArchiveFitnessSavingUpdater.h. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchiveFitnessSavingUpdater.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchiveFitnessSavingUpdater.png new file mode 100644 index 000000000..b15ca800a Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchiveFitnessSavingUpdater.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchiveUpdater-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchiveUpdater-members.html new file mode 100644 index 000000000..96f5a79b1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchiveUpdater-members.html @@ -0,0 +1,46 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoArchiveUpdater< EOT > Member List

This is the complete list of members for moeoArchiveUpdater< EOT >, including all inherited members.

+ + + + + + + + + + +
archmoeoArchiveUpdater< EOT > [private]
className(void) consteoUpdater [virtual]
functor_category()eoF< void > [static]
lastCall()eoUpdater [virtual]
moeoArchiveUpdater(moeoArchive< EOT > &_arch, const eoPop< EOT > &_pop)moeoArchiveUpdater< EOT > [inline]
operator()()moeoArchiveUpdater< EOT > [inline, virtual]
popmoeoArchiveUpdater< EOT > [private]
result_type typedefeoF< void >
~eoF()eoF< void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchiveUpdater.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchiveUpdater.html new file mode 100644 index 000000000..218b2ffa6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchiveUpdater.html @@ -0,0 +1,119 @@ + + +ParadisEO-MOEO: moeoArchiveUpdater< EOT > Class Template Reference + + + + +
+
+ +

moeoArchiveUpdater< EOT > Class Template Reference

This class allows to update the archive at each generation with newly found non-dominated solutions. +More... +

+#include <moeoArchiveUpdater.h> +

+

Inheritance diagram for moeoArchiveUpdater< EOT >: +

+ +eoUpdater +eoF< void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + +

Public Member Functions

 moeoArchiveUpdater (moeoArchive< EOT > &_arch, const eoPop< EOT > &_pop)
 Ctor.
+void operator() ()
 Updates the archive with newly found non-dominated solutions contained in the main population.

Private Attributes

+moeoArchive< EOT > & arch
 the archive of non-dominated solutions
+const eoPop< EOT > & pop
 the main population
+

Detailed Description

+

template<class EOT>
+ class moeoArchiveUpdater< EOT >

+ +This class allows to update the archive at each generation with newly found non-dominated solutions. +

+ +

+Definition at line 23 of file moeoArchiveUpdater.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + +
moeoArchiveUpdater< EOT >::moeoArchiveUpdater (moeoArchive< EOT > &  _arch,
const eoPop< EOT > &  _pop 
) [inline]
+
+
+ +

+Ctor. +

+

Parameters:
+ + + +
_arch an archive of non-dominated solutions
_pop the main population
+
+ +

+Definition at line 32 of file moeoArchiveUpdater.h. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchiveUpdater.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchiveUpdater.png new file mode 100644 index 000000000..f31a59d01 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoArchiveUpdater.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBM.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBM.html new file mode 100644 index 000000000..e4542d04a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBM.html @@ -0,0 +1,67 @@ + + +ParadisEO-MOEO: moeoBM< A1, A2, R > Class Template Reference + + + + +
+
+ +

moeoBM< A1, A2, R > Class Template Reference

Base class for binary metrics. +More... +

+#include <moeoMetric.h> +

+

Inheritance diagram for moeoBM< A1, A2, R >: +

+ +eoBF< A1, A2, R > +moeoMetric +eoFunctorBase +eoFunctorBase +moeoSolutionVsSolutionBM< EOT, R, EOFitness > +moeoVectorVsSolutionBM< EOT, R, EOFitness > +moeoVectorVsVectorBM< EOT, R, EOFitness > +moeoVectorVsVectorBM< EOT, double > +moeoContributionMetric< EOT > +moeoEntropyMetric< EOT > + + + +
+

Detailed Description

+

template<class A1, class A2, class R>
+ class moeoBM< A1, A2, R >

+ +Base class for binary metrics. +

+ +

+Definition at line 38 of file moeoMetric.h.


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBM.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBM.png new file mode 100644 index 000000000..f5e291872 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBM.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryHypervolumeIndicator-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryHypervolumeIndicator-members.html new file mode 100644 index 000000000..3cd69bcb6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryHypervolumeIndicator-members.html @@ -0,0 +1,50 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoBinaryHypervolumeIndicator< EOFitness > Member List

This is the complete list of members for moeoBinaryHypervolumeIndicator< EOFitness >, including all inherited members.

+ + + + + + + + + + + + + + +
boundsmoeoBinaryQualityIndicator< EOFitness > [protected]
functor_category()eoBF< A1, A2, R > [static]
hypervolumeIndicatorValue(const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2, const unsigned _iObj, const bool _flag=false)moeoBinaryHypervolumeIndicator< EOFitness > [inline, private]
hypervolumeIndicatorValueMax(const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2, const unsigned _iObj, const bool _flag)moeoBinaryHypervolumeIndicator< EOFitness > [inline, private]
hypervolumeIndicatorValueMin(const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2, const unsigned _iObj, const bool _flag)moeoBinaryHypervolumeIndicator< EOFitness > [inline, private]
moeoBinaryHypervolumeIndicator(double _rho)moeoBinaryHypervolumeIndicator< EOFitness > [inline]
moeoBinaryQualityIndicator()moeoBinaryQualityIndicator< EOFitness > [inline]
operator()(const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2)moeoBinaryHypervolumeIndicator< EOFitness > [inline]
moeoBinaryQualityIndicator::operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
rhomoeoBinaryHypervolumeIndicator< EOFitness > [private]
setBounds(const unsigned _iObj, const double _min, const double _max)moeoBinaryQualityIndicator< EOFitness > [inline]
traits typedefmoeoBinaryHypervolumeIndicator< EOFitness > [private]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryHypervolumeIndicator.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryHypervolumeIndicator.html new file mode 100644 index 000000000..e2618cf2b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryHypervolumeIndicator.html @@ -0,0 +1,342 @@ + + +ParadisEO-MOEO: moeoBinaryHypervolumeIndicator< EOFitness > Class Template Reference + + + + +
+
+ +

moeoBinaryHypervolumeIndicator< EOFitness > Class Template Reference

Functor Binary hypervolume indicator for eoParetoFitness. +More... +

+#include <moeoBinaryQualityIndicator.h> +

+

Inheritance diagram for moeoBinaryHypervolumeIndicator< EOFitness >: +

+ +moeoBinaryQualityIndicator< EOFitness > +eoBF< A1, A2, R > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moeoBinaryHypervolumeIndicator (double _rho)
 constructor
double operator() (const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2)
 indicator value of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 (don't forget to set the bounds before the call of this function)

Private Types

+typedef EOFitness::fitness_traits traits
 fitness traits

Private Member Functions

double hypervolumeIndicatorValue (const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2, const unsigned _iObj, const bool _flag=false)
 computation of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2
double hypervolumeIndicatorValueMin (const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2, const unsigned _iObj, const bool _flag)
 computation of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 in case of a minimization on the objective _iObj
double hypervolumeIndicatorValueMax (const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2, const unsigned _iObj, const bool _flag)
 computation of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 in case of a maximization on the objective _iObj

Private Attributes

+double rho
 reference point for the hypervolume calculation
+

Detailed Description

+

template<class EOFitness>
+ class moeoBinaryHypervolumeIndicator< EOFitness >

+ +Functor Binary hypervolume indicator for eoParetoFitness. +

+ +

+Definition at line 206 of file moeoBinaryQualityIndicator.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOFitness>
+ + + + + + + + + +
moeoBinaryHypervolumeIndicator< EOFitness >::moeoBinaryHypervolumeIndicator (double  _rho  )  [inline]
+
+
+ +

+constructor +

+

Parameters:
+ + +
double _rho reference point for the hypervolume calculation (rho must not be smaller than 1)
+
+ +

+Definition at line 216 of file moeoBinaryQualityIndicator.h. +

+References moeoBinaryHypervolumeIndicator< EOFitness >::rho. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOFitness>
+ + + + + + + + + + + + + + + + + + +
double moeoBinaryHypervolumeIndicator< EOFitness >::operator() (const EOFitness &  _fitness_eo1,
const EOFitness &  _fitness_eo2 
) [inline]
+
+
+ +

+indicator value of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 (don't forget to set the bounds before the call of this function) +

+

Parameters:
+ + + +
EOFitness & _fitness_eo1 the fitness of the first individual
EOFitness & _fitness_eo2 the fitness of the second individual
+
+ +

+Definition at line 239 of file moeoBinaryQualityIndicator.h. +

+References moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValue(). +

+

+ +

+
+
+template<class EOFitness>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValue (const EOFitness &  _fitness_eo1,
const EOFitness &  _fitness_eo2,
const unsigned  _iObj,
const bool  _flag = false 
) [inline, private]
+
+
+ +

+computation of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 +

+

Parameters:
+ + + + + +
EOFitness & _fitness_eo1 the fitness of the first individual
EOFitness & _fitness_eo2 the fitness of the second individual
unsigned _iObj number of objectives (used for iteration)
bool _flag = false (only used for iteration)
+
+ +

+Definition at line 274 of file moeoBinaryQualityIndicator.h. +

+References moeoBinaryQualityIndicator< EOFitness >::bounds, moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValueMax(), and moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValueMin(). +

+Referenced by moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValueMax(), moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValueMin(), and moeoBinaryHypervolumeIndicator< EOFitness >::operator()(). +

+

+ +

+
+
+template<class EOFitness>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValueMin (const EOFitness &  _fitness_eo1,
const EOFitness &  _fitness_eo2,
const unsigned  _iObj,
const bool  _flag 
) [inline, private]
+
+
+ +

+computation of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 in case of a minimization on the objective _iObj +

+

Parameters:
+ + + + + +
EOFitness & _fitness_eo1 the fitness of the first individual
EOFitness & _fitness_eo2 the fitness of the second individual
unsigned _iObj index of the objective
bool _flag (only used for iteration)
+
+ +

+Definition at line 309 of file moeoBinaryQualityIndicator.h. +

+References moeoBinaryQualityIndicator< EOFitness >::bounds, moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValue(), and moeoBinaryHypervolumeIndicator< EOFitness >::rho. +

+Referenced by moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValue(). +

+

+ +

+
+
+template<class EOFitness>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValueMax (const EOFitness &  _fitness_eo1,
const EOFitness &  _fitness_eo2,
const unsigned  _iObj,
const bool  _flag 
) [inline, private]
+
+
+ +

+computation of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 in case of a maximization on the objective _iObj +

+

Parameters:
+ + + + + +
EOFitness & _fitness_eo1 the fitness of the first individual
EOFitness & _fitness_eo2 the fitness of the second individual
unsigned _iObj index of the objective
bool _flag (only used for iteration)
+
+ +

+Definition at line 363 of file moeoBinaryQualityIndicator.h. +

+References moeoBinaryQualityIndicator< EOFitness >::bounds, moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValue(), and moeoBinaryHypervolumeIndicator< EOFitness >::rho. +

+Referenced by moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValue(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryHypervolumeIndicator.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryHypervolumeIndicator.png new file mode 100644 index 000000000..817ee9099 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryHypervolumeIndicator.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryMetricSavingUpdater-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryMetricSavingUpdater-members.html new file mode 100644 index 000000000..ad6e24595 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryMetricSavingUpdater-members.html @@ -0,0 +1,51 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoBinaryMetricSavingUpdater< EOT > Member List

This is the complete list of members for moeoBinaryMetricSavingUpdater< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + +
className(void) consteoUpdater [virtual]
countermoeoBinaryMetricSavingUpdater< EOT > [private]
EOFitness typedefmoeoBinaryMetricSavingUpdater< EOT >
filenamemoeoBinaryMetricSavingUpdater< EOT > [private]
firstGenmoeoBinaryMetricSavingUpdater< EOT > [private]
functor_category()eoF< void > [static]
lastCall()eoUpdater [virtual]
metricmoeoBinaryMetricSavingUpdater< EOT > [private]
moeoBinaryMetricSavingUpdater(moeoVectorVsVectorBM< EOT, double > &_metric, const eoPop< EOT > &_pop, std::string _filename)moeoBinaryMetricSavingUpdater< EOT > [inline]
oldPopmoeoBinaryMetricSavingUpdater< EOT > [private]
operator()()moeoBinaryMetricSavingUpdater< EOT > [inline, virtual]
popmoeoBinaryMetricSavingUpdater< EOT > [private]
result_type typedefeoF< void >
~eoF()eoF< void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryMetricSavingUpdater.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryMetricSavingUpdater.html new file mode 100644 index 000000000..a16e215fe --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryMetricSavingUpdater.html @@ -0,0 +1,148 @@ + + +ParadisEO-MOEO: moeoBinaryMetricSavingUpdater< EOT > Class Template Reference + + + + +
+
+ +

moeoBinaryMetricSavingUpdater< EOT > Class Template Reference

This class allows to save the progression of a binary metric comparing the fitness values of the current population (or archive) with the fitness values of the population (or archive) of the generation (n-1) into a file. +More... +

+#include <moeoBinaryMetricSavingUpdater.h> +

+

Inheritance diagram for moeoBinaryMetricSavingUpdater< EOT >: +

+ +eoUpdater +eoF< void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef EOT::Fitness EOFitness
 The fitness type of a solution.

Public Member Functions

 moeoBinaryMetricSavingUpdater (moeoVectorVsVectorBM< EOT, double > &_metric, const eoPop< EOT > &_pop, std::string _filename)
 Ctor.
+void operator() ()
 Saves the metric's value for the current generation.

Private Attributes

+moeoVectorVsVectorBM< EOT,
+ double > & 
metric
 binary metric comparing two Pareto sets
+const eoPop< EOT > & pop
 main population
+eoPop< EOT > oldPop
 (n-1) population
+std::string filename
 target filename
+bool firstGen
 is it the first generation ?
+unsigned counter
 counter
+

Detailed Description

+

template<class EOT>
+ class moeoBinaryMetricSavingUpdater< EOT >

+ +This class allows to save the progression of a binary metric comparing the fitness values of the current population (or archive) with the fitness values of the population (or archive) of the generation (n-1) into a file. +

+ +

+Definition at line 26 of file moeoBinaryMetricSavingUpdater.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + + + + + + + +
moeoBinaryMetricSavingUpdater< EOT >::moeoBinaryMetricSavingUpdater (moeoVectorVsVectorBM< EOT, double > &  _metric,
const eoPop< EOT > &  _pop,
std::string  _filename 
) [inline]
+
+
+ +

+Ctor. +

+

Parameters:
+ + + + +
_metric the binary metric comparing two Pareto sets
_pop the main population
_filename the target filename
+
+ +

+Definition at line 41 of file moeoBinaryMetricSavingUpdater.h. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryMetricSavingUpdater.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryMetricSavingUpdater.png new file mode 100644 index 000000000..333491908 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryMetricSavingUpdater.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryQualityIndicator-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryQualityIndicator-members.html new file mode 100644 index 000000000..62549f326 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryQualityIndicator-members.html @@ -0,0 +1,44 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoBinaryQualityIndicator< EOFitness > Member List

This is the complete list of members for moeoBinaryQualityIndicator< EOFitness >, including all inherited members.

+ + + + + + + + +
boundsmoeoBinaryQualityIndicator< EOFitness > [protected]
functor_category()eoBF< A1, A2, R > [static]
moeoBinaryQualityIndicator()moeoBinaryQualityIndicator< EOFitness > [inline]
operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
setBounds(const unsigned _iObj, const double _min, const double _max)moeoBinaryQualityIndicator< EOFitness > [inline]
traits typedefmoeoBinaryQualityIndicator< EOFitness > [private]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryQualityIndicator.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryQualityIndicator.html new file mode 100644 index 000000000..f962ccbf5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryQualityIndicator.html @@ -0,0 +1,134 @@ + + +ParadisEO-MOEO: moeoBinaryQualityIndicator< EOFitness > Class Template Reference + + + + +
+
+ +

moeoBinaryQualityIndicator< EOFitness > Class Template Reference

Functor Binary quality indicator Binary performance measure to use in the replacement selection process of IBEA (Indicator-Based Evolutionary Algorithm) Of course, EOFitness needs to be an eoParetoFitness object. +More... +

+#include <moeoBinaryQualityIndicator.h> +

+

Inheritance diagram for moeoBinaryQualityIndicator< EOFitness >: +

+ +eoBF< A1, A2, R > +eoFunctorBase +moeoAdditiveBinaryEpsilonIndicator< EOFitness > +moeoBinaryHypervolumeIndicator< EOFitness > + +List of all members. + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

moeoBinaryQualityIndicator ()
 constructor
void setBounds (const unsigned _iObj, const double _min, const double _max)
 set the bounds for objective _iObj

Protected Attributes

+std::vector< Rangebounds
 range (min and max double value) for each objective

Private Types

+typedef EOFitness::fitness_traits traits
 fitness traits

Classes

class  Range
 Private class to represent the bounds. More...
+

Detailed Description

+

template<class EOFitness>
+ class moeoBinaryQualityIndicator< EOFitness >

+ +Functor Binary quality indicator Binary performance measure to use in the replacement selection process of IBEA (Indicator-Based Evolutionary Algorithm) Of course, EOFitness needs to be an eoParetoFitness object. +

+ +

+Definition at line 28 of file moeoBinaryQualityIndicator.h.


Member Function Documentation

+ +
+
+
+template<class EOFitness>
+ + + + + + + + + + + + + + + + + + + + + + + + +
void moeoBinaryQualityIndicator< EOFitness >::setBounds (const unsigned  _iObj,
const double  _min,
const double  _max 
) [inline]
+
+
+ +

+set the bounds for objective _iObj +

+

Parameters:
+ + + + +
unsigned _iObj the index of the objective
double _min the minimum value
double _max the maximum value
+
+ +

+Definition at line 51 of file moeoBinaryQualityIndicator.h. +

+Referenced by moeoIBEAAvgSorting< EOT, FitnessEval >::setBounds(), moeoIBEAStochSorting< EOT, FitnessEval >::setBounds(), and moeoIBEASorting< EOT, Fitness >::setBounds(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryQualityIndicator.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryQualityIndicator.png new file mode 100644 index 000000000..14f128256 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryQualityIndicator.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryQualityIndicator_1_1Range-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryQualityIndicator_1_1Range-members.html new file mode 100644 index 000000000..0b87cd607 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryQualityIndicator_1_1Range-members.html @@ -0,0 +1,44 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoBinaryQualityIndicator< EOFitness >::Range Member List

This is the complete list of members for moeoBinaryQualityIndicator< EOFitness >::Range, including all inherited members.

+ + + + + + + + +
maxmoeoBinaryQualityIndicator< EOFitness >::Range [private]
maximum()moeoBinaryQualityIndicator< EOFitness >::Range [inline]
minmoeoBinaryQualityIndicator< EOFitness >::Range [private]
minimum()moeoBinaryQualityIndicator< EOFitness >::Range [inline]
rmoeoBinaryQualityIndicator< EOFitness >::Range [private]
Range()moeoBinaryQualityIndicator< EOFitness >::Range [inline]
Range(const double _min, const double _max)moeoBinaryQualityIndicator< EOFitness >::Range [inline]
range()moeoBinaryQualityIndicator< EOFitness >::Range [inline]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryQualityIndicator_1_1Range.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryQualityIndicator_1_1Range.html new file mode 100644 index 000000000..7f779ca59 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoBinaryQualityIndicator_1_1Range.html @@ -0,0 +1,81 @@ + + +ParadisEO-MOEO: moeoBinaryQualityIndicator< EOFitness >::Range Class Reference + + + + +
+
+ + +

moeoBinaryQualityIndicator< EOFitness >::Range Class Reference

Private class to represent the bounds. +More... +

+#include <moeoBinaryQualityIndicator.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Range ()
Range (const double _min, const double _max)
+double minimum ()
+double maximum ()
+double range ()

Private Attributes

+double min
+double max
+double r
+


Detailed Description

+

template<class EOFitness>
+ class moeoBinaryQualityIndicator< EOFitness >::Range

+ +Private class to represent the bounds. +

+ +

+Definition at line 62 of file moeoBinaryQualityIndicator.h.


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoCombinedMOLS-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoCombinedMOLS-members.html new file mode 100644 index 000000000..e7a9152e4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoCombinedMOLS-members.html @@ -0,0 +1,41 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoCombinedMOLS< EOT > Member List

This is the complete list of members for moeoCombinedMOLS< EOT >, including all inherited members.

+ + + + + +
add(moeoMOLS< EOT > &_ls)moeoCombinedMOLS< EOT > [inline]
combinedMOLSmoeoCombinedMOLS< EOT > [private]
evalmoeoCombinedMOLS< EOT > [private]
moeoCombinedMOLS(eoEvalFunc< EOT > &_eval, moeoMOLS< EOT > &_first_ls)moeoCombinedMOLS< EOT > [inline]
operator()(const EOT &_eo, moeoArchive< EOT > &_arch)moeoCombinedMOLS< EOT > [inline, virtual]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoCombinedMOLS.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoCombinedMOLS.html new file mode 100644 index 000000000..a7b656846 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoCombinedMOLS.html @@ -0,0 +1,202 @@ + + +ParadisEO-MOEO: moeoCombinedMOLS< EOT > Class Template Reference + + + + +
+
+ +

moeoCombinedMOLS< EOT > Class Template Reference

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. +More... +

+#include <moeoCombinedMOLS.h> +

+

Inheritance diagram for moeoCombinedMOLS< EOT >: +

+ +moeoMOLS< EOT > +eoBF< const EOT &, moeoArchive< EOT > &, void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moeoCombinedMOLS (eoEvalFunc< EOT > &_eval, moeoMOLS< EOT > &_first_ls)
 Ctor.
void add (moeoMOLS< EOT > &_ls)
 Adds a new local search to combine.
void operator() (const EOT &_eo, moeoArchive< EOT > &_arch)
 Gives a new solution in order to explore the neigborhood.

Private Attributes

+eoEvalFunc< EOT > & eval
 the full evaluator of a solution
+std::vector< moeoMOLS< EOT > * > combinedMOLS
 the vector that contains the combined MOLS
+

Detailed Description

+

template<class EOT>
+ class moeoCombinedMOLS< EOT >

+ +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. +

+ +

+Definition at line 24 of file moeoCombinedMOLS.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + +
moeoCombinedMOLS< EOT >::moeoCombinedMOLS (eoEvalFunc< EOT > &  _eval,
moeoMOLS< EOT > &  _first_ls 
) [inline]
+
+
+ +

+Ctor. +

+

Parameters:
+ + + +
_eval the full evaluator of a solution
_first_ls the first multi-objective local search to add
+
+ +

+Definition at line 33 of file moeoCombinedMOLS.h. +

+References moeoCombinedMOLS< EOT >::combinedMOLS. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
void moeoCombinedMOLS< EOT >::add (moeoMOLS< EOT > &  _ls  )  [inline]
+
+
+ +

+Adds a new local search to combine. +

+

Parameters:
+ + +
_ls the multi-objective local search to add
+
+ +

+Definition at line 43 of file moeoCombinedMOLS.h. +

+References moeoCombinedMOLS< EOT >::combinedMOLS. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + +
void moeoCombinedMOLS< EOT >::operator() (const EOT &  _eo,
moeoArchive< EOT > &  _arch 
) [inline, virtual]
+
+
+ +

+Gives a new solution in order to explore the neigborhood. +

+The new non-dominated solutions are added to the archive

Parameters:
+ + + +
_eo the solution
_arch the archive of non-dominated solutions
+
+ +

+Implements eoBF< const EOT &, moeoArchive< EOT > &, void >. +

+Definition at line 54 of file moeoCombinedMOLS.h. +

+References moeoCombinedMOLS< EOT >::combinedMOLS, and moeoCombinedMOLS< EOT >::eval. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoCombinedMOLS.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoCombinedMOLS.png new file mode 100644 index 000000000..26f6e97e6 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoCombinedMOLS.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoContributionMetric-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoContributionMetric-members.html new file mode 100644 index 000000000..25eed64f6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoContributionMetric-members.html @@ -0,0 +1,41 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoContributionMetric< EOT > Member List

This is the complete list of members for moeoContributionMetric< EOT >, including all inherited members.

+ + + + + +
card_C(const std::vector< EOFitness > &_set1, const std::vector< EOFitness > &_set2)moeoContributionMetric< EOT > [inline, private]
card_N(const std::vector< EOFitness > &_set1, const std::vector< EOFitness > &_set2)moeoContributionMetric< EOT > [inline, private]
card_W(const std::vector< EOFitness > &_set1, const std::vector< EOFitness > &_set2)moeoContributionMetric< EOT > [inline, private]
EOFitness typedefmoeoContributionMetric< EOT >
operator()(const std::vector< EOFitness > &_set1, const std::vector< EOFitness > &_set2)moeoContributionMetric< EOT > [inline]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoContributionMetric.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoContributionMetric.html new file mode 100644 index 000000000..fe670d11e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoContributionMetric.html @@ -0,0 +1,257 @@ + + +ParadisEO-MOEO: moeoContributionMetric< EOT > Class Template Reference + + + + +
+
+ +

moeoContributionMetric< EOT > Class Template Reference

The contribution metric evaluates the proportion of non-dominated solutions given by a Pareto set relatively to another Pareto set. +More... +

+#include <moeoContributionMetric.h> +

+

Inheritance diagram for moeoContributionMetric< EOT >: +

+ +moeoVectorVsVectorBM< EOT, double > +moeoBM< A1, A2, R > +eoBF< A1, A2, R > +moeoMetric +eoFunctorBase +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef EOT::Fitness EOFitness
 The fitness type of a solution.

Public Member Functions

double operator() (const std::vector< EOFitness > &_set1, const std::vector< EOFitness > &_set2)
 Returns the contribution of the Pareto set '_set1' relatively to the Pareto set '_set2'.

Private Member Functions

unsigned card_C (const std::vector< EOFitness > &_set1, const std::vector< EOFitness > &_set2)
 Returns the number of solutions both in '_set1' and '_set2'.
unsigned card_W (const std::vector< EOFitness > &_set1, const std::vector< EOFitness > &_set2)
 Returns the number of solutions in '_set1' dominating at least one solution of '_set2'.
unsigned card_N (const std::vector< EOFitness > &_set1, const std::vector< EOFitness > &_set2)
 Returns the number of solutions in '_set1' having no relation of dominance with those from '_set2'.
+

Detailed Description

+

template<class EOT>
+ class moeoContributionMetric< EOT >

+ +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) +

+ +

+Definition at line 23 of file moeoContributionMetric.h.


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + +
double moeoContributionMetric< EOT >::operator() (const std::vector< EOFitness > &  _set1,
const std::vector< EOFitness > &  _set2 
) [inline]
+
+
+ +

+Returns the contribution of the Pareto set '_set1' relatively to the Pareto set '_set2'. +

+

Parameters:
+ + + +
_set1 the first Pareto set
_set2 the second Pareto set
+
+ +

+Definition at line 38 of file moeoContributionMetric.h. +

+References moeoContributionMetric< EOT >::card_C(), moeoContributionMetric< EOT >::card_N(), and moeoContributionMetric< EOT >::card_W(). +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + +
unsigned moeoContributionMetric< EOT >::card_C (const std::vector< EOFitness > &  _set1,
const std::vector< EOFitness > &  _set2 
) [inline, private]
+
+
+ +

+Returns the number of solutions both in '_set1' and '_set2'. +

+

Parameters:
+ + + +
_set1 the first Pareto set
_set2 the second Pareto set
+
+ +

+Definition at line 57 of file moeoContributionMetric.h. +

+Referenced by moeoContributionMetric< EOT >::operator()(). +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + +
unsigned moeoContributionMetric< EOT >::card_W (const std::vector< EOFitness > &  _set1,
const std::vector< EOFitness > &  _set2 
) [inline, private]
+
+
+ +

+Returns the number of solutions in '_set1' dominating at least one solution of '_set2'. +

+

Parameters:
+ + + +
_set1 the first Pareto set
_set2 the second Pareto set
+
+ +

+Definition at line 76 of file moeoContributionMetric.h. +

+Referenced by moeoContributionMetric< EOT >::operator()(). +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + +
unsigned moeoContributionMetric< EOT >::card_N (const std::vector< EOFitness > &  _set1,
const std::vector< EOFitness > &  _set2 
) [inline, private]
+
+
+ +

+Returns the number of solutions in '_set1' having no relation of dominance with those from '_set2'. +

+

Parameters:
+ + + +
_set1 the first Pareto set
_set2 the second Pareto set
+
+ +

+Definition at line 95 of file moeoContributionMetric.h. +

+Referenced by moeoContributionMetric< EOT >::operator()(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoContributionMetric.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoContributionMetric.png new file mode 100644 index 000000000..5ba0e67df Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoContributionMetric.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoDisctinctElitistReplacement-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoDisctinctElitistReplacement-members.html new file mode 100644 index 000000000..fec803f16 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoDisctinctElitistReplacement-members.html @@ -0,0 +1,40 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoDisctinctElitistReplacement< EOT, WorthT > Member List

This is the complete list of members for moeoDisctinctElitistReplacement< EOT, WorthT >, including all inherited members.

+ + + + +
createNewPop(eoPop< EOT > &_pop, unsigned _size)moeoDisctinctElitistReplacement< EOT, WorthT > [inline, private]
moeoDisctinctElitistReplacement(eoPerf2Worth< EOT, WorthT > &_perf2worth)moeoDisctinctElitistReplacement< EOT, WorthT > [inline]
operator()(eoPop< EOT > &_parents, eoPop< EOT > &_offspring)moeoDisctinctElitistReplacement< EOT, WorthT > [inline, virtual]
perf2worthmoeoDisctinctElitistReplacement< EOT, WorthT > [private]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoDisctinctElitistReplacement.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoDisctinctElitistReplacement.html new file mode 100644 index 000000000..03c660892 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoDisctinctElitistReplacement.html @@ -0,0 +1,200 @@ + + +ParadisEO-MOEO: moeoDisctinctElitistReplacement< EOT, WorthT > Class Template Reference + + + + +
+
+ +

moeoDisctinctElitistReplacement< EOT, WorthT > Class Template Reference

Same than moeoElitistReplacement except that distinct individuals are privilegied. +More... +

+#include <moeoReplacement.h> +

+

Inheritance diagram for moeoDisctinctElitistReplacement< EOT, WorthT >: +

+ +moeoReplacement< EOT, WorthT > +eoReplacement< EOT > +eoBF< eoPop< EOT > &, eoPop< EOT > &, void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + +

Public Member Functions

 moeoDisctinctElitistReplacement (eoPerf2Worth< EOT, WorthT > &_perf2worth)
 constructor
void operator() (eoPop< EOT > &_parents, eoPop< EOT > &_offspring)
 replacement - result in _parents

Private Member Functions

void createNewPop (eoPop< EOT > &_pop, unsigned _size)
 creation of the new population of size _size

Private Attributes

+eoPerf2Worth< EOT, WorthT > & perf2worth
 the functor object to transform raw fitnesses into fitness for selection
+

Detailed Description

+

template<class EOT, class WorthT = double>
+ class moeoDisctinctElitistReplacement< EOT, WorthT >

+ +Same than moeoElitistReplacement except that distinct individuals are privilegied. +

+ +

+Definition at line 78 of file moeoReplacement.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT, class WorthT = double>
+ + + + + + + + + +
moeoDisctinctElitistReplacement< EOT, WorthT >::moeoDisctinctElitistReplacement (eoPerf2Worth< EOT, WorthT > &  _perf2worth  )  [inline]
+
+
+ +

+constructor +

+

Parameters:
+ + +
_perf2worth the functor class to transform raw fitnesses into fitness for selection
+
+ +

+Definition at line 87 of file moeoReplacement.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT, class WorthT = double>
+ + + + + + + + + + + + + + + + + + +
void moeoDisctinctElitistReplacement< EOT, WorthT >::operator() (eoPop< EOT > &  _parents,
eoPop< EOT > &  _offspring 
) [inline, virtual]
+
+
+ +

+replacement - result in _parents +

+

Parameters:
+ + + +
_parents parents population
_offspring offspring population
+
+ +

+Implements eoBF< eoPop< EOT > &, eoPop< EOT > &, void >. +

+Definition at line 99 of file moeoReplacement.h. +

+References moeoDisctinctElitistReplacement< EOT, WorthT >::createNewPop(). +

+

+ +

+
+
+template<class EOT, class WorthT = double>
+ + + + + + + + + + + + + + + + + + +
void moeoDisctinctElitistReplacement< EOT, WorthT >::createNewPop (eoPop< EOT > &  _pop,
unsigned  _size 
) [inline, private]
+
+
+ +

+creation of the new population of size _size +

+

Parameters:
+ + + +
_pop the initial population (will be modified)
_size the size of the population to create
+
+ +

+Definition at line 123 of file moeoReplacement.h. +

+References moeoDisctinctElitistReplacement< EOT, WorthT >::perf2worth, and eoPop< EOT >::swap(). +

+Referenced by moeoDisctinctElitistReplacement< EOT, WorthT >::operator()(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoDisctinctElitistReplacement.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoDisctinctElitistReplacement.png new file mode 100644 index 000000000..3848ed8dc Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoDisctinctElitistReplacement.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoElitistReplacement-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoElitistReplacement-members.html new file mode 100644 index 000000000..2709e535a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoElitistReplacement-members.html @@ -0,0 +1,39 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoElitistReplacement< EOT, WorthT > Member List

This is the complete list of members for moeoElitistReplacement< EOT, WorthT >, including all inherited members.

+ + + +
moeoElitistReplacement(eoPerf2Worth< EOT, WorthT > &_perf2worth)moeoElitistReplacement< EOT, WorthT > [inline]
operator()(eoPop< EOT > &_parents, eoPop< EOT > &_offspring)moeoElitistReplacement< EOT, WorthT > [inline, virtual]
perf2worthmoeoElitistReplacement< EOT, WorthT > [private]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoElitistReplacement.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoElitistReplacement.html new file mode 100644 index 000000000..3426d034a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoElitistReplacement.html @@ -0,0 +1,149 @@ + + +ParadisEO-MOEO: moeoElitistReplacement< EOT, WorthT > Class Template Reference + + + + +
+
+ +

moeoElitistReplacement< EOT, WorthT > Class Template Reference

Keep all the best individuals (almost cut-and-pasted from eoNDPlusReplacement, (c) Maarten Keijzer, Marc Schoenauer and GeNeura Team, 2002). +More... +

+#include <moeoReplacement.h> +

+

Inheritance diagram for moeoElitistReplacement< EOT, WorthT >: +

+ +moeoReplacement< EOT, WorthT > +eoReplacement< EOT > +eoBF< eoPop< EOT > &, eoPop< EOT > &, void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + +

Public Member Functions

 moeoElitistReplacement (eoPerf2Worth< EOT, WorthT > &_perf2worth)
 constructor
void operator() (eoPop< EOT > &_parents, eoPop< EOT > &_offspring)
 replacement - result in _parents

Private Attributes

+eoPerf2Worth< EOT, WorthT > & perf2worth
 the functor object to transform raw fitnesses into fitness for selection
+

Detailed Description

+

template<class EOT, class WorthT = double>
+ class moeoElitistReplacement< EOT, WorthT >

+ +Keep all the best individuals (almost cut-and-pasted from eoNDPlusReplacement, (c) Maarten Keijzer, Marc Schoenauer and GeNeura Team, 2002). +

+ +

+Definition at line 35 of file moeoReplacement.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT, class WorthT = double>
+ + + + + + + + + +
moeoElitistReplacement< EOT, WorthT >::moeoElitistReplacement (eoPerf2Worth< EOT, WorthT > &  _perf2worth  )  [inline]
+
+
+ +

+constructor +

+

Parameters:
+ + +
_perf2worth the functor class to transform raw fitnesses into fitness for selection
+
+ +

+Definition at line 43 of file moeoReplacement.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT, class WorthT = double>
+ + + + + + + + + + + + + + + + + + +
void moeoElitistReplacement< EOT, WorthT >::operator() (eoPop< EOT > &  _parents,
eoPop< EOT > &  _offspring 
) [inline, virtual]
+
+
+ +

+replacement - result in _parents +

+

Parameters:
+ + + +
_parents parents population
_offspring offspring population
+
+ +

+Implements eoBF< eoPop< EOT > &, eoPop< EOT > &, void >. +

+Definition at line 54 of file moeoReplacement.h. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoElitistReplacement.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoElitistReplacement.png new file mode 100644 index 000000000..b12d591f6 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoElitistReplacement.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoEntropyMetric-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoEntropyMetric-members.html new file mode 100644 index 000000000..1fa6541da --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoEntropyMetric-members.html @@ -0,0 +1,46 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoEntropyMetric< EOT > Member List

This is the complete list of members for moeoEntropyMetric< EOT >, including all inherited members.

+ + + + + + + + + + +
computeUnion(const std::vector< EOFitness > &_f1, const std::vector< EOFitness > &_f2, std::vector< EOFitness > &_f)moeoEntropyMetric< EOT > [inline, private]
EOFitness typedefmoeoEntropyMetric< EOT >
euclidianDistance(const EOFitness &_set1, const EOFitness &_to, unsigned _deg=2)moeoEntropyMetric< EOT > [inline, private]
howManyInNicheOf(const std::vector< EOFitness > &_f, const EOFitness &_s, unsigned _size)moeoEntropyMetric< EOT > [inline, private]
normalize(std::vector< EOFitness > &_f)moeoEntropyMetric< EOT > [inline, private]
operator()(const std::vector< EOFitness > &_set1, const std::vector< EOFitness > &_set2)moeoEntropyMetric< EOT > [inline]
prenormalize(const std::vector< EOFitness > &_f)moeoEntropyMetric< EOT > [inline, private]
removeDominated(std::vector< EOFitness > &_f)moeoEntropyMetric< EOT > [inline, private]
vect_max_valmoeoEntropyMetric< EOT > [private]
vect_min_valmoeoEntropyMetric< EOT > [private]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoEntropyMetric.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoEntropyMetric.html new file mode 100644 index 000000000..39b285320 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoEntropyMetric.html @@ -0,0 +1,144 @@ + + +ParadisEO-MOEO: moeoEntropyMetric< EOT > Class Template Reference + + + + +
+
+ +

moeoEntropyMetric< EOT > Class Template Reference

The entropy gives an idea of the diversity of a Pareto set relatively to another Pareto set. +More... +

+#include <moeoEntropyMetric.h> +

+

Inheritance diagram for moeoEntropyMetric< EOT >: +

+ +moeoVectorVsVectorBM< EOT, double > +moeoBM< A1, A2, R > +eoBF< A1, A2, R > +moeoMetric +eoFunctorBase +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef EOT::Fitness EOFitness
 The fitness type of a solution.

Public Member Functions

double operator() (const std::vector< EOFitness > &_set1, const std::vector< EOFitness > &_set2)
 Returns the entropy of the Pareto set '_set1' relatively to the Pareto set '_set2'.

Private Member Functions

+void removeDominated (std::vector< EOFitness > &_f)
+void prenormalize (const std::vector< EOFitness > &_f)
+void normalize (std::vector< EOFitness > &_f)
+void computeUnion (const std::vector< EOFitness > &_f1, const std::vector< EOFitness > &_f2, std::vector< EOFitness > &_f)
+unsigned howManyInNicheOf (const std::vector< EOFitness > &_f, const EOFitness &_s, unsigned _size)
+double euclidianDistance (const EOFitness &_set1, const EOFitness &_to, unsigned _deg=2)

Private Attributes

+std::vector< double > vect_min_val
+std::vector< double > vect_max_val
+

Detailed Description

+

template<class EOT>
+ class moeoEntropyMetric< EOT >

+ +The entropy gives an idea of the diversity of a Pareto set relatively to another Pareto set. +

+(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) +

+ +

+Definition at line 23 of file moeoEntropyMetric.h.


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + +
double moeoEntropyMetric< EOT >::operator() (const std::vector< EOFitness > &  _set1,
const std::vector< EOFitness > &  _set2 
) [inline]
+
+
+ +

+Returns the entropy of the Pareto set '_set1' relatively to the Pareto set '_set2'. +

+

Parameters:
+ + + +
_set1 the first Pareto set
_set2 the second Pareto set
+
+ +

+Definition at line 38 of file moeoEntropyMetric.h. +

+References moeoEntropyMetric< EOT >::computeUnion(), moeoEntropyMetric< EOT >::howManyInNicheOf(), moeoEntropyMetric< EOT >::normalize(), moeoEntropyMetric< EOT >::prenormalize(), and moeoEntropyMetric< EOT >::removeDominated(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoEntropyMetric.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoEntropyMetric.png new file mode 100644 index 000000000..bcc3bdbfd Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoEntropyMetric.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoHybridMOLS-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoHybridMOLS-members.html new file mode 100644 index 000000000..bf2af2d7b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoHybridMOLS-members.html @@ -0,0 +1,48 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoHybridMOLS< EOT > Member List

This is the complete list of members for moeoHybridMOLS< EOT >, including all inherited members.

+ + + + + + + + + + + + +
archmoeoHybridMOLS< EOT > [private]
className(void) consteoUpdater [virtual]
eoHybridMOLS(eoContinue< EOT > &_term, eoSelect< EOT > &_select, moeoMOLS< EOT > &_mols, moeoArchive< EOT > &_arch)moeoHybridMOLS< EOT > [inline]
functor_category()eoF< void > [static]
lastCall()eoUpdater [virtual]
molsmoeoHybridMOLS< EOT > [private]
operator()()moeoHybridMOLS< EOT > [inline, virtual]
result_type typedefeoF< void >
selectmoeoHybridMOLS< EOT > [private]
termmoeoHybridMOLS< EOT > [private]
~eoF()eoF< void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoHybridMOLS.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoHybridMOLS.html new file mode 100644 index 000000000..6d6016f44 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoHybridMOLS.html @@ -0,0 +1,141 @@ + + +ParadisEO-MOEO: moeoHybridMOLS< EOT > Class Template Reference + + + + +
+
+ +

moeoHybridMOLS< EOT > Class Template Reference

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. +More... +

+#include <moeoHybridMOLS.h> +

+

Inheritance diagram for moeoHybridMOLS< EOT >: +

+ +eoUpdater +eoF< void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 eoHybridMOLS (eoContinue< EOT > &_term, eoSelect< EOT > &_select, moeoMOLS< EOT > &_mols, moeoArchive< EOT > &_arch)
 Ctor.
+void operator() ()
 Applies the multi-objective local search to selected individuals contained in the archive if the stopping criteria is not verified.

Private Attributes

+eoContinue< EOT > & term
 stopping criteria
+eoSelect< EOT > & select
 selector
+moeoMOLS< EOT > & mols
 multi-objective local search
+moeoArchive< EOT > & arch
 archive
+

Detailed Description

+

template<class EOT>
+ class moeoHybridMOLS< EOT >

+ +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. +

+ +

+Definition at line 27 of file moeoHybridMOLS.h.


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moeoHybridMOLS< EOT >::eoHybridMOLS (eoContinue< EOT > &  _term,
eoSelect< EOT > &  _select,
moeoMOLS< EOT > &  _mols,
moeoArchive< EOT > &  _arch 
) [inline]
+
+
+ +

+Ctor. +

+

Parameters:
+ + + + + +
_term stopping criteria
_select selector
_mols a multi-objective local search
_arch the archive
+
+ +

+Definition at line 38 of file moeoHybridMOLS.h. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoHybridMOLS.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoHybridMOLS.png new file mode 100644 index 000000000..134f540d4 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoHybridMOLS.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEA-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEA-members.html new file mode 100644 index 000000000..f3753e18d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEA-members.html @@ -0,0 +1,65 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoIBEA< EOT, Fitness > Member List

This is the complete list of members for moeoIBEA< EOT, Fitness >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
calculate_worths(const eoPop< EOT > &_pop)moeoIBEA< EOT, Fitness > [inline, virtual]
defValue() consteoParam
defValue(const std::string &str)eoParam
description() consteoParam
eoParam()eoParam
eoParam(std::string _longName, std::string _default, std::string _description, char _shortName=0, bool _required=false)eoParam
eoPerf2Worth(std::string _description="Worths")eoPerf2Worth< EOT, WorthT >
eoPerf2WorthCached(std::string _description="Worths")eoPerf2WorthCached< EOT, double >
eoValueParam(void)eoValueParam< std::vector< WorthT > >
eoValueParam(std::vector< WorthT >_defaultValue, std::string _longName, std::string _description="No description", char _shortHand=0, bool _required=false)eoValueParam< std::vector< WorthT > >
functor_category()eoUF< const eoPop< EOT > &, void > [static]
getValue(void) consteoValueParam< std::vector< WorthT > > [virtual]
ImoeoIBEA< EOT, Fitness > [protected]
longName() consteoParam
moeoIBEA(moeoBinaryQualityIndicator< Fitness > *_I)moeoIBEA< EOT, Fitness > [inline]
operator()(const eoPop< EOT > &_pop)eoPerf2WorthCached< EOT, double > [virtual]
eoPerf2Worth::operator()(eoPop< EOT > &_pop)eoPerf2Worth< EOT, WorthT > [virtual]
repValueeoValueParam< std::vector< WorthT > > [protected]
required() consteoParam
resize(eoPop< EOT > &_pop, unsigned sz)eoPerf2WorthCached< EOT, double > [virtual]
setLongName(std::string _longName)eoParam
setValue(const std::string &_value)eoValueParam< std::vector< WorthT > > [virtual]
shortName() consteoParam
sort_pop(eoPop< EOT > &_pop)eoPerf2WorthCached< EOT, double > [virtual]
value()eoValueParam< std::vector< WorthT > >
value() consteoValueParam< std::vector< WorthT > >
~eoFunctorBase()eoFunctorBase [virtual]
~eoParam()eoParam [virtual]
~eoUF()eoUF< const eoPop< EOT > &, void > [virtual]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEA.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEA.html new file mode 100644 index 000000000..959005c10 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEA.html @@ -0,0 +1,111 @@ + + +ParadisEO-MOEO: moeoIBEA< EOT, Fitness > Class Template Reference + + + + +
+
+ +

moeoIBEA< EOT, Fitness > Class Template Reference

Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm). +More... +

+#include <moeoIBEA.h> +

+

Inheritance diagram for moeoIBEA< EOT, Fitness >: +

+ +eoPerf2WorthCached< EOT, double > +eoPerf2Worth< EOT, WorthT > +eoUF< const eoPop< EOT > &, void > +eoValueParam< std::vector< WorthT > > +eoFunctorBase +eoParam +moeoIBEASorting< EOT, Fitness > + +List of all members. + + + + + + + + + + + +

Public Member Functions

moeoIBEA (moeoBinaryQualityIndicator< Fitness > *_I)
void calculate_worths (const eoPop< EOT > &_pop)
 mapping

Protected Attributes

+moeoBinaryQualityIndicator<
+ Fitness > * 
I
 binary quality indicator to use in the selection process
+

Detailed Description

+

template<class EOT, class Fitness>
+ class moeoIBEA< EOT, Fitness >

+ +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm). +

+ +

+Definition at line 28 of file moeoIBEA.h.


Member Function Documentation

+ +
+
+
+template<class EOT, class Fitness>
+ + + + + + + + + +
void moeoIBEA< EOT, Fitness >::calculate_worths (const eoPop< EOT > &  _pop  )  [inline, virtual]
+
+
+ +

+mapping +

+

Parameters:
+ + +
const eoPop<EOT>& _pop the population
+
+ +

+Implements eoPerf2WorthCached< EOT, double >. +

+Definition at line 46 of file moeoIBEA.h. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEA.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEA.png new file mode 100644 index 000000000..2c0c9137b Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEA.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEAAvgSorting-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEAAvgSorting-members.html new file mode 100644 index 000000000..01daac187 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEAAvgSorting-members.html @@ -0,0 +1,69 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoIBEAAvgSorting< EOT, FitnessEval > Member List

This is the complete list of members for moeoIBEAAvgSorting< EOT, FitnessEval >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
calculate_worths(const eoPop< EOT > &_pop)moeoIBEA< EOT, FitnessEval > [inline, virtual]
defValue() consteoParam
defValue(const std::string &str)eoParam
description() consteoParam
eoParam()eoParam
eoParam(std::string _longName, std::string _default, std::string _description, char _shortName=0, bool _required=false)eoParam
eoPerf2Worth(std::string _description="Worths")eoPerf2Worth< EOT, WorthT >
eoPerf2WorthCached(std::string _description="Worths")eoPerf2WorthCached< EOT, double >
eoValueParam(void)eoValueParam< std::vector< WorthT > >
eoValueParam(std::vector< WorthT >_defaultValue, std::string _longName, std::string _description="No description", char _shortHand=0, bool _required=false)eoValueParam< std::vector< WorthT > >
fitnesses(const eoPop< EOT > &_pop)moeoIBEAAvgSorting< EOT, FitnessEval > [inline, private, virtual]
functor_category()eoUF< const eoPop< EOT > &, void > [static]
getValue(void) consteoValueParam< std::vector< WorthT > > [virtual]
ImoeoIBEA< EOT, FitnessEval > [protected]
kappamoeoIBEAAvgSorting< EOT, FitnessEval > [private]
longName() consteoParam
moeoIBEA(moeoBinaryQualityIndicator< FitnessEval > *_I)moeoIBEA< EOT, FitnessEval > [inline]
moeoIBEAAvgSorting(moeoBinaryQualityIndicator< FitnessEval > *_I, const double _kappa)moeoIBEAAvgSorting< EOT, FitnessEval > [inline]
operator()(const eoPop< EOT > &_pop)eoPerf2WorthCached< EOT, double > [virtual]
eoPerf2Worth::operator()(eoPop< EOT > &_pop)eoPerf2Worth< EOT, WorthT > [virtual]
repValueeoValueParam< std::vector< WorthT > > [protected]
required() consteoParam
resize(eoPop< EOT > &_pop, unsigned sz)eoPerf2WorthCached< EOT, double > [virtual]
setBounds(const eoPop< EOT > &_pop)moeoIBEAAvgSorting< EOT, FitnessEval > [inline, private, virtual]
setLongName(std::string _longName)eoParam
setValue(const std::string &_value)eoValueParam< std::vector< WorthT > > [virtual]
shortName() consteoParam
sort_pop(eoPop< EOT > &_pop)eoPerf2WorthCached< EOT, double > [virtual]
value()eoValueParam< std::vector< WorthT > >
value() consteoValueParam< std::vector< WorthT > >
~eoFunctorBase()eoFunctorBase [virtual]
~eoParam()eoParam [virtual]
~eoUF()eoUF< const eoPop< EOT > &, void > [virtual]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEAAvgSorting.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEAAvgSorting.html new file mode 100644 index 000000000..8cb8c716b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEAAvgSorting.html @@ -0,0 +1,195 @@ + + +ParadisEO-MOEO: moeoIBEAAvgSorting< EOT, FitnessEval > Class Template Reference + + + + +
+
+ +

moeoIBEAAvgSorting< EOT, FitnessEval > Class Template Reference

Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty using averaged values for each objective Follow the idea presented in the Deb & Gupta paper "Searching for Robust Pareto-Optimal Solutions in Multi-Objective Optimization", 2005 Of course, the fitness of an individual needs to be an eoStochasticParetoFitness object. +More... +

+#include <moeoIBEA.h> +

+

Inheritance diagram for moeoIBEAAvgSorting< EOT, FitnessEval >: +

+ +moeoIBEA< EOT, FitnessEval > +eoPerf2WorthCached< EOT, double > +eoPerf2Worth< EOT, WorthT > +eoUF< const eoPop< EOT > &, void > +eoValueParam< std::vector< WorthT > > +eoFunctorBase +eoParam + +List of all members. + + + + + + + + + + + + + + + + +

Public Member Functions

 moeoIBEAAvgSorting (moeoBinaryQualityIndicator< FitnessEval > *_I, const double _kappa)
 constructor

Private Member Functions

void setBounds (const eoPop< EOT > &_pop)
 computation and setting of the bounds for each objective
void fitnesses (const eoPop< EOT > &_pop)
 computation and setting of the fitness for each individual of the population

Private Attributes

+double kappa
 scaling factor kappa
+

Detailed Description

+

template<class EOT, class FitnessEval = typename EOT::Fitness::FitnessEval>
+ class moeoIBEAAvgSorting< EOT, FitnessEval >

+ +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty using averaged values for each objective Follow the idea presented in the Deb & Gupta paper "Searching for Robust Pareto-Optimal Solutions in Multi-Objective Optimization", 2005 Of course, the fitness of an individual needs to be an eoStochasticParetoFitness object. +

+ +

+Definition at line 361 of file moeoIBEA.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT, class FitnessEval = typename EOT::Fitness::FitnessEval>
+ + + + + + + + + + + + + + + + + + +
moeoIBEAAvgSorting< EOT, FitnessEval >::moeoIBEAAvgSorting (moeoBinaryQualityIndicator< FitnessEval > *  _I,
const double  _kappa 
) [inline]
+
+
+ +

+constructor +

+

Parameters:
+ + + +
eoBinaryQualityIndicator<EOT>* _I the binary quality indicator to use in the selection process
double _kappa scaling factor kappa
+
+ +

+Definition at line 373 of file moeoIBEA.h. +

+References moeoIBEAAvgSorting< EOT, FitnessEval >::kappa. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT, class FitnessEval = typename EOT::Fitness::FitnessEval>
+ + + + + + + + + +
void moeoIBEAAvgSorting< EOT, FitnessEval >::setBounds (const eoPop< EOT > &  _pop  )  [inline, private, virtual]
+
+
+ +

+computation and setting of the bounds for each objective +

+

Parameters:
+ + +
const eoPop<EOT>& _pop the population
+
+ +

+Implements moeoIBEA< EOT, FitnessEval >. +

+Definition at line 398 of file moeoIBEA.h. +

+References moeoIBEA< EOT, FitnessEval >::I, and moeoBinaryQualityIndicator< EOFitness >::setBounds(). +

+

+ +

+
+
+template<class EOT, class FitnessEval = typename EOT::Fitness::FitnessEval>
+ + + + + + + + + +
void moeoIBEAAvgSorting< EOT, FitnessEval >::fitnesses (const eoPop< EOT > &  _pop  )  [inline, private, virtual]
+
+
+ +

+computation and setting of the fitness for each individual of the population +

+

Parameters:
+ + +
const eoPop<EOT>& _pop the population
+
+ +

+Implements moeoIBEA< EOT, FitnessEval >. +

+Definition at line 431 of file moeoIBEA.h. +

+References moeoIBEAAvgSorting< EOT, FitnessEval >::kappa, and eoValueParam< std::vector< WorthT > >::value(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEAAvgSorting.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEAAvgSorting.png new file mode 100644 index 000000000..865d40459 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEAAvgSorting.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEASorting-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEASorting-members.html new file mode 100644 index 000000000..8ad870dcc --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEASorting-members.html @@ -0,0 +1,69 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoIBEASorting< EOT, Fitness > Member List

This is the complete list of members for moeoIBEASorting< EOT, Fitness >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
calculate_worths(const eoPop< EOT > &_pop)moeoIBEA< EOT, Fitness > [inline, virtual]
defValue() consteoParam
defValue(const std::string &str)eoParam
description() consteoParam
eoParam()eoParam
eoParam(std::string _longName, std::string _default, std::string _description, char _shortName=0, bool _required=false)eoParam
eoPerf2Worth(std::string _description="Worths")eoPerf2Worth< EOT, WorthT >
eoPerf2WorthCached(std::string _description="Worths")eoPerf2WorthCached< EOT, double >
eoValueParam(void)eoValueParam< std::vector< WorthT > >
eoValueParam(std::vector< WorthT >_defaultValue, std::string _longName, std::string _description="No description", char _shortHand=0, bool _required=false)eoValueParam< std::vector< WorthT > >
fitnesses(const eoPop< EOT > &_pop)moeoIBEASorting< EOT, Fitness > [inline, private, virtual]
functor_category()eoUF< const eoPop< EOT > &, void > [static]
getValue(void) consteoValueParam< std::vector< WorthT > > [virtual]
ImoeoIBEA< EOT, Fitness > [protected]
kappamoeoIBEASorting< EOT, Fitness > [private]
longName() consteoParam
moeoIBEA(moeoBinaryQualityIndicator< Fitness > *_I)moeoIBEA< EOT, Fitness > [inline]
moeoIBEASorting(moeoBinaryQualityIndicator< Fitness > *_I, const double _kappa)moeoIBEASorting< EOT, Fitness > [inline]
operator()(const eoPop< EOT > &_pop)eoPerf2WorthCached< EOT, double > [virtual]
eoPerf2Worth::operator()(eoPop< EOT > &_pop)eoPerf2Worth< EOT, WorthT > [virtual]
repValueeoValueParam< std::vector< WorthT > > [protected]
required() consteoParam
resize(eoPop< EOT > &_pop, unsigned sz)eoPerf2WorthCached< EOT, double > [virtual]
setBounds(const eoPop< EOT > &_pop)moeoIBEASorting< EOT, Fitness > [inline, private, virtual]
setLongName(std::string _longName)eoParam
setValue(const std::string &_value)eoValueParam< std::vector< WorthT > > [virtual]
shortName() consteoParam
sort_pop(eoPop< EOT > &_pop)eoPerf2WorthCached< EOT, double > [virtual]
value()eoValueParam< std::vector< WorthT > >
value() consteoValueParam< std::vector< WorthT > >
~eoFunctorBase()eoFunctorBase [virtual]
~eoParam()eoParam [virtual]
~eoUF()eoUF< const eoPop< EOT > &, void > [virtual]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEASorting.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEASorting.html new file mode 100644 index 000000000..eb95714db --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEASorting.html @@ -0,0 +1,195 @@ + + +ParadisEO-MOEO: moeoIBEASorting< EOT, Fitness > Class Template Reference + + + + +
+
+ +

moeoIBEASorting< EOT, Fitness > Class Template Reference

Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) without uncertainty Adapted from the Zitzler and Künzli paper "Indicator-Based Selection in Multiobjective Search" (2004) Of course, Fitness needs to be an eoParetoFitness object. +More... +

+#include <moeoIBEA.h> +

+

Inheritance diagram for moeoIBEASorting< EOT, Fitness >: +

+ +moeoIBEA< EOT, Fitness > +eoPerf2WorthCached< EOT, double > +eoPerf2Worth< EOT, WorthT > +eoUF< const eoPop< EOT > &, void > +eoValueParam< std::vector< WorthT > > +eoFunctorBase +eoParam + +List of all members. + + + + + + + + + + + + + + + + +

Public Member Functions

 moeoIBEASorting (moeoBinaryQualityIndicator< Fitness > *_I, const double _kappa)
 constructor

Private Member Functions

void setBounds (const eoPop< EOT > &_pop)
 computation and setting of the bounds for each objective
void fitnesses (const eoPop< EOT > &_pop)
 computation and setting of the fitness for each individual of the population

Private Attributes

+double kappa
 scaling factor kappa
+

Detailed Description

+

template<class EOT, class Fitness = typename EOT::Fitness>
+ class moeoIBEASorting< EOT, Fitness >

+ +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) without uncertainty Adapted from the Zitzler and Künzli paper "Indicator-Based Selection in Multiobjective Search" (2004) Of course, Fitness needs to be an eoParetoFitness object. +

+ +

+Definition at line 84 of file moeoIBEA.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT, class Fitness = typename EOT::Fitness>
+ + + + + + + + + + + + + + + + + + +
moeoIBEASorting< EOT, Fitness >::moeoIBEASorting (moeoBinaryQualityIndicator< Fitness > *  _I,
const double  _kappa 
) [inline]
+
+
+ +

+constructor +

+

Parameters:
+ + + +
eoBinaryQualityIndicator<EOT>* _I the binary quality indicator to use in the selection process
double _kappa scaling factor kappa
+
+ +

+Definition at line 96 of file moeoIBEA.h. +

+References moeoIBEASorting< EOT, Fitness >::kappa. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT, class Fitness = typename EOT::Fitness>
+ + + + + + + + + +
void moeoIBEASorting< EOT, Fitness >::setBounds (const eoPop< EOT > &  _pop  )  [inline, private, virtual]
+
+
+ +

+computation and setting of the bounds for each objective +

+

Parameters:
+ + +
const eoPop<EOT>& _pop the population
+
+ +

+Implements moeoIBEA< EOT, Fitness >. +

+Definition at line 121 of file moeoIBEA.h. +

+References moeoIBEA< EOT, Fitness >::I, and moeoBinaryQualityIndicator< EOFitness >::setBounds(). +

+

+ +

+
+
+template<class EOT, class Fitness = typename EOT::Fitness>
+ + + + + + + + + +
void moeoIBEASorting< EOT, Fitness >::fitnesses (const eoPop< EOT > &  _pop  )  [inline, private, virtual]
+
+
+ +

+computation and setting of the fitness for each individual of the population +

+

Parameters:
+ + +
const eoPop<EOT>& _pop the population
+
+ +

+Implements moeoIBEA< EOT, Fitness >. +

+Definition at line 150 of file moeoIBEA.h. +

+References moeoIBEASorting< EOT, Fitness >::kappa, and eoValueParam< std::vector< WorthT > >::value(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEASorting.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEASorting.png new file mode 100644 index 000000000..a3fac48f0 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEASorting.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEAStochSorting-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEAStochSorting-members.html new file mode 100644 index 000000000..c6e3db6f4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEAStochSorting-members.html @@ -0,0 +1,69 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoIBEAStochSorting< EOT, FitnessEval > Member List

This is the complete list of members for moeoIBEAStochSorting< EOT, FitnessEval >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
calculate_worths(const eoPop< EOT > &_pop)moeoIBEA< EOT, FitnessEval > [inline, virtual]
defValue() consteoParam
defValue(const std::string &str)eoParam
description() consteoParam
eoParam()eoParam
eoParam(std::string _longName, std::string _default, std::string _description, char _shortName=0, bool _required=false)eoParam
eoPerf2Worth(std::string _description="Worths")eoPerf2Worth< EOT, WorthT >
eoPerf2WorthCached(std::string _description="Worths")eoPerf2WorthCached< EOT, double >
eoValueParam(void)eoValueParam< std::vector< WorthT > >
eoValueParam(std::vector< WorthT >_defaultValue, std::string _longName, std::string _description="No description", char _shortHand=0, bool _required=false)eoValueParam< std::vector< WorthT > >
fitnesses(const eoPop< EOT > &_pop)moeoIBEAStochSorting< EOT, FitnessEval > [inline, private, virtual]
functor_category()eoUF< const eoPop< EOT > &, void > [static]
getValue(void) consteoValueParam< std::vector< WorthT > > [virtual]
ImoeoIBEA< EOT, FitnessEval > [protected]
longName() consteoParam
moeoIBEA(moeoBinaryQualityIndicator< FitnessEval > *_I)moeoIBEA< EOT, FitnessEval > [inline]
moeoIBEAStochSorting(moeoBinaryQualityIndicator< FitnessEval > *_I)moeoIBEAStochSorting< EOT, FitnessEval > [inline]
operator()(const eoPop< EOT > &_pop)eoPerf2WorthCached< EOT, double > [virtual]
eoPerf2Worth::operator()(eoPop< EOT > &_pop)eoPerf2Worth< EOT, WorthT > [virtual]
repValueeoValueParam< std::vector< WorthT > > [protected]
required() consteoParam
resize(eoPop< EOT > &_pop, unsigned sz)eoPerf2WorthCached< EOT, double > [virtual]
setBounds(const eoPop< EOT > &_pop)moeoIBEAStochSorting< EOT, FitnessEval > [inline, private, virtual]
setLongName(std::string _longName)eoParam
setValue(const std::string &_value)eoValueParam< std::vector< WorthT > > [virtual]
shortName() consteoParam
sort_pop(eoPop< EOT > &_pop)eoPerf2WorthCached< EOT, double > [virtual]
value()eoValueParam< std::vector< WorthT > >
value() consteoValueParam< std::vector< WorthT > >
zero()moeoIBEAStochSorting< EOT, FitnessEval > [inline, private, static]
~eoFunctorBase()eoFunctorBase [virtual]
~eoParam()eoParam [virtual]
~eoUF()eoUF< const eoPop< EOT > &, void > [virtual]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEAStochSorting.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEAStochSorting.html new file mode 100644 index 000000000..9647f7961 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEAStochSorting.html @@ -0,0 +1,183 @@ + + +ParadisEO-MOEO: moeoIBEAStochSorting< EOT, FitnessEval > Class Template Reference + + + + +
+
+ +

moeoIBEAStochSorting< EOT, FitnessEval > Class Template Reference

Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty Adapted from the Basseur and Zitzler paper "Handling Uncertainty in Indicator-Based Multiobjective Optimization" (2006) Of course, the fitness of an individual needs to be an eoStochasticParetoFitness object. +More... +

+#include <moeoIBEA.h> +

+

Inheritance diagram for moeoIBEAStochSorting< EOT, FitnessEval >: +

+ +moeoIBEA< EOT, FitnessEval > +eoPerf2WorthCached< EOT, double > +eoPerf2Worth< EOT, WorthT > +eoUF< const eoPop< EOT > &, void > +eoValueParam< std::vector< WorthT > > +eoFunctorBase +eoParam + +List of all members. + + + + + + + + + + + + + + + + +

Public Member Functions

 moeoIBEAStochSorting (moeoBinaryQualityIndicator< FitnessEval > *_I)
 constructor

Private Member Functions

void setBounds (const eoPop< EOT > &_pop)
 computation and setting of the bounds for each objective
void fitnesses (const eoPop< EOT > &_pop)
 computation and setting of the fitness for each individual of the population

Static Private Member Functions

+static double zero ()
 approximated zero value
+

Detailed Description

+

template<class EOT, class FitnessEval = typename EOT::Fitness::FitnessEval>
+ class moeoIBEAStochSorting< EOT, FitnessEval >

+ +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty Adapted from the Basseur and Zitzler paper "Handling Uncertainty in Indicator-Based Multiobjective Optimization" (2006) Of course, the fitness of an individual needs to be an eoStochasticParetoFitness object. +

+ +

+Definition at line 203 of file moeoIBEA.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT, class FitnessEval = typename EOT::Fitness::FitnessEval>
+ + + + + + + + + +
moeoIBEAStochSorting< EOT, FitnessEval >::moeoIBEAStochSorting (moeoBinaryQualityIndicator< FitnessEval > *  _I  )  [inline]
+
+
+ +

+constructor +

+

Parameters:
+ + +
eoBinaryQualityIndicator<EOT>* _I the binary quality indicator to use in the selection process
+
+ +

+Definition at line 214 of file moeoIBEA.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT, class FitnessEval = typename EOT::Fitness::FitnessEval>
+ + + + + + + + + +
void moeoIBEAStochSorting< EOT, FitnessEval >::setBounds (const eoPop< EOT > &  _pop  )  [inline, private, virtual]
+
+
+ +

+computation and setting of the bounds for each objective +

+

Parameters:
+ + +
const eoPop<EOT>& _pop the population
+
+ +

+Implements moeoIBEA< EOT, FitnessEval >. +

+Definition at line 243 of file moeoIBEA.h. +

+References moeoIBEA< EOT, FitnessEval >::I, and moeoBinaryQualityIndicator< EOFitness >::setBounds(). +

+

+ +

+
+
+template<class EOT, class FitnessEval = typename EOT::Fitness::FitnessEval>
+ + + + + + + + + +
void moeoIBEAStochSorting< EOT, FitnessEval >::fitnesses (const eoPop< EOT > &  _pop  )  [inline, private, virtual]
+
+
+ +

+computation and setting of the fitness for each individual of the population +

+

Parameters:
+ + +
const eoPop<EOT>& _pop the population
+
+ +

+Implements moeoIBEA< EOT, FitnessEval >. +

+Definition at line 272 of file moeoIBEA.h. +

+References eoValueParam< std::vector< WorthT > >::value(), and moeoIBEAStochSorting< EOT, FitnessEval >::zero(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEAStochSorting.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEAStochSorting.png new file mode 100644 index 000000000..bdd99113f Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoIBEAStochSorting.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoMOLS.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoMOLS.html new file mode 100644 index 000000000..244de8d2b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoMOLS.html @@ -0,0 +1,62 @@ + + +ParadisEO-MOEO: moeoMOLS< EOT > Class Template Reference + + + + +
+
+ +

moeoMOLS< EOT > Class Template Reference

Abstract class for local searches applied to multi-objective optimization. +More... +

+#include <moeoMOLS.h> +

+

Inheritance diagram for moeoMOLS< EOT >: +

+ +eoBF< const EOT &, moeoArchive< EOT > &, void > +eoFunctorBase +moeoCombinedMOLS< EOT > + + + +
+

Detailed Description

+

template<class EOT>
+ class moeoMOLS< EOT >

+ +Abstract class for local searches applied to multi-objective optimization. +

+Starting from only one solution, it produces a set of new non-dominated solutions. +

+ +

+Definition at line 23 of file moeoMOLS.h.


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoMOLS.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoMOLS.png new file mode 100644 index 000000000..e3241c9a1 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoMOLS.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoMetric.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoMetric.html new file mode 100644 index 000000000..a9a364bb2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoMetric.html @@ -0,0 +1,63 @@ + + +ParadisEO-MOEO: moeoMetric Class Reference + + + + +
+
+ +

moeoMetric Class Reference

Base class for performance metrics (also called quality indicators). +More... +

+#include <moeoMetric.h> +

+

Inheritance diagram for moeoMetric: +

+ +eoFunctorBase +moeoBM< A1, A2, R > +moeoBM< const const EOFitness &, EOFitness &, R > +moeoBM< const const std::vector< EOFitness > &, EOFitness &, R > +moeoBM< const const std::vector< EOFitness > &, std::vector< EOFitness > &, R > +moeoBM< const const std::vector< typename EOT::Fitness > &, std::vector< typename EOT::Fitness > &, double > +moeoUM< A, R > +moeoUM< const EOFitness &, R > +moeoUM< const std::vector< EOFitness > &, R > + + + +
+

Detailed Description

+Base class for performance metrics (also called quality indicators). +

+ +

+Definition at line 21 of file moeoMetric.h.


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoMetric.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoMetric.png new file mode 100644 index 000000000..a11119d0a Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoMetric.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNDSorting__II-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNDSorting__II-members.html new file mode 100644 index 000000000..7e463b604 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNDSorting__II-members.html @@ -0,0 +1,68 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoNDSorting_II< EOT > Member List

This is the complete list of members for moeoNDSorting_II< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
calculate_worths(const eoPop< EOT > &_pop)eoNDSorting< EOT > [virtual]
defValue() consteoParam
defValue(const std::string &str)eoParam
description() consteoParam
double_index_pair typedefmoeoNDSorting_II< EOT >
eoNDSorting(bool nasty_flag_=false)eoNDSorting< EOT >
eoParam()eoParam
eoParam(std::string _longName, std::string _default, std::string _description, char _shortName=0, bool _required=false)eoParam
eoPerf2Worth(std::string _description="Worths")eoPerf2Worth< EOT, WorthT >
eoPerf2WorthCached(std::string _description="Worths")eoPerf2WorthCached< EOT, double >
eoValueParam(void)eoValueParam< std::vector< WorthT > >
eoValueParam(std::vector< WorthT >_defaultValue, std::string _longName, std::string _description="No description", char _shortHand=0, bool _required=false)eoValueParam< std::vector< WorthT > >
functor_category()eoUF< const eoPop< EOT > &, void > [static]
getValue(void) consteoValueParam< std::vector< WorthT > > [virtual]
longName() consteoParam
moeoNDSorting_II(bool nasty_flag_=false)moeoNDSorting_II< EOT > [inline]
nasty_declone_flag_that_only_is_implemented_for_two_objectiveseoNDSorting< EOT >
niche_penalty(const std::vector< unsigned > &_cf, const eoPop< EOT > &_pop)moeoNDSorting_II< EOT > [inline, virtual]
operator()(const eoPop< EOT > &_pop)eoPerf2WorthCached< EOT, double > [virtual]
eoPerf2Worth::operator()(eoPop< EOT > &_pop)eoPerf2Worth< EOT, WorthT > [virtual]
repValueeoValueParam< std::vector< WorthT > > [protected]
required() consteoParam
resize(eoPop< EOT > &_pop, unsigned sz)eoPerf2WorthCached< EOT, double > [virtual]
setLongName(std::string _longName)eoParam
setValue(const std::string &_value)eoValueParam< std::vector< WorthT > > [virtual]
shortName() consteoParam
sort_pop(eoPop< EOT > &_pop)eoPerf2WorthCached< EOT, double > [virtual]
value()eoValueParam< std::vector< WorthT > >
value() consteoValueParam< std::vector< WorthT > >
~eoFunctorBase()eoFunctorBase [virtual]
~eoParam()eoParam [virtual]
~eoUF()eoUF< const eoPop< EOT > &, void > [virtual]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNDSorting__II.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNDSorting__II.html new file mode 100644 index 000000000..90fafc913 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNDSorting__II.html @@ -0,0 +1,86 @@ + + +ParadisEO-MOEO: moeoNDSorting_II< EOT > Class Template Reference + + + + +
+
+ +

moeoNDSorting_II< EOT > Class Template Reference

Fast Elitist Non-Dominant Sorting Genetic Algorithm assignment strategie Note : This is a corrected version of the original eoNDSorting_II class. +More... +

+#include <moeoNDSorting.h> +

+

Inheritance diagram for moeoNDSorting_II< EOT >: +

+ +eoNDSorting< EOT > +eoPerf2WorthCached< EOT, double > +eoPerf2Worth< EOT, WorthT > +eoUF< const eoPop< EOT > &, void > +eoValueParam< std::vector< WorthT > > +eoFunctorBase +eoParam + +List of all members. + + + + + + + + + + + + + + + + +

Public Types

+typedef std::pair< double,
+ unsigned > 
double_index_pair
 index pair

Public Member Functions

moeoNDSorting_II (bool nasty_flag_=false)
 constructor
+std::vector< double > niche_penalty (const std::vector< unsigned > &_cf, const eoPop< EOT > &_pop)
 _cf points into the elements that consist of the current front

Classes

class  compare_nodes
 A class to compare the nodes. More...
+

Detailed Description

+

template<class EOT>
+ class moeoNDSorting_II< EOT >

+ +Fast Elitist Non-Dominant Sorting Genetic Algorithm assignment strategie Note : This is a corrected version of the original eoNDSorting_II class. +

+

See also:
eoNDSorting_II
+ +

+ +

+Definition at line 26 of file moeoNDSorting.h.


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNDSorting__II.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNDSorting__II.png new file mode 100644 index 000000000..4ad772517 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNDSorting__II.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNDSorting__II_1_1compare__nodes-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNDSorting__II_1_1compare__nodes-members.html new file mode 100644 index 000000000..58abd5804 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNDSorting__II_1_1compare__nodes-members.html @@ -0,0 +1,37 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoNDSorting_II< EOT >::compare_nodes Member List

This is the complete list of members for moeoNDSorting_II< EOT >::compare_nodes, including all inherited members.

+ +
operator()(const double_index_pair &a, const double_index_pair &b) constmoeoNDSorting_II< EOT >::compare_nodes [inline]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNDSorting__II_1_1compare__nodes.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNDSorting__II_1_1compare__nodes.html new file mode 100644 index 000000000..bfa853588 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNDSorting__II_1_1compare__nodes.html @@ -0,0 +1,59 @@ + + +ParadisEO-MOEO: moeoNDSorting_II< EOT >::compare_nodes Class Reference + + + + +
+
+ + +

moeoNDSorting_II< EOT >::compare_nodes Class Reference

A class to compare the nodes. +More... +

+#include <moeoNDSorting.h> +

+List of all members. + + + + +

Public Member Functions

+bool operator() (const double_index_pair &a, const double_index_pair &b) const
+


Detailed Description

+

template<class EOT>
+ class moeoNDSorting_II< EOT >::compare_nodes

+ +A class to compare the nodes. +

+ +

+Definition at line 46 of file moeoNDSorting.h.


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNSGA__II-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNSGA__II-members.html new file mode 100644 index 000000000..7c67a0c8e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNSGA__II-members.html @@ -0,0 +1,49 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoNSGA_II< EOT > Member List

This is the complete list of members for moeoNSGA_II< EOT >, including all inherited members.

+ + + + + + + + + + + + + +
breedmoeoNSGA_II< EOT > [protected]
continuatormoeoNSGA_II< EOT > [protected]
evalmoeoNSGA_II< EOT > [protected]
genBreedmoeoNSGA_II< EOT > [protected]
loopEvalmoeoNSGA_II< EOT > [protected]
moeoNSGA_II(unsigned _max_gen, eoEvalFunc< EOT > &_eval, eoGenOp< EOT > &_op)moeoNSGA_II< EOT > [inline]
moeoNSGA_II(unsigned _max_gen, eoEvalFunc< EOT > &_eval, eoQuadOp< EOT > &crossover, double pCross, eoMonOp< EOT > &mutation, double pMut)moeoNSGA_II< EOT > [inline]
moeoNSGA_II(eoContinue< EOT > &_continuator, eoEvalFunc< EOT > &_eval, eoGenOp< EOT > &_op)moeoNSGA_II< EOT > [inline]
operator()(eoPop< EOT > &_pop)moeoNSGA_II< EOT > [inline, virtual]
popEvalmoeoNSGA_II< EOT > [protected]
replacemoeoNSGA_II< EOT > [protected]
selectOnemoeoNSGA_II< EOT > [protected]
sortingmoeoNSGA_II< EOT > [protected]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNSGA__II.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNSGA__II.html new file mode 100644 index 000000000..bdfe1e30e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNSGA__II.html @@ -0,0 +1,152 @@ + + +ParadisEO-MOEO: moeoNSGA_II< EOT > Class Template Reference + + + + +
+
+ +

moeoNSGA_II< EOT > Class Template Reference

Inheritance diagram for moeoNSGA_II< EOT >: +

+ +eoAlgo< EOT > +eoUF< eoPop< EOT > &, void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moeoNSGA_II (unsigned _max_gen, eoEvalFunc< EOT > &_eval, eoGenOp< EOT > &_op)
 This constructor builds the algorithm as descibed in the paper.
moeoNSGA_II (unsigned _max_gen, eoEvalFunc< EOT > &_eval, eoQuadOp< EOT > &crossover, double pCross, eoMonOp< EOT > &mutation, double pMut)
 Ctor taking _max_gen, crossover and mutation.
moeoNSGA_II (eoContinue< EOT > &_continuator, eoEvalFunc< EOT > &_eval, eoGenOp< EOT > &_op)
 Ctor taking a continuator instead of _gen_max.
+virtual void operator() (eoPop< EOT > &_pop)
 Apply a few generation of evolution to the population.

Protected Attributes

+eoContinue< EOT > & continuator
+eoEvalFunc< EOT > & eval
+eoPopLoopEval< EOT > loopEval
+eoPopEvalFunc< EOT > & popEval
+moeoNDSorting_II< EOT > sorting
 NSGAII sorting.
+eoDetTournamentWorthSelect<
+ EOT > 
selectOne
 Binary tournament selection.
+moeoElitistReplacement< EOT > replace
 Elitist replacement.
+eoGeneralBreeder< EOT > genBreed
+eoBreed< EOT > & breed
+

Detailed Description

+

template<class EOT>
+ class moeoNSGA_II< EOT >

+ + +

+ +

+Definition at line 31 of file moeoNSGA_II.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + + + + + + + +
moeoNSGA_II< EOT >::moeoNSGA_II (unsigned  _max_gen,
eoEvalFunc< EOT > &  _eval,
eoGenOp< EOT > &  _op 
) [inline]
+
+
+ +

+This constructor builds the algorithm as descibed in the paper. +

+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.

Parameters:
+ + + + +
_max_gen number of generations before stopping
_eval evaluation function
_op variation operator
+
+ +

+Definition at line 46 of file moeoNSGA_II.h. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNSGA__II.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNSGA__II.png new file mode 100644 index 000000000..3d85e6dca Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoNSGA__II.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoEuclidDist-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoEuclidDist-members.html new file mode 100644 index 000000000..21cb0d9bc --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoEuclidDist-members.html @@ -0,0 +1,37 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoParetoEuclidDist< EOT, DistType > Member List

This is the complete list of members for moeoParetoEuclidDist< EOT, DistType >, including all inherited members.

+ +
operator()(const EOT &eopf1, const EOT &eopf2)moeoParetoEuclidDist< EOT, DistType > [inline, virtual]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoEuclidDist.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoEuclidDist.html new file mode 100644 index 000000000..56d3d301a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoEuclidDist.html @@ -0,0 +1,57 @@ + + +ParadisEO-MOEO: moeoParetoEuclidDist< EOT, DistType > Class Template Reference + + + + +
+
+ +

moeoParetoEuclidDist< EOT, DistType > Class Template Reference

Inheritance diagram for moeoParetoEuclidDist< EOT, DistType >: +

+ +moeoParetoPhenDist< EOT, DistType > + +List of all members. + + + + +

Public Member Functions

+DistType operator() (const EOT &eopf1, const EOT &eopf2)
+

Detailed Description

+

template<class EOT, class DistType = double>
+ class moeoParetoEuclidDist< EOT, DistType >

+ + +

+ +

+Definition at line 27 of file moeoParetoPhenDist.h.


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoEuclidDist.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoEuclidDist.png new file mode 100644 index 000000000..49237bed5 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoEuclidDist.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoPhenDist-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoPhenDist-members.html new file mode 100644 index 000000000..fb8e64ccf --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoPhenDist-members.html @@ -0,0 +1,36 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoParetoPhenDist< EOT, DistType > Member List

This is the complete list of members for moeoParetoPhenDist< EOT, DistType >, including all inherited members.

+


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoPhenDist.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoPhenDist.html new file mode 100644 index 000000000..01f20092e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoPhenDist.html @@ -0,0 +1,53 @@ + + +ParadisEO-MOEO: moeoParetoPhenDist< EOT, DistType > Class Template Reference + + + + +
+
+ +

moeoParetoPhenDist< EOT, DistType > Class Template Reference

Inheritance diagram for moeoParetoPhenDist< EOT, DistType >: +

+ +moeoParetoEuclidDist< EOT, DistType > + +List of all members. + +
+

Detailed Description

+

template<class EOT, class DistType>
+ class moeoParetoPhenDist< EOT, DistType >

+ + +

+ +

+Definition at line 15 of file moeoParetoPhenDist.h.


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoPhenDist.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoPhenDist.png new file mode 100644 index 000000000..6a7bfb562 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoPhenDist.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoSharing-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoSharing-members.html new file mode 100644 index 000000000..d440fb7ef --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoSharing-members.html @@ -0,0 +1,69 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoParetoSharing< EOT, worthT > Member List

This is the complete list of members for moeoParetoSharing< EOT, worthT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
defValue() consteoParam
defValue(const std::string &str)eoParam
description() consteoParam
distmoeoParetoSharing< EOT, worthT > [private]
DmaxmoeoParetoSharing< EOT, worthT > [private]
eoParam()eoParam
eoParam(std::string _longName, std::string _default, std::string _description, char _shortName=0, bool _required=false)eoParam
eoPerf2Worth(std::string _description="Worths")eoPerf2Worth< EOT, worthT >
eoValueParam(void)eoValueParam< std::vector< worthT > >
eoValueParam(std::vector< worthT >_defaultValue, std::string _longName, std::string _description="No description", char _shortHand=0, bool _required=false)eoValueParam< std::vector< worthT > >
euc_distmoeoParetoSharing< EOT, worthT > [private]
functor_category()eoUF< const eoPop< EOT > &, void > [static]
getValue(void) consteoValueParam< std::vector< worthT > > [virtual]
longName() consteoParam
moeoParetoSharing(double _nicheSize)moeoParetoSharing< EOT, worthT > [inline]
moeoParetoSharing(double _nicheSize, moeoParetoPhenDist< EOT, worthT > &_dist)moeoParetoSharing< EOT, worthT > [inline]
nicheSizemoeoParetoSharing< EOT, worthT > [private]
operator()(const eoPop< EOT > &_pop)moeoParetoSharing< EOT, worthT > [inline]
operator()(eoPop< EOT > &_pop)eoPerf2Worth< EOT, worthT > [virtual]
eoUF< const eoPop< EOT > &, void >::operator()(const eoPop< EOT > &)=0eoUF< const eoPop< EOT > &, void > [pure virtual]
repValueeoValueParam< std::vector< worthT > > [protected]
required() consteoParam
resize(eoPop< EOT > &_pop, unsigned sz)eoPerf2Worth< EOT, worthT > [virtual]
setLongName(std::string _longName)eoParam
setValue(const std::string &_value)eoValueParam< std::vector< worthT > > [virtual]
sh(double dist, double Dmax)moeoParetoSharing< EOT, worthT > [inline, private]
shortName() consteoParam
sort_pop(eoPop< EOT > &_pop)eoPerf2Worth< EOT, worthT > [virtual]
value()eoValueParam< std::vector< worthT > >
value() consteoValueParam< std::vector< worthT > >
~eoFunctorBase()eoFunctorBase [virtual]
~eoParam()eoParam [virtual]
~eoUF()eoUF< const eoPop< EOT > &, void > [virtual]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoSharing.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoSharing.html new file mode 100644 index 000000000..101b85bc8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoSharing.html @@ -0,0 +1,87 @@ + + +ParadisEO-MOEO: moeoParetoSharing< EOT, worthT > Class Template Reference + + + + +
+
+ +

moeoParetoSharing< EOT, worthT > Class Template Reference

Inheritance diagram for moeoParetoSharing< EOT, worthT >: +

+ +eoPerf2Worth< EOT, worthT > +eoUF< const eoPop< EOT > &, void > +eoValueParam< std::vector< worthT > > +eoFunctorBase +eoParam + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

moeoParetoSharing (double _nicheSize)
moeoParetoSharing (double _nicheSize, moeoParetoPhenDist< EOT, worthT > &_dist)
+void operator ()(const eoPop< EOT > &_pop)

Private Member Functions

+double sh (double dist, double Dmax)

Private Attributes

+double nicheSize
+moeoParetoPhenDist< EOT, worthT > & dist
+moeoParetoEuclidDist< EOT > euc_dist
+double Dmax

Classes

class  dMatrix
+

Detailed Description

+

template<class EOT, class worthT = double>
+ class moeoParetoSharing< EOT, worthT >

+ + +

+ +

+Definition at line 19 of file moeoParetoSharing.h.


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoSharing.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoSharing.png new file mode 100644 index 000000000..2658cacc5 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoSharing.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoSharing_1_1dMatrix-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoSharing_1_1dMatrix-members.html new file mode 100644 index 000000000..27f6d8f94 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoSharing_1_1dMatrix-members.html @@ -0,0 +1,39 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoParetoSharing< EOT, worthT >::dMatrix Member List

This is the complete list of members for moeoParetoSharing< EOT, worthT >::dMatrix, including all inherited members.

+ + + +
dMatrix(unsigned _s)moeoParetoSharing< EOT, worthT >::dMatrix [inline]
printOn(std::ostream &_os)moeoParetoSharing< EOT, worthT >::dMatrix [inline]
rSizemoeoParetoSharing< EOT, worthT >::dMatrix [private]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoSharing_1_1dMatrix.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoSharing_1_1dMatrix.html new file mode 100644 index 000000000..7ba408bfe --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoParetoSharing_1_1dMatrix.html @@ -0,0 +1,61 @@ + + +ParadisEO-MOEO: moeoParetoSharing< EOT, worthT >::dMatrix Class Reference + + + + +
+
+ + +

moeoParetoSharing< EOT, worthT >::dMatrix Class Reference

List of all members. + + + + + + + + + +

Public Member Functions

dMatrix (unsigned _s)
+void printOn (std::ostream &_os)

Private Attributes

+unsigned rSize
+

Detailed Description

+

template<class EOT, class worthT = double>
+ class moeoParetoSharing< EOT, worthT >::dMatrix

+ + +

+ +

+Definition at line 109 of file moeoParetoSharing.h.


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoReplacement.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoReplacement.html new file mode 100644 index 000000000..da9051d3e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoReplacement.html @@ -0,0 +1,62 @@ + + +ParadisEO-MOEO: moeoReplacement< EOT, WorthT > Class Template Reference + + + + +
+
+ +

moeoReplacement< EOT, WorthT > Class Template Reference

Replacement strategy for multi-objective optimization. +More... +

+#include <moeoReplacement.h> +

+

Inheritance diagram for moeoReplacement< EOT, WorthT >: +

+ +eoReplacement< EOT > +eoBF< eoPop< EOT > &, eoPop< EOT > &, void > +eoFunctorBase +moeoDisctinctElitistReplacement< EOT, WorthT > +moeoElitistReplacement< EOT, WorthT > + + + +
+

Detailed Description

+

template<class EOT, class WorthT>
+ class moeoReplacement< EOT, WorthT >

+ +Replacement strategy for multi-objective optimization. +

+ +

+Definition at line 24 of file moeoReplacement.h.


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoReplacement.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoReplacement.png new file mode 100644 index 000000000..149fe72e3 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoReplacement.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSelectOneFromPopAndArch-members.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSelectOneFromPopAndArch-members.html new file mode 100644 index 000000000..cb3709c3d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSelectOneFromPopAndArch-members.html @@ -0,0 +1,49 @@ + + +ParadisEO-MOEO: Member List + + + + +
+
+ +

moeoSelectOneFromPopAndArch< EOT > Member List

This is the complete list of members for moeoSelectOneFromPopAndArch< EOT >, including all inherited members.

+ + + + + + + + + + + + + +
archmoeoSelectOneFromPopAndArch< EOT > [private]
archSelectOnemoeoSelectOneFromPopAndArch< EOT > [private]
functor_category()eoUF< A1, R > [static]
moeoSelectOneFromPopAndArch(eoSelectOne< EOT > &_popSelectOne, eoSelectOne< EOT > _archSelectOne, moeoArchive< EOT > &_arch, double _ratioFromPop=0.5)moeoSelectOneFromPopAndArch< EOT > [inline]
moeoSelectOneFromPopAndArch(eoSelectOne< EOT > &_popSelectOne, moeoArchive< EOT > &_arch, double _ratioFromPop=0.5)moeoSelectOneFromPopAndArch< EOT > [inline]
operator()(const eoPop< EOT > &pop)moeoSelectOneFromPopAndArch< EOT > [inline, virtual]
eoSelectOne< EOT >::operator()(A1)=0eoUF< A1, R > [pure virtual]
popSelectOnemoeoSelectOneFromPopAndArch< EOT > [private]
randomSelectmoeoSelectOneFromPopAndArch< EOT > [private]
ratioFromPopmoeoSelectOneFromPopAndArch< EOT > [private]
setup(const eoPop< EOT > &_pop)moeoSelectOneFromPopAndArch< EOT > [inline, virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< A1, R > [virtual]


Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSelectOneFromPopAndArch.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSelectOneFromPopAndArch.html new file mode 100644 index 000000000..e1519cce8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSelectOneFromPopAndArch.html @@ -0,0 +1,200 @@ + + +ParadisEO-MOEO: moeoSelectOneFromPopAndArch< EOT > Class Template Reference + + + + +
+
+ +

moeoSelectOneFromPopAndArch< EOT > Class Template Reference

Elitist selection process that consists in choosing individuals in the archive as well as in the current population. +More... +

+#include <moeoSelectOneFromPopAndArch.h> +

+

Inheritance diagram for moeoSelectOneFromPopAndArch< EOT >: +

+ +eoSelectOne< EOT > +eoUF< A1, R > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moeoSelectOneFromPopAndArch (eoSelectOne< EOT > &_popSelectOne, eoSelectOne< EOT > _archSelectOne, moeoArchive< EOT > &_arch, double _ratioFromPop=0.5)
 Ctor.
 moeoSelectOneFromPopAndArch (eoSelectOne< EOT > &_popSelectOne, moeoArchive< EOT > &_arch, double _ratioFromPop=0.5)
 Ctor - the archive's selection operator is a random selector.
+virtual const EOT & operator() (const eoPop< EOT > &pop)
 The selection process.
+virtual void setup (const eoPop< EOT > &_pop)
 Setups some population stats.

Private Attributes

+eoSelectOne< EOT > & popSelectOne
 The population's selection operator.
+eoSelectOne< EOT > & archSelectOne
 The archive's selection operator.
+moeoArchive< EOT > & arch
 the archive
+double ratioFromPop
 the ratio of selected individuals from the population
+eoRandomSelect< EOT > randomSelect
 the random selection operator
+

Detailed Description

+

template<class EOT>
+ class moeoSelectOneFromPopAndArch< EOT >

+ +Elitist selection process that consists in choosing individuals in the archive as well as in the current population. +

+ +

+Definition at line 25 of file moeoSelectOneFromPopAndArch.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moeoSelectOneFromPopAndArch< EOT >::moeoSelectOneFromPopAndArch (eoSelectOne< EOT > &  _popSelectOne,
eoSelectOne< EOT >  _archSelectOne,
moeoArchive< EOT > &  _arch,
double  _ratioFromPop = 0.5 
) [inline]
+
+
+ +

+Ctor. +

+

Parameters:
+ + + + + +
_popSelectOne the population's selection operator
_archSelectOne the archive's selection operator
_arch the archive
_ratioFromPop the ratio of selected individuals from the population
+
+ +

+Definition at line 37 of file moeoSelectOneFromPopAndArch.h. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + + + + + + + +
moeoSelectOneFromPopAndArch< EOT >::moeoSelectOneFromPopAndArch (eoSelectOne< EOT > &  _popSelectOne,
moeoArchive< EOT > &  _arch,
double  _ratioFromPop = 0.5 
) [inline]
+
+
+ +

+Ctor - the archive's selection operator is a random selector. +

+

Parameters:
+ + + + +
_popSelectOne the population's selection operator
_arch the archive
_ratioFromPop the ratio of selected individuals from the population
+
+ +

+Definition at line 49 of file moeoSelectOneFromPopAndArch.h. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSelectOneFromPopAndArch.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSelectOneFromPopAndArch.png new file mode 100644 index 000000000..919ea21fb Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSelectOneFromPopAndArch.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSolutionUM.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSolutionUM.html new file mode 100644 index 000000000..d2b0aa84f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSolutionUM.html @@ -0,0 +1,62 @@ + + +ParadisEO-MOEO: moeoSolutionUM< EOT, R, EOFitness > Class Template Reference + + + + +
+
+ +

moeoSolutionUM< EOT, R, EOFitness > Class Template Reference

Base class for unary metrics dedicated to the performance evaluation of a single solution's Pareto fitness. +More... +

+#include <moeoMetric.h> +

+

Inheritance diagram for moeoSolutionUM< EOT, R, EOFitness >: +

+ +moeoUM< const EOFitness &, R > +eoUF< const EOFitness &, R > +moeoMetric +eoFunctorBase +eoFunctorBase + + + +
+

Detailed Description

+

template<class EOT, class R, class EOFitness = typename EOT::Fitness>
+ class moeoSolutionUM< EOT, R, EOFitness >

+ +Base class for unary metrics dedicated to the performance evaluation of a single solution's Pareto fitness. +

+ +

+Definition at line 47 of file moeoMetric.h.


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSolutionUM.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSolutionUM.png new file mode 100644 index 000000000..6fa08b71b Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSolutionUM.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSolutionVsSolutionBM.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSolutionVsSolutionBM.html new file mode 100644 index 000000000..98c741a4a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSolutionVsSolutionBM.html @@ -0,0 +1,62 @@ + + +ParadisEO-MOEO: moeoSolutionVsSolutionBM< EOT, R, EOFitness > Class Template Reference + + + + +
+
+ +

moeoSolutionVsSolutionBM< EOT, R, EOFitness > Class Template Reference

Base class for binary metrics dedicated to the performance comparison between two solutions's Pareto fitnesses. +More... +

+#include <moeoMetric.h> +

+

Inheritance diagram for moeoSolutionVsSolutionBM< EOT, R, EOFitness >: +

+ +moeoBM< A1, A2, R > +eoBF< A1, A2, R > +moeoMetric +eoFunctorBase +eoFunctorBase + + + +
+

Detailed Description

+

template<class EOT, class R, class EOFitness = typename EOT::Fitness>
+ class moeoSolutionVsSolutionBM< EOT, R, EOFitness >

+ +Base class for binary metrics dedicated to the performance comparison between two solutions's Pareto fitnesses. +

+ +

+Definition at line 70 of file moeoMetric.h.


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSolutionVsSolutionBM.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSolutionVsSolutionBM.png new file mode 100644 index 000000000..c739cd66a Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoSolutionVsSolutionBM.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoUM.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoUM.html new file mode 100644 index 000000000..ede77fcfe --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoUM.html @@ -0,0 +1,61 @@ + + +ParadisEO-MOEO: moeoUM< A, R > Class Template Reference + + + + +
+
+ +

moeoUM< A, R > Class Template Reference

Base class for unary metrics. +More... +

+#include <moeoMetric.h> +

+

Inheritance diagram for moeoUM< A, R >: +

+ +eoUF< A, R > +moeoMetric +eoFunctorBase +eoFunctorBase + + + +
+

Detailed Description

+

template<class A, class R>
+ class moeoUM< A, R >

+ +Base class for unary metrics. +

+ +

+Definition at line 29 of file moeoMetric.h.


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoUM.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoUM.png new file mode 100644 index 000000000..63de59401 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoUM.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoVectorUM.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoVectorUM.html new file mode 100644 index 000000000..f35d34471 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoVectorUM.html @@ -0,0 +1,62 @@ + + +ParadisEO-MOEO: moeoVectorUM< EOT, R, EOFitness > Class Template Reference + + + + +
+
+ +

moeoVectorUM< EOT, R, EOFitness > Class Template Reference

Base class for unary metrics dedicated to the performance evaluation of a Pareto set (a vector of Pareto fitnesses). +More... +

+#include <moeoMetric.h> +

+

Inheritance diagram for moeoVectorUM< EOT, R, EOFitness >: +

+ +moeoUM< const std::vector< EOFitness > &, R > +eoUF< const std::vector< EOFitness > &, R > +moeoMetric +eoFunctorBase +eoFunctorBase + + + +
+

Detailed Description

+

template<class EOT, class R, class EOFitness = typename EOT::Fitness>
+ class moeoVectorUM< EOT, R, EOFitness >

+ +Base class for unary metrics dedicated to the performance evaluation of a Pareto set (a vector of Pareto fitnesses). +

+ +

+Definition at line 58 of file moeoMetric.h.


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoVectorUM.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoVectorUM.png new file mode 100644 index 000000000..3ddd615a4 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoVectorUM.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoVectorVsSolutionBM.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoVectorVsSolutionBM.html new file mode 100644 index 000000000..da4e4466d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoVectorVsSolutionBM.html @@ -0,0 +1,62 @@ + + +ParadisEO-MOEO: moeoVectorVsSolutionBM< EOT, R, EOFitness > Class Template Reference + + + + +
+
+ +

moeoVectorVsSolutionBM< EOT, R, EOFitness > Class Template Reference

Base class for binary metrics dedicated to the performance comparison between a Pareto set (a vector of Pareto fitnesses) and a single solution's Pareto fitness. +More... +

+#include <moeoMetric.h> +

+

Inheritance diagram for moeoVectorVsSolutionBM< EOT, R, EOFitness >: +

+ +moeoBM< A1, A2, R > +eoBF< A1, A2, R > +moeoMetric +eoFunctorBase +eoFunctorBase + + + +
+

Detailed Description

+

template<class EOT, class R, class EOFitness = typename EOT::Fitness>
+ class moeoVectorVsSolutionBM< EOT, R, EOFitness >

+ +Base class for binary metrics dedicated to the performance comparison between a Pareto set (a vector of Pareto fitnesses) and a single solution's Pareto fitness. +

+ +

+Definition at line 82 of file moeoMetric.h.


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoVectorVsSolutionBM.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoVectorVsSolutionBM.png new file mode 100644 index 000000000..2fce31210 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoVectorVsSolutionBM.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoVectorVsVectorBM.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoVectorVsVectorBM.html new file mode 100644 index 000000000..ac6dd93f4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoVectorVsVectorBM.html @@ -0,0 +1,62 @@ + + +ParadisEO-MOEO: moeoVectorVsVectorBM< EOT, R, EOFitness > Class Template Reference + + + + +
+
+ +

moeoVectorVsVectorBM< EOT, R, EOFitness > Class Template Reference

Base class for binary metrics dedicated to the performance comparison between two Pareto sets (two vectors of Pareto fitnesses). +More... +

+#include <moeoMetric.h> +

+

Inheritance diagram for moeoVectorVsVectorBM< EOT, R, EOFitness >: +

+ +moeoBM< A1, A2, R > +eoBF< A1, A2, R > +moeoMetric +eoFunctorBase +eoFunctorBase + + + +
+

Detailed Description

+

template<class EOT, class R, class EOFitness = typename EOT::Fitness>
+ class moeoVectorVsVectorBM< EOT, R, EOFitness >

+ +Base class for binary metrics dedicated to the performance comparison between two Pareto sets (two vectors of Pareto fitnesses). +

+ +

+Definition at line 95 of file moeoMetric.h.


The documentation for this class was generated from the following file: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoVectorVsVectorBM.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoVectorVsVectorBM.png new file mode 100644 index 000000000..1c3bcd6ce Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/classmoeoVectorVsVectorBM.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/doxygen.css b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/doxygen.css new file mode 100644 index 000000000..c7db1a8a0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/doxygen.css @@ -0,0 +1,358 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: monospace, fixed; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } + +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + +/* Style for detailed member documentation */ +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; +} +.memnav { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +.memitem { + padding: 4px; + background-color: #eef3f5; + border-width: 1px; + border-style: solid; + border-color: #dedeee; + -moz-border-radius: 8px 8px 8px 8px; +} +.memname { + white-space: nowrap; + font-weight: bold; +} +.memdoc{ + padding-left: 10px; +} +.memproto { + background-color: #d5e1e8; + width: 100%; + border-width: 1px; + border-style: solid; + border-color: #84b0c7; + font-weight: bold; + -moz-border-radius: 8px 8px 8px 8px; +} +.paramkey { + text-align: right; +} +.paramtype { + white-space: nowrap; +} +.paramname { + color: #602020; + font-style: italic; + white-space: nowrap; +} +/* End Styling for detailed member documentation */ + +/* for the tree view */ +.ftvtree { + font-family: sans-serif; + margin:0.5em; +} +.directory { font-size: 9pt; font-weight: bold; } +.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } +.directory > h3 { margin-top: 0; } +.directory p { margin: 0px; white-space: nowrap; } +.directory div { display: none; margin: 0px; } +.directory img { vertical-align: -30%; } diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/doxygen.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/doxygen.png new file mode 100644 index 000000000..f0a274bba Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/doxygen.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/files.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/files.html new file mode 100644 index 000000000..842f85447 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/files.html @@ -0,0 +1,52 @@ + + +ParadisEO-MOEO: File Index + + + + +
+
+

ParadisEO-MOEO File List

Here is a list of all documented files with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + +
index.h [code]
make_algo_MOEO.h [code]
moeo.h [code]
moeoArchive.h [code]
moeoArchiveFitnessSavingUpdater.h [code]
moeoArchiveUpdater.h [code]
moeoBinaryMetricSavingUpdater.h [code]
moeoBinaryQualityIndicator.h [code]
moeoCombinedMOLS.h [code]
moeoContributionMetric.h [code]
moeoEntropyMetric.h [code]
moeoHybridMOLS.h [code]
moeoIBEA.h [code]
moeoMetric.h [code]
moeoMOLS.h [code]
moeoNDSorting.h [code]
moeoNSGA_II.h [code]
moeoParetoPhenDist.h [code]
moeoParetoSharing.h [code]
moeoReplacement.h [code]
moeoSelectOneFromPopAndArch.h [code]
README [code]
+
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2blank.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2blank.png new file mode 100644 index 000000000..493c3c0b6 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2blank.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2doc.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2doc.png new file mode 100644 index 000000000..f72999f92 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2doc.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2folderclosed.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2folderclosed.png new file mode 100644 index 000000000..d6d063440 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2folderclosed.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2folderopen.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2folderopen.png new file mode 100644 index 000000000..bbe2c913c Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2folderopen.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2lastnode.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2lastnode.png new file mode 100644 index 000000000..e7b9ba90c Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2lastnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2link.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2link.png new file mode 100644 index 000000000..14f3fed00 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2link.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2mlastnode.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2mlastnode.png new file mode 100644 index 000000000..09ceb6adb Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2mlastnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2mnode.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2mnode.png new file mode 100644 index 000000000..3254c0511 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2mnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2node.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2node.png new file mode 100644 index 000000000..c9f06a57f Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2node.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2plastnode.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2plastnode.png new file mode 100644 index 000000000..0b07e0091 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2plastnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2pnode.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2pnode.png new file mode 100644 index 000000000..2001b797b Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2pnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2vertline.png b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2vertline.png new file mode 100644 index 000000000..b330f3a33 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/ftv2vertline.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/functions.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/functions.html new file mode 100644 index 000000000..35e6b396a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/functions.html @@ -0,0 +1,335 @@ + + +ParadisEO-MOEO: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- a -

+

- b -

+

- c -

+

- d -

+

- e -

+

- f -

+

- g -

+

- h -

+

- i -

+

- k -

+

- l -

+

- m -

+

- n -

+

- o -

+

- p -

+

- r -

+

- s -

+

- t -

+

- u -

+

- v -

+

- z -

+
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/functions_func.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/functions_func.html new file mode 100644 index 000000000..b93c2b304 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/functions_func.html @@ -0,0 +1,216 @@ + + +ParadisEO-MOEO: Class Members - Functions + + + + +
+
+ + +
+ +
+ +

+  +

+

- a -

+

- c -

+

- d -

+

- e -

+

- f -

+

- h -

+

- m -

+

- n -

+

- o -

+

- p -

+

- r -

+

- s -

+

- u -

+

- z -

+
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/functions_type.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/functions_type.html new file mode 100644 index 000000000..41615f79c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/functions_type.html @@ -0,0 +1,58 @@ + + +ParadisEO-MOEO: Class Members - Typedefs + + + + +
+
+ + +  +

+

+
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/functions_vars.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/functions_vars.html new file mode 100644 index 000000000..9a572af67 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/functions_vars.html @@ -0,0 +1,194 @@ + + +ParadisEO-MOEO: Class Members - Variables + + + + +
+
+ + +
+ +
+ +

+  +

+

- a -

+

- b -

+

- c -

+

- d -

+

- e -

+

- f -

+

- g -

+

- i -

+

- k -

+

- l -

+

- m -

+

- n -

+

- o -

+

- p -

+

- r -

+

- s -

+

- t -

+

- v -

+
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/hierarchy.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/hierarchy.html new file mode 100644 index 000000000..c44b723a7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/hierarchy.html @@ -0,0 +1,205 @@ + + +ParadisEO-MOEO: Hierarchical Index + + + + +
+
+ +

ParadisEO-MOEO Class Hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically: +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/index.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/index.html new file mode 100644 index 000000000..7e73d848d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/index.html @@ -0,0 +1,8 @@ + + +ParadisEO-MOEO + + + + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/index_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/index_8h-source.html new file mode 100644 index 000000000..68d09a002 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/index_8h-source.html @@ -0,0 +1,35 @@ + + +ParadisEO-MOEO: index.h Source File + + + + +
+
+

index.h

00001 
+00048 // Local Variables:
+00049 // coding: iso-8859-1
+00050 // mode: C++
+00051 // c-file-style: "Stroustrup"
+00052 // fill-column: 80
+00053 // End:
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/installdox b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/installdox new file mode 100755 index 000000000..1628445b3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/installdox @@ -0,0 +1,117 @@ +#!/usr/bin/perl + +%subst = ( "eo.doxytag", ""); +$quiet = 0; + +if (open(F,"search.cfg")) +{ + $_= ; s/[ \t\n]*$//g ; $subst{"_doc"} = $_; + $_= ; s/[ \t\n]*$//g ; $subst{"_cgi"} = $_; +} + +while ( @ARGV ) { + $_ = shift @ARGV; + if ( s/^-// ) { + if ( /^l(.*)/ ) { + $v = ($1 eq "") ? shift @ARGV : $1; + ($v =~ /\/$/) || ($v .= "/"); + $_ = $v; + if ( /(.+)\@(.+)/ ) { + if ( exists $subst{$1} ) { + $subst{$1} = $2; + } else { + print STDERR "Unknown tag file $1 given with option -l\n"; + &usage(); + } + } else { + print STDERR "Argument $_ is invalid for option -l\n"; + &usage(); + } + } + elsif ( /^q/ ) { + $quiet = 1; + } + elsif ( /^\?|^h/ ) { + &usage(); + } + else { + print STDERR "Illegal option -$_\n"; + &usage(); + } + } + else { + push (@files, $_ ); + } +} + +foreach $sub (keys %subst) +{ + if ( $subst{$sub} eq "" ) + { + print STDERR "No substitute given for tag file `$sub'\n"; + &usage(); + } + elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) + { + print "Substituting $subst{$sub} for each occurence of tag file $sub\n"; + } +} + +if ( ! @files ) { + if (opendir(D,".")) { + foreach $file ( readdir(D) ) { + $match = ".html"; + next if ( $file =~ /^\.\.?$/ ); + ($file =~ /$match/) && (push @files, $file); + ($file =~ "tree.js") && (push @files, $file); + } + closedir(D); + } +} + +if ( ! @files ) { + print STDERR "Warning: No input files given and none found!\n"; +} + +foreach $f (@files) +{ + if ( ! $quiet ) { + print "Editing: $f...\n"; + } + $oldf = $f; + $f .= ".bak"; + unless (rename $oldf,$f) { + print STDERR "Error: cannot rename file $oldf\n"; + exit 1; + } + if (open(F,"<$f")) { + unless (open(G,">$oldf")) { + print STDERR "Error: opening file $oldf for writing\n"; + exit 1; + } + if ($oldf ne "tree.js") { + while () { + s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; + print G "$_"; + } + } + else { + while () { + s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; + print G "$_"; + } + } + } + else { + print STDERR "Warning file $f does not exist\n"; + } + unlink $f; +} + +sub usage { + print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; + print STDERR "Options:\n"; + print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; + print STDERR " -q Quiet mode\n\n"; + exit 1; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/main.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/main.html new file mode 100644 index 000000000..658dbe127 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/main.html @@ -0,0 +1,38 @@ + + +ParadisEO-MOEO: Welcome to ParadisEO-MOEO + + + + +
+
+

Welcome to ParadisEO-MOEO

+

+

0.1

+intro

+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.

+tutorial

+A tutorial about a bi-objective flow-shop scheduling problem will be available soon.

+install

+The installation procedure of the package is detailed in the README file in the top-directory of the source-tree.

+design

+For an introduction to the design of ParadisEO-MOEO, you can look at the ParadisEO website.
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/make__algo__MOEO_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/make__algo__MOEO_8h-source.html new file mode 100644 index 000000000..c72702b13 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/make__algo__MOEO_8h-source.html @@ -0,0 +1,278 @@ + + +ParadisEO-MOEO: make_algo_MOEO.h Source File + + + + +
+
+

make_algo_MOEO.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // make_algo_MOEO.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef _make_algo_MOEO_h
+00014 #define _make_algo_MOEO_h
+00015 
+00016 // the parser and parameter includes
+00017 #include "utils/eoParser.h"
+00018 #include "utils/eoState.h"
+00019 // selections
+00020 #include "eoNDSorting.h"
+00021 #include "old/moeoIBEA.h"
+00022 #include "old/moeoBinaryQualityIndicator.h"
+00023 #include "eoParetoRanking.h"
+00024 #include "moeoParetoSharing.h"
+00025 #include "eoSelectFromWorth.h"
+00026 #include "moeoSelectOneFromPopAndArch.h"
+00027 // replacements
+00028 #include "eoReplacement.h"
+00029 #include "moeoReplacement.h"
+00030 // breeders
+00031 #include "eoGeneralBreeder.h"
+00032 // the algorithm
+00033 #include "eoEasyEA.h"
+00034 
+00035 /*
+00036  * This function builds the algorithm (i.e. selection and replacement) from existing continue (or checkpoint) and operators
+00037  * It uses a parser (to get user parameters) and a state (to store the memory)
+00038  *
+00039  * NB: this function is almost cut-and-pasted from EO/make_algo_pareto.h and integrates MOEO features
+00040  */
+00041 template < class EOT >
+00042   eoAlgo < EOT > &do_make_algo_MOEO (eoParser & _parser, eoState & _state,
+00043                                      eoEvalFunc < EOT > &_eval,
+00044                                      eoContinue < EOT > &_continue,
+00045                                      eoGenOp < EOT > &_op,
+00046                                      moeoArchive < EOT > &_arch)
+00047 {
+00048 
+00049   // the fitness of an EOT object
+00050   typedef typename EOT::Fitness EOFitness;
+00051 
+00052 
+00053 
+00054 
+00055 
+00056   /* the selection criteria */
+00057   string & selStr = _parser.createParam (string ("NSGA-II"), "selCrit",
+00058                                          "Multi-objective selection criterion: NSGA, NSGA-II, IBEA, ParetoRanking, ParetoSharing",
+00059                                          'S', "Evolution Engine").value ();
+00060   double nicheSize = _parser.createParam (1.0, "nicheSize",
+00061                                           "Size of niche for NSGA-I or ParetoSharing",
+00062                                           'n',
+00063                                           "Evolution Engine").value ();
+00064   double kappa =
+00065     _parser.createParam (0.05, "kappa", "Scaling factor kappa for IBEA", 'k',
+00066                          "Evolution Engine").value ();
+00067   string & indStr =
+00068     _parser.createParam (string ("Epsilon"), "indicator",
+00069                          "Binary quality indicator for IBEA : Epsilon, Hypervolume",
+00070                          'I', "Evolution Engine").value ();
+00071   double rho = _parser.createParam (1.1, "rho",
+00072                                     "reference point for the hypervolume calculation (must not be smaller than 1)",
+00073                                     'r', "Evolution Engine").value ();
+00074   // the eoPerf2Worth object
+00075   eoPerf2Worth < EOT, double >*p2w;
+00076   if ((selStr == string ("NSGA")) || (selStr == string ("NSGA-I")))     // NSGA-I
+00077     p2w = new eoNDSorting_I < EOT > (nicheSize);
+00078   else if (selStr == string ("NSGA-II"))        // NSGA-II
+00079     p2w = new eoNDSorting_II < EOT > ();
+00080   else if (selStr == string ("IBEA"))
+00081     {                           // IBEA
+00082       // the binary quality indicator
+00083       moeoBinaryQualityIndicator < EOFitness > *I;
+00084       if (indStr == string ("Epsilon"))
+00085         I = new moeoAdditiveBinaryEpsilonIndicator < EOFitness >;
+00086       else if (indStr == string ("Hypervolume"))
+00087         I = new moeoBinaryHypervolumeIndicator < EOFitness > (rho);
+00088       else
+00089         {
+00090           string stmp =
+00091             string ("Invalid binary quality indicator (for IBEA): ") + indStr;
+00092           throw std::runtime_error (stmp.c_str ());
+00093         }
+00094       p2w = new moeoIBEASorting < EOT > (I, kappa);
+00095     }
+00096   else if (selStr == string ("ParetoRanking"))
+00097     {                           // Pareto Ranking
+00098       eoDominanceMap < EOT > &dominance =
+00099         _state.storeFunctor (new eoDominanceMap < EOT >);
+00100       p2w = new eoParetoRanking < EOT > (dominance);
+00101     }
+00102   else if (selStr == string ("ParetoSharing"))
+00103     {                           // Pareto Sharing    
+00104       p2w = new moeoParetoSharing < EOT > (nicheSize);
+00105     }
+00106   else
+00107     {
+00108       string stmp = string ("Invalid Pareto selection criterion: ") + selStr;
+00109       throw std::runtime_error (stmp.c_str ());
+00110     }
+00111   // store  
+00112   _state.storeFunctor (p2w);
+00113 
+00114 
+00115 
+00116 
+00117 
+00118   /* the selector */
+00119   eoValueParam < eoParamParamType > &selectionParam =
+00120     _parser.createParam (eoParamParamType ("DetTour(2)"), "selection",
+00121                          "Selection: Roulette, DetTour(T), StochTour(t) or Random",
+00122                          's', "Evolution Engine");
+00123   eoParamParamType & ppSelect = selectionParam.value ();        // pair< string , vector<string> >
+00124   // the select object
+00125   eoSelectOne < EOT > *select;
+00126   if (ppSelect.first == string ("DetTour"))
+00127     {                           // DetTour
+00128       unsigned detSize;
+00129       if (!ppSelect.second.size ())
+00130         {                       // no parameter added       
+00131           cerr << "WARNING, no parameter passed to DetTour, using 2" << endl;
+00132           detSize = 2;
+00133           // put back 2 in parameter for consistency (and status file)
+00134           ppSelect.second.push_back (string ("2"));
+00135         }
+00136       else                      // parameter passed by user as DetTour(T)
+00137         detSize = atoi (ppSelect.second[0].c_str ());
+00138       select = new eoDetTournamentWorthSelect < EOT > (*p2w, detSize);
+00139     }
+00140   else if (ppSelect.first == string ("StochTour"))
+00141     {                           // StochTour
+00142       double p;
+00143       if (!ppSelect.second.size ())
+00144         {                       // no parameter added       
+00145           cerr << "WARNING, no parameter passed to StochTour, using 1" <<
+00146             endl;
+00147           p = 1;
+00148           // put back p in parameter for consistency (and status file)
+00149           ppSelect.second.push_back (string ("1"));
+00150         }
+00151       else                      // parameter passed by user as DetTour(T)
+00152         p = atof (ppSelect.second[0].c_str ());
+00153       select = new eoStochTournamentWorthSelect < EOT > (*p2w, p);
+00154     }
+00155   else if (ppSelect.first == string ("Roulette"))
+00156     {                           // Roulette
+00157       select = new eoRouletteWorthSelect < EOT > (*p2w);
+00158     }
+00159   else if (ppSelect.first == string ("Random"))
+00160     {                           // Random
+00161       select = new eoRandomSelect < EOT >;
+00162     }
+00163   else
+00164     {
+00165       string stmp = string ("Invalid selection: ") + ppSelect.first;
+00166       throw std::runtime_error (stmp.c_str ());
+00167     }
+00168   // store  
+00169   _state.storeFunctor (select);
+00170 
+00171 
+00172 
+00173 
+00174 
+00175   /* elitism */
+00176   bool useElitism = _parser.createParam (false, "elitism",
+00177                                          "Use elitism in the selection process (individuals from the archive are randomly selected)",
+00178                                          'E', "Evolution Engine").value ();
+00179   double ratioFromPop = _parser.createParam (0.8, "ratio",
+00180                                              "Ratio from the population for elitism (must not be greater than 1)",
+00181                                              '\0',
+00182                                              "Evolution Engine").value ();
+00183   if (useElitism)
+00184     {
+00185       eoSelectOne < EOT > *selectPop = select;
+00186       select =
+00187         new moeoSelectOneFromPopAndArch < EOT > (*selectPop, _arch,
+00188                                                  ratioFromPop);
+00189       // store  
+00190       _state.storeFunctor (select);
+00191     }
+00192 
+00193 
+00194 
+00195 
+00196 
+00197   /* the number of offspring  */
+00198   eoValueParam < eoHowMany > &offspringRateParam =
+00199     _parser.createParam (eoHowMany (1.0), "nbOffspring",
+00200                          "Nb of offspring (percentage or absolute)", 'O',
+00201                          "Evolution Engine");
+00202 
+00203 
+00204 
+00205 
+00206 
+00207   /* the replacement */
+00208   string & repStr =
+00209     _parser.createParam (string ("Plus"), "replacement",
+00210                          "Replacement: Plus, DistinctPlus or Generational",
+00211                          'R', "Evolution Engine").value ();
+00212   eoReplacement < EOT > *replace;
+00213   if (repStr == string ("Plus"))        // Plus
+00214     {
+00215       replace = new moeoElitistReplacement < EOT, double >(*p2w);
+00216     }
+00217   else if (repStr == string ("DistinctPlus"))   // DistinctPlus
+00218     {
+00219       replace = new moeoDisctinctElitistReplacement < EOT, double >(*p2w);
+00220     }
+00221   else if (repStr == string ("Generational"))   // Generational
+00222     {
+00223       replace = new eoGenerationalReplacement < EOT >;
+00224     }
+00225   else
+00226     {
+00227       string stmp = string ("Invalid replacement: ") + repStr;
+00228       throw std::runtime_error (stmp.c_str ());
+00229     }
+00230   // store
+00231   _state.storeFunctor (replace);
+00232 
+00233 
+00234 
+00235 
+00236 
+00237   // the general breeder
+00238   eoGeneralBreeder < EOT > *breed =
+00239     new eoGeneralBreeder < EOT > (*select, _op, offspringRateParam.value ());
+00240   _state.storeFunctor (breed);
+00241 
+00242   // the eoEasyEA
+00243   eoAlgo < EOT > *algo =
+00244     new eoEasyEA < EOT > (_continue, _eval, *breed, *replace);
+00245   _state.storeFunctor (algo);
+00246   // that's it!
+00247   return *algo;
+00248 }
+00249 
+00250 #endif
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoArchiveFitnessSavingUpdater_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoArchiveFitnessSavingUpdater_8h-source.html new file mode 100644 index 000000000..1a7e023b8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoArchiveFitnessSavingUpdater_8h-source.html @@ -0,0 +1,85 @@ + + +ParadisEO-MOEO: moeoArchiveFitnessSavingUpdater.h Source File + + + + +
+
+

moeoArchiveFitnessSavingUpdater.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoArchiveFitnessSavingUpdater.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef MOEOARCHIVEFITNESSSAVINGUPDATER_H_
+00014 #define MOEOARCHIVEFITNESSSAVINGUPDATER_H_
+00015 
+00016 #include <fstream>
+00017 #include <string>
+00018 #include <eoPop.h>
+00019 #include <utils/eoUpdater.h>
+00020 #include <moeoArchive.h>
+00021 
+00022 #define MAX_BUFFER_SIZE 1000
+00023 
+00027 template < class EOT > class moeoArchiveFitnessSavingUpdater:public eoUpdater
+00028 {
+00029 public:
+00030 
+00037 moeoArchiveFitnessSavingUpdater (moeoArchive < EOT > &_arch, const std::string & _filename = "Res/Arch", int _id = -1):arch (_arch), filename (_filename), id (_id),
+00038     counter
+00039     (0)
+00040   {
+00041   }
+00042 
+00046   void operator () ()
+00047   {
+00048     char buff[MAX_BUFFER_SIZE];
+00049     if (id == -1)
+00050       sprintf (buff, "%s.%u", filename.c_str (), counter++);
+00051     else
+00052       sprintf (buff, "%s.%u.%u", filename.c_str (), id, counter++);
+00053     std::ofstream f (buff);
+00054     for (unsigned i = 0; i < arch.size (); i++)
+00055       f << arch[i].fitness () << std::endl;
+00056     f.close ();
+00057   }
+00058 
+00059 
+00060 private:
+00061 
+00063   moeoArchive < EOT > &arch;
+00065   std::string filename;
+00067   int id;
+00069   unsigned counter;
+00070 
+00071 };
+00072 
+00073 #endif /*MOEOARCHIVEFITNESSSAVINGUPDATER_H_ */
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoArchiveUpdater_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoArchiveUpdater_8h-source.html new file mode 100644 index 000000000..51b540ec2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoArchiveUpdater_8h-source.html @@ -0,0 +1,71 @@ + + +ParadisEO-MOEO: moeoArchiveUpdater.h Source File + + + + +
+
+

moeoArchiveUpdater.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoArchiveUpdater.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef MOEOARCHIVEUPDATER_H_
+00014 #define MOEOARCHIVEUPDATER_H_
+00015 
+00016 #include <eoPop.h>
+00017 #include <utils/eoUpdater.h>
+00018 #include <moeoArchive.h>
+00019 
+00023 template < class EOT > class moeoArchiveUpdater:public eoUpdater
+00024 {
+00025 public:
+00026 
+00032   moeoArchiveUpdater (moeoArchive < EOT > &_arch,
+00033                       const eoPop < EOT > &_pop):arch (_arch), pop (_pop)
+00034   {
+00035   }
+00036 
+00037 
+00041   void operator () ()
+00042   {
+00043     arch.update (pop);
+00044   }
+00045 
+00046 
+00047 private:
+00048 
+00050   moeoArchive < EOT > &arch;
+00052   const eoPop < EOT > &pop;
+00053 
+00054 };
+00055 
+00056 #endif /*MOEOARCHIVEUPDATER_H_ */
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoArchive_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoArchive_8h-source.html new file mode 100644 index 000000000..b6a04f19a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoArchive_8h-source.html @@ -0,0 +1,112 @@ + + +ParadisEO-MOEO: moeoArchive.h Source File + + + + +
+
+

moeoArchive.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoArchive.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef MOEOARCHIVE_H_
+00014 #define MOEOARCHIVE_H_
+00015 
+00016 #include <eoPop.h>
+00017 
+00021 template < class EOT > class moeoArchive:public eoPop < EOT >
+00022 {
+00023 public:
+00024 
+00025   using std::vector < EOT >::size;
+00026   using std::vector < EOT >::operator[];
+00027   using std::vector < EOT >::back;
+00028   using std::vector < EOT >::pop_back;
+00029 
+00033   typedef typename EOT::Fitness EOFitness;
+00034 
+00039   bool dominates (const EOFitness & _fit) const
+00040   {
+00041     for (unsigned i = 0; i < size; i++)
+00042       if (operator[](i).fitness ().dominates (_fit))
+00043         return true;
+00044     return false;
+00045   }
+00046 
+00051   bool contains (const EOFitness & _fit) const
+00052   {
+00053     for (unsigned i = 0; i < size; i++)
+00054       if (operator[](i).fitness () == _fit)
+00055         return true;
+00056     return false;
+00057   }
+00058 
+00063   void update (const EOT & _eo)
+00064   {
+00065     // Removing the dominated solutions from the archive
+00066     for (unsigned j = 0; j < size ();)
+00067       {
+00068         if (_eo.fitness ().dominates (operator[](j).fitness ()))
+00069           {
+00070             operator[](j) = back ();
+00071             pop_back ();
+00072           }
+00073         else if (_eo.fitness () == operator[](j).fitness ())
+00074           {
+00075             operator[](j) = back ();
+00076             pop_back ();
+00077           }
+00078         else
+00079           j++;
+00080       }
+00081 
+00082     // Dominated ?
+00083     bool dom = false;
+00084     for (unsigned j = 0; j < size (); j++)
+00085       if (operator [](j).fitness ().dominates (_eo.fitness ()))
+00086         {
+00087           dom = true;
+00088           break;
+00089         }
+00090     if (!dom)
+00091       push_back (_eo);
+00092   }
+00093 
+00098   void update (const eoPop < EOT > &_pop)
+00099   {
+00100     for (unsigned i = 0; i < _pop.size (); i++)
+00101       update (_pop[i]);
+00102   }
+00103 
+00104 };
+00105 
+00106 #endif /*MOEOARCHIVE_H_ */
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoBinaryMetricSavingUpdater_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoBinaryMetricSavingUpdater_8h-source.html new file mode 100644 index 000000000..ed1f7a34b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoBinaryMetricSavingUpdater_8h-source.html @@ -0,0 +1,100 @@ + + +ParadisEO-MOEO: moeoBinaryMetricSavingUpdater.h Source File + + + + +
+
+

moeoBinaryMetricSavingUpdater.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoBinaryMetricSavingUpdater.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef MOEOBINARYMETRICSAVINGUPDATER_H_
+00014 #define MOEOBINARYMETRICSAVINGUPDATER_H_
+00015 
+00016 #include <fstream>
+00017 #include <string>
+00018 #include <eoPop.h>
+00019 #include <utils/eoUpdater.h>
+00020 #include <metric/moeoMetric.h>
+00021 
+00026 template < class EOT > class moeoBinaryMetricSavingUpdater:public eoUpdater
+00027 {
+00028 public:
+00029 
+00033   typedef typename EOT::Fitness EOFitness;
+00034 
+00041   moeoBinaryMetricSavingUpdater (moeoVectorVsVectorBM < EOT, double >&_metric,
+00042                                  const eoPop < EOT > &_pop,
+00043                                  std::string _filename):metric (_metric),
+00044     pop (_pop), filename (_filename), counter (1)
+00045   {
+00046   }
+00047 
+00051   void operator () ()
+00052   {
+00053     if (pop.size ())
+00054       {
+00055         if (firstGen)
+00056           {
+00057             firstGen = false;
+00058           }
+00059         else
+00060           {
+00061             // creation of the two Pareto sets                              
+00062             std::vector < EOFitness > from;
+00063             std::vector < EOFitness > to;
+00064             for (unsigned i = 0; i < pop.size (); i++)
+00065               from.push_back (pop[i].fitness ());
+00066             for (unsigned i = 0; i < oldPop.size (); i++)
+00067               to.push_back (oldPop[i].fitness ());
+00068             // writing the result into the file
+00069             std::ofstream f (filename.c_str (), std::ios::app);
+00070             f << counter++ << ' ' << metric (from, to) << std::endl;
+00071             f.close ();
+00072           }
+00073         oldPop = pop;
+00074       }
+00075   }
+00076 
+00077 private:
+00078 
+00080   moeoVectorVsVectorBM < EOT, double >&metric;
+00082   const eoPop < EOT > &pop;
+00084   eoPop < EOT > oldPop;
+00086   std::string filename;
+00088   bool firstGen;
+00090   unsigned counter;
+00091 
+00092 };
+00093 
+00094 #endif /*MOEOBINARYMETRICSAVINGUPDATER_H_ */
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoBinaryQualityIndicator_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoBinaryQualityIndicator_8h-source.html new file mode 100644 index 000000000..497f46c4f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoBinaryQualityIndicator_8h-source.html @@ -0,0 +1,350 @@ + + +ParadisEO-MOEO: moeoBinaryQualityIndicator.h Source File + + + + +
+
+

moeoBinaryQualityIndicator.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoBinaryQualityIndicator.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef _moeoBinaryQualityIndicator_h
+00014 #define _moeoBinaryQualityIndicator_h
+00015 
+00016 // for std::exceptions
+00017 #include <stdexcept>
+00018 // for eoBF
+00019 #include <eoFunctor.h>
+00020 
+00021 
+00028 template < class EOFitness > class moeoBinaryQualityIndicator:public eoBF < const EOFitness &, const EOFitness &,
+00029   double >
+00030 {
+00031 
+00032 public:
+00033 
+00037   moeoBinaryQualityIndicator ():eoBF < const EOFitness &, const EOFitness &,
+00038     double >()
+00039   {
+00040     bounds.reserve (traits::nObjectives ());
+00041     bounds.resize (traits::nObjectives ());
+00042   }
+00043 
+00044 
+00051   void setBounds (const unsigned _iObj, const double _min, const double _max)
+00052   {
+00053     bounds[_iObj] = Range (_min, _max);
+00054   }
+00055 
+00056 
+00057 protected:
+00058 
+00062   class Range
+00063   {
+00064   public:
+00065     Range ()
+00066     {
+00067       min = 0;
+00068       max = 0;
+00069       r = 0;
+00070     }
+00071     Range (const double _min, const double _max)
+00072     {
+00073       min = _min;
+00074       max = _max;
+00075       r = max - min;
+00076       if (r < 0)
+00077         throw std::logic_error ("Negative range in eoBinaryQualityIndicator");
+00078     }
+00079     double minimum ()
+00080     {
+00081       return min;
+00082     }
+00083     double maximum ()
+00084     {
+00085       return max;
+00086     }
+00087     double range ()
+00088     {
+00089       return r;
+00090     }
+00091   private:
+00092     double min, max, r;
+00093   };
+00094 
+00095 
+00097   std::vector < Range > bounds;
+00098 
+00099 
+00100 private:
+00101 
+00103   typedef typename EOFitness::fitness_traits traits;
+00104 
+00105 };
+00106 
+00107 
+00108 
+00109 
+00110 
+00115 template < class EOFitness > class moeoAdditiveBinaryEpsilonIndicator:public moeoBinaryQualityIndicator <
+00116   EOFitness
+00117   >
+00118 {
+00119 
+00120 public:
+00121 
+00125 moeoAdditiveBinaryEpsilonIndicator ():moeoBinaryQualityIndicator < EOFitness >
+00126     ()
+00127   {
+00128   }
+00129 
+00130 
+00138   double operator  () (const EOFitness & _fitness_eo1,
+00139                        const EOFitness & _fitness_eo2)
+00140   {
+00141     double epsilon, tmp;
+00142     // computation of the epsilon value for the first objective
+00143     epsilon = epsilonValue (_fitness_eo1, _fitness_eo2, 0);
+00144     // computation of the epsilon value for other objectives
+00145     for (unsigned i = 1; i < traits::nObjectives (); i++)
+00146       {
+00147         tmp = epsilonValue (_fitness_eo1, _fitness_eo2, i);
+00148         epsilon = std::max (epsilon, tmp);
+00149       }
+00150     // the maximum epsilon value
+00151     return epsilon;
+00152   }
+00153 
+00154 
+00155 private:
+00156 
+00158   typedef typename EOFitness::fitness_traits traits;
+00160   using moeoBinaryQualityIndicator < EOFitness >::bounds;
+00161 
+00162 
+00170   double epsilonValue (const EOFitness & _fitness_eo1,
+00171                        const EOFitness & _fitness_eo2, const unsigned _iObj)
+00172   {
+00173     double result;
+00174     if (bounds[_iObj].range () == 0)
+00175       {
+00176         // min==max => every individuals has the same value for this objective      
+00177         result = 0;
+00178       }
+00179     else
+00180       {
+00181         // computation of the epsilon value for the objective _iObj (in case of a minimization)
+00182         result =
+00183           (_fitness_eo1[_iObj] -
+00184            bounds[_iObj].minimum ()) / bounds[_iObj].range ();
+00185         result -=
+00186           (_fitness_eo2[_iObj] -
+00187            bounds[_iObj].minimum ()) / bounds[_iObj].range ();
+00188         // if we are maximizing, invert the value
+00189         if (traits::maximizing (_iObj))
+00190           result = -result;
+00191       }
+00192     // the espilon value
+00193     return result;
+00194   }
+00195 
+00196 };
+00197 
+00198 
+00199 
+00200 
+00201 
+00206 template < class EOFitness > class moeoBinaryHypervolumeIndicator:public moeoBinaryQualityIndicator <
+00207   EOFitness >
+00208 {
+00209 
+00210 public:
+00211 
+00216 moeoBinaryHypervolumeIndicator (double _rho):moeoBinaryQualityIndicator < EOFitness >
+00217     ()
+00218   {
+00219     rho = _rho;
+00220     // consistency check
+00221     if (rho < 1)
+00222       {
+00223         cout <<
+00224           "Warning, reference point rho for the hypervolume calculation must not be smaller than 1"
+00225           << endl;
+00226         cout << "Adjusted to 1" << endl;
+00227         rho = 1;
+00228       }
+00229   }
+00230 
+00231 
+00239   double operator  () (const EOFitness & _fitness_eo1,
+00240                        const EOFitness & _fitness_eo2)
+00241   {
+00242     double result;
+00243     if (_fitness_eo1.dominates (_fitness_eo2))
+00244       result =
+00245         -hypervolumeIndicatorValue (_fitness_eo1, _fitness_eo2,
+00246                                     traits::nObjectives ());
+00247     else
+00248       result =
+00249         hypervolumeIndicatorValue (_fitness_eo2, _fitness_eo1,
+00250                                    traits::nObjectives ());
+00251     return result;
+00252   }
+00253 
+00254 
+00255 private:
+00256 
+00258   typedef typename EOFitness::fitness_traits traits;
+00260   using moeoBinaryQualityIndicator < EOFitness >::bounds;
+00261 
+00263   double rho;
+00264 
+00265 
+00274   double hypervolumeIndicatorValue (const EOFitness & _fitness_eo1,
+00275                                     const EOFitness & _fitness_eo2,
+00276                                     const unsigned _iObj, const bool _flag =
+00277                                     false)
+00278   {
+00279     double result;
+00280     if (bounds[_iObj - 1].range () == 0)
+00281       {
+00282         // min==max => every individuals as the same value for this objective      
+00283         result = 0;
+00284       }
+00285     else
+00286       {
+00287         if (traits::maximizing (_iObj - 1))     // maximizing
+00288           result =
+00289             hypervolumeIndicatorValueMax (_fitness_eo1, _fitness_eo2, _iObj,
+00290                                           _flag);
+00291         else                    // minimizing
+00292           result =
+00293             hypervolumeIndicatorValueMin (_fitness_eo1, _fitness_eo2, _iObj,
+00294                                           _flag);
+00295       }
+00296     return result;
+00297   }
+00298 
+00299 
+00309   double hypervolumeIndicatorValueMin (const EOFitness & _fitness_eo1,
+00310                                        const EOFitness & _fitness_eo2,
+00311                                        const unsigned _iObj, const bool _flag)
+00312   {
+00313     double result;
+00314     double r = rho * bounds[_iObj - 1].range ();
+00315     double max = bounds[_iObj - 1].minimum () + r;
+00316     // fitness of individuals _eo1 and _eo2 for the objective _iObj (if flag==true, _eo2 is not taken into account)
+00317     double fitness_eo1 = _fitness_eo1[_iObj - 1];
+00318     double fitness_eo2;
+00319     if (_flag)
+00320       fitness_eo2 = max;
+00321     else
+00322       fitness_eo2 = _fitness_eo2[_iObj - 1];
+00323     // computation of the volume
+00324     if (_iObj == 1)
+00325       {
+00326         if (fitness_eo1 < fitness_eo2)
+00327           result = (fitness_eo2 - fitness_eo1) / r;
+00328         else
+00329           result = 0;
+00330       }
+00331     else
+00332       {
+00333         if (fitness_eo1 < fitness_eo2)
+00334           {
+00335             result =
+00336               hypervolumeIndicatorValue (_fitness_eo1, _fitness_eo2,
+00337                                          _iObj - 1) * (max - fitness_eo2) / r;
+00338             result +=
+00339               hypervolumeIndicatorValue (_fitness_eo1, _fitness_eo2,
+00340                                          _iObj - 1,
+00341                                          true) * (fitness_eo2 -
+00342                                                   fitness_eo1) / r;
+00343           }
+00344         else
+00345           result =
+00346             hypervolumeIndicatorValue (_fitness_eo1, _fitness_eo2,
+00347                                        _iObj - 1) * (max - fitness_eo2) / r;
+00348       }
+00349     // the volume
+00350     return result;
+00351   }
+00352 
+00353 
+00363   double hypervolumeIndicatorValueMax (const EOFitness & _fitness_eo1,
+00364                                        const EOFitness & _fitness_eo2,
+00365                                        const unsigned _iObj, const bool _flag)
+00366   {
+00367     double result;
+00368     double r = rho * bounds[_iObj - 1].range ();
+00369     double min = bounds[_iObj - 1].maximum () - r;
+00370     // fitness of individuals _eo1 and _eo2 for the objective _iObj (if flag==true, _eo2 is not taken into account)
+00371     double fitness_eo1 = _fitness_eo1[_iObj - 1];
+00372     double fitness_eo2;
+00373     if (_flag)
+00374       fitness_eo2 = min;
+00375     else
+00376       fitness_eo2 = _fitness_eo2[_iObj - 1];
+00377     // computation of the volume
+00378     if (_iObj == 1)
+00379       {
+00380         if (fitness_eo1 > fitness_eo2)
+00381           result = (fitness_eo1 - fitness_eo2) / r;
+00382         else
+00383           result = 0;
+00384       }
+00385     else
+00386       {
+00387         if (fitness_eo1 > fitness_eo2)
+00388           {
+00389             result =
+00390               hypervolumeIndicatorValue (_fitness_eo1, _fitness_eo2,
+00391                                          _iObj - 1) * (fitness_eo2 - min) / r;
+00392             result +=
+00393               hypervolumeIndicatorValue (_fitness_eo1, _fitness_eo2,
+00394                                          _iObj - 1,
+00395                                          true) * (fitness_eo1 -
+00396                                                   fitness_eo2) / r;
+00397           }
+00398         else
+00399           result =
+00400             hypervolumeIndicatorValue (_fitness_eo1, _fitness_eo2,
+00401                                        _iObj - 1) * (fitness_eo2 - min) / r;
+00402       }
+00403     // the volume
+00404     return result;
+00405   }
+00406 
+00407 };
+00408 
+00409 #endif
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoCombinedMOLS_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoCombinedMOLS_8h-source.html new file mode 100644 index 000000000..40dd31945 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoCombinedMOLS_8h-source.html @@ -0,0 +1,78 @@ + + +ParadisEO-MOEO: moeoCombinedMOLS.h Source File + + + + +
+
+

moeoCombinedMOLS.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoCombinedMOLS.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef MOEOCOMBINEDMOLS_H_
+00014 #define MOEOCOMBINEDMOLS_H_
+00015 
+00016 #include <eoEvalFunc.h>
+00017 #include <moeoArchive.h>
+00018 #include <moeoMOLS.h>
+00019 
+00024 template < class EOT > class moeoCombinedMOLS:public moeoMOLS < EOT >
+00025 {
+00026 public:
+00027 
+00033 moeoCombinedMOLS (eoEvalFunc < EOT > &_eval, moeoMOLS < EOT > &_first_ls):eval
+00034     (_eval)
+00035   {
+00036     combinedMOLS.push_back (&_first_ls);
+00037   }
+00038 
+00043   void add (moeoMOLS < EOT > &_ls)
+00044   {
+00045     combinedMOLS.push_back (&_ls);
+00046   }
+00047 
+00054   void operator  () (const EOT & _eo, moeoArchive < EOT > &_arch)
+00055   {
+00056     eval (const_cast < EOT & >(_eo));
+00057     for (unsigned i = 0; i < combinedMOLS.size (); i++)
+00058       combinedMOLS[i]->operator ()(_eo, _arch);
+00059   }
+00060 
+00061 
+00062 private:
+00063 
+00065   eoEvalFunc < EOT > &eval;
+00067   std::vector < moeoMOLS < EOT > *>combinedMOLS;
+00068 
+00069 };
+00070 
+00071 #endif /*MOEOCOMBINEDMOLS_H_ */
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoContributionMetric_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoContributionMetric_8h-source.html new file mode 100644 index 000000000..dffee073f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoContributionMetric_8h-source.html @@ -0,0 +1,116 @@ + + +ParadisEO-MOEO: moeoContributionMetric.h Source File + + + + +
+
+

moeoContributionMetric.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoContributionMetric.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef MOEOCONTRIBUTIONMETRIC_H_
+00014 #define MOEOCONTRIBUTIONMETRIC_H_
+00015 
+00016 #include <metric/moeoMetric.h>
+00017 
+00023 template < class EOT > class moeoContributionMetric:public moeoVectorVsVectorBM < EOT,
+00024   double >
+00025 {
+00026 public:
+00027 
+00031   typedef typename EOT::Fitness EOFitness;
+00032 
+00038   double operator () (const std::vector < EOFitness > &_set1,
+00039                       const std::vector < EOFitness > &_set2)
+00040   {
+00041     unsigned c = card_C (_set1, _set2);
+00042     unsigned w1 = card_W (_set1, _set2);
+00043     unsigned n1 = card_N (_set1, _set2);
+00044     unsigned w2 = card_W (_set2, _set1);
+00045     unsigned n2 = card_N (_set2, _set1);
+00046       return (double) (c / 2.0 + w1 + n1) / (c + w1 + n1 + w2 + n2);
+00047   }
+00048 
+00049 
+00050 private:
+00051 
+00057   unsigned card_C (const std::vector < EOFitness > &_set1,
+00058                    const std::vector < EOFitness > &_set2)
+00059   {
+00060     unsigned c = 0;
+00061     for (unsigned i = 0; i < _set1.size (); i++)
+00062       for (unsigned j = 0; j < _set2.size (); j++)
+00063         if (_set1[i] == _set2[j])
+00064           {
+00065             c++;
+00066             break;
+00067           }
+00068     return c;
+00069   }
+00070 
+00076   unsigned card_W (const std::vector < EOFitness > &_set1,
+00077                    const std::vector < EOFitness > &_set2)
+00078   {
+00079     unsigned w = 0;
+00080     for (unsigned i = 0; i < _set1.size (); i++)
+00081       for (unsigned j = 0; j < _set2.size (); j++)
+00082         if (_set1[i].dominates (_set2[j]))
+00083           {
+00084             w++;
+00085             break;
+00086           }
+00087     return w;
+00088   }
+00089 
+00095   unsigned card_N (const std::vector < EOFitness > &_set1,
+00096                    const std::vector < EOFitness > &_set2)
+00097   {
+00098     unsigned n = 0;
+00099     for (unsigned i = 0; i < _set1.size (); i++)
+00100       {
+00101         bool domin_rel = false;
+00102         for (unsigned j = 0; j < _set2.size (); j++)
+00103           if (_set1[i].dominates (_set2[j]) || _set2[j].dominates (_set1[i]))
+00104             {
+00105               domin_rel = true;
+00106               break;
+00107             }
+00108         if (!domin_rel)
+00109           n++;
+00110       }
+00111     return n;
+00112   }
+00113 
+00114 };
+00115 
+00116 #endif /*MOEOCONTRIBUTIONMETRIC_H_ */
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoEntropyMetric_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoEntropyMetric_8h-source.html new file mode 100644 index 000000000..1e9095ebb --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoEntropyMetric_8h-source.html @@ -0,0 +1,194 @@ + + +ParadisEO-MOEO: moeoEntropyMetric.h Source File + + + + +
+
+

moeoEntropyMetric.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoEntropyMetric.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef MOEOENTROPYMETRIC_H_
+00014 #define MOEOENTROPYMETRIC_H_
+00015 
+00016 #include <metric/moeoMetric.h>
+00017 
+00023 template < class EOT > class moeoEntropyMetric:public moeoVectorVsVectorBM < EOT,
+00024   double >
+00025 {
+00026 public:
+00027 
+00031   typedef typename EOT::Fitness EOFitness;
+00032 
+00038   double operator () (const std::vector < EOFitness > &_set1,
+00039                       const std::vector < EOFitness > &_set2)
+00040   {
+00041     // normalization
+00042     std::vector < EOFitness > set1 = _set1;
+00043     std::vector < EOFitness > set2 = _set2;
+00044     removeDominated (set1);
+00045     removeDominated (set2);
+00046     prenormalize (set1);
+00047     normalize (set1);
+00048     normalize (set2);
+00049 
+00050     // making of PO*
+00051     std::vector < EOFitness > star;     // rotf :-)
+00052     computeUnion (set1, set2, star);
+00053     removeDominated (star);
+00054 
+00055     // making of PO1 U PO*
+00056     std::vector < EOFitness > union_set1_star;  // rotf again ...
+00057     computeUnion (set1, star, union_set1_star);
+00058 
+00059     unsigned C = union_set1_star.size ();
+00060     float omega = 0;
+00061     float entropy = 0;
+00062 
+00063     for (unsigned i = 0; i < C; i++)
+00064       {
+00065         unsigned N_i =
+00066           howManyInNicheOf (union_set1_star, union_set1_star[i],
+00067                             star.size ());
+00068         unsigned n_i =
+00069           howManyInNicheOf (set1, union_set1_star[i], star.size ());
+00070         if (n_i > 0)
+00071           {
+00072             omega += 1.0 / N_i;
+00073             entropy +=
+00074               (float) n_i / (N_i * C) * log (((float) n_i / C) / log (2.0));
+00075           }
+00076       }
+00077     entropy /= -log (omega);
+00078     entropy *= log (2.0);
+00079     return entropy;
+00080   }
+00081 
+00082 
+00083 private:
+00084 
+00085   std::vector < double >vect_min_val;
+00086   std::vector < double >vect_max_val;
+00087 
+00088   void removeDominated (std::vector < EOFitness > &_f)
+00089   {
+00090     for (unsigned i = 0; i < _f.size (); i++)
+00091       {
+00092         bool dom = false;
+00093         for (unsigned j = 0; j < _f.size (); j++)
+00094           if (i != j && _f[j].dominates (_f[i]))
+00095             {
+00096               dom = true;
+00097               break;
+00098             }
+00099         if (dom)
+00100           {
+00101             _f[i] = _f.back ();
+00102             _f.pop_back ();
+00103             i--;
+00104           }
+00105       }
+00106   }
+00107 
+00108   void prenormalize (const std::vector < EOFitness > &_f)
+00109   {
+00110     vect_min_val.clear ();
+00111     vect_max_val.clear ();
+00112 
+00113     for (unsigned char i = 0; i < EOFitness::fitness_traits::nObjectives ();
+00114          i++)
+00115       {
+00116         float min_val = _f.front ()[i], max_val = min_val;
+00117         for (unsigned j = 1; j < _f.size (); j++)
+00118           {
+00119             if (_f[j][i] < min_val)
+00120               min_val = _f[j][i];
+00121             if (_f[j][i] > max_val)
+00122               max_val = _f[j][i];
+00123           }
+00124         vect_min_val.push_back (min_val);
+00125         vect_max_val.push_back (max_val);
+00126       }
+00127   }
+00128 
+00129   void normalize (std::vector < EOFitness > &_f)
+00130   {
+00131     for (unsigned i = 0; i < EOFitness::fitness_traits::nObjectives (); i++)
+00132       for (unsigned j = 0; j < _f.size (); j++)
+00133         _f[j][i] =
+00134           (_f[j][i] - vect_min_val[i]) / (vect_max_val[i] - vect_min_val[i]);
+00135   }
+00136 
+00137   void computeUnion (const std::vector < EOFitness > &_f1,
+00138                      const std::vector < EOFitness > &_f2,
+00139                      std::vector < EOFitness > &_f)
+00140   {
+00141     _f = _f1;
+00142     for (unsigned i = 0; i < _f2.size (); i++)
+00143       {
+00144         bool b = false;
+00145         for (unsigned j = 0; j < _f1.size (); j++)
+00146           if (_f1[j] == _f2[i])
+00147             {
+00148               b = true;
+00149               break;
+00150             }
+00151         if (!b)
+00152           _f.push_back (_f2[i]);
+00153       }
+00154   }
+00155 
+00156   unsigned howManyInNicheOf (const std::vector < EOFitness > &_f,
+00157                              const EOFitness & _s, unsigned _size)
+00158   {
+00159     unsigned n = 0;
+00160     for (unsigned i = 0; i < _f.size (); i++)
+00161       {
+00162         if (euclidianDistance (_f[i], _s) < (_s.size () / (double) _size))
+00163           n++;
+00164       }
+00165     return n;
+00166   }
+00167 
+00168   double euclidianDistance (const EOFitness & _set1, const EOFitness & _to,
+00169                             unsigned _deg = 2)
+00170   {
+00171     double dist = 0;
+00172     for (unsigned i = 0; i < _set1.size (); i++)
+00173       dist += pow (fabs (_set1[i] - _to[i]), (int) _deg);
+00174     return pow (dist, 1.0 / _deg);
+00175   }
+00176 
+00177 };
+00178 
+00179 #endif /*MOEOENTROPYMETRIC_H_ */
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoHybridMOLS_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoHybridMOLS_8h-source.html new file mode 100644 index 000000000..f6df69e4e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoHybridMOLS_8h-source.html @@ -0,0 +1,84 @@ + + +ParadisEO-MOEO: moeoHybridMOLS.h Source File + + + + +
+
+

moeoHybridMOLS.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoHybridMOLS.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef MOEOHYBRIDMOLS_H_
+00014 #define MOEOHYBRIDMOLS_H_
+00015 
+00016 #include <eoContinue.h>
+00017 #include <eoPop.h>
+00018 #include <eoUpdater.h>
+00019 #include <eoSelect.h>
+00020 #include <moeoArchive.h>
+00021 #include <moeoMOLS.h>
+00022 
+00027 template < class EOT > class moeoHybridMOLS:public eoUpdater
+00028 {
+00029 public:
+00030 
+00038 eoHybridMOLS (eoContinue < EOT > &_term, eoSelect < EOT > &_select, moeoMOLS < EOT > &_mols, moeoArchive < EOT > &_arch):term (_term), select (_select), mols (_mols),
+00039     arch
+00040     (_arch)
+00041   {
+00042   }
+00043 
+00047   void operator  () ()
+00048   {
+00049     if (!cont (arch))
+00050       {
+00051         // selection of solutions
+00052         eoPop < EOT > selectedSolutions;
+00053         select (arch, selectedSolutions);
+00054         // apply the local search to every selected solution
+00055         for (unsigned i = 0; i < selectedSolutions.size (); i++)
+00056           mols (selectedSolutions[i], arch);
+00057       }
+00058   }
+00059 
+00060 
+00061 private:
+00062 
+00064   eoContinue < EOT > &term;
+00066   eoSelect < EOT > &select;
+00068   moeoMOLS < EOT > &mols;
+00070   moeoArchive < EOT > &arch;
+00071 
+00072 };
+00073 
+00074 #endif /*MOEOHYBRIDMOLS_H_ */
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoIBEA_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoIBEA_8h-source.html new file mode 100644 index 000000000..9793f089e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoIBEA_8h-source.html @@ -0,0 +1,427 @@ + + +ParadisEO-MOEO: moeoIBEA.h Source File + + + + +
+
+

moeoIBEA.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoIBEASorting.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 
+00014 #ifndef _moeoIBEASorting_h
+00015 #define _moeoIBEASorting_h
+00016 
+00017 #include <math.h>
+00018 #include <list>
+00019 #include <eoPop.h>
+00020 #include <eoPerf2Worth.h>
+00021 #include "moeoBinaryQualityIndicator.h"
+00022 
+00023 
+00028 template < class EOT, class Fitness > class moeoIBEA:public eoPerf2WorthCached < EOT,
+00029   double >
+00030 {
+00031 
+00032 public:
+00034   using eoPerf2WorthCached < EOT, double >::value;
+00035 
+00036     moeoIBEA (moeoBinaryQualityIndicator < Fitness > *_I)
+00037   {
+00038     I = _I;
+00039   }
+00040 
+00041 
+00046   void calculate_worths (const eoPop < EOT > &_pop)
+00047   {
+00048     /* resizing the worths beforehand */
+00049     value ().resize (_pop.size ());
+00050 
+00051     /* computation and setting of the bounds for each objective */
+00052     setBounds (_pop);
+00053 
+00054     /* computation of the fitness for each individual */
+00055     fitnesses (_pop);
+00056 
+00057     // higher is better, so invert the value
+00058     double max = *std::max_element (value ().begin (), value ().end ());
+00059     for (unsigned i = 0; i < value ().size (); i++)
+00060       value ()[i] = max - value ()[i];
+00061   }
+00062 
+00063 
+00064 protected:
+00065 
+00067   moeoBinaryQualityIndicator < Fitness > *I;
+00068 
+00069   virtual void setBounds (const eoPop < EOT > &_pop) = 0;
+00070   virtual void fitnesses (const eoPop < EOT > &_pop) = 0;
+00071 
+00072 };
+00073 
+00074 
+00075 
+00076 
+00077 
+00084 template < class EOT, class Fitness = typename EOT::Fitness > class moeoIBEASorting:public moeoIBEA < EOT,
+00085   Fitness
+00086   >
+00087 {
+00088 
+00089 public:
+00090 
+00096   moeoIBEASorting (moeoBinaryQualityIndicator < Fitness > *_I,
+00097                    const double _kappa):
+00098     moeoIBEA <
+00099     EOT,
+00100   Fitness > (_I)
+00101   {
+00102     kappa = _kappa;
+00103   }
+00104 
+00105 
+00106 private:
+00108   using moeoIBEA < EOT, Fitness >::I;
+00110   using moeoIBEA < EOT, Fitness >::value;
+00112   double
+00113     kappa;
+00114 
+00115 
+00120   void
+00121   setBounds (const eoPop < EOT > &_pop)
+00122   {
+00123     typedef
+00124       typename
+00125       EOT::Fitness::fitness_traits
+00126       traits;
+00127     double
+00128       min,
+00129       max;
+00130     for (unsigned i = 0; i < traits::nObjectives (); i++)
+00131       {
+00132         min = _pop[0].fitness ()[i];
+00133         max = _pop[0].fitness ()[i];
+00134         for (unsigned j = 1; j < _pop.size (); j++)
+00135           {
+00136             min = std::min (min, _pop[j].fitness ()[i]);
+00137             max = std::max (max, _pop[j].fitness ()[i]);
+00138           }
+00139         // setting of the bounds for the objective i
+00140         I->setBounds (i, min, max);
+00141       }
+00142   }
+00143 
+00144 
+00149   void
+00150   fitnesses (const eoPop < EOT > &_pop)
+00151   {
+00152     // reprsentation of the fitness components
+00153     std::vector < std::vector < double > >
+00154     fitComponents (_pop.size (), _pop.size ());
+00155     // the maximum absolute indicator value
+00156     double
+00157       maxAbsoluteIndicatorValue = 0;
+00158 
+00159     // computation of the indicator values and of the maximum absolute indicator value
+00160     for (unsigned i = 0; i < _pop.size (); i++)
+00161       for (unsigned j = 0; j < _pop.size (); j++)
+00162         if (i != j)
+00163           {
+00164             fitComponents[i][j] =
+00165               (*I) (_pop[i].fitness (), _pop[j].fitness ());
+00166             maxAbsoluteIndicatorValue =
+00167               std::max (maxAbsoluteIndicatorValue,
+00168                         fabs (fitComponents[i][j]));
+00169           }
+00170 
+00171     // computation of the fitness components for each pair of individuals
+00172     // if maxAbsoluteIndicatorValue==0, every individuals have the same fitness values for all objectives (already = 0)
+00173     if (maxAbsoluteIndicatorValue != 0)
+00174       for (unsigned i = 0; i < _pop.size (); i++)
+00175         for (unsigned j = 0; j < _pop.size (); j++)
+00176           if (i != j)
+00177             fitComponents[i][j] =
+00178               exp (-fitComponents[i][j] /
+00179                    (maxAbsoluteIndicatorValue * kappa));
+00180 
+00181     // computation of the fitness for each individual
+00182     for (unsigned i = 0; i < _pop.size (); i++)
+00183       {
+00184         value ()[i] = 0;
+00185         for (unsigned j = 0; j < _pop.size (); j++)
+00186           if (i != j)
+00187             value ()[i] += fitComponents[j][i];
+00188       }
+00189   }
+00190 
+00191 };
+00192 
+00193 
+00194 
+00195 
+00196 
+00203 template < class EOT, class FitnessEval = typename EOT::Fitness::FitnessEval > class moeoIBEAStochSorting:public moeoIBEA < EOT,
+00204   FitnessEval
+00205   >
+00206 {
+00207 
+00208 public:
+00209 
+00214 moeoIBEAStochSorting (moeoBinaryQualityIndicator < FitnessEval > *_I):moeoIBEA < EOT,
+00215     FitnessEval >
+00216     (_I)
+00217   {
+00218   }
+00219 
+00220 
+00221 private:
+00223   using moeoIBEAStochSorting < EOT, FitnessEval >::I;
+00225   using moeoIBEAStochSorting < EOT, FitnessEval >::value;
+00226 
+00227 
+00231   static double
+00232   zero ()
+00233   {
+00234     return 1e-7;
+00235   }
+00236 
+00237 
+00242   void
+00243   setBounds (const eoPop < EOT > &_pop)
+00244   {
+00245     typedef
+00246       typename
+00247       EOT::Fitness::FitnessTraits
+00248       traits;
+00249     double
+00250       min,
+00251       max;
+00252     for (unsigned i = 0; i < traits::nObjectives (); i++)
+00253       {
+00254         min = _pop[0].fitness ().minimum (i);
+00255         max = _pop[0].fitness ().maximum (i);
+00256         for (unsigned j = 1; j < _pop.size (); j++)
+00257           {
+00258             min = std::min (min, _pop[j].fitness ().minimum (i));
+00259             max = std::max (max, _pop[j].fitness ().maximum (i));
+00260           }
+00261         // setting of the bounds for the ith objective
+00262         I->setBounds (i, min, max);
+00263       }
+00264   }
+00265 
+00266 
+00271   void
+00272   fitnesses (const eoPop < EOT > &_pop)
+00273   {
+00274     typedef
+00275       typename
+00276       EOT::Fitness::FitnessTraits
+00277       traits;
+00278     unsigned
+00279       nEval = traits::nEvaluations ();
+00280     unsigned
+00281       index;
+00282     double
+00283       eiv,
+00284       p,
+00285       sumP,
+00286       iValue;
+00287     std::list < std::pair < double, unsigned > >
+00288       l;
+00289     std::vector < unsigned >
+00290     n (_pop.size ());
+00291 
+00292     for (unsigned ind = 0; ind < _pop.size (); ind++)
+00293       {
+00294         value ()[ind] = 0.0;    // fitness value for the individual ind
+00295         for (unsigned eval = 0; eval < nEval; eval++)
+00296           {
+00297 
+00298             // I-values computation for the evaluation eval of the individual ind
+00299             l.clear ();
+00300             for (unsigned i = 0; i < _pop.size (); i++)
+00301               {
+00302                 if (i != ind)
+00303                   {
+00304                     for (unsigned j = 0; j < nEval; j++)
+00305                       {
+00306                         std::pair < double, unsigned >
+00307                           pa;
+00308                         // I-value
+00309                         pa.first =
+00310                           (*I) (_pop[ind].fitness ()[eval],
+00311                                 _pop[i].fitness ()[j]);
+00312                         // index of the individual
+00313                         pa.second = i;
+00314                         // append this to the list
+00315                         l.push_back (pa);
+00316                       }
+00317                   }
+00318               }
+00319 
+00320             // sorting of the I-values (in decreasing order)
+00321             l.sort ();
+00322 
+00323             // computation of the Expected Indicator Value (eiv) for the evaluation eval of the individual ind
+00324             eiv = 0.0;
+00325             n.assign (n.size (), 0);    // n[i]==0 for all i
+00326             sumP = 0.0;
+00327             while (((1 - sumP) > zero ()) && (l.size () > 0))
+00328               {
+00329                 // we use the last element of the list (the greatest one)
+00330                 iValue = l.back ().first;
+00331                 index = l.back ().second;
+00332                 // computation of the probability to appear
+00333                 p = (1.0 / (nEval - n[index])) * (1.0 - sumP);
+00334                 // eiv update
+00335                 eiv += p * iValue;
+00336                 // update of the number of elements for individual index
+00337                 n[index]++;
+00338                 // removing the last element of the list
+00339                 l.pop_back ();
+00340                 // sum of p update
+00341                 sumP += p;
+00342               }
+00343             value ()[ind] += eiv / nEval;
+00344           }
+00345       }
+00346 
+00347   }
+00348 
+00349 };
+00350 
+00351 
+00352 
+00353 
+00354 
+00361 template < class EOT, class FitnessEval = typename EOT::Fitness::FitnessEval > class moeoIBEAAvgSorting:public moeoIBEA < EOT,
+00362   FitnessEval
+00363   >
+00364 {
+00365 
+00366 public:
+00367 
+00373   moeoIBEAAvgSorting (moeoBinaryQualityIndicator < FitnessEval > *_I,
+00374                       const double _kappa):
+00375     moeoIBEA <
+00376     EOT,
+00377   FitnessEval > (_I)
+00378   {
+00379     kappa = _kappa;
+00380   }
+00381 
+00382 
+00383 private:
+00385   using moeoIBEAAvgSorting < EOT, FitnessEval >::I;
+00387   using moeoIBEAAvgSorting < EOT, FitnessEval >::value;
+00389   double
+00390     kappa;
+00391 
+00392 
+00397   void
+00398   setBounds (const eoPop < EOT > &_pop)
+00399   {
+00400     typedef
+00401       typename
+00402       EOT::Fitness::FitnessTraits
+00403       traits;
+00404     double
+00405       min,
+00406       max;
+00407     for (unsigned i = 0; i < traits::nObjectives (); i++)
+00408       {
+00409         min = _pop[0].fitness ().averagedParetoFitnessObject ()[i];
+00410         max = _pop[0].fitness ().averagedParetoFitnessObject ()[i];
+00411         for (unsigned j = 1; j < _pop.size (); j++)
+00412           {
+00413             min =
+00414               std::min (min,
+00415                         _pop[j].fitness ().averagedParetoFitnessObject ()[i]);
+00416             max =
+00417               std::max (max,
+00418                         _pop[j].fitness ().averagedParetoFitnessObject ()[i]);
+00419           }
+00420         // setting of the bounds for the objective i
+00421         I->setBounds (i, min, max);
+00422       }
+00423   }
+00424 
+00425 
+00430   void
+00431   fitnesses (const eoPop < EOT > &_pop)
+00432   {
+00433     // reprsentation of the fitness components
+00434     std::vector < std::vector < double > >
+00435     fitComponents (_pop.size (), _pop.size ());
+00436     // the maximum absolute indicator value
+00437     double
+00438       maxAbsoluteIndicatorValue = 0;
+00439 
+00440     // computation of the indicator values and of the maximum absolute indicator value
+00441     for (unsigned i = 0; i < _pop.size (); i++)
+00442       for (unsigned j = 0; j < _pop.size (); j++)
+00443         if (i != j)
+00444           {
+00445             fitComponents[i][j] =
+00446               (*I) (_pop[i].fitness ().averagedParetoFitnessObject (),
+00447                     _pop[j].fitness ().averagedParetoFitnessObject ());
+00448             maxAbsoluteIndicatorValue =
+00449               std::max (maxAbsoluteIndicatorValue,
+00450                         fabs (fitComponents[i][j]));
+00451           }
+00452 
+00453     // computation of the fitness components for each pair of individuals
+00454     // if maxAbsoluteIndicatorValue==0, every individuals have the same fitness values for all objectives (already = 0)
+00455     if (maxAbsoluteIndicatorValue != 0)
+00456       for (unsigned i = 0; i < _pop.size (); i++)
+00457         for (unsigned j = 0; j < _pop.size (); j++)
+00458           if (i != j)
+00459             fitComponents[i][j] =
+00460               exp (-fitComponents[i][j] /
+00461                    (maxAbsoluteIndicatorValue * kappa));
+00462 
+00463     // computation of the fitness for each individual
+00464     for (unsigned i = 0; i < _pop.size (); i++)
+00465       {
+00466         value ()[i] = 0;
+00467         for (unsigned j = 0; j < _pop.size (); j++)
+00468           if (i != j)
+00469             value ()[i] += fitComponents[j][i];
+00470       }
+00471   }
+00472 
+00473 };
+00474 
+00475 
+00476 #endif
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoMOLS_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoMOLS_8h-source.html new file mode 100644 index 000000000..9edb7898b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoMOLS_8h-source.html @@ -0,0 +1,52 @@ + + +ParadisEO-MOEO: moeoMOLS.h Source File + + + + +
+
+

moeoMOLS.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoMOLS.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef MOEOMOLS_H_
+00014 #define MOEOMOLS_H_
+00015 
+00016 #include <eoFunctor.h>
+00017 #include <moeoArchive.h>
+00018 
+00023 template < class EOT > class moeoMOLS:public eoBF < const EOT &, moeoArchive < EOT > &,
+00024   void >
+00025 {
+00026 };
+00027 
+00028 #endif /*MOEOMOLS_H_ */
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoMetric_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoMetric_8h-source.html new file mode 100644 index 000000000..e9610c120 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoMetric_8h-source.html @@ -0,0 +1,110 @@ + + +ParadisEO-MOEO: moeoMetric.h Source File + + + + +
+
+

moeoMetric.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoMetric.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef MOEOMETRIC_H_
+00014 #define MOEOMETRIC_H_
+00015 
+00016 #include <eoFunctor.h>
+00017 
+00021 class moeoMetric:public eoFunctorBase
+00022 {
+00023 };
+00024 
+00025 
+00029 template < class A, class R > class moeoUM:public eoUF < A, R >,
+00030   public moeoMetric
+00031 {
+00032 };
+00033 
+00034 
+00038 template < class A1, class A2, class R > class moeoBM:public eoBF < A1, A2, R >,
+00039   public moeoMetric
+00040 {
+00041 };
+00042 
+00043 
+00047 template < class EOT, class R, class EOFitness = typename EOT::Fitness > class moeoSolutionUM:public moeoUM <
+00048   const
+00049   EOFitness &,
+00050   R >
+00051 {
+00052 };
+00053 
+00054 
+00058 template < class EOT, class R, class EOFitness = typename EOT::Fitness > class moeoVectorUM:public moeoUM <
+00059   const
+00060   std::vector <
+00061 EOFitness > &,
+00062   R >
+00063 {
+00064 };
+00065 
+00066 
+00070 template < class EOT, class R, class EOFitness = typename EOT::Fitness > class moeoSolutionVsSolutionBM:public moeoBM <
+00071   const
+00072   EOFitness &, const
+00073   EOFitness &,
+00074   R >
+00075 {
+00076 };
+00077 
+00078 
+00082 template < class EOT, class R, class EOFitness = typename EOT::Fitness > class moeoVectorVsSolutionBM:public moeoBM <
+00083   const
+00084   std::vector <
+00085 EOFitness > &, const
+00086   EOFitness &,
+00087   R >
+00088 {
+00089 };
+00090 
+00091 
+00095 template < class EOT, class R, class EOFitness = typename EOT::Fitness > class moeoVectorVsVectorBM:public moeoBM <
+00096   const
+00097   std::vector <
+00098 EOFitness > &, const
+00099   std::vector <
+00100 EOFitness > &,
+00101   R >
+00102 {
+00103 };
+00104 
+00105 
+00106 #endif /*MOEOMETRIC_H_ */
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoNDSorting_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoNDSorting_8h-source.html new file mode 100644 index 000000000..3d6719c32 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoNDSorting_8h-source.html @@ -0,0 +1,121 @@ + + +ParadisEO-MOEO: moeoNDSorting.h Source File + + + + +
+
+

moeoNDSorting.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoNDSorting.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef moeoNDSorting_h
+00014 #define moeoNDSorting_h
+00015 
+00016 #include <cfloat>
+00017 #include <eoNDSorting.h>
+00018 
+00019 # define INF 1.0e14             // DBL_MAX
+00020 
+00026 template < class EOT > class moeoNDSorting_II:public eoNDSorting < EOT >
+00027 {
+00028 public:
+00029 
+00033 moeoNDSorting_II (bool nasty_flag_ = false):eoNDSorting < EOT >
+00034     (nasty_flag_)
+00035   {
+00036   }
+00037 
+00041   typedef std::pair < double, unsigned >double_index_pair;
+00042 
+00046   class compare_nodes
+00047   {
+00048     public:bool operator () (const double_index_pair & a,
+00049                              const double_index_pair & b) const
+00050     {
+00051       return a.first < b.first;
+00052     }
+00053   };
+00054 
+00056   std::vector < double >niche_penalty (const std::vector < unsigned >&_cf,
+00057                                        const eoPop < EOT > &_pop)
+00058   {
+00059     typedef typename EOT::Fitness::fitness_traits traits;
+00060     unsigned i;
+00061     std::vector < double >niche_count (_cf.size (), 0.);
+00062 
+00063 
+00064     unsigned nObjectives = traits::nObjectives ();      //_pop[_cf[0]].fitness().size();
+00065 
+00066     for (unsigned o = 0; o < nObjectives; ++o)
+00067       {
+00068         std::vector < std::pair < double,
+00069           unsigned > >performance (_cf.size ());
+00070         for (i = 0; i < _cf.size (); ++i)
+00071           {
+00072             performance[i].first = _pop[_cf[i]].fitness ()[o];
+00073             performance[i].second = i;
+00074           }
+00075 
+00076         std::sort (performance.begin (), performance.end (), compare_nodes ()); // a lambda operator would've been nice here
+00077 
+00078         // set boundary at INF (so it will get chosen over all the others
+00079         niche_count[performance[0].second] = INF;
+00080         niche_count[performance.back ().second] = INF;
+00081 
+00082         if (performance[0].first != performance.back ().first)
+00083           {
+00084             for (i = 1; i < _cf.size () - 1; ++i)
+00085               {
+00086                 if (niche_count[performance[i].second] != INF)
+00087                   {
+00088                     niche_count[performance[i].second] +=
+00089                       (performance[i + 1].first -
+00090                        performance[i -
+00091                                    1].first) / (performance.back ().first -
+00092                                                 performance[0].first);
+00093                   }
+00094               }
+00095           }
+00096       }
+00097 
+00098     // transform niche_count into penality
+00099     for (i = 0; i < niche_count.size (); ++i)
+00100       {
+00101         niche_count[i] = INF - niche_count[i];
+00102       }
+00103 
+00104     return niche_count;
+00105   }
+00106 };
+00107 
+00108 #endif
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoNSGA__II_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoNSGA__II_8h-source.html new file mode 100644 index 000000000..88867d67b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoNSGA__II_8h-source.html @@ -0,0 +1,115 @@ + + +ParadisEO-MOEO: moeoNSGA_II.h Source File + + + + +
+
+

moeoNSGA_II.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoNSGA_II.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
+00006 // (c) Deneche Abdelhakim, 2006
+00007 /*
+00008     This library...
+00009 
+00010     Contact: paradiseo-help@lists.gforge.inria.fr
+00011  */
+00012 //-----------------------------------------------------------------------------
+00013 #ifndef MOEONSGA_II_H_
+00014 #define MOEONSGA_II_H_
+00015 
+00016 #include <eoGeneralBreeder.h>
+00017 #include <eoBreed.h>
+00018 #include <eoContinue.h>
+00019 #include <eoEvalFunc.h>
+00020 #include <eoGenContinue.h>
+00021 #include <eoGenOp.h>
+00022 #include <eoPopEvalFunc.h>
+00023 #include <eoSelectOne.h>
+00024 #include <eoSGAGenOp.h>
+00025 
+00026 #include <moeoNDSorting.h>
+00027 #include <moeoReplacement.h>
+00028 
+00031 template < class EOT > class moeoNSGA_II:public eoAlgo < EOT >
+00032 {
+00033 public:
+00034 
+00046   moeoNSGA_II (unsigned _max_gen, eoEvalFunc < EOT > &_eval, eoGenOp < EOT > &_op):continuator (*(new eoGenContinue < EOT > (_max_gen))), eval (_eval), loopEval (_eval), popEval (loopEval), selectOne (sorting, 2),   // binary tournament selection
+00047     replace (sorting), genBreed (selectOne, _op), breed (genBreed)
+00048   {
+00049   }
+00050 
+00052   moeoNSGA_II (unsigned _max_gen, eoEvalFunc < EOT > &_eval, eoQuadOp < EOT > &crossover, double pCross, eoMonOp < EOT > &mutation, double pMut):continuator (*(new eoGenContinue < EOT > (_max_gen))), eval (_eval), loopEval (_eval), popEval (loopEval), selectOne (sorting, 2),     // binary tournament selection
+00053    
+00054     replace (sorting),
+00055     genBreed (selectOne,
+00056               *new eoSGAGenOp < EOT > (crossover, pCross, mutation, pMut)),
+00057     breed (genBreed)
+00058   {
+00059   }
+00060 
+00062 moeoNSGA_II (eoContinue < EOT > &_continuator, eoEvalFunc < EOT > &_eval, eoGenOp < EOT > &_op):
+00063   continuator (_continuator), eval (_eval), loopEval (_eval), popEval (loopEval), selectOne (sorting, 2),       // binary tournament selection
+00064     replace (sorting), genBreed (selectOne, _op), breed (genBreed)
+00065   {
+00066   }
+00067 
+00069   virtual void operator () (eoPop < EOT > &_pop)
+00070   {
+00071     eoPop < EOT > offspring, empty_pop;
+00072     popEval (empty_pop, _pop);  // a first eval of _pop
+00073     do
+00074       {
+00075         // generate offspring, worths are recalculated if necessary
+00076         breed (_pop, offspring);
+00077 
+00078         // eval of offspring
+00079         popEval (_pop, offspring);
+00080 
+00081         // after replace, the new pop is in _pop. Worths are recalculated if necessary
+00082         replace (_pop, offspring);
+00083 
+00084       }
+00085     while (continuator (_pop));
+00086   }
+00087 
+00088 protected:
+00089   eoContinue < EOT > &continuator;
+00090 
+00091   eoEvalFunc < EOT > &eval;
+00092   eoPopLoopEval < EOT > loopEval;
+00093 
+00094   eoPopEvalFunc < EOT > &popEval;
+00095 
+00097   moeoNDSorting_II < EOT > sorting;
+00099   eoDetTournamentWorthSelect < EOT > selectOne;
+00101   moeoElitistReplacement < EOT > replace;
+00102   eoGeneralBreeder < EOT > genBreed;
+00103   eoBreed < EOT > &breed;
+00104 };
+00105 
+00106 #endif
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoParetoPhenDist_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoParetoPhenDist_8h-source.html new file mode 100644 index 000000000..271d7fa44 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoParetoPhenDist_8h-source.html @@ -0,0 +1,78 @@ + + +ParadisEO-MOEO: moeoParetoPhenDist.h Source File + + + + +
+
+

moeoParetoPhenDist.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoParetoPhenDist.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #include<eoParetoFitness.h>
+00014 
+00015 template < class EOT, class DistType > class moeoParetoPhenDist
+00016 {
+00017 public:
+00018   virtual DistType operator  ()(const EOT & eopf1, const EOT & eopf2) = 0;
+00019 
+00020 };
+00021 
+00022 
+00023 
+00024 //Euclidien distance
+00025 
+00026 template < class EOT, class DistType =
+00027   double >class moeoParetoEuclidDist:public moeoParetoPhenDist < EOT,
+00028   DistType >
+00029 {
+00030 
+00031 public:
+00032   DistType operator  () (const EOT & eopf1, const EOT & eopf2)
+00033   {
+00034     double res = 0.0;
+00035     double max = 0.0;
+00036     double temp;
+00037     for (unsigned i = 0; i < eopf1.fitness ().size (); ++i)
+00038       {
+00039         temp =
+00040           (eopf1.fitness ().operator[](i) -
+00041            eopf2.fitness ().operator[](i)) * (eopf1.fitness ().operator[](i) -
+00042                                               eopf2.fitness ().operator[](i));
+00043         if (temp > max)
+00044           max = temp;           /* for normalization */
+00045         res = res + temp;
+00046       }
+00047     return sqrt (res / max);
+00048   }
+00049 
+00050 };
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoParetoSharing_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoParetoSharing_8h-source.html new file mode 100644 index 000000000..0e02818db --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoParetoSharing_8h-source.html @@ -0,0 +1,185 @@ + + +ParadisEO-MOEO: moeoParetoSharing.h Source File + + + + +
+
+

moeoParetoSharing.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoParetoSharing.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #include <EO.h>
+00014 #include <eoPerf2Worth.h>
+00015 #include <old/moeoParetoPhenDist.h>
+00016 #include <eoParetoRanking.h>
+00017 
+00018 template < class EOT, class worthT =
+00019   double >class moeoParetoSharing:public eoPerf2Worth < EOT, worthT >
+00020 {
+00021 public:
+00022 
+00023   moeoParetoSharing (double _nicheSize):eoPerf2Worth < EOT,
+00024     worthT > ("ParetoSharing"), nicheSize (_nicheSize), dist (euc_dist),
+00025     Dmax (_nicheSize)
+00026   {
+00027   }
+00028 
+00029 
+00030   moeoParetoSharing (double _nicheSize, moeoParetoPhenDist < EOT,
+00031                      worthT > &_dist):eoPerf2Worth < EOT,
+00032     worthT > ("ParetoSharing"), nicheSize (_nicheSize), dist (_dist),
+00033     Dmax (_nicheSize)
+00034   {
+00035   }
+00036 
+00037 
+00038 
+00039 
+00040   void operator  () /*calculate_worths */ (const eoPop < EOT > &_pop)
+00041   {
+00042 
+00043     unsigned i, j, pSize = _pop.size ();
+00044     //cout<<"**************************************************************************************\n";
+00045     // std :: cout << "psize = " << pSize << std :: endl ;
+00046     if (pSize <= 1)
+00047       throw std::
+00048         runtime_error ("Apptempt to do sharing with population of size 1");
+00049     eoPerf2Worth < EOT, worthT >::value ().resize (pSize);
+00050     std::vector < double >sim (pSize);  // to hold the similarities
+00051 
+00052     dMatrix distMatrix (pSize);
+00053 
+00054 // compute the distance
+00055     distMatrix[0][0] = 0;
+00056     for (i = 1; i < pSize; i++)
+00057       {
+00058         distMatrix[i][i] = 0;
+00059         for (j = 0; j < i; j++)
+00060           {
+00061             //if
+00062             distMatrix[i][j] = distMatrix[j][i] = dist (_pop[i], _pop[j]);
+00063             //cout<<"   "<<distMatrix[j][i]<<"  "<<dist(_pop[i],_pop[j])<<"\n";
+00064           }
+00065 
+00066       }
+00067 
+00068 //compute the similarities
+00069     for (i = 0; i < pSize; i++)
+00070       {
+00071         double sum = 0.0;
+00072         for (j = 0; j < pSize; j++)
+00073 
+00074           sum += sh (distMatrix[i][j], Dmax);
+00075         sim[i] = sum;
+00076 
+00077 //cout<<"\n  i  ----->"<<sim[i]<<"\n";
+00078       }
+00079 
+00080     eoDominanceMap < EOT > Dmap1;
+00081     Dmap1.setup (_pop);
+00082 
+00083     eoParetoRanking < EOT > rnk1 (Dmap1);
+00084     rnk1.calculate_worths (_pop);
+00085 // now set the worthes values
+00086     for (i = 0; i < pSize; ++i)
+00087       {
+00088         typename EOT::Fitness v;
+00089 
+00090 
+00091 
+00092 //cout<<"voila: "<<
+00093 //rnk1.value().operator[](i);
+00094 
+00095 //vector<double> v;
+00096 //v.resize(_pop[i].fitness().size());
+00097 //for(unsigned k=0;k<_pop[i].fitness().size();++k)
+00098 //v[k]=_pop[i].fitness().operator[](k)/sim[i];
+00099 //_pop[i].fitness(v);//.operator[](k)=0;//_pop[i].fitness().operator[](k)/sim[i];
+00100         eoPerf2Worth < EOT, worthT >::value ()[i] = rnk1.value ().operator[](i) / sim[i];       //*_pop[i].fitness().operator[](1)*_pop[i].fitness().operator[](1));
+00101 //cout<<"\n__________"<<pSize<<"  "<<value()[i]<<"    "<<i;
+00102       }
+00103 
+00104   }
+00105 
+00106 
+00107 
+00108 
+00109   class dMatrix:public std::vector < std::vector < double > >
+00110   {
+00111   public:
+00112     dMatrix (unsigned _s):rSize (_s)
+00113     {
+00114       this->resize (_s);
+00115       for (unsigned i = 0; i < _s; ++i)
+00116         this->operator[] (i).resize (_s);
+00117     }
+00118 
+00119     void printOn (std::ostream & _os)
+00120     {
+00121       for (unsigned i = 0; i < rSize; i++)
+00122         for (unsigned j = 0; j < rSize; ++j)
+00123           {
+00124             _os << this->operator[](i)[j] << " ";
+00125             _os << endl;
+00126           }
+00127       _os << endl;
+00128     }
+00129 //public:
+00130 //std::vector<double>v;
+00131 
+00132   private:
+00133 
+00134 
+00135 
+00136 
+00137     unsigned rSize;
+00138   };
+00139 
+00140 private:
+00141 
+00142   ;
+00143 
+00144   double sh (double dist, double Dmax)
+00145   {
+00146     if (dist < Dmax)
+00147       return (1.0 - dist / Dmax);
+00148     else
+00149       return (0.0);
+00150   }
+00151 
+00152   double nicheSize;
+00153   moeoParetoPhenDist < EOT, worthT > &dist;
+00154   moeoParetoEuclidDist < EOT > euc_dist;
+00155   double Dmax;
+00156 
+00157 };
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoReplacement_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoReplacement_8h-source.html new file mode 100644 index 000000000..b8ffd1a81 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoReplacement_8h-source.html @@ -0,0 +1,162 @@ + + +ParadisEO-MOEO: moeoReplacement.h Source File + + + + +
+
+

moeoReplacement.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoReplacement.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef MOEOREPLACEMENT_H_
+00014 #define MOEOREPLACEMENT_H_
+00015 
+00016 #include <eoPerf2Worth.h>
+00017 #include <eoPop.h>
+00018 #include <eoReplacement.h>
+00019 
+00020 
+00024 template < class EOT, class WorthT > class moeoReplacement:public eoReplacement <
+00025   EOT >
+00026 {
+00027 };
+00028 
+00029 
+00034 template < class EOT, class WorthT =
+00035   double >class moeoElitistReplacement:public moeoReplacement < EOT, WorthT >
+00036 {
+00037 public:
+00038 
+00043   moeoElitistReplacement (eoPerf2Worth < EOT,
+00044                           WorthT > &_perf2worth):perf2worth (_perf2worth)
+00045   {
+00046   }
+00047 
+00048 
+00054   void operator () (eoPop < EOT > &_parents, eoPop < EOT > &_offspring)
+00055   {
+00056     unsigned size = _parents.size ();
+00057     _parents.reserve (_parents.size () + _offspring.size ());
+00058     copy (_offspring.begin (), _offspring.end (), back_inserter (_parents));
+00059 
+00060     // calculate worths
+00061     perf2worth (_parents);
+00062     perf2worth.sort_pop (_parents);
+00063     perf2worth.resize (_parents, size);
+00064 
+00065     _offspring.clear ();
+00066   }
+00067 
+00068 private:
+00070   eoPerf2Worth < EOT, WorthT > &perf2worth;
+00071 };
+00072 
+00073 
+00077 template < class EOT, class WorthT =
+00078   double >class moeoDisctinctElitistReplacement:public moeoReplacement < EOT,
+00079   WorthT >
+00080 {
+00081 public:
+00082 
+00087   moeoDisctinctElitistReplacement (eoPerf2Worth < EOT,
+00088                                    WorthT >
+00089                                    &_perf2worth):perf2worth (_perf2worth)
+00090   {
+00091   }
+00092 
+00093 
+00099   void operator () (eoPop < EOT > &_parents, eoPop < EOT > &_offspring)
+00100   {
+00101     unsigned size = _parents.size ();
+00102     _parents.reserve (_parents.size () + _offspring.size ());
+00103     copy (_offspring.begin (), _offspring.end (), back_inserter (_parents));
+00104 
+00105     // creation of the new population (of size 'size')
+00106     createNewPop (_parents, size);
+00107 
+00108     _offspring.clear ();
+00109   }
+00110 
+00111 
+00112 private:
+00113 
+00115   eoPerf2Worth < EOT, WorthT > &perf2worth;
+00116 
+00117 
+00123   void createNewPop (eoPop < EOT > &_pop, unsigned _size)
+00124   {
+00125     // the number of occurences for each individual
+00126     std::map < EOT, unsigned >nb_occurences;
+00127     for (unsigned i = 0; i < _pop.size (); i++)
+00128       nb_occurences[_pop[i]] = 0;
+00129     // the new population
+00130     eoPop < EOT > new_pop;
+00131     new_pop.reserve (_pop.size ());
+00132     for (unsigned i = 0; i < _pop.size (); i++)
+00133       {
+00134         if (nb_occurences[_pop[i]] == 0)
+00135           new_pop.push_back (_pop[i]);
+00136         nb_occurences[_pop[i]]++;
+00137       }
+00138 
+00139     // calculate worths (on the new population)
+00140     perf2worth (new_pop);
+00141     perf2worth.sort_pop (new_pop);
+00142 
+00143     // if case there's not enough individuals in the population...
+00144     unsigned new_pop_size_init = new_pop.size ();
+00145     unsigned k = 0;
+00146     while (new_pop.size () < _size)
+00147       {
+00148         if (k < new_pop_size_init)
+00149           {
+00150             if (nb_occurences[new_pop[k]] > 1)
+00151               {
+00152                 new_pop.push_back (new_pop[k]);
+00153                 nb_occurences[new_pop[k]]--;
+00154               }
+00155             k++;
+00156           }
+00157         else
+00158           k = 0;
+00159       }
+00160 
+00161     // resize and swap the populations
+00162     perf2worth.resize (new_pop, _size);
+00163     _pop.resize (_size);
+00164     _pop.swap (new_pop);
+00165   }
+00166 
+00167 };
+00168 
+00169 #endif /*MOEOREPLACEMENT_H_ */
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoSelectOneFromPopAndArch_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoSelectOneFromPopAndArch_8h-source.html new file mode 100644 index 000000000..670a13066 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeoSelectOneFromPopAndArch_8h-source.html @@ -0,0 +1,94 @@ + + +ParadisEO-MOEO: moeoSelectOneFromPopAndArch.h Source File + + + + +
+
+

moeoSelectOneFromPopAndArch.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoSelectOneFormPopAndArch.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef MOEOSELECTONEFROMPOPANDARCH_H_
+00014 #define MOEOSELECTONEFROMPOPANDARCH_H_
+00015 
+00016 #include <eoPop.h>
+00017 #include <eoRandomSelect.h>
+00018 #include <eoSelectOne.h>
+00019 #include <utils/eoRNG.h>
+00020 #include <moeoArchive.h>
+00021 
+00025 template < class EOT > class moeoSelectOneFromPopAndArch:public eoSelectOne <
+00026   EOT >
+00027 {
+00028 public:
+00029 
+00037 moeoSelectOneFromPopAndArch (eoSelectOne < EOT > &_popSelectOne, eoSelectOne < EOT > _archSelectOne, moeoArchive < EOT > &_arch, double _ratioFromPop = 0.5):popSelectOne (_popSelectOne), archSelectOne (_archSelectOne), arch (_arch),
+00038     ratioFromPop
+00039     (_ratioFromPop)
+00040   {
+00041   }
+00042 
+00049 moeoSelectOneFromPopAndArch (eoSelectOne < EOT > &_popSelectOne, moeoArchive < EOT > &_arch, double _ratioFromPop = 0.5):popSelectOne (_popSelectOne), archSelectOne (randomSelect), arch (_arch),
+00050     ratioFromPop
+00051     (_ratioFromPop)
+00052   {
+00053   }
+00054 
+00058   virtual const EOT & operator  () (const eoPop < EOT > &pop)
+00059   {
+00060     if (arch.size () > 0)
+00061       if (rng.flip (ratioFromPop))
+00062         return popSelectOne (pop);
+00063       else
+00064         return archSelectOne (arch);
+00065     else
+00066       return popSelectOne (pop);
+00067   }
+00068 
+00072   virtual void setup (const eoPop < EOT > &_pop)
+00073   {
+00074     popSelectOne.setup (_pop);
+00075   }
+00076 
+00077 
+00078 private:
+00079 
+00081   eoSelectOne < EOT > &popSelectOne;
+00083   eoSelectOne < EOT > &archSelectOne;
+00085   moeoArchive < EOT > &arch;
+00087   double ratioFromPop;
+00089   eoRandomSelect < EOT > randomSelect;
+00090 
+00091 };
+00092 
+00093 #endif /*MOEOSELECTONEFROMPOPANDARCH_H_ */
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeo_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeo_8h-source.html new file mode 100644 index 000000000..e822e349a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/moeo_8h-source.html @@ -0,0 +1,59 @@ + + +ParadisEO-MOEO: moeo.h Source File + + + + +
+
+

moeo.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeo.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef MOEO_H_
+00014 #define MOEO_H_
+00015 
+00016 #include <eo>
+00017 
+00018 #include <moeoArchiveFitnessSavingUpdater.h>
+00019 #include <moeoArchiveUpdater.h>
+00020 #include <moeoArchive.h>
+00021 #include <moeoCombinedMOLS.h>
+00022 #include <moeoHybridMOLS.h>
+00023 #include <moeoMOLS.h>
+00024 #include <moeoReplacement.h>
+00025 #include <moeoSelectOneFromPopAndArch.h>
+00026 #include <metric/moeoBinaryMetricSavingUpdater.h>
+00027 #include <metric/moeoContributionMetric.h>
+00028 #include <metric/moeoEntropyMetric.h>
+00029 #include <metric/moeoMetric.h>
+00030 
+00031 #endif /*MOEO_H_ */
+

Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/pages.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/pages.html new file mode 100644 index 000000000..2d51f632a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/pages.html @@ -0,0 +1,33 @@ + + +ParadisEO-MOEO: Page Index + + + + +
+
+

ParadisEO-MOEO Related Pages

Here is a list of all related documentation pages: +
Generated on Mon Jan 15 14:18:07 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/search.idx b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/search.idx new file mode 100644 index 000000000..2fb41de67 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/search.idx differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/search.php b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/search.php new file mode 100644 index 000000000..8b879c9f2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/search.php @@ -0,0 +1,381 @@ + + +Search + + + + +
+
    +
  • Main Page
  • +
  • Classes
  • +
  • Files
  • +
  • +
    + + + + +1 document matching your query."; + } + else // $num>1 + { + return "Found $num documents matching your query. Showing best matches first."; + } +} + +function report_matches() +{ + return "Matches: "; +} +function end_form($value) +{ + echo " \n \n
    \n
    \n
  • \n
\n
\n"; +} + +function readInt($file) +{ + $b1 = ord(fgetc($file)); $b2 = ord(fgetc($file)); + $b3 = ord(fgetc($file)); $b4 = ord(fgetc($file)); + return ($b1<<24)|($b2<<16)|($b3<<8)|$b4; +} + +function readString($file) +{ + $result=""; + while (ord($c=fgetc($file))) $result.=$c; + return $result; +} + +function readHeader($file) +{ + $header =fgetc($file); $header.=fgetc($file); + $header.=fgetc($file); $header.=fgetc($file); + return $header; +} + +function computeIndex($word) +{ + // Fast string hashing + //$lword = strtolower($word); + //$l = strlen($lword); + //for ($i=0;$i<$l;$i++) + //{ + // $c = ord($lword{$i}); + // $v = (($v & 0xfc00) ^ ($v << 6) ^ $c) & 0xffff; + //} + //return $v; + + // Simple hashing that allows for substring search + if (strlen($word)<2) return -1; + // high char of the index + $hi = ord($word{0}); + if ($hi==0) return -1; + // low char of the index + $lo = ord($word{1}); + if ($lo==0) return -1; + // return index + return $hi*256+$lo; +} + +function search($file,$word,&$statsList) +{ + $index = computeIndex($word); + if ($index!=-1) // found a valid index + { + fseek($file,$index*4+4); // 4 bytes per entry, skip header + $index = readInt($file); + if ($index) // found words matching the hash key + { + $start=sizeof($statsList); + $count=$start; + fseek($file,$index); + $w = readString($file); + while ($w) + { + $statIdx = readInt($file); + if ($word==substr($w,0,strlen($word))) + { // found word that matches (as substring) + $statsList[$count++]=array( + "word"=>$word, + "match"=>$w, + "index"=>$statIdx, + "full"=>strlen($w)==strlen($word), + "docs"=>array() + ); + } + $w = readString($file); + } + $totalHi=0; + $totalFreqHi=0; + $totalFreqLo=0; + for ($count=$start;$count $idx, + "freq" => $freq>>1, + "rank" => 0.0, + "hi" => $freq&1 + ); + if ($freq&1) // word occurs in high priority doc + { + $totalHi++; + $totalFreqHi+=$freq*$multiplier; + } + else // word occurs in low priority doc + { + $totalFreqLo+=$freq*$multiplier; + } + } + // read name and url info for the doc + for ($i=0;$i<$numDocs;$i++) + { + fseek($file,$docInfo[$i]["idx"]); + $docInfo[$i]["name"]=readString($file); + $docInfo[$i]["url"]=readString($file); + } + $statInfo["docs"]=$docInfo; + } + $totalFreq=($totalHi+1)*$totalFreqLo + $totalFreqHi; + for ($count=$start;$count$key, + "name"=>$di["name"], + "rank"=>$rank + ); + } + $docs[$key]["words"][] = array( + "word"=>$wordInfo["word"], + "match"=>$wordInfo["match"], + "freq"=>$di["freq"] + ); + } + } + return $docs; +} + +function filter_results($docs,&$requiredWords,&$forbiddenWords) +{ + $filteredDocs=array(); + while (list ($key, $val) = each ($docs)) + { + $words = &$docs[$key]["words"]; + $copy=1; // copy entry by default + if (sizeof($requiredWords)>0) + { + foreach ($requiredWords as $reqWord) + { + $found=0; + foreach ($words as $wordInfo) + { + $found = $wordInfo["word"]==$reqWord; + if ($found) break; + } + if (!$found) + { + $copy=0; // document contains none of the required words + break; + } + } + } + if (sizeof($forbiddenWords)>0) + { + foreach ($words as $wordInfo) + { + if (in_array($wordInfo["word"],$forbiddenWords)) + { + $copy=0; // document contains a forbidden word + break; + } + } + } + if ($copy) $filteredDocs[$key]=$docs[$key]; + } + return $filteredDocs; +} + +function compare_rank($a,$b) +{ + if ($a["rank"] == $b["rank"]) + { + return 0; + } + return ($a["rank"]>$b["rank"]) ? -1 : 1; +} + +function sort_results($docs,&$sorted) +{ + $sorted = $docs; + usort($sorted,"compare_rank"); + return $sorted; +} + +function report_results(&$docs) +{ + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $numDocs = sizeof($docs); + if ($numDocs==0) + { + echo " \n"; + echo " \n"; + echo " \n"; + } + else + { + echo " \n"; + echo " \n"; + echo " \n"; + $num=1; + foreach ($docs as $doc) + { + echo " \n"; + echo " "; + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $num++; + } + } + echo "

".search_results()."

".matches_text(0)."
".matches_text($numDocs); + echo "\n"; + echo "
$num.".$doc["name"]."
".report_matches()." "; + foreach ($doc["words"] as $wordInfo) + { + $word = $wordInfo["word"]; + $matchRight = substr($wordInfo["match"],strlen($word)); + echo "$word$matchRight(".$wordInfo["freq"].") "; + } + echo "
\n"; +} + +function main() +{ + if(strcmp('4.1.0', phpversion()) > 0) + { + die("Error: PHP version 4.1.0 or above required!"); + } + if (!($file=fopen("search.idx","rb"))) + { + die("Error: Search index file could NOT be opened!"); + } + if (readHeader($file)!="DOXS") + { + die("Error: Header of index file is invalid!"); + } + $query=""; + if (array_key_exists("query", $_GET)) + { + $query=$_GET["query"]; + } + end_form($query); + echo " \n
\n"; + $results = array(); + $requiredWords = array(); + $forbiddenWords = array(); + $foundWords = array(); + $word=strtok($query," "); + while ($word) // for each word in the search query + { + if (($word{0}=='+')) { $word=substr($word,1); $requiredWords[]=$word; } + if (($word{0}=='-')) { $word=substr($word,1); $forbiddenWords[]=$word; } + if (!in_array($word,$foundWords)) + { + $foundWords[]=$word; + search($file,strtolower($word),$results); + } + $word=strtok(" "); + } + $docs = array(); + combine_results($results,$docs); + // filter out documents with forbidden word or that do not contain + // required words + $filteredDocs = filter_results($docs,$requiredWords,$forbiddenWords); + // sort the results based on rank + $sorted = array(); + sort_results($filteredDocs,$sorted); + // report results to the user + report_results($sorted); + echo "
\n"; + fclose($file); +} + +main(); + + +?> +
Generated on Mon Jan 15 14:19:18 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/tab_b.gif b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/tab_b.gif new file mode 100644 index 000000000..0d623483f Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/tab_b.gif differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/tab_l.gif b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/tab_l.gif new file mode 100644 index 000000000..9b1e6337c Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/tab_l.gif differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/tab_r.gif b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/tab_r.gif new file mode 100644 index 000000000..ce9dd9f53 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/tab_r.gif differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/tabs.css b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/tabs.css new file mode 100644 index 000000000..a61552a67 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI#current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI#current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/tree.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/tree.html new file mode 100644 index 000000000..5847a2023 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/tree.html @@ -0,0 +1,306 @@ + + + + + + + TreeView + + + + +
+

ParadisEO-MOEO

+
+

o*Welcome to ParadisEO-MOEO

+

o+Class List

+ +

o+Class Hierarchy

+
+

|o+eoFunctorBase [external]

+
+

||o+eoBF< A1, A2, R > [external]

+ +

||o+eoBF< const const EOFitness &, EOFitness &, R > [external]

+ +

||o+eoBF< const const std::vector< EOFitness > &, EOFitness &, R > [external]

+ +

||o+eoBF< const const std::vector< EOFitness > &, std::vector< EOFitness > &, R > [external]

+ +

||o+eoBF< const const std::vector< typename EOT::Fitness > &, std::vector< typename EOT::Fitness > &, double > [external]

+ +

||o+eoBF< const EOT &, moeoArchive< EOT > &, void > [external]

+ +

||o+eoBF< eoPop< EOT > &, eoPop< EOT > &, void > [external]

+ +

||o+eoF< void > [external]

+ +

||o+eoUF< A1, R > [external]

+ +

||o+eoUF< A, R > [external]

+ +

||o+eoUF< const EOFitness &, R > [external]

+ +

||o+eoUF< const eoPop< EOT > &, void > [external]

+ +

||o+eoUF< const std::vector< EOFitness > &, R > [external]

+ +

||o+eoUF< eoPop< EOT > &, void > [external]

+
+

|||\+eoAlgo< EOT > [external]

+ +
+

||\+moeoMetric

+ +
+

|o+eoObject [external]

+
+

||\+eoPop< EOT > [external]

+ +
+

|o+eoParam [external]

+ +

|o+eoPrintable [external]

+
+

||\+eoPersistent [external]

+
+

|| \*eoPop< EOT > [external]

+
+
+

|o*moeoBinaryQualityIndicator< EOFitness >::Range

+

|o*moeoNDSorting_II< EOT >::compare_nodes

+

|o+moeoParetoPhenDist< EOT, DistType >

+ +

|\*moeoParetoSharing< EOT, worthT >::dMatrix

+
+

o*Class Members

+

\+File List

+
+

 o*index.h

+

 o*make_algo_MOEO.h

+

 o*moeo.h

+

 o*moeoArchive.h

+

 o*moeoArchiveFitnessSavingUpdater.h

+

 o*moeoArchiveUpdater.h

+

 o*moeoBinaryMetricSavingUpdater.h

+

 o*moeoBinaryQualityIndicator.h

+

 o*moeoCombinedMOLS.h

+

 o*moeoContributionMetric.h

+

 o*moeoEntropyMetric.h

+

 o*moeoHybridMOLS.h

+

 o*moeoIBEA.h

+

 o*moeoMetric.h

+

 o*moeoMOLS.h

+

 o*moeoNDSorting.h

+

 o*moeoNSGA_II.h

+

 o*moeoParetoPhenDist.h

+

 o*moeoParetoSharing.h

+

 o*moeoReplacement.h

+

 o*moeoSelectOneFromPopAndArch.h

+

 \*README

+
+
+
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/webpages.html b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/webpages.html new file mode 100644 index 000000000..98d444ebf --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/html/webpages.html @@ -0,0 +1,31 @@ + + +ParadisEO-MOEO: Related webpages + + + + +
+
+

Related webpages

+
Generated on Mon Jan 15 14:18:07 2007 for ParadisEO-MOEO by  + +doxygen 1.5.1
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/index.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/index.h new file mode 100644 index 000000000..a8ab0ea63 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/index.h @@ -0,0 +1,53 @@ +/** @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 tutorial Tutorial + +A tutorial about a bi-objective flow-shop scheduling problem will be available soon. + + + +@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 +*/ + + + +// Local Variables: +// coding: iso-8859-1 +// mode: C++ +// c-file-style: "Stroustrup" +// fill-column: 80 +// End: diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/FreeSans.ttf b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/FreeSans.ttf new file mode 100644 index 000000000..b550b90ba Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/FreeSans.ttf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/Helvetica.ttf b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/Helvetica.ttf new file mode 100644 index 000000000..8051f8a11 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/Helvetica.ttf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/Makefile b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/Makefile new file mode 100644 index 000000000..776fcf968 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/Makefile @@ -0,0 +1,39 @@ +all: clean refman.dvi + +ps: refman.ps + +pdf: refman.pdf + +ps_2on1: refman_2on1.ps + +pdf_2on1: refman_2on1.pdf + +refman.ps: refman.dvi + dvips -o refman.ps refman.dvi + +refman.pdf: refman.ps + ps2pdf refman.ps refman.pdf + +refman.dvi: refman.tex doxygen.sty + echo "Running latex..." + latex refman.tex + echo "Running makeindex..." + makeindex refman.idx + echo "Rerunning latex...." + latex refman.tex + latex_count=5 ; \ + while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + latex refman.tex ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + +refman_2on1.ps: refman.ps + psnup -2 refman.ps >refman_2on1.ps + +refman_2on1.pdf: refman_2on1.ps + ps2pdf refman_2on1.ps refman_2on1.pdf + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/annotated.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/annotated.tex new file mode 100644 index 000000000..bffe79872 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/annotated.tex @@ -0,0 +1,39 @@ +\section{Paradis\-EO-MOEO Class List} +Here are the classes, structs, unions and interfaces with brief descriptions:\begin{CompactList} +\item\contentsline{section}{{\bf moeo\-Additive\-Binary\-Epsilon\-Indicator$<$ EOFitness $>$} (Functor Additive binary epsilon indicator for {\bf eo\-Pareto\-Fitness} )}{\pageref{classmoeoAdditiveBinaryEpsilonIndicator}}{} +\item\contentsline{section}{{\bf moeo\-Archive$<$ EOT $>$} (An archive is a secondary population that stores non-dominated solutions )}{\pageref{classmoeoArchive}}{} +\item\contentsline{section}{{\bf moeo\-Archive\-Fitness\-Saving\-Updater$<$ EOT $>$} (This class allows to save the fitnesses of solutions contained in an archive into a file at each generation )}{\pageref{classmoeoArchiveFitnessSavingUpdater}}{} +\item\contentsline{section}{{\bf moeo\-Archive\-Updater$<$ EOT $>$} (This class allows to update the archive at each generation with newly found non-dominated solutions )}{\pageref{classmoeoArchiveUpdater}}{} +\item\contentsline{section}{{\bf moeo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$} (Functor Binary hypervolume indicator for {\bf eo\-Pareto\-Fitness} )}{\pageref{classmoeoBinaryHypervolumeIndicator}}{} +\item\contentsline{section}{{\bf moeo\-Binary\-Metric\-Saving\-Updater$<$ EOT $>$} (This class allows to save the progression of a binary metric comparing the fitness values of the current population (or archive) with the fitness values of the population (or archive) of the generation (n-1) into a file )}{\pageref{classmoeoBinaryMetricSavingUpdater}}{} +\item\contentsline{section}{{\bf moeo\-Binary\-Quality\-Indicator$<$ EOFitness $>$} (Functor Binary quality indicator Binary performance measure to use in the replacement selection process of IBEA (Indicator-Based Evolutionary Algorithm) Of course, EOFitness needs to be an {\bf eo\-Pareto\-Fitness} object )}{\pageref{classmoeoBinaryQualityIndicator}}{} +\item\contentsline{section}{{\bf moeo\-Binary\-Quality\-Indicator$<$ EOFitness $>$::Range} (Private class to represent the bounds )}{\pageref{classmoeoBinaryQualityIndicator_1_1Range}}{} +\item\contentsline{section}{{\bf moeo\-BM$<$ A1, A2, R $>$} (Base class for binary metrics )}{\pageref{classmoeoBM}}{} +\item\contentsline{section}{{\bf moeo\-Combined\-MOLS$<$ EOT $>$} (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 )}{\pageref{classmoeoCombinedMOLS}}{} +\item\contentsline{section}{{\bf moeo\-Contribution\-Metric$<$ EOT $>$} (The contribution metric evaluates the proportion of non-dominated solutions given by a Pareto set relatively to another Pareto set )}{\pageref{classmoeoContributionMetric}}{} +\item\contentsline{section}{{\bf moeo\-Disctinct\-Elitist\-Replacement$<$ EOT, Worth\-T $>$} (Same than \doxyref{moeo\-Elitist\-Replacement}{p.}{classmoeoElitistReplacement} except that distinct individuals are privilegied )}{\pageref{classmoeoDisctinctElitistReplacement}}{} +\item\contentsline{section}{{\bf moeo\-Elitist\-Replacement$<$ EOT, Worth\-T $>$} (Keep all the best individuals (almost cut-and-pasted from {\bf eo\-NDPlus\-Replacement}, (c) Maarten Keijzer, Marc Schoenauer and Ge\-Neura Team, 2002) )}{\pageref{classmoeoElitistReplacement}}{} +\item\contentsline{section}{{\bf moeo\-Entropy\-Metric$<$ EOT $>$} (The entropy gives an idea of the diversity of a Pareto set relatively to another Pareto set )}{\pageref{classmoeoEntropyMetric}}{} +\item\contentsline{section}{{\bf moeo\-Hybrid\-MOLS$<$ EOT $>$} (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 )}{\pageref{classmoeoHybridMOLS}}{} +\item\contentsline{section}{{\bf moeo\-IBEA$<$ EOT, Fitness $>$} (Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) )}{\pageref{classmoeoIBEA}}{} +\item\contentsline{section}{{\bf moeo\-IBEAAvg\-Sorting$<$ EOT, Fitness\-Eval $>$} (Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty using averaged values for each objective Follow the idea presented in the Deb \& Gupta paper \char`\"{}Searching for Robust Pareto-Optimal Solutions in Multi-Objective Optimization\char`\"{}, 2005 Of course, the fitness of an individual needs to be an eo\-Stochastic\-Pareto\-Fitness object )}{\pageref{classmoeoIBEAAvgSorting}}{} +\item\contentsline{section}{{\bf moeo\-IBEASorting$<$ EOT, Fitness $>$} (Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) without uncertainty Adapted from the Zitzler and K\~{A}¼nzli paper \char`\"{}Indicator-Based Selection in Multiobjective Search\char`\"{} (2004) Of course, Fitness needs to be an {\bf eo\-Pareto\-Fitness} object )}{\pageref{classmoeoIBEASorting}}{} +\item\contentsline{section}{{\bf moeo\-IBEAStoch\-Sorting$<$ EOT, Fitness\-Eval $>$} (Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty Adapted from the Basseur and Zitzler paper \char`\"{}Handling Uncertainty in Indicator-Based Multiobjective Optimization\char`\"{} (2006) Of course, the fitness of an individual needs to be an eo\-Stochastic\-Pareto\-Fitness object )}{\pageref{classmoeoIBEAStochSorting}}{} +\item\contentsline{section}{{\bf moeo\-Metric} (Base class for performance metrics (also called quality indicators) )}{\pageref{classmoeoMetric}}{} +\item\contentsline{section}{{\bf moeo\-MOLS$<$ EOT $>$} (Abstract class for local searches applied to multi-objective optimization )}{\pageref{classmoeoMOLS}}{} +\item\contentsline{section}{{\bf moeo\-NDSorting\_\-II$<$ EOT $>$} (Fast Elitist Non-Dominant Sorting Genetic Algorithm assignment strategie Note : This is a corrected version of the original {\bf eo\-NDSorting\_\-II} class )}{\pageref{classmoeoNDSorting__II}}{} +\item\contentsline{section}{{\bf moeo\-NDSorting\_\-II$<$ EOT $>$::compare\_\-nodes} (A class to compare the nodes )}{\pageref{classmoeoNDSorting__II_1_1compare__nodes}}{} +\item\contentsline{section}{{\bf moeo\-NSGA\_\-II$<$ EOT $>$} }{\pageref{classmoeoNSGA__II}}{} +\item\contentsline{section}{{\bf moeo\-Pareto\-Euclid\-Dist$<$ EOT, Dist\-Type $>$} }{\pageref{classmoeoParetoEuclidDist}}{} +\item\contentsline{section}{{\bf moeo\-Pareto\-Phen\-Dist$<$ EOT, Dist\-Type $>$} }{\pageref{classmoeoParetoPhenDist}}{} +\item\contentsline{section}{{\bf moeo\-Pareto\-Sharing$<$ EOT, worth\-T $>$} }{\pageref{classmoeoParetoSharing}}{} +\item\contentsline{section}{{\bf moeo\-Pareto\-Sharing$<$ EOT, worth\-T $>$::d\-Matrix} }{\pageref{classmoeoParetoSharing_1_1dMatrix}}{} +\item\contentsline{section}{{\bf moeo\-Replacement$<$ EOT, Worth\-T $>$} (Replacement strategy for multi-objective optimization )}{\pageref{classmoeoReplacement}}{} +\item\contentsline{section}{{\bf moeo\-Select\-One\-From\-Pop\-And\-Arch$<$ EOT $>$} (Elitist selection process that consists in choosing individuals in the archive as well as in the current population )}{\pageref{classmoeoSelectOneFromPopAndArch}}{} +\item\contentsline{section}{{\bf moeo\-Solution\-UM$<$ EOT, R, EOFitness $>$} (Base class for unary metrics dedicated to the performance evaluation of a single solution's Pareto fitness )}{\pageref{classmoeoSolutionUM}}{} +\item\contentsline{section}{{\bf moeo\-Solution\-Vs\-Solution\-BM$<$ EOT, R, EOFitness $>$} (Base class for binary metrics dedicated to the performance comparison between two solutions's Pareto fitnesses )}{\pageref{classmoeoSolutionVsSolutionBM}}{} +\item\contentsline{section}{{\bf moeo\-UM$<$ A, R $>$} (Base class for unary metrics )}{\pageref{classmoeoUM}}{} +\item\contentsline{section}{{\bf moeo\-Vector\-UM$<$ EOT, R, EOFitness $>$} (Base class for unary metrics dedicated to the performance evaluation of a Pareto set (a vector of Pareto fitnesses) )}{\pageref{classmoeoVectorUM}}{} +\item\contentsline{section}{{\bf moeo\-Vector\-Vs\-Solution\-BM$<$ EOT, R, EOFitness $>$} (Base class for binary metrics dedicated to the performance comparison between a Pareto set (a vector of Pareto fitnesses) and a single solution's Pareto fitness )}{\pageref{classmoeoVectorVsSolutionBM}}{} +\item\contentsline{section}{{\bf moeo\-Vector\-Vs\-Vector\-BM$<$ EOT, R, EOFitness $>$} (Base class for binary metrics dedicated to the performance comparison between two Pareto sets (two vectors of Pareto fitnesses) )}{\pageref{classmoeoVectorVsVectorBM}}{} +\end{CompactList} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoAdditiveBinaryEpsilonIndicator.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoAdditiveBinaryEpsilonIndicator.eps new file mode 100644 index 000000000..ee63c63a0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoAdditiveBinaryEpsilonIndicator.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 232.558 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.15 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(eoAdditiveBinaryEpsilonIndicator< EOFitness >) cw +(eoBinaryQualityIndicator< EOFitness >) cw +(eoBF< const EOFitness &, const EOFitness &, double >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (eoAdditiveBinaryEpsilonIndicator< EOFitness >) 0 0 box + (eoBinaryQualityIndicator< EOFitness >) 0 1 box + (eoBF< const EOFitness &, const EOFitness &, double >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoAdditiveBinaryEpsilonIndicator.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoAdditiveBinaryEpsilonIndicator.tex new file mode 100644 index 000000000..2cb1ea414 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoAdditiveBinaryEpsilonIndicator.tex @@ -0,0 +1,83 @@ +\section{eo\-Additive\-Binary\-Epsilon\-Indicator$<$ EOFitness $>$ Class Template Reference} +\label{classeoAdditiveBinaryEpsilonIndicator}\index{eoAdditiveBinaryEpsilonIndicator@{eoAdditiveBinaryEpsilonIndicator}} +Functor Additive binary epsilon indicator for {\bf eo\-Pareto\-Fitness}. + + +{\tt \#include $<$eo\-Binary\-Quality\-Indicator.h$>$} + +Inheritance diagram for eo\-Additive\-Binary\-Epsilon\-Indicator$<$ EOFitness $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classeoAdditiveBinaryEpsilonIndicator} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf eo\-Additive\-Binary\-Epsilon\-Indicator} ()\label{classeoAdditiveBinaryEpsilonIndicator_c76501f3d05bc3c1e9ccef6f9c465cb9} + +\begin{CompactList}\small\item\em constructor \item\end{CompactList}\item +double {\bf operator()} (const EOFitness \&\_\-fitness\_\-eo1, const EOFitness \&\_\-fitness\_\-eo2) +\begin{CompactList}\small\item\em computation of the maximum epsilon value by which individual \_\-eo1 must be decreased in all objectives such that individual \_\-eo2 is weakly dominated (do not forget to set the bounds before the call of this function) \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef EOFitness::fitness\_\-traits {\bf traits}\label{classeoAdditiveBinaryEpsilonIndicator_c6d4c79183683a05183a31fcb7f533f1} + +\begin{CompactList}\small\item\em fitness traits \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +double {\bf epsilon\-Value} (const EOFitness \&\_\-fitness\_\-eo1, const EOFitness \&\_\-fitness\_\-eo2, const unsigned \_\-i\-Obj) +\begin{CompactList}\small\item\em computation of the epsilon value by which individual \_\-eo1 must be decreased in the objective \_\-i\-Obj such that individual \_\-eo2 is weakly dominated \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOFitness$>$ class eo\-Additive\-Binary\-Epsilon\-Indicator$<$ EOFitness $>$} + +Functor Additive binary epsilon indicator for {\bf eo\-Pareto\-Fitness}. + + + +Definition at line 126 of file eo\-Binary\-Quality\-Indicator.h. + +\subsection{Member Function Documentation} +\index{eoAdditiveBinaryEpsilonIndicator@{eo\-Additive\-Binary\-Epsilon\-Indicator}!operator()@{operator()}} +\index{operator()@{operator()}!eoAdditiveBinaryEpsilonIndicator@{eo\-Additive\-Binary\-Epsilon\-Indicator}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOFitness$>$ double {\bf eo\-Additive\-Binary\-Epsilon\-Indicator}$<$ EOFitness $>$::operator() (const EOFitness \& {\em \_\-fitness\_\-eo1}, const EOFitness \& {\em \_\-fitness\_\-eo2})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classeoAdditiveBinaryEpsilonIndicator_5fd885a2a555e26706174a44ef636f4d} + + +computation of the maximum epsilon value by which individual \_\-eo1 must be decreased in all objectives such that individual \_\-eo2 is weakly dominated (do not forget to set the bounds before the call of this function) + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em EOFitness}]\& \_\-fitness\_\-eo1 the fitness of the first individual \item[{\em EOFitness}]\& \_\-fitness\_\-eo2 the fitness of the second individual \end{description} +\end{Desc} + + +Implements {\bf eo\-BF$<$ const EOFitness \&, const EOFitness \&, double $>$}. + +Definition at line 149 of file eo\-Binary\-Quality\-Indicator.h. + +References eo\-Additive\-Binary\-Epsilon\-Indicator$<$ EOFitness $>$::epsilon\-Value().\index{eoAdditiveBinaryEpsilonIndicator@{eo\-Additive\-Binary\-Epsilon\-Indicator}!epsilonValue@{epsilonValue}} +\index{epsilonValue@{epsilonValue}!eoAdditiveBinaryEpsilonIndicator@{eo\-Additive\-Binary\-Epsilon\-Indicator}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOFitness$>$ double {\bf eo\-Additive\-Binary\-Epsilon\-Indicator}$<$ EOFitness $>$::epsilon\-Value (const EOFitness \& {\em \_\-fitness\_\-eo1}, const EOFitness \& {\em \_\-fitness\_\-eo2}, const unsigned {\em \_\-i\-Obj})\hspace{0.3cm}{\tt [inline, private]}}\label{classeoAdditiveBinaryEpsilonIndicator_8f35162769a1b23ada83e5fb21cc74e7} + + +computation of the epsilon value by which individual \_\-eo1 must be decreased in the objective \_\-i\-Obj such that individual \_\-eo2 is weakly dominated + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em EOFitness}]\& \_\-fitness\_\-eo1 the fitness of the first individual \item[{\em EOFitness}]\& \_\-fitness\_\-eo2 the fitness of the second individual \item[{\em unsigned}]\_\-i\-Obj the index of the objective \end{description} +\end{Desc} + + +Definition at line 181 of file eo\-Binary\-Quality\-Indicator.h. + +Referenced by eo\-Additive\-Binary\-Epsilon\-Indicator$<$ EOFitness $>$::operator()(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +eo\-Binary\-Quality\-Indicator.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoBinaryHypervolumeIndicator.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoBinaryHypervolumeIndicator.eps new file mode 100644 index 000000000..69b8a1f07 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoBinaryHypervolumeIndicator.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 232.558 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.15 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(eoBinaryHypervolumeIndicator< EOFitness >) cw +(eoBinaryQualityIndicator< EOFitness >) cw +(eoBF< const EOFitness &, const EOFitness &, double >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (eoBinaryHypervolumeIndicator< EOFitness >) 0 0 box + (eoBinaryQualityIndicator< EOFitness >) 0 1 box + (eoBF< const EOFitness &, const EOFitness &, double >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoBinaryHypervolumeIndicator.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoBinaryHypervolumeIndicator.tex new file mode 100644 index 000000000..33cc87a7e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoBinaryHypervolumeIndicator.tex @@ -0,0 +1,149 @@ +\section{eo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$ Class Template Reference} +\label{classeoBinaryHypervolumeIndicator}\index{eoBinaryHypervolumeIndicator@{eoBinaryHypervolumeIndicator}} +Functor Binary hypervolume indicator for {\bf eo\-Pareto\-Fitness}. + + +{\tt \#include $<$eo\-Binary\-Quality\-Indicator.h$>$} + +Inheritance diagram for eo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classeoBinaryHypervolumeIndicator} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf eo\-Binary\-Hypervolume\-Indicator} (double \_\-rho) +\begin{CompactList}\small\item\em constructor \item\end{CompactList}\item +double {\bf operator()} (const EOFitness \&\_\-fitness\_\-eo1, const EOFitness \&\_\-fitness\_\-eo2) +\begin{CompactList}\small\item\em indicator value of the hypervolume of the portion of the objective space that is dominated by individual \_\-eo1 but not by individual \_\-eo2 (don't forget to set the bounds before the call of this function) \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef EOFitness::fitness\_\-traits {\bf traits}\label{classeoBinaryHypervolumeIndicator_abde225206c55671bd585cc41cbfab1c} + +\begin{CompactList}\small\item\em fitness traits \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +double {\bf hypervolume\-Indicator\-Value} (const EOFitness \&\_\-fitness\_\-eo1, const EOFitness \&\_\-fitness\_\-eo2, const unsigned \_\-i\-Obj, const bool \_\-flag=false) +\begin{CompactList}\small\item\em computation of the hypervolume of the portion of the objective space that is dominated by individual \_\-eo1 but not by individual \_\-eo2 \item\end{CompactList}\item +double {\bf hypervolume\-Indicator\-Value\-Min} (const EOFitness \&\_\-fitness\_\-eo1, const EOFitness \&\_\-fitness\_\-eo2, const unsigned \_\-i\-Obj, const bool \_\-flag) +\begin{CompactList}\small\item\em computation of the hypervolume of the portion of the objective space that is dominated by individual \_\-eo1 but not by individual \_\-eo2 in case of a minimization on the objective \_\-i\-Obj \item\end{CompactList}\item +double {\bf hypervolume\-Indicator\-Value\-Max} (const EOFitness \&\_\-fitness\_\-eo1, const EOFitness \&\_\-fitness\_\-eo2, const unsigned \_\-i\-Obj, const bool \_\-flag) +\begin{CompactList}\small\item\em computation of the hypervolume of the portion of the objective space that is dominated by individual \_\-eo1 but not by individual \_\-eo2 in case of a maximization on the objective \_\-i\-Obj \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +double {\bf rho}\label{classeoBinaryHypervolumeIndicator_02fdfd1b2aa8071cdd3d395777d709a5} + +\begin{CompactList}\small\item\em reference point for the hypervolume calculation \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOFitness$>$ class eo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$} + +Functor Binary hypervolume indicator for {\bf eo\-Pareto\-Fitness}. + + + +Definition at line 217 of file eo\-Binary\-Quality\-Indicator.h. + +\subsection{Constructor \& Destructor Documentation} +\index{eoBinaryHypervolumeIndicator@{eo\-Binary\-Hypervolume\-Indicator}!eoBinaryHypervolumeIndicator@{eoBinaryHypervolumeIndicator}} +\index{eoBinaryHypervolumeIndicator@{eoBinaryHypervolumeIndicator}!eoBinaryHypervolumeIndicator@{eo\-Binary\-Hypervolume\-Indicator}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOFitness$>$ {\bf eo\-Binary\-Hypervolume\-Indicator}$<$ EOFitness $>$::{\bf eo\-Binary\-Hypervolume\-Indicator} (double {\em \_\-rho})\hspace{0.3cm}{\tt [inline]}}\label{classeoBinaryHypervolumeIndicator_8b1dedf93c1936ea7efa9b19913d8773} + + +constructor + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em double}]\_\-rho reference point for the hypervolume calculation (rho must not be smaller than 1) \end{description} +\end{Desc} + + +Definition at line 227 of file eo\-Binary\-Quality\-Indicator.h. + +References eo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::rho. + +\subsection{Member Function Documentation} +\index{eoBinaryHypervolumeIndicator@{eo\-Binary\-Hypervolume\-Indicator}!operator()@{operator()}} +\index{operator()@{operator()}!eoBinaryHypervolumeIndicator@{eo\-Binary\-Hypervolume\-Indicator}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOFitness$>$ double {\bf eo\-Binary\-Hypervolume\-Indicator}$<$ EOFitness $>$::operator() (const EOFitness \& {\em \_\-fitness\_\-eo1}, const EOFitness \& {\em \_\-fitness\_\-eo2})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classeoBinaryHypervolumeIndicator_d418f42f086a3221c60ad9149b5df9d0} + + +indicator value of the hypervolume of the portion of the objective space that is dominated by individual \_\-eo1 but not by individual \_\-eo2 (don't forget to set the bounds before the call of this function) + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em EOFitness}]\& \_\-fitness\_\-eo1 the fitness of the first individual \item[{\em EOFitness}]\& \_\-fitness\_\-eo2 the fitness of the second individual \end{description} +\end{Desc} + + +Implements {\bf eo\-BF$<$ const EOFitness \&, const EOFitness \&, double $>$}. + +Definition at line 250 of file eo\-Binary\-Quality\-Indicator.h. + +References eo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::hypervolume\-Indicator\-Value().\index{eoBinaryHypervolumeIndicator@{eo\-Binary\-Hypervolume\-Indicator}!hypervolumeIndicatorValue@{hypervolumeIndicatorValue}} +\index{hypervolumeIndicatorValue@{hypervolumeIndicatorValue}!eoBinaryHypervolumeIndicator@{eo\-Binary\-Hypervolume\-Indicator}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOFitness$>$ double {\bf eo\-Binary\-Hypervolume\-Indicator}$<$ EOFitness $>$::hypervolume\-Indicator\-Value (const EOFitness \& {\em \_\-fitness\_\-eo1}, const EOFitness \& {\em \_\-fitness\_\-eo2}, const unsigned {\em \_\-i\-Obj}, const bool {\em \_\-flag} = {\tt false})\hspace{0.3cm}{\tt [inline, private]}}\label{classeoBinaryHypervolumeIndicator_9c12e672eaf7ed2b17cab9b96af911e6} + + +computation of the hypervolume of the portion of the objective space that is dominated by individual \_\-eo1 but not by individual \_\-eo2 + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em EOFitness}]\& \_\-fitness\_\-eo1 the fitness of the first individual \item[{\em EOFitness}]\& \_\-fitness\_\-eo2 the fitness of the second individual \item[{\em unsigned}]\_\-i\-Obj number of objectives (used for iteration) \item[{\em bool}]\_\-flag = false (only used for iteration) \end{description} +\end{Desc} + + +Definition at line 285 of file eo\-Binary\-Quality\-Indicator.h. + +References eo\-Binary\-Quality\-Indicator$<$ EOFitness $>$::bounds, eo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::hypervolume\-Indicator\-Value\-Max(), and eo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::hypervolume\-Indicator\-Value\-Min(). + +Referenced by eo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::hypervolume\-Indicator\-Value\-Max(), eo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::hypervolume\-Indicator\-Value\-Min(), and eo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::operator()().\index{eoBinaryHypervolumeIndicator@{eo\-Binary\-Hypervolume\-Indicator}!hypervolumeIndicatorValueMin@{hypervolumeIndicatorValueMin}} +\index{hypervolumeIndicatorValueMin@{hypervolumeIndicatorValueMin}!eoBinaryHypervolumeIndicator@{eo\-Binary\-Hypervolume\-Indicator}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOFitness$>$ double {\bf eo\-Binary\-Hypervolume\-Indicator}$<$ EOFitness $>$::hypervolume\-Indicator\-Value\-Min (const EOFitness \& {\em \_\-fitness\_\-eo1}, const EOFitness \& {\em \_\-fitness\_\-eo2}, const unsigned {\em \_\-i\-Obj}, const bool {\em \_\-flag})\hspace{0.3cm}{\tt [inline, private]}}\label{classeoBinaryHypervolumeIndicator_6c9b9a5279ad7894b4563e205f13e98b} + + +computation of the hypervolume of the portion of the objective space that is dominated by individual \_\-eo1 but not by individual \_\-eo2 in case of a minimization on the objective \_\-i\-Obj + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em EOFitness}]\& \_\-fitness\_\-eo1 the fitness of the first individual \item[{\em EOFitness}]\& \_\-fitness\_\-eo2 the fitness of the second individual \item[{\em unsigned}]\_\-i\-Obj index of the objective \item[{\em bool}]\_\-flag (only used for iteration) \end{description} +\end{Desc} + + +Definition at line 320 of file eo\-Binary\-Quality\-Indicator.h. + +References eo\-Binary\-Quality\-Indicator$<$ EOFitness $>$::bounds, eo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::hypervolume\-Indicator\-Value(), and eo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::rho. + +Referenced by eo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::hypervolume\-Indicator\-Value().\index{eoBinaryHypervolumeIndicator@{eo\-Binary\-Hypervolume\-Indicator}!hypervolumeIndicatorValueMax@{hypervolumeIndicatorValueMax}} +\index{hypervolumeIndicatorValueMax@{hypervolumeIndicatorValueMax}!eoBinaryHypervolumeIndicator@{eo\-Binary\-Hypervolume\-Indicator}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOFitness$>$ double {\bf eo\-Binary\-Hypervolume\-Indicator}$<$ EOFitness $>$::hypervolume\-Indicator\-Value\-Max (const EOFitness \& {\em \_\-fitness\_\-eo1}, const EOFitness \& {\em \_\-fitness\_\-eo2}, const unsigned {\em \_\-i\-Obj}, const bool {\em \_\-flag})\hspace{0.3cm}{\tt [inline, private]}}\label{classeoBinaryHypervolumeIndicator_df2903822dbcd0a906dabf4cb6e05bfb} + + +computation of the hypervolume of the portion of the objective space that is dominated by individual \_\-eo1 but not by individual \_\-eo2 in case of a maximization on the objective \_\-i\-Obj + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em EOFitness}]\& \_\-fitness\_\-eo1 the fitness of the first individual \item[{\em EOFitness}]\& \_\-fitness\_\-eo2 the fitness of the second individual \item[{\em unsigned}]\_\-i\-Obj index of the objective \item[{\em bool}]\_\-flag (only used for iteration) \end{description} +\end{Desc} + + +Definition at line 374 of file eo\-Binary\-Quality\-Indicator.h. + +References eo\-Binary\-Quality\-Indicator$<$ EOFitness $>$::bounds, eo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::hypervolume\-Indicator\-Value(), and eo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::rho. + +Referenced by eo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::hypervolume\-Indicator\-Value(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +eo\-Binary\-Quality\-Indicator.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoBinaryQualityIndicator.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoBinaryQualityIndicator.eps new file mode 100644 index 000000000..819e6f0ed --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoBinaryQualityIndicator.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 116.279 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.3 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(eoBinaryQualityIndicator< EOFitness >) cw +(eoBF< const EOFitness &, const EOFitness &, double >) cw +(eoFunctorBase) cw +(eoAdditiveBinaryEpsilonIndicator< EOFitness >) cw +(eoBinaryHypervolumeIndicator< EOFitness >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (eoBinaryQualityIndicator< EOFitness >) 0.5 1 box + (eoBF< const EOFitness &, const EOFitness &, double >) 0.5 2 box + (eoFunctorBase) 0.5 3 box + (eoAdditiveBinaryEpsilonIndicator< EOFitness >) 0 0 box + (eoBinaryHypervolumeIndicator< EOFitness >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoBinaryQualityIndicator.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoBinaryQualityIndicator.tex new file mode 100644 index 000000000..567e8db4b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoBinaryQualityIndicator.tex @@ -0,0 +1,69 @@ +\section{eo\-Binary\-Quality\-Indicator$<$ EOFitness $>$ Class Template Reference} +\label{classeoBinaryQualityIndicator}\index{eoBinaryQualityIndicator@{eoBinaryQualityIndicator}} +Functor Binary quality indicator Binary performance measure to use in the replacement selection process of IBEA (Indicator-Based Evolutionary Algorithm) Of course, EOFitness needs to be an {\bf eo\-Pareto\-Fitness} object. + + +{\tt \#include $<$eo\-Binary\-Quality\-Indicator.h$>$} + +Inheritance diagram for eo\-Binary\-Quality\-Indicator$<$ EOFitness $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3.25581cm]{classeoBinaryQualityIndicator} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf eo\-Binary\-Quality\-Indicator} ()\label{classeoBinaryQualityIndicator_e138f133fb4a5024b2e31f1544b4739a} + +\begin{CompactList}\small\item\em constructor \item\end{CompactList}\item +void {\bf set\-Bounds} (const unsigned \_\-i\-Obj, const double \_\-min, const double \_\-max) +\begin{CompactList}\small\item\em set the bounds for objective \_\-i\-Obj \item\end{CompactList}\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +std::vector$<$ {\bf Range} $>$ {\bf bounds}\label{classeoBinaryQualityIndicator_aa9bb224ab744a00271577a10518581a} + +\begin{CompactList}\small\item\em range (min and max double value) for each objective \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef EOFitness::fitness\_\-traits {\bf traits}\label{classeoBinaryQualityIndicator_3d9415cfa63d3dd57fe44f9e11df3cac} + +\begin{CompactList}\small\item\em fitness traits \item\end{CompactList}\end{CompactItemize} +\subsection*{Classes} +\begin{CompactItemize} +\item +class {\bf Range} +\begin{CompactList}\small\item\em Private class to represent the bounds. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOFitness$>$ class eo\-Binary\-Quality\-Indicator$<$ EOFitness $>$} + +Functor Binary quality indicator Binary performance measure to use in the replacement selection process of IBEA (Indicator-Based Evolutionary Algorithm) Of course, EOFitness needs to be an {\bf eo\-Pareto\-Fitness} object. + + + +Definition at line 39 of file eo\-Binary\-Quality\-Indicator.h. + +\subsection{Member Function Documentation} +\index{eoBinaryQualityIndicator@{eo\-Binary\-Quality\-Indicator}!setBounds@{setBounds}} +\index{setBounds@{setBounds}!eoBinaryQualityIndicator@{eo\-Binary\-Quality\-Indicator}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOFitness$>$ void {\bf eo\-Binary\-Quality\-Indicator}$<$ EOFitness $>$::set\-Bounds (const unsigned {\em \_\-i\-Obj}, const double {\em \_\-min}, const double {\em \_\-max})\hspace{0.3cm}{\tt [inline]}}\label{classeoBinaryQualityIndicator_ed08c328526eb4c1c8cfde8b6938ece9} + + +set the bounds for objective \_\-i\-Obj + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em unsigned}]\_\-i\-Obj the index of the objective \item[{\em double}]\_\-min the minimum value \item[{\em double}]\_\-max the maximum value \end{description} +\end{Desc} + + +Definition at line 62 of file eo\-Binary\-Quality\-Indicator.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +eo\-Binary\-Quality\-Indicator.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoBinaryQualityIndicator_1_1Range.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoBinaryQualityIndicator_1_1Range.tex new file mode 100644 index 000000000..01e43961d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoBinaryQualityIndicator_1_1Range.tex @@ -0,0 +1,51 @@ +\section{eo\-Binary\-Quality\-Indicator$<$ EOFitness $>$::Range Class Reference} +\label{classeoBinaryQualityIndicator_1_1Range}\index{eoBinaryQualityIndicator::Range@{eoBinaryQualityIndicator::Range}} +Private class to represent the bounds. + + +{\tt \#include $<$eo\-Binary\-Quality\-Indicator.h$>$} + +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Range} ()\label{classeoBinaryQualityIndicator_1_1Range_75dfd77019095fa4993ad3187ac44006} + +\item +{\bf Range} (const double \_\-min, const double \_\-max)\label{classeoBinaryQualityIndicator_1_1Range_111b9a6b682bd0270039cce7d1a847ca} + +\item +double {\bf minimum} ()\label{classeoBinaryQualityIndicator_1_1Range_f9554f81819461f9ad56c12a93259803} + +\item +double {\bf maximum} ()\label{classeoBinaryQualityIndicator_1_1Range_790f08b55cdd69213886de198b2bcc5f} + +\item +double {\bf range} ()\label{classeoBinaryQualityIndicator_1_1Range_a432e7dbdb691ce4e6ee6d6a224e469f} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +double {\bf min}\label{classeoBinaryQualityIndicator_1_1Range_e233e32a9b7cb73ef5dbe06a204482ec} + +\item +double {\bf max}\label{classeoBinaryQualityIndicator_1_1Range_63c9473e163e3c0c6d5a0327252786b1} + +\item +double {\bf r}\label{classeoBinaryQualityIndicator_1_1Range_101eaf7a60e7243df169c7fde6087342} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOFitness$>$ class eo\-Binary\-Quality\-Indicator$<$ EOFitness $>$::Range} + +Private class to represent the bounds. + + + +Definition at line 73 of file eo\-Binary\-Quality\-Indicator.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +eo\-Binary\-Quality\-Indicator.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEA.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEA.eps new file mode 100644 index 000000000..abe693ac4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEA.eps @@ -0,0 +1,233 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 240.964 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.075 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 6 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(eoIBEA< EOT, Fitness >) cw +(eoPerf2WorthCached< EOT, double >) cw +(eoPerf2Worth< EOT, WorthT >) cw +(eoUF< const eoPop< EOT > &, void >) cw +(eoValueParam< std::vector< WorthT > >) cw +(eoFunctorBase) cw +(eoParam) cw +(eoIBEASorting< EOT, Fitness >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (eoIBEA< EOT, Fitness >) 0.5 1 box + (eoPerf2WorthCached< EOT, double >) 0.5 2 box + (eoPerf2Worth< EOT, WorthT >) 0.5 3 box + (eoUF< const eoPop< EOT > &, void >) 0 4 box + (eoValueParam< std::vector< WorthT > >) 1 4 box + (eoFunctorBase) 0 5 box + (eoParam) 1 5 box + (eoIBEASorting< EOT, Fitness >) 0.5 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +0 0.5 3 out +solid +0 1 4 conn +solid +1 0 4 in +solid +0 0 4 out +solid +1 1 4 in +solid +0 1 4 out +solid +1 0 5 in +solid +1 1 5 in +solid +1 0.5 0.25 out +solid +0 0.5 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEA.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEA.tex new file mode 100644 index 000000000..38074e73d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEA.tex @@ -0,0 +1,60 @@ +\section{eo\-IBEA$<$ EOT, Fitness $>$ Class Template Reference} +\label{classeoIBEA}\index{eoIBEA@{eoIBEA}} +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm). + + +{\tt \#include $<$eo\-IBEA.h$>$} + +Inheritance diagram for eo\-IBEA$<$ EOT, Fitness $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=6cm]{classeoIBEA} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf eo\-IBEA} ({\bf eo\-Binary\-Quality\-Indicator}$<$ Fitness $>$ $\ast$\_\-I)\label{classeoIBEA_703833c1f773136b24d2ca5c7cff4b2d} + +\item +void {\bf calculate\_\-worths} (const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em mapping \item\end{CompactList}\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +{\bf eo\-Binary\-Quality\-Indicator}$<$ Fitness $>$ $\ast$ {\bf I}\label{classeoIBEA_f69a9efad202b67ee51d538d14d587e6} + +\begin{CompactList}\small\item\em binary quality indicator to use in the selection process \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class Fitness$>$ class eo\-IBEA$<$ EOT, Fitness $>$} + +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm). + + + +Definition at line 38 of file eo\-IBEA.h. + +\subsection{Member Function Documentation} +\index{eoIBEA@{eo\-IBEA}!calculate_worths@{calculate\_\-worths}} +\index{calculate_worths@{calculate\_\-worths}!eoIBEA@{eo\-IBEA}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Fitness$>$ void {\bf eo\-IBEA}$<$ EOT, Fitness $>$::calculate\_\-worths (const {\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classeoIBEA_e6b7c15e38822bef261c545b498eabef} + + +mapping + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em const}]eo\-Pop$<$EOT$>$\& \_\-pop the population \end{description} +\end{Desc} + + +Implements {\bf eo\-Perf2Worth\-Cached$<$ EOT, double $>$}. + +Definition at line 56 of file eo\-IBEA.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +eo\-IBEA.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEAAvgSorting.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEAAvgSorting.eps new file mode 100644 index 000000000..99056127d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEAAvgSorting.eps @@ -0,0 +1,233 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 240.964 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.075 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 6 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(eoIBEAAvgSorting< EOT, FitnessEval >) cw +(eoIBEA< EOT, FitnessEval >) cw +(eoPerf2WorthCached< EOT, double >) cw +(eoPerf2Worth< EOT, WorthT >) cw +(eoUF< const eoPop< EOT > &, void >) cw +(eoValueParam< std::vector< WorthT > >) cw +(eoFunctorBase) cw +(eoParam) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (eoIBEAAvgSorting< EOT, FitnessEval >) 0.5 0 box + (eoIBEA< EOT, FitnessEval >) 0.5 1 box + (eoPerf2WorthCached< EOT, double >) 0.5 2 box + (eoPerf2Worth< EOT, WorthT >) 0.5 3 box + (eoUF< const eoPop< EOT > &, void >) 0 4 box + (eoValueParam< std::vector< WorthT > >) 1 4 box + (eoFunctorBase) 0 5 box + (eoParam) 1 5 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +0 0.5 3 out +solid +0 1 4 conn +solid +1 0 4 in +solid +0 0 4 out +solid +1 1 4 in +solid +0 1 4 out +solid +1 0 5 in +solid +1 1 5 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEAAvgSorting.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEAAvgSorting.tex new file mode 100644 index 000000000..52eea3221 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEAAvgSorting.tex @@ -0,0 +1,99 @@ +\section{eo\-IBEAAvg\-Sorting$<$ EOT, Fitness\-Eval $>$ Class Template Reference} +\label{classeoIBEAAvgSorting}\index{eoIBEAAvgSorting@{eoIBEAAvgSorting}} +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty using averaged values for each objective Follow the idea presented in the Deb \& Gupta paper \char`\"{}Searching for Robust Pareto-Optimal Solutions in Multi-Objective Optimization\char`\"{}, 2005 Of course, the fitness of an individual needs to be an eo\-Stochastic\-Pareto\-Fitness object. + + +{\tt \#include $<$eo\-IBEA.h$>$} + +Inheritance diagram for eo\-IBEAAvg\-Sorting$<$ EOT, Fitness\-Eval $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=6cm]{classeoIBEAAvgSorting} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf eo\-IBEAAvg\-Sorting} ({\bf eo\-Binary\-Quality\-Indicator}$<$ Fitness\-Eval $>$ $\ast$\_\-I, const double \_\-kappa) +\begin{CompactList}\small\item\em constructor \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +void {\bf set\-Bounds} (const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em computation and setting of the bounds for each objective \item\end{CompactList}\item +void {\bf fitnesses} (const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em computation and setting of the fitness for each individual of the population \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +double {\bf kappa}\label{classeoIBEAAvgSorting_6f467d673861830d6a0708f61cecc3f7} + +\begin{CompactList}\small\item\em scaling factor kappa \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class Fitness\-Eval = typename EOT::Fitness::Fitness\-Eval$>$ class eo\-IBEAAvg\-Sorting$<$ EOT, Fitness\-Eval $>$} + +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty using averaged values for each objective Follow the idea presented in the Deb \& Gupta paper \char`\"{}Searching for Robust Pareto-Optimal Solutions in Multi-Objective Optimization\char`\"{}, 2005 Of course, the fitness of an individual needs to be an eo\-Stochastic\-Pareto\-Fitness object. + + + +Definition at line 373 of file eo\-IBEA.h. + +\subsection{Constructor \& Destructor Documentation} +\index{eoIBEAAvgSorting@{eo\-IBEAAvg\-Sorting}!eoIBEAAvgSorting@{eoIBEAAvgSorting}} +\index{eoIBEAAvgSorting@{eoIBEAAvgSorting}!eoIBEAAvgSorting@{eo\-IBEAAvg\-Sorting}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Fitness\-Eval = typename EOT::Fitness::Fitness\-Eval$>$ {\bf eo\-IBEAAvg\-Sorting}$<$ EOT, Fitness\-Eval $>$::{\bf eo\-IBEAAvg\-Sorting} ({\bf eo\-Binary\-Quality\-Indicator}$<$ Fitness\-Eval $>$ $\ast$ {\em \_\-I}, const double {\em \_\-kappa})\hspace{0.3cm}{\tt [inline]}}\label{classeoIBEAAvgSorting_eb0cfda626e1e5cac6750f0598610f82} + + +constructor + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Binary\-Quality\-Indicator$<$EOT$>$$\ast$}]\_\-I the binary quality indicator to use in the selection process \item[{\em double}]\_\-kappa scaling factor kappa \end{description} +\end{Desc} + + +Definition at line 385 of file eo\-IBEA.h. + +References eo\-IBEAAvg\-Sorting$<$ EOT, Fitness\-Eval $>$::kappa. + +\subsection{Member Function Documentation} +\index{eoIBEAAvgSorting@{eo\-IBEAAvg\-Sorting}!setBounds@{setBounds}} +\index{setBounds@{setBounds}!eoIBEAAvgSorting@{eo\-IBEAAvg\-Sorting}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Fitness\-Eval = typename EOT::Fitness::Fitness\-Eval$>$ void {\bf eo\-IBEAAvg\-Sorting}$<$ EOT, Fitness\-Eval $>$::set\-Bounds (const {\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, private, virtual]}}\label{classeoIBEAAvgSorting_b365a1eab0da5211c59369416642780d} + + +computation and setting of the bounds for each objective + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em const}]eo\-Pop$<$EOT$>$\& \_\-pop the population \end{description} +\end{Desc} + + +Implements {\bf eo\-IBEA$<$ EOT, Fitness\-Eval $>$} {\rm (p.\,\pageref{classeoIBEA})}. + +Definition at line 413 of file eo\-IBEA.h.\index{eoIBEAAvgSorting@{eo\-IBEAAvg\-Sorting}!fitnesses@{fitnesses}} +\index{fitnesses@{fitnesses}!eoIBEAAvgSorting@{eo\-IBEAAvg\-Sorting}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Fitness\-Eval = typename EOT::Fitness::Fitness\-Eval$>$ void {\bf eo\-IBEAAvg\-Sorting}$<$ EOT, Fitness\-Eval $>$::fitnesses (const {\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, private, virtual]}}\label{classeoIBEAAvgSorting_4bc8c46d151d7935d7b2ac8bfbdd7ee6} + + +computation and setting of the fitness for each individual of the population + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em const}]eo\-Pop$<$EOT$>$\& \_\-pop the population \end{description} +\end{Desc} + + +Implements {\bf eo\-IBEA$<$ EOT, Fitness\-Eval $>$} {\rm (p.\,\pageref{classeoIBEA})}. + +Definition at line 445 of file eo\-IBEA.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +eo\-IBEA.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEASorting.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEASorting.eps new file mode 100644 index 000000000..824b0fded --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEASorting.eps @@ -0,0 +1,233 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 240.964 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.075 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 6 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(eoIBEASorting< EOT, Fitness >) cw +(eoIBEA< EOT, Fitness >) cw +(eoPerf2WorthCached< EOT, double >) cw +(eoPerf2Worth< EOT, WorthT >) cw +(eoUF< const eoPop< EOT > &, void >) cw +(eoValueParam< std::vector< WorthT > >) cw +(eoFunctorBase) cw +(eoParam) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (eoIBEASorting< EOT, Fitness >) 0.5 0 box + (eoIBEA< EOT, Fitness >) 0.5 1 box + (eoPerf2WorthCached< EOT, double >) 0.5 2 box + (eoPerf2Worth< EOT, WorthT >) 0.5 3 box + (eoUF< const eoPop< EOT > &, void >) 0 4 box + (eoValueParam< std::vector< WorthT > >) 1 4 box + (eoFunctorBase) 0 5 box + (eoParam) 1 5 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +0 0.5 3 out +solid +0 1 4 conn +solid +1 0 4 in +solid +0 0 4 out +solid +1 1 4 in +solid +0 1 4 out +solid +1 0 5 in +solid +1 1 5 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEASorting.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEASorting.tex new file mode 100644 index 000000000..7149cbafc --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEASorting.tex @@ -0,0 +1,99 @@ +\section{eo\-IBEASorting$<$ EOT, Fitness $>$ Class Template Reference} +\label{classeoIBEASorting}\index{eoIBEASorting@{eoIBEASorting}} +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) without uncertainty Adapted from the Zitzler and K\~{A}¼nzli paper \char`\"{}Indicator-Based Selection in Multiobjective Search\char`\"{} (2004) Of course, Fitness needs to be an {\bf eo\-Pareto\-Fitness} object. + + +{\tt \#include $<$eo\-IBEA.h$>$} + +Inheritance diagram for eo\-IBEASorting$<$ EOT, Fitness $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=6cm]{classeoIBEASorting} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf eo\-IBEASorting} ({\bf eo\-Binary\-Quality\-Indicator}$<$ Fitness $>$ $\ast$\_\-I, const double \_\-kappa) +\begin{CompactList}\small\item\em constructor \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +void {\bf set\-Bounds} (const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em computation and setting of the bounds for each objective \item\end{CompactList}\item +void {\bf fitnesses} (const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em computation and setting of the fitness for each individual of the population \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +double {\bf kappa}\label{classeoIBEASorting_de45fa88a6b6fc70896a0dbfffdb3dc7} + +\begin{CompactList}\small\item\em scaling factor kappa \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class Fitness = typename EOT::Fitness$>$ class eo\-IBEASorting$<$ EOT, Fitness $>$} + +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) without uncertainty Adapted from the Zitzler and K\~{A}¼nzli paper \char`\"{}Indicator-Based Selection in Multiobjective Search\char`\"{} (2004) Of course, Fitness needs to be an {\bf eo\-Pareto\-Fitness} object. + + + +Definition at line 94 of file eo\-IBEA.h. + +\subsection{Constructor \& Destructor Documentation} +\index{eoIBEASorting@{eo\-IBEASorting}!eoIBEASorting@{eoIBEASorting}} +\index{eoIBEASorting@{eoIBEASorting}!eoIBEASorting@{eo\-IBEASorting}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Fitness = typename EOT::Fitness$>$ {\bf eo\-IBEASorting}$<$ EOT, Fitness $>$::{\bf eo\-IBEASorting} ({\bf eo\-Binary\-Quality\-Indicator}$<$ Fitness $>$ $\ast$ {\em \_\-I}, const double {\em \_\-kappa})\hspace{0.3cm}{\tt [inline]}}\label{classeoIBEASorting_7a35d760e84a98fd7a47966c50e3af66} + + +constructor + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Binary\-Quality\-Indicator$<$EOT$>$$\ast$}]\_\-I the binary quality indicator to use in the selection process \item[{\em double}]\_\-kappa scaling factor kappa \end{description} +\end{Desc} + + +Definition at line 106 of file eo\-IBEA.h. + +References eo\-IBEASorting$<$ EOT, Fitness $>$::kappa. + +\subsection{Member Function Documentation} +\index{eoIBEASorting@{eo\-IBEASorting}!setBounds@{setBounds}} +\index{setBounds@{setBounds}!eoIBEASorting@{eo\-IBEASorting}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Fitness = typename EOT::Fitness$>$ void {\bf eo\-IBEASorting}$<$ EOT, Fitness $>$::set\-Bounds (const {\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, private, virtual]}}\label{classeoIBEASorting_02c7346d6aa62f3e3af20cc6ac3ee1d9} + + +computation and setting of the bounds for each objective + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em const}]eo\-Pop$<$EOT$>$\& \_\-pop the population \end{description} +\end{Desc} + + +Implements {\bf eo\-IBEA$<$ EOT, Fitness $>$} {\rm (p.\,\pageref{classeoIBEA})}. + +Definition at line 134 of file eo\-IBEA.h.\index{eoIBEASorting@{eo\-IBEASorting}!fitnesses@{fitnesses}} +\index{fitnesses@{fitnesses}!eoIBEASorting@{eo\-IBEASorting}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Fitness = typename EOT::Fitness$>$ void {\bf eo\-IBEASorting}$<$ EOT, Fitness $>$::fitnesses (const {\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, private, virtual]}}\label{classeoIBEASorting_af613f862a58b402d88958b0e290e810} + + +computation and setting of the fitness for each individual of the population + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em const}]eo\-Pop$<$EOT$>$\& \_\-pop the population \end{description} +\end{Desc} + + +Implements {\bf eo\-IBEA$<$ EOT, Fitness $>$} {\rm (p.\,\pageref{classeoIBEA})}. + +Definition at line 162 of file eo\-IBEA.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +eo\-IBEA.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEAStochSorting.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEAStochSorting.eps new file mode 100644 index 000000000..e7776d152 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEAStochSorting.eps @@ -0,0 +1,233 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 233.463 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.14167 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 6 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(eoIBEAStochSorting< EOT, FitnessEval >) cw +(eoIBEA< EOT, FitnessEval >) cw +(eoPerf2WorthCached< EOT, double >) cw +(eoPerf2Worth< EOT, WorthT >) cw +(eoUF< const eoPop< EOT > &, void >) cw +(eoValueParam< std::vector< WorthT > >) cw +(eoFunctorBase) cw +(eoParam) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (eoIBEAStochSorting< EOT, FitnessEval >) 0.5 0 box + (eoIBEA< EOT, FitnessEval >) 0.5 1 box + (eoPerf2WorthCached< EOT, double >) 0.5 2 box + (eoPerf2Worth< EOT, WorthT >) 0.5 3 box + (eoUF< const eoPop< EOT > &, void >) 0 4 box + (eoValueParam< std::vector< WorthT > >) 1 4 box + (eoFunctorBase) 0 5 box + (eoParam) 1 5 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +0 0.5 3 out +solid +0 1 4 conn +solid +1 0 4 in +solid +0 0 4 out +solid +1 1 4 in +solid +0 1 4 out +solid +1 0 5 in +solid +1 1 5 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEAStochSorting.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEAStochSorting.tex new file mode 100644 index 000000000..b429a0053 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoIBEAStochSorting.tex @@ -0,0 +1,97 @@ +\section{eo\-IBEAStoch\-Sorting$<$ EOT, Fitness\-Eval $>$ Class Template Reference} +\label{classeoIBEAStochSorting}\index{eoIBEAStochSorting@{eoIBEAStochSorting}} +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty Adapted from the Basseur and Zitzler paper \char`\"{}Handling Uncertainty in Indicator-Based Multiobjective Optimization\char`\"{} (2006) Of course, the fitness of an individual needs to be an eo\-Stochastic\-Pareto\-Fitness object. + + +{\tt \#include $<$eo\-IBEA.h$>$} + +Inheritance diagram for eo\-IBEAStoch\-Sorting$<$ EOT, Fitness\-Eval $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=6cm]{classeoIBEAStochSorting} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf eo\-IBEAStoch\-Sorting} ({\bf eo\-Binary\-Quality\-Indicator}$<$ Fitness\-Eval $>$ $\ast$\_\-I) +\begin{CompactList}\small\item\em constructor \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +void {\bf set\-Bounds} (const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em computation and setting of the bounds for each objective \item\end{CompactList}\item +void {\bf fitnesses} (const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em computation and setting of the fitness for each individual of the population \item\end{CompactList}\end{CompactItemize} +\subsection*{Static Private Member Functions} +\begin{CompactItemize} +\item +static double {\bf zero} ()\label{classeoIBEAStochSorting_0cd3d638866730b7a8fdbd5a1c08c810} + +\begin{CompactList}\small\item\em approximated zero value \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class Fitness\-Eval = typename EOT::Fitness::Fitness\-Eval$>$ class eo\-IBEAStoch\-Sorting$<$ EOT, Fitness\-Eval $>$} + +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty Adapted from the Basseur and Zitzler paper \char`\"{}Handling Uncertainty in Indicator-Based Multiobjective Optimization\char`\"{} (2006) Of course, the fitness of an individual needs to be an eo\-Stochastic\-Pareto\-Fitness object. + + + +Definition at line 215 of file eo\-IBEA.h. + +\subsection{Constructor \& Destructor Documentation} +\index{eoIBEAStochSorting@{eo\-IBEAStoch\-Sorting}!eoIBEAStochSorting@{eoIBEAStochSorting}} +\index{eoIBEAStochSorting@{eoIBEAStochSorting}!eoIBEAStochSorting@{eo\-IBEAStoch\-Sorting}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Fitness\-Eval = typename EOT::Fitness::Fitness\-Eval$>$ {\bf eo\-IBEAStoch\-Sorting}$<$ EOT, Fitness\-Eval $>$::{\bf eo\-IBEAStoch\-Sorting} ({\bf eo\-Binary\-Quality\-Indicator}$<$ Fitness\-Eval $>$ $\ast$ {\em \_\-I})\hspace{0.3cm}{\tt [inline]}}\label{classeoIBEAStochSorting_9d9775846e174bdbc9491856b23eb27d} + + +constructor + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Binary\-Quality\-Indicator$<$EOT$>$$\ast$}]\_\-I the binary quality indicator to use in the selection process \end{description} +\end{Desc} + + +Definition at line 226 of file eo\-IBEA.h. + +\subsection{Member Function Documentation} +\index{eoIBEAStochSorting@{eo\-IBEAStoch\-Sorting}!setBounds@{setBounds}} +\index{setBounds@{setBounds}!eoIBEAStochSorting@{eo\-IBEAStoch\-Sorting}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Fitness\-Eval = typename EOT::Fitness::Fitness\-Eval$>$ void {\bf eo\-IBEAStoch\-Sorting}$<$ EOT, Fitness\-Eval $>$::set\-Bounds (const {\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, private, virtual]}}\label{classeoIBEAStochSorting_2a5ddad942fee331fe6912a6fecc9247} + + +computation and setting of the bounds for each objective + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em const}]eo\-Pop$<$EOT$>$\& \_\-pop the population \end{description} +\end{Desc} + + +Implements {\bf eo\-IBEA$<$ EOT, Fitness\-Eval $>$} {\rm (p.\,\pageref{classeoIBEA})}. + +Definition at line 258 of file eo\-IBEA.h.\index{eoIBEAStochSorting@{eo\-IBEAStoch\-Sorting}!fitnesses@{fitnesses}} +\index{fitnesses@{fitnesses}!eoIBEAStochSorting@{eo\-IBEAStoch\-Sorting}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Fitness\-Eval = typename EOT::Fitness::Fitness\-Eval$>$ void {\bf eo\-IBEAStoch\-Sorting}$<$ EOT, Fitness\-Eval $>$::fitnesses (const {\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, private, virtual]}}\label{classeoIBEAStochSorting_0d099b5a341791b35db98b350cdbc83f} + + +computation and setting of the fitness for each individual of the population + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em const}]eo\-Pop$<$EOT$>$\& \_\-pop the population \end{description} +\end{Desc} + + +Implements {\bf eo\-IBEA$<$ EOT, Fitness\-Eval $>$} {\rm (p.\,\pageref{classeoIBEA})}. + +Definition at line 286 of file eo\-IBEA.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +eo\-IBEA.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoEuclidDist.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoEuclidDist.eps new file mode 100644 index 000000000..95067130d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoEuclidDist.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 170.94 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.925 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(eoParetoEuclidDist< EOT, DistType >) cw +(eoParetoPhenDist< EOT, DistType >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (eoParetoEuclidDist< EOT, DistType >) 0 0 box + (eoParetoPhenDist< EOT, DistType >) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoEuclidDist.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoEuclidDist.tex new file mode 100644 index 000000000..468b8acf8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoEuclidDist.tex @@ -0,0 +1,28 @@ +\section{eo\-Pareto\-Euclid\-Dist$<$ EOT, Dist\-Type $>$ Class Template Reference} +\label{classeoParetoEuclidDist}\index{eoParetoEuclidDist@{eoParetoEuclidDist}} +Inheritance diagram for eo\-Pareto\-Euclid\-Dist$<$ EOT, Dist\-Type $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classeoParetoEuclidDist} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +Dist\-Type {\bf operator()} (const EOT \&eopf1, const EOT \&eopf2)\label{classeoParetoEuclidDist_8693ded671292b210c3c455fa18c496e} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class Dist\-Type = double$>$ class eo\-Pareto\-Euclid\-Dist$<$ EOT, Dist\-Type $>$} + + + + + +Definition at line 15 of file eo\-Pareto\-Phen\-Dist.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +eo\-Pareto\-Phen\-Dist.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoPhenDist.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoPhenDist.eps new file mode 100644 index 000000000..41b7a9d73 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoPhenDist.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 170.94 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.925 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(eoParetoPhenDist< EOT, DistType >) cw +(eoParetoEuclidDist< EOT, DistType >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (eoParetoPhenDist< EOT, DistType >) 0 1 box + (eoParetoEuclidDist< EOT, DistType >) 0 0 box + +% ----- relations ----- + +solid +1 0 0.25 out +solid +0 0 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoPhenDist.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoPhenDist.tex new file mode 100644 index 000000000..542553113 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoPhenDist.tex @@ -0,0 +1,22 @@ +\section{eo\-Pareto\-Phen\-Dist$<$ EOT, Dist\-Type $>$ Class Template Reference} +\label{classeoParetoPhenDist}\index{eoParetoPhenDist@{eoParetoPhenDist}} +Inheritance diagram for eo\-Pareto\-Phen\-Dist$<$ EOT, Dist\-Type $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classeoParetoPhenDist} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class Dist\-Type$>$ class eo\-Pareto\-Phen\-Dist$<$ EOT, Dist\-Type $>$} + + + + + +Definition at line 3 of file eo\-Pareto\-Phen\-Dist.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +eo\-Pareto\-Phen\-Dist.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoSharing.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoSharing.eps new file mode 100644 index 000000000..1159ccf2d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoSharing.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 161.943 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.0875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(eoParetoSharing< EOT, worthT >) cw +(eoPerf2Worth< EOT, worthT >) cw +(eoUF< const eoPop< EOT > &, void >) cw +(eoValueParam< std::vector< worthT > >) cw +(eoFunctorBase) cw +(eoParam) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (eoParetoSharing< EOT, worthT >) 0.5 0 box + (eoPerf2Worth< EOT, worthT >) 0.5 1 box + (eoUF< const eoPop< EOT > &, void >) 0 2 box + (eoValueParam< std::vector< worthT > >) 1 2 box + (eoFunctorBase) 0 3 box + (eoParam) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +0 0 2 out +solid +1 1 2 in +solid +0 1 2 out +solid +1 0 3 in +solid +1 1 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoSharing.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoSharing.tex new file mode 100644 index 000000000..0ef03c5fe --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoSharing.tex @@ -0,0 +1,60 @@ +\section{eo\-Pareto\-Sharing$<$ EOT, worth\-T $>$ Class Template Reference} +\label{classeoParetoSharing}\index{eoParetoSharing@{eoParetoSharing}} +Inheritance diagram for eo\-Pareto\-Sharing$<$ EOT, worth\-T $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classeoParetoSharing} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf eo\-Pareto\-Sharing} (double \_\-niche\-Size)\label{classeoParetoSharing_99666671930abc479a2f5e5dd2914d41} + +\item +{\bf eo\-Pareto\-Sharing} (double \_\-niche\-Size, {\bf eo\-Pareto\-Phen\-Dist}$<$ EOT, worth\-T $>$ \&\_\-dist)\label{classeoParetoSharing_5ad0d5b6a1c1f4fc17bb9a319f18d645} + +\item +void {\bf operator} ()(const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop)\label{classeoParetoSharing_df55496bf711d4614bcf42d157a4b4de} + +\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +double {\bf sh} (double {\bf dist}, double {\bf Dmax})\label{classeoParetoSharing_ce18ecb042033d564be6379869f2be88} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +double {\bf niche\-Size}\label{classeoParetoSharing_0da31e076cf2098639cd1a9fa06f3942} + +\item +{\bf eo\-Pareto\-Phen\-Dist}$<$ EOT, worth\-T $>$ \& {\bf dist}\label{classeoParetoSharing_f5cff5bf666314e59d58043531253b1b} + +\item +{\bf eo\-Pareto\-Euclid\-Dist}$<$ EOT $>$ {\bf euc\_\-dist}\label{classeoParetoSharing_9b8e6e2c76d816afb23dfdbf91dabf57} + +\item +double {\bf Dmax}\label{classeoParetoSharing_35449ebac125955c49a6d34db0e710b3} + +\end{CompactItemize} +\subsection*{Classes} +\begin{CompactItemize} +\item +class {\bf d\-Matrix} +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class worth\-T = double$>$ class eo\-Pareto\-Sharing$<$ EOT, worth\-T $>$} + + + + + +Definition at line 9 of file eo\-Pareto\-Sharing.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +eo\-Pareto\-Sharing.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoSharing_1_1dMatrix.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoSharing_1_1dMatrix.tex new file mode 100644 index 000000000..3860314c0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classeoParetoSharing_1_1dMatrix.tex @@ -0,0 +1,31 @@ +\section{eo\-Pareto\-Sharing$<$ EOT, worth\-T $>$::d\-Matrix Class Reference} +\label{classeoParetoSharing_1_1dMatrix}\index{eoParetoSharing::dMatrix@{eoParetoSharing::dMatrix}} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf d\-Matrix} (unsigned \_\-s)\label{classeoParetoSharing_1_1dMatrix_0cff6678bc7af1fd6d620a472b6c9ee5} + +\item +void {\bf print\-On} (std::ostream \&\_\-os)\label{classeoParetoSharing_1_1dMatrix_0a331635c3125c5d936f30b34d3b4bcd} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +unsigned {\bf r\-Size}\label{classeoParetoSharing_1_1dMatrix_767481759c7990f6a90c581e0fd0a0dd} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class worth\-T = double$>$ class eo\-Pareto\-Sharing$<$ EOT, worth\-T $>$::d\-Matrix} + + + + + +Definition at line 99 of file eo\-Pareto\-Sharing.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +eo\-Pareto\-Sharing.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoAdditiveBinaryEpsilonIndicator.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoAdditiveBinaryEpsilonIndicator.eps new file mode 100644 index 000000000..ade9478ea --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoAdditiveBinaryEpsilonIndicator.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 262.295 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.90625 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoAdditiveBinaryEpsilonIndicator< EOFitness >) cw +(moeoBinaryQualityIndicator< EOFitness >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoAdditiveBinaryEpsilonIndicator< EOFitness >) 0 0 box + (moeoBinaryQualityIndicator< EOFitness >) 0 1 box + (eoBF< A1, A2, R >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoAdditiveBinaryEpsilonIndicator.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoAdditiveBinaryEpsilonIndicator.tex new file mode 100644 index 000000000..323f9b5d9 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoAdditiveBinaryEpsilonIndicator.tex @@ -0,0 +1,83 @@ +\section{moeo\-Additive\-Binary\-Epsilon\-Indicator$<$ EOFitness $>$ Class Template Reference} +\label{classmoeoAdditiveBinaryEpsilonIndicator}\index{moeoAdditiveBinaryEpsilonIndicator@{moeoAdditiveBinaryEpsilonIndicator}} +Functor Additive binary epsilon indicator for {\bf eo\-Pareto\-Fitness}. + + +{\tt \#include $<$moeo\-Binary\-Quality\-Indicator.h$>$} + +Inheritance diagram for moeo\-Additive\-Binary\-Epsilon\-Indicator$<$ EOFitness $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmoeoAdditiveBinaryEpsilonIndicator} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moeo\-Additive\-Binary\-Epsilon\-Indicator} ()\label{classmoeoAdditiveBinaryEpsilonIndicator_d26af04a8276654998b4425f97963c47} + +\begin{CompactList}\small\item\em constructor \item\end{CompactList}\item +double {\bf operator()} (const EOFitness \&\_\-fitness\_\-eo1, const EOFitness \&\_\-fitness\_\-eo2) +\begin{CompactList}\small\item\em computation of the maximum epsilon value by which individual \_\-eo1 must be decreased in all objectives such that individual \_\-eo2 is weakly dominated (do not forget to set the bounds before the call of this function) \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef EOFitness::fitness\_\-traits {\bf traits}\label{classmoeoAdditiveBinaryEpsilonIndicator_43e2945121a3e77683d935bc72399992} + +\begin{CompactList}\small\item\em fitness traits \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +double {\bf epsilon\-Value} (const EOFitness \&\_\-fitness\_\-eo1, const EOFitness \&\_\-fitness\_\-eo2, const unsigned \_\-i\-Obj) +\begin{CompactList}\small\item\em computation of the epsilon value by which individual \_\-eo1 must be decreased in the objective \_\-i\-Obj such that individual \_\-eo2 is weakly dominated \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOFitness$>$ class moeo\-Additive\-Binary\-Epsilon\-Indicator$<$ EOFitness $>$} + +Functor Additive binary epsilon indicator for {\bf eo\-Pareto\-Fitness}. + + + +Definition at line 115 of file moeo\-Binary\-Quality\-Indicator.h. + +\subsection{Member Function Documentation} +\index{moeoAdditiveBinaryEpsilonIndicator@{moeo\-Additive\-Binary\-Epsilon\-Indicator}!operator()@{operator()}} +\index{operator()@{operator()}!moeoAdditiveBinaryEpsilonIndicator@{moeo\-Additive\-Binary\-Epsilon\-Indicator}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOFitness$>$ double {\bf moeo\-Additive\-Binary\-Epsilon\-Indicator}$<$ EOFitness $>$::operator() (const EOFitness \& {\em \_\-fitness\_\-eo1}, const EOFitness \& {\em \_\-fitness\_\-eo2})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoAdditiveBinaryEpsilonIndicator_177f9999db6c9fb95d5fbff5a157348c} + + +computation of the maximum epsilon value by which individual \_\-eo1 must be decreased in all objectives such that individual \_\-eo2 is weakly dominated (do not forget to set the bounds before the call of this function) + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em EOFitness}]\& \_\-fitness\_\-eo1 the fitness of the first individual \item[{\em EOFitness}]\& \_\-fitness\_\-eo2 the fitness of the second individual \end{description} +\end{Desc} + + +Definition at line 138 of file moeo\-Binary\-Quality\-Indicator.h. + +References moeo\-Additive\-Binary\-Epsilon\-Indicator$<$ EOFitness $>$::epsilon\-Value().\index{moeoAdditiveBinaryEpsilonIndicator@{moeo\-Additive\-Binary\-Epsilon\-Indicator}!epsilonValue@{epsilonValue}} +\index{epsilonValue@{epsilonValue}!moeoAdditiveBinaryEpsilonIndicator@{moeo\-Additive\-Binary\-Epsilon\-Indicator}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOFitness$>$ double {\bf moeo\-Additive\-Binary\-Epsilon\-Indicator}$<$ EOFitness $>$::epsilon\-Value (const EOFitness \& {\em \_\-fitness\_\-eo1}, const EOFitness \& {\em \_\-fitness\_\-eo2}, const unsigned {\em \_\-i\-Obj})\hspace{0.3cm}{\tt [inline, private]}}\label{classmoeoAdditiveBinaryEpsilonIndicator_e953aa9fe74ebc210dde5ab193c6acab} + + +computation of the epsilon value by which individual \_\-eo1 must be decreased in the objective \_\-i\-Obj such that individual \_\-eo2 is weakly dominated + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em EOFitness}]\& \_\-fitness\_\-eo1 the fitness of the first individual \item[{\em EOFitness}]\& \_\-fitness\_\-eo2 the fitness of the second individual \item[{\em unsigned}]\_\-i\-Obj the index of the objective \end{description} +\end{Desc} + + +Definition at line 170 of file moeo\-Binary\-Quality\-Indicator.h. + +References moeo\-Binary\-Quality\-Indicator$<$ EOFitness $>$::bounds. + +Referenced by moeo\-Additive\-Binary\-Epsilon\-Indicator$<$ EOFitness $>$::operator()(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Binary\-Quality\-Indicator.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoArchive.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoArchive.eps new file mode 100644 index 000000000..3653c706b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoArchive.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 277.778 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.8 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoArchive< EOT >) cw +(eoPop< EOT >) cw +(eoObject) cw +(eoPersistent) cw +(eoPrintable) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoArchive< EOT >) 0.5 0 box + (eoPop< EOT >) 0.5 1 box + (eoObject) 0 2 box + (eoPersistent) 1 2 box + (eoPrintable) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoArchive.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoArchive.tex new file mode 100644 index 000000000..852b31278 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoArchive.tex @@ -0,0 +1,111 @@ +\section{moeo\-Archive$<$ EOT $>$ Class Template Reference} +\label{classmoeoArchive}\index{moeoArchive@{moeoArchive}} +An archive is a secondary population that stores non-dominated solutions. + + +{\tt \#include $<$moeo\-Archive.h$>$} + +Inheritance diagram for moeo\-Archive$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmoeoArchive} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef EOT::Fitness {\bf EOFitness}\label{classmoeoArchive_798bc97d8321b1e2c469e5c341a96dac} + +\begin{CompactList}\small\item\em The fitness type of a solution. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +bool {\bf dominates} (const {\bf EOFitness} \&\_\-fit) const +\begin{CompactList}\small\item\em Returns true if the current archive dominates \_\-fit. \item\end{CompactList}\item +bool {\bf contains} (const {\bf EOFitness} \&\_\-fit) const +\begin{CompactList}\small\item\em Returns true if the current archive contains \_\-fit. \item\end{CompactList}\item +void {\bf update} (const EOT \&\_\-eo) +\begin{CompactList}\small\item\em Updates the archive with a given individual \_\-eo. \item\end{CompactList}\item +void {\bf update} (const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em Updates the archive with a given population \_\-pop. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moeo\-Archive$<$ EOT $>$} + +An archive is a secondary population that stores non-dominated solutions. + + + +Definition at line 21 of file moeo\-Archive.h. + +\subsection{Member Function Documentation} +\index{moeoArchive@{moeo\-Archive}!dominates@{dominates}} +\index{dominates@{dominates}!moeoArchive@{moeo\-Archive}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ bool {\bf moeo\-Archive}$<$ EOT $>$::dominates (const {\bf EOFitness} \& {\em \_\-fit}) const\hspace{0.3cm}{\tt [inline]}}\label{classmoeoArchive_7786c8bfe67fefa19ac31a4ac700df06} + + +Returns true if the current archive dominates \_\-fit. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-fit}]the (Pareto) fitness to compare with the current archive \end{description} +\end{Desc} + + +Definition at line 39 of file moeo\-Archive.h. + +Referenced by moeo\-Archive$<$ EOT $>$::update().\index{moeoArchive@{moeo\-Archive}!contains@{contains}} +\index{contains@{contains}!moeoArchive@{moeo\-Archive}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ bool {\bf moeo\-Archive}$<$ EOT $>$::contains (const {\bf EOFitness} \& {\em \_\-fit}) const\hspace{0.3cm}{\tt [inline]}}\label{classmoeoArchive_71feaf270daa7185e829caef40bbf956} + + +Returns true if the current archive contains \_\-fit. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-fit}]the (Pareto) fitness to search within the current archive \end{description} +\end{Desc} + + +Definition at line 51 of file moeo\-Archive.h.\index{moeoArchive@{moeo\-Archive}!update@{update}} +\index{update@{update}!moeoArchive@{moeo\-Archive}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf moeo\-Archive}$<$ EOT $>$::update (const EOT \& {\em \_\-eo})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoArchive_be9f67bfe41c25537292056d5b30f56a} + + +Updates the archive with a given individual \_\-eo. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-eo}]the given individual \end{description} +\end{Desc} + + +Definition at line 63 of file moeo\-Archive.h. + +References moeo\-Archive$<$ EOT $>$::dominates(). + +Referenced by moeo\-Archive$<$ EOT $>$::update().\index{moeoArchive@{moeo\-Archive}!update@{update}} +\index{update@{update}!moeoArchive@{moeo\-Archive}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf moeo\-Archive}$<$ EOT $>$::update (const {\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoArchive_58e891ab400ba352e8b0a341d0bdc107} + + +Updates the archive with a given population \_\-pop. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]the given population \end{description} +\end{Desc} + + +Definition at line 98 of file moeo\-Archive.h. + +References moeo\-Archive$<$ EOT $>$::update(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Archive.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoArchiveFitnessSavingUpdater.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoArchiveFitnessSavingUpdater.eps new file mode 100644 index 000000000..2a12b3fbe --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoArchiveFitnessSavingUpdater.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 299.625 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.66875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoArchiveFitnessSavingUpdater< EOT >) cw +(eoUpdater) cw +(eoF< void >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoArchiveFitnessSavingUpdater< EOT >) 0 0 box + (eoUpdater) 0 1 box + (eoF< void >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoArchiveFitnessSavingUpdater.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoArchiveFitnessSavingUpdater.tex new file mode 100644 index 000000000..656d6637d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoArchiveFitnessSavingUpdater.tex @@ -0,0 +1,67 @@ +\section{moeo\-Archive\-Fitness\-Saving\-Updater$<$ EOT $>$ Class Template Reference} +\label{classmoeoArchiveFitnessSavingUpdater}\index{moeoArchiveFitnessSavingUpdater@{moeoArchiveFitnessSavingUpdater}} +This class allows to save the fitnesses of solutions contained in an archive into a file at each generation. + + +{\tt \#include $<$moeo\-Archive\-Fitness\-Saving\-Updater.h$>$} + +Inheritance diagram for moeo\-Archive\-Fitness\-Saving\-Updater$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmoeoArchiveFitnessSavingUpdater} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moeo\-Archive\-Fitness\-Saving\-Updater} ({\bf moeo\-Archive}$<$ EOT $>$ \&\_\-arch, const std::string \&\_\-filename=\char`\"{}Res/Arch\char`\"{}, int \_\-id=-1) +\begin{CompactList}\small\item\em Ctor. \item\end{CompactList}\item +void {\bf operator()} ()\label{classmoeoArchiveFitnessSavingUpdater_2ad5d3ab2c2066a1a3b85fff2ac14a19} + +\begin{CompactList}\small\item\em Saves the fitness of the archive's members into the file. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf moeo\-Archive}$<$ EOT $>$ \& {\bf arch}\label{classmoeoArchiveFitnessSavingUpdater_b8eeccd7b43eb11e36cee2ec7d7c9c21} + +\begin{CompactList}\small\item\em local archive \item\end{CompactList}\item +std::string {\bf filename}\label{classmoeoArchiveFitnessSavingUpdater_17c82bea631bf9ff635a3698d08907f0} + +\begin{CompactList}\small\item\em target filename \item\end{CompactList}\item +int {\bf id}\label{classmoeoArchiveFitnessSavingUpdater_e064861d67aae0747c2d8ffab90cbfbf} + +\begin{CompactList}\small\item\em own ID \item\end{CompactList}\item +unsigned {\bf counter}\label{classmoeoArchiveFitnessSavingUpdater_e32fab4bb828d40fe19c283dbd2a6423} + +\begin{CompactList}\small\item\em counter \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moeo\-Archive\-Fitness\-Saving\-Updater$<$ EOT $>$} + +This class allows to save the fitnesses of solutions contained in an archive into a file at each generation. + + + +Definition at line 27 of file moeo\-Archive\-Fitness\-Saving\-Updater.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moeoArchiveFitnessSavingUpdater@{moeo\-Archive\-Fitness\-Saving\-Updater}!moeoArchiveFitnessSavingUpdater@{moeoArchiveFitnessSavingUpdater}} +\index{moeoArchiveFitnessSavingUpdater@{moeoArchiveFitnessSavingUpdater}!moeoArchiveFitnessSavingUpdater@{moeo\-Archive\-Fitness\-Saving\-Updater}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf moeo\-Archive\-Fitness\-Saving\-Updater}$<$ EOT $>$::{\bf moeo\-Archive\-Fitness\-Saving\-Updater} ({\bf moeo\-Archive}$<$ EOT $>$ \& {\em \_\-arch}, const std::string \& {\em \_\-filename} = {\tt \char`\"{}Res/Arch\char`\"{}}, int {\em \_\-id} = {\tt -1})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoArchiveFitnessSavingUpdater_b61826bfa0f47064aed460817cf61b92} + + +Ctor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-arch}]local archive \item[{\em \_\-filename}]target filename \item[{\em \_\-id}]own ID \end{description} +\end{Desc} + + +Definition at line 37 of file moeo\-Archive\-Fitness\-Saving\-Updater.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Archive\-Fitness\-Saving\-Updater.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoArchiveUpdater.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoArchiveUpdater.eps new file mode 100644 index 000000000..7d3bc3fca --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoArchiveUpdater.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 425.532 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.175 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoArchiveUpdater< EOT >) cw +(eoUpdater) cw +(eoF< void >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoArchiveUpdater< EOT >) 0 0 box + (eoUpdater) 0 1 box + (eoF< void >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoArchiveUpdater.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoArchiveUpdater.tex new file mode 100644 index 000000000..82d44c816 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoArchiveUpdater.tex @@ -0,0 +1,61 @@ +\section{moeo\-Archive\-Updater$<$ EOT $>$ Class Template Reference} +\label{classmoeoArchiveUpdater}\index{moeoArchiveUpdater@{moeoArchiveUpdater}} +This class allows to update the archive at each generation with newly found non-dominated solutions. + + +{\tt \#include $<$moeo\-Archive\-Updater.h$>$} + +Inheritance diagram for moeo\-Archive\-Updater$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmoeoArchiveUpdater} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moeo\-Archive\-Updater} ({\bf moeo\-Archive}$<$ EOT $>$ \&\_\-arch, const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em Ctor. \item\end{CompactList}\item +void {\bf operator()} ()\label{classmoeoArchiveUpdater_19e98244f0dd641983af81d8dcaf0f7d} + +\begin{CompactList}\small\item\em Updates the archive with newly found non-dominated solutions contained in the main population. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf moeo\-Archive}$<$ EOT $>$ \& {\bf arch}\label{classmoeoArchiveUpdater_2fd7b92786ced836e3d0b5abfb801a86} + +\begin{CompactList}\small\item\em the archive of non-dominated solutions \item\end{CompactList}\item +const {\bf eo\-Pop}$<$ EOT $>$ \& {\bf pop}\label{classmoeoArchiveUpdater_0fc3f08f0385c55569eb056737303363} + +\begin{CompactList}\small\item\em the main population \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moeo\-Archive\-Updater$<$ EOT $>$} + +This class allows to update the archive at each generation with newly found non-dominated solutions. + + + +Definition at line 23 of file moeo\-Archive\-Updater.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moeoArchiveUpdater@{moeo\-Archive\-Updater}!moeoArchiveUpdater@{moeoArchiveUpdater}} +\index{moeoArchiveUpdater@{moeoArchiveUpdater}!moeoArchiveUpdater@{moeo\-Archive\-Updater}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf moeo\-Archive\-Updater}$<$ EOT $>$::{\bf moeo\-Archive\-Updater} ({\bf moeo\-Archive}$<$ EOT $>$ \& {\em \_\-arch}, const {\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoArchiveUpdater_71027fd5f8dac7d8069b682c998c03c5} + + +Ctor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-arch}]an archive of non-dominated solutions \item[{\em \_\-pop}]the main population \end{description} +\end{Desc} + + +Definition at line 32 of file moeo\-Archive\-Updater.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Archive\-Updater.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBM.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBM.eps new file mode 100644 index 000000000..d20d0f74a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBM.eps @@ -0,0 +1,247 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 65.1466 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 7.675 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 5 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoBM< A1, A2, R >) cw +(eoBF< A1, A2, R >) cw +(moeoMetric) cw +(eoFunctorBase) cw +(eoFunctorBase) cw +(moeoSolutionVsSolutionBM< EOT, R, EOFitness >) cw +(moeoVectorVsSolutionBM< EOT, R, EOFitness >) cw +(moeoVectorVsVectorBM< EOT, R, EOFitness >) cw +(moeoVectorVsVectorBM< EOT, double >) cw +(moeoContributionMetric< EOT >) cw +(moeoEntropyMetric< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoBM< A1, A2, R >) 1.5 2 box + (eoBF< A1, A2, R >) 1 3 box + (moeoMetric) 2 3 box + (eoFunctorBase) 1 4 box + (eoFunctorBase) 2 4 box + (moeoSolutionVsSolutionBM< EOT, R, EOFitness >) 0 1 box + (moeoVectorVsSolutionBM< EOT, R, EOFitness >) 1 1 box + (moeoVectorVsVectorBM< EOT, R, EOFitness >) 2 1 box + (moeoVectorVsVectorBM< EOT, double >) 3 1 box + (moeoContributionMetric< EOT >) 2.5 0 box + (moeoEntropyMetric< EOT >) 3.5 0 box + +% ----- relations ----- + +solid +0 1.5 2 out +solid +1 2 3 conn +solid +1 1 3 in +solid +0 1 3 out +solid +1 2 3 in +solid +0 2 3 out +solid +1 1 4 in +solid +1 2 4 in +solid +1 1.5 1.25 out +solid +0 3 2 conn +solid +0 0 1.75 in +solid +0 1 1.75 in +solid +0 2 1.75 in +solid +0 3 1.75 in +solid +1 3 0.25 out +solid +2.5 3.5 1 conn +solid +0 2.5 0.75 in +solid +0 3.5 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBM.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBM.tex new file mode 100644 index 000000000..ab5408f52 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBM.tex @@ -0,0 +1,27 @@ +\section{moeo\-BM$<$ A1, A2, R $>$ Class Template Reference} +\label{classmoeoBM}\index{moeoBM@{moeoBM}} +Base class for binary metrics. + + +{\tt \#include $<$moeo\-Metric.h$>$} + +Inheritance diagram for moeo\-BM$<$ A1, A2, R $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=1.8241cm]{classmoeoBM} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class A1, class A2, class R$>$ class moeo\-BM$<$ A1, A2, R $>$} + +Base class for binary metrics. + + + +Definition at line 38 of file moeo\-Metric.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Metric.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryHypervolumeIndicator.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryHypervolumeIndicator.eps new file mode 100644 index 000000000..f5cd0c37d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryHypervolumeIndicator.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 273.038 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.83125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoBinaryHypervolumeIndicator< EOFitness >) cw +(moeoBinaryQualityIndicator< EOFitness >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoBinaryHypervolumeIndicator< EOFitness >) 0 0 box + (moeoBinaryQualityIndicator< EOFitness >) 0 1 box + (eoBF< A1, A2, R >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryHypervolumeIndicator.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryHypervolumeIndicator.tex new file mode 100644 index 000000000..60580eb30 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryHypervolumeIndicator.tex @@ -0,0 +1,147 @@ +\section{moeo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$ Class Template Reference} +\label{classmoeoBinaryHypervolumeIndicator}\index{moeoBinaryHypervolumeIndicator@{moeoBinaryHypervolumeIndicator}} +Functor Binary hypervolume indicator for {\bf eo\-Pareto\-Fitness}. + + +{\tt \#include $<$moeo\-Binary\-Quality\-Indicator.h$>$} + +Inheritance diagram for moeo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmoeoBinaryHypervolumeIndicator} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moeo\-Binary\-Hypervolume\-Indicator} (double \_\-rho) +\begin{CompactList}\small\item\em constructor \item\end{CompactList}\item +double {\bf operator()} (const EOFitness \&\_\-fitness\_\-eo1, const EOFitness \&\_\-fitness\_\-eo2) +\begin{CompactList}\small\item\em indicator value of the hypervolume of the portion of the objective space that is dominated by individual \_\-eo1 but not by individual \_\-eo2 (don't forget to set the bounds before the call of this function) \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef EOFitness::fitness\_\-traits {\bf traits}\label{classmoeoBinaryHypervolumeIndicator_511931936ec9e368b5f0cbcdc4dbe020} + +\begin{CompactList}\small\item\em fitness traits \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +double {\bf hypervolume\-Indicator\-Value} (const EOFitness \&\_\-fitness\_\-eo1, const EOFitness \&\_\-fitness\_\-eo2, const unsigned \_\-i\-Obj, const bool \_\-flag=false) +\begin{CompactList}\small\item\em computation of the hypervolume of the portion of the objective space that is dominated by individual \_\-eo1 but not by individual \_\-eo2 \item\end{CompactList}\item +double {\bf hypervolume\-Indicator\-Value\-Min} (const EOFitness \&\_\-fitness\_\-eo1, const EOFitness \&\_\-fitness\_\-eo2, const unsigned \_\-i\-Obj, const bool \_\-flag) +\begin{CompactList}\small\item\em computation of the hypervolume of the portion of the objective space that is dominated by individual \_\-eo1 but not by individual \_\-eo2 in case of a minimization on the objective \_\-i\-Obj \item\end{CompactList}\item +double {\bf hypervolume\-Indicator\-Value\-Max} (const EOFitness \&\_\-fitness\_\-eo1, const EOFitness \&\_\-fitness\_\-eo2, const unsigned \_\-i\-Obj, const bool \_\-flag) +\begin{CompactList}\small\item\em computation of the hypervolume of the portion of the objective space that is dominated by individual \_\-eo1 but not by individual \_\-eo2 in case of a maximization on the objective \_\-i\-Obj \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +double {\bf rho}\label{classmoeoBinaryHypervolumeIndicator_06b7c3ba8fa0ceafd7e6b571e43e6f4c} + +\begin{CompactList}\small\item\em reference point for the hypervolume calculation \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOFitness$>$ class moeo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$} + +Functor Binary hypervolume indicator for {\bf eo\-Pareto\-Fitness}. + + + +Definition at line 206 of file moeo\-Binary\-Quality\-Indicator.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moeoBinaryHypervolumeIndicator@{moeo\-Binary\-Hypervolume\-Indicator}!moeoBinaryHypervolumeIndicator@{moeoBinaryHypervolumeIndicator}} +\index{moeoBinaryHypervolumeIndicator@{moeoBinaryHypervolumeIndicator}!moeoBinaryHypervolumeIndicator@{moeo\-Binary\-Hypervolume\-Indicator}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOFitness$>$ {\bf moeo\-Binary\-Hypervolume\-Indicator}$<$ EOFitness $>$::{\bf moeo\-Binary\-Hypervolume\-Indicator} (double {\em \_\-rho})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoBinaryHypervolumeIndicator_15d486d524816d294bc007d7a555cbfe} + + +constructor + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em double}]\_\-rho reference point for the hypervolume calculation (rho must not be smaller than 1) \end{description} +\end{Desc} + + +Definition at line 216 of file moeo\-Binary\-Quality\-Indicator.h. + +References moeo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::rho. + +\subsection{Member Function Documentation} +\index{moeoBinaryHypervolumeIndicator@{moeo\-Binary\-Hypervolume\-Indicator}!operator()@{operator()}} +\index{operator()@{operator()}!moeoBinaryHypervolumeIndicator@{moeo\-Binary\-Hypervolume\-Indicator}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOFitness$>$ double {\bf moeo\-Binary\-Hypervolume\-Indicator}$<$ EOFitness $>$::operator() (const EOFitness \& {\em \_\-fitness\_\-eo1}, const EOFitness \& {\em \_\-fitness\_\-eo2})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoBinaryHypervolumeIndicator_697e7fcab99f5192925e2f2157d1e1a3} + + +indicator value of the hypervolume of the portion of the objective space that is dominated by individual \_\-eo1 but not by individual \_\-eo2 (don't forget to set the bounds before the call of this function) + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em EOFitness}]\& \_\-fitness\_\-eo1 the fitness of the first individual \item[{\em EOFitness}]\& \_\-fitness\_\-eo2 the fitness of the second individual \end{description} +\end{Desc} + + +Definition at line 239 of file moeo\-Binary\-Quality\-Indicator.h. + +References moeo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::hypervolume\-Indicator\-Value().\index{moeoBinaryHypervolumeIndicator@{moeo\-Binary\-Hypervolume\-Indicator}!hypervolumeIndicatorValue@{hypervolumeIndicatorValue}} +\index{hypervolumeIndicatorValue@{hypervolumeIndicatorValue}!moeoBinaryHypervolumeIndicator@{moeo\-Binary\-Hypervolume\-Indicator}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOFitness$>$ double {\bf moeo\-Binary\-Hypervolume\-Indicator}$<$ EOFitness $>$::hypervolume\-Indicator\-Value (const EOFitness \& {\em \_\-fitness\_\-eo1}, const EOFitness \& {\em \_\-fitness\_\-eo2}, const unsigned {\em \_\-i\-Obj}, const bool {\em \_\-flag} = {\tt false})\hspace{0.3cm}{\tt [inline, private]}}\label{classmoeoBinaryHypervolumeIndicator_dd0c63a922cb4bf921978413fdb1dca0} + + +computation of the hypervolume of the portion of the objective space that is dominated by individual \_\-eo1 but not by individual \_\-eo2 + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em EOFitness}]\& \_\-fitness\_\-eo1 the fitness of the first individual \item[{\em EOFitness}]\& \_\-fitness\_\-eo2 the fitness of the second individual \item[{\em unsigned}]\_\-i\-Obj number of objectives (used for iteration) \item[{\em bool}]\_\-flag = false (only used for iteration) \end{description} +\end{Desc} + + +Definition at line 274 of file moeo\-Binary\-Quality\-Indicator.h. + +References moeo\-Binary\-Quality\-Indicator$<$ EOFitness $>$::bounds, moeo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::hypervolume\-Indicator\-Value\-Max(), and moeo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::hypervolume\-Indicator\-Value\-Min(). + +Referenced by moeo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::hypervolume\-Indicator\-Value\-Max(), moeo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::hypervolume\-Indicator\-Value\-Min(), and moeo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::operator()().\index{moeoBinaryHypervolumeIndicator@{moeo\-Binary\-Hypervolume\-Indicator}!hypervolumeIndicatorValueMin@{hypervolumeIndicatorValueMin}} +\index{hypervolumeIndicatorValueMin@{hypervolumeIndicatorValueMin}!moeoBinaryHypervolumeIndicator@{moeo\-Binary\-Hypervolume\-Indicator}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOFitness$>$ double {\bf moeo\-Binary\-Hypervolume\-Indicator}$<$ EOFitness $>$::hypervolume\-Indicator\-Value\-Min (const EOFitness \& {\em \_\-fitness\_\-eo1}, const EOFitness \& {\em \_\-fitness\_\-eo2}, const unsigned {\em \_\-i\-Obj}, const bool {\em \_\-flag})\hspace{0.3cm}{\tt [inline, private]}}\label{classmoeoBinaryHypervolumeIndicator_637f559f83f473412c61d4a485af5993} + + +computation of the hypervolume of the portion of the objective space that is dominated by individual \_\-eo1 but not by individual \_\-eo2 in case of a minimization on the objective \_\-i\-Obj + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em EOFitness}]\& \_\-fitness\_\-eo1 the fitness of the first individual \item[{\em EOFitness}]\& \_\-fitness\_\-eo2 the fitness of the second individual \item[{\em unsigned}]\_\-i\-Obj index of the objective \item[{\em bool}]\_\-flag (only used for iteration) \end{description} +\end{Desc} + + +Definition at line 309 of file moeo\-Binary\-Quality\-Indicator.h. + +References moeo\-Binary\-Quality\-Indicator$<$ EOFitness $>$::bounds, moeo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::hypervolume\-Indicator\-Value(), and moeo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::rho. + +Referenced by moeo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::hypervolume\-Indicator\-Value().\index{moeoBinaryHypervolumeIndicator@{moeo\-Binary\-Hypervolume\-Indicator}!hypervolumeIndicatorValueMax@{hypervolumeIndicatorValueMax}} +\index{hypervolumeIndicatorValueMax@{hypervolumeIndicatorValueMax}!moeoBinaryHypervolumeIndicator@{moeo\-Binary\-Hypervolume\-Indicator}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOFitness$>$ double {\bf moeo\-Binary\-Hypervolume\-Indicator}$<$ EOFitness $>$::hypervolume\-Indicator\-Value\-Max (const EOFitness \& {\em \_\-fitness\_\-eo1}, const EOFitness \& {\em \_\-fitness\_\-eo2}, const unsigned {\em \_\-i\-Obj}, const bool {\em \_\-flag})\hspace{0.3cm}{\tt [inline, private]}}\label{classmoeoBinaryHypervolumeIndicator_c0a602a4f1a27418d95d883f53e45cb2} + + +computation of the hypervolume of the portion of the objective space that is dominated by individual \_\-eo1 but not by individual \_\-eo2 in case of a maximization on the objective \_\-i\-Obj + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em EOFitness}]\& \_\-fitness\_\-eo1 the fitness of the first individual \item[{\em EOFitness}]\& \_\-fitness\_\-eo2 the fitness of the second individual \item[{\em unsigned}]\_\-i\-Obj index of the objective \item[{\em bool}]\_\-flag (only used for iteration) \end{description} +\end{Desc} + + +Definition at line 363 of file moeo\-Binary\-Quality\-Indicator.h. + +References moeo\-Binary\-Quality\-Indicator$<$ EOFitness $>$::bounds, moeo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::hypervolume\-Indicator\-Value(), and moeo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::rho. + +Referenced by moeo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$::hypervolume\-Indicator\-Value(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Binary\-Quality\-Indicator.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryMetricSavingUpdater.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryMetricSavingUpdater.eps new file mode 100644 index 000000000..c2cc5352d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryMetricSavingUpdater.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 313.725 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.59375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoBinaryMetricSavingUpdater< EOT >) cw +(eoUpdater) cw +(eoF< void >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoBinaryMetricSavingUpdater< EOT >) 0 0 box + (eoUpdater) 0 1 box + (eoF< void >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryMetricSavingUpdater.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryMetricSavingUpdater.tex new file mode 100644 index 000000000..d5e783c4d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryMetricSavingUpdater.tex @@ -0,0 +1,79 @@ +\section{moeo\-Binary\-Metric\-Saving\-Updater$<$ EOT $>$ Class Template Reference} +\label{classmoeoBinaryMetricSavingUpdater}\index{moeoBinaryMetricSavingUpdater@{moeoBinaryMetricSavingUpdater}} +This class allows to save the progression of a binary metric comparing the fitness values of the current population (or archive) with the fitness values of the population (or archive) of the generation (n-1) into a file. + + +{\tt \#include $<$moeo\-Binary\-Metric\-Saving\-Updater.h$>$} + +Inheritance diagram for moeo\-Binary\-Metric\-Saving\-Updater$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmoeoBinaryMetricSavingUpdater} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef EOT::Fitness {\bf EOFitness}\label{classmoeoBinaryMetricSavingUpdater_c22e390633d94bbf69309e8d0cae1f0a} + +\begin{CompactList}\small\item\em The fitness type of a solution. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moeo\-Binary\-Metric\-Saving\-Updater} ({\bf moeo\-Vector\-Vs\-Vector\-BM}$<$ EOT, double $>$ \&\_\-metric, const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop, std::string \_\-filename) +\begin{CompactList}\small\item\em Ctor. \item\end{CompactList}\item +void {\bf operator()} ()\label{classmoeoBinaryMetricSavingUpdater_2d051d28def4cadf69957c8a21bf88dc} + +\begin{CompactList}\small\item\em Saves the metric's value for the current generation. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf moeo\-Vector\-Vs\-Vector\-BM}$<$ EOT, double $>$ \& {\bf metric}\label{classmoeoBinaryMetricSavingUpdater_52e12414a266bce1dbce0b913025fd37} + +\begin{CompactList}\small\item\em binary metric comparing two Pareto sets \item\end{CompactList}\item +const {\bf eo\-Pop}$<$ EOT $>$ \& {\bf pop}\label{classmoeoBinaryMetricSavingUpdater_9c30673aca66a1531856cb92068edaf7} + +\begin{CompactList}\small\item\em main population \item\end{CompactList}\item +{\bf eo\-Pop}$<$ EOT $>$ {\bf old\-Pop}\label{classmoeoBinaryMetricSavingUpdater_c1751bf23ef440d895a39cdff25c384c} + +\begin{CompactList}\small\item\em (n-1) population \item\end{CompactList}\item +std::string {\bf filename}\label{classmoeoBinaryMetricSavingUpdater_32c78860e3aee52346df3aa30c5ac42f} + +\begin{CompactList}\small\item\em target filename \item\end{CompactList}\item +bool {\bf first\-Gen}\label{classmoeoBinaryMetricSavingUpdater_1e40103a5cfa592a9d2408102e507a19} + +\begin{CompactList}\small\item\em is it the first generation ? \item\end{CompactList}\item +unsigned {\bf counter}\label{classmoeoBinaryMetricSavingUpdater_280b52506c280b07356726ad5d497ef8} + +\begin{CompactList}\small\item\em counter \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moeo\-Binary\-Metric\-Saving\-Updater$<$ EOT $>$} + +This class allows to save the progression of a binary metric comparing the fitness values of the current population (or archive) with the fitness values of the population (or archive) of the generation (n-1) into a file. + + + +Definition at line 26 of file moeo\-Binary\-Metric\-Saving\-Updater.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moeoBinaryMetricSavingUpdater@{moeo\-Binary\-Metric\-Saving\-Updater}!moeoBinaryMetricSavingUpdater@{moeoBinaryMetricSavingUpdater}} +\index{moeoBinaryMetricSavingUpdater@{moeoBinaryMetricSavingUpdater}!moeoBinaryMetricSavingUpdater@{moeo\-Binary\-Metric\-Saving\-Updater}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf moeo\-Binary\-Metric\-Saving\-Updater}$<$ EOT $>$::{\bf moeo\-Binary\-Metric\-Saving\-Updater} ({\bf moeo\-Vector\-Vs\-Vector\-BM}$<$ EOT, double $>$ \& {\em \_\-metric}, const {\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-pop}, std::string {\em \_\-filename})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoBinaryMetricSavingUpdater_978c6e8a99459722220387f911c1f461} + + +Ctor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-metric}]the binary metric comparing two Pareto sets \item[{\em \_\-pop}]the main population \item[{\em \_\-filename}]the target filename \end{description} +\end{Desc} + + +Definition at line 41 of file moeo\-Binary\-Metric\-Saving\-Updater.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Binary\-Metric\-Saving\-Updater.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryQualityIndicator.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryQualityIndicator.eps new file mode 100644 index 000000000..6fcedbeaa --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryQualityIndicator.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 131.148 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.8125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoBinaryQualityIndicator< EOFitness >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) cw +(moeoAdditiveBinaryEpsilonIndicator< EOFitness >) cw +(moeoBinaryHypervolumeIndicator< EOFitness >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoBinaryQualityIndicator< EOFitness >) 0.5 1 box + (eoBF< A1, A2, R >) 0.5 2 box + (eoFunctorBase) 0.5 3 box + (moeoAdditiveBinaryEpsilonIndicator< EOFitness >) 0 0 box + (moeoBinaryHypervolumeIndicator< EOFitness >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryQualityIndicator.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryQualityIndicator.tex new file mode 100644 index 000000000..4495bed7f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryQualityIndicator.tex @@ -0,0 +1,71 @@ +\section{moeo\-Binary\-Quality\-Indicator$<$ EOFitness $>$ Class Template Reference} +\label{classmoeoBinaryQualityIndicator}\index{moeoBinaryQualityIndicator@{moeoBinaryQualityIndicator}} +Functor Binary quality indicator Binary performance measure to use in the replacement selection process of IBEA (Indicator-Based Evolutionary Algorithm) Of course, EOFitness needs to be an {\bf eo\-Pareto\-Fitness} object. + + +{\tt \#include $<$moeo\-Binary\-Quality\-Indicator.h$>$} + +Inheritance diagram for moeo\-Binary\-Quality\-Indicator$<$ EOFitness $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3.67213cm]{classmoeoBinaryQualityIndicator} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moeo\-Binary\-Quality\-Indicator} ()\label{classmoeoBinaryQualityIndicator_a212ae7c8258587a32b158043911cdb6} + +\begin{CompactList}\small\item\em constructor \item\end{CompactList}\item +void {\bf set\-Bounds} (const unsigned \_\-i\-Obj, const double \_\-min, const double \_\-max) +\begin{CompactList}\small\item\em set the bounds for objective \_\-i\-Obj \item\end{CompactList}\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +std::vector$<$ {\bf Range} $>$ {\bf bounds}\label{classmoeoBinaryQualityIndicator_a3bce334c4e74a22c0eb1026592d2f90} + +\begin{CompactList}\small\item\em range (min and max double value) for each objective \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef EOFitness::fitness\_\-traits {\bf traits}\label{classmoeoBinaryQualityIndicator_a23261c88b3ce39b9fed704cad328a76} + +\begin{CompactList}\small\item\em fitness traits \item\end{CompactList}\end{CompactItemize} +\subsection*{Classes} +\begin{CompactItemize} +\item +class {\bf Range} +\begin{CompactList}\small\item\em Private class to represent the bounds. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOFitness$>$ class moeo\-Binary\-Quality\-Indicator$<$ EOFitness $>$} + +Functor Binary quality indicator Binary performance measure to use in the replacement selection process of IBEA (Indicator-Based Evolutionary Algorithm) Of course, EOFitness needs to be an {\bf eo\-Pareto\-Fitness} object. + + + +Definition at line 28 of file moeo\-Binary\-Quality\-Indicator.h. + +\subsection{Member Function Documentation} +\index{moeoBinaryQualityIndicator@{moeo\-Binary\-Quality\-Indicator}!setBounds@{setBounds}} +\index{setBounds@{setBounds}!moeoBinaryQualityIndicator@{moeo\-Binary\-Quality\-Indicator}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOFitness$>$ void {\bf moeo\-Binary\-Quality\-Indicator}$<$ EOFitness $>$::set\-Bounds (const unsigned {\em \_\-i\-Obj}, const double {\em \_\-min}, const double {\em \_\-max})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoBinaryQualityIndicator_a08220a55c86a4e0dd1c8977eb625c9f} + + +set the bounds for objective \_\-i\-Obj + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em unsigned}]\_\-i\-Obj the index of the objective \item[{\em double}]\_\-min the minimum value \item[{\em double}]\_\-max the maximum value \end{description} +\end{Desc} + + +Definition at line 51 of file moeo\-Binary\-Quality\-Indicator.h. + +Referenced by moeo\-IBEAAvg\-Sorting$<$ EOT, Fitness\-Eval $>$::set\-Bounds(), moeo\-IBEAStoch\-Sorting$<$ EOT, Fitness\-Eval $>$::set\-Bounds(), and moeo\-IBEASorting$<$ EOT, Fitness $>$::set\-Bounds(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Binary\-Quality\-Indicator.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryQualityIndicator_1_1Range.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryQualityIndicator_1_1Range.tex new file mode 100644 index 000000000..6f45f4709 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoBinaryQualityIndicator_1_1Range.tex @@ -0,0 +1,51 @@ +\section{moeo\-Binary\-Quality\-Indicator$<$ EOFitness $>$::Range Class Reference} +\label{classmoeoBinaryQualityIndicator_1_1Range}\index{moeoBinaryQualityIndicator::Range@{moeoBinaryQualityIndicator::Range}} +Private class to represent the bounds. + + +{\tt \#include $<$moeo\-Binary\-Quality\-Indicator.h$>$} + +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Range} ()\label{classmoeoBinaryQualityIndicator_1_1Range_6eafdd50d706e4add50a39400589697c} + +\item +{\bf Range} (const double \_\-min, const double \_\-max)\label{classmoeoBinaryQualityIndicator_1_1Range_1b739913f7b39b9332a85ba95bf0fd97} + +\item +double {\bf minimum} ()\label{classmoeoBinaryQualityIndicator_1_1Range_5e2d18b883faf80b5e8922508c1faeb7} + +\item +double {\bf maximum} ()\label{classmoeoBinaryQualityIndicator_1_1Range_82b2fdf7e8310b6b71230f75b298b455} + +\item +double {\bf range} ()\label{classmoeoBinaryQualityIndicator_1_1Range_352358206bff2de122504f2b1e0fc66f} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +double {\bf min}\label{classmoeoBinaryQualityIndicator_1_1Range_19ded3674f2ced2fe56a247e43cdc276} + +\item +double {\bf max}\label{classmoeoBinaryQualityIndicator_1_1Range_47728b83ab11c42c7dec8a0d31bf0f2b} + +\item +double {\bf r}\label{classmoeoBinaryQualityIndicator_1_1Range_fc0f543dc51a29059e25d3d0298bc08c} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOFitness$>$ class moeo\-Binary\-Quality\-Indicator$<$ EOFitness $>$::Range} + +Private class to represent the bounds. + + + +Definition at line 62 of file moeo\-Binary\-Quality\-Indicator.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Binary\-Quality\-Indicator.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoCombinedMOLS.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoCombinedMOLS.eps new file mode 100644 index 000000000..0761f1d7b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoCombinedMOLS.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 243.902 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.05 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoCombinedMOLS< EOT >) cw +(moeoMOLS< EOT >) cw +(eoBF< const EOT &, moeoArchive< EOT > &, void >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoCombinedMOLS< EOT >) 0 0 box + (moeoMOLS< EOT >) 0 1 box + (eoBF< const EOT &, moeoArchive< EOT > &, void >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoCombinedMOLS.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoCombinedMOLS.tex new file mode 100644 index 000000000..2c79dbbb4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoCombinedMOLS.tex @@ -0,0 +1,101 @@ +\section{moeo\-Combined\-MOLS$<$ EOT $>$ Class Template Reference} +\label{classmoeoCombinedMOLS}\index{moeoCombinedMOLS@{moeoCombinedMOLS}} +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. + + +{\tt \#include $<$moeo\-Combined\-MOLS.h$>$} + +Inheritance diagram for moeo\-Combined\-MOLS$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmoeoCombinedMOLS} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moeo\-Combined\-MOLS} ({\bf eo\-Eval\-Func}$<$ EOT $>$ \&\_\-eval, {\bf moeo\-MOLS}$<$ EOT $>$ \&\_\-first\_\-ls) +\begin{CompactList}\small\item\em Ctor. \item\end{CompactList}\item +void {\bf add} ({\bf moeo\-MOLS}$<$ EOT $>$ \&\_\-ls) +\begin{CompactList}\small\item\em Adds a new local search to combine. \item\end{CompactList}\item +void {\bf operator()} (const EOT \&\_\-eo, {\bf moeo\-Archive}$<$ EOT $>$ \&\_\-arch) +\begin{CompactList}\small\item\em Gives a new solution in order to explore the neigborhood. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf eo\-Eval\-Func}$<$ EOT $>$ \& {\bf eval}\label{classmoeoCombinedMOLS_b2c0866a1808022bd3a9dac89e528a01} + +\begin{CompactList}\small\item\em the full evaluator of a solution \item\end{CompactList}\item +std::vector$<$ {\bf moeo\-MOLS}$<$ EOT $>$ $\ast$ $>$ {\bf combined\-MOLS}\label{classmoeoCombinedMOLS_a5ccc182c0d61421fc524c2da3671099} + +\begin{CompactList}\small\item\em the vector that contains the combined MOLS \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moeo\-Combined\-MOLS$<$ EOT $>$} + +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. + + + +Definition at line 24 of file moeo\-Combined\-MOLS.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moeoCombinedMOLS@{moeo\-Combined\-MOLS}!moeoCombinedMOLS@{moeoCombinedMOLS}} +\index{moeoCombinedMOLS@{moeoCombinedMOLS}!moeoCombinedMOLS@{moeo\-Combined\-MOLS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf moeo\-Combined\-MOLS}$<$ EOT $>$::{\bf moeo\-Combined\-MOLS} ({\bf eo\-Eval\-Func}$<$ EOT $>$ \& {\em \_\-eval}, {\bf moeo\-MOLS}$<$ EOT $>$ \& {\em \_\-first\_\-ls})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoCombinedMOLS_9305380cd8f5a4d85ef603fa85c1860b} + + +Ctor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-eval}]the full evaluator of a solution \item[{\em \_\-first\_\-ls}]the first multi-objective local search to add \end{description} +\end{Desc} + + +Definition at line 33 of file moeo\-Combined\-MOLS.h. + +References moeo\-Combined\-MOLS$<$ EOT $>$::combined\-MOLS. + +\subsection{Member Function Documentation} +\index{moeoCombinedMOLS@{moeo\-Combined\-MOLS}!add@{add}} +\index{add@{add}!moeoCombinedMOLS@{moeo\-Combined\-MOLS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf moeo\-Combined\-MOLS}$<$ EOT $>$::add ({\bf moeo\-MOLS}$<$ EOT $>$ \& {\em \_\-ls})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoCombinedMOLS_bd6b8f46211d5d531753c69fcd76cba4} + + +Adds a new local search to combine. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-ls}]the multi-objective local search to add \end{description} +\end{Desc} + + +Definition at line 43 of file moeo\-Combined\-MOLS.h. + +References moeo\-Combined\-MOLS$<$ EOT $>$::combined\-MOLS.\index{moeoCombinedMOLS@{moeo\-Combined\-MOLS}!operator()@{operator()}} +\index{operator()@{operator()}!moeoCombinedMOLS@{moeo\-Combined\-MOLS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf moeo\-Combined\-MOLS}$<$ EOT $>$::operator() (const EOT \& {\em \_\-eo}, {\bf moeo\-Archive}$<$ EOT $>$ \& {\em \_\-arch})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmoeoCombinedMOLS_fa7de12db00b89feb139372603bba4aa} + + +Gives a new solution in order to explore the neigborhood. + +The new non-dominated solutions are added to the archive \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-eo}]the solution \item[{\em \_\-arch}]the archive of non-dominated solutions \end{description} +\end{Desc} + + +Implements {\bf eo\-BF$<$ const EOT \&, moeo\-Archive$<$ EOT $>$ \&, void $>$}. + +Definition at line 54 of file moeo\-Combined\-MOLS.h. + +References moeo\-Combined\-MOLS$<$ EOT $>$::combined\-MOLS, and moeo\-Combined\-MOLS$<$ EOT $>$::eval. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Combined\-MOLS.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoContributionMetric.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoContributionMetric.eps new file mode 100644 index 000000000..3335421e4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoContributionMetric.eps @@ -0,0 +1,227 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 195.312 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.56 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoContributionMetric< EOT >) cw +(moeoVectorVsVectorBM< EOT, double >) cw +(moeoBM< A1, A2, R >) cw +(eoBF< A1, A2, R >) cw +(moeoMetric) cw +(eoFunctorBase) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoContributionMetric< EOT >) 0.5 0 box + (moeoVectorVsVectorBM< EOT, double >) 0.5 1 box + (moeoBM< A1, A2, R >) 0.5 2 box + (eoBF< A1, A2, R >) 0 3 box + (moeoMetric) 1 3 box + (eoFunctorBase) 0 4 box + (eoFunctorBase) 1 4 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +0 1 3 conn +solid +1 0 3 in +solid +0 0 3 out +solid +1 1 3 in +solid +0 1 3 out +solid +1 0 4 in +solid +1 1 4 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoContributionMetric.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoContributionMetric.tex new file mode 100644 index 000000000..06b7da3d8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoContributionMetric.tex @@ -0,0 +1,116 @@ +\section{moeo\-Contribution\-Metric$<$ EOT $>$ Class Template Reference} +\label{classmoeoContributionMetric}\index{moeoContributionMetric@{moeoContributionMetric}} +The contribution metric evaluates the proportion of non-dominated solutions given by a Pareto set relatively to another Pareto set. + + +{\tt \#include $<$moeo\-Contribution\-Metric.h$>$} + +Inheritance diagram for moeo\-Contribution\-Metric$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5cm]{classmoeoContributionMetric} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef EOT::Fitness {\bf EOFitness}\label{classmoeoContributionMetric_06c0247b9558eeb34e32c9a694924a66} + +\begin{CompactList}\small\item\em The fitness type of a solution. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +double {\bf operator()} (const std::vector$<$ {\bf EOFitness} $>$ \&\_\-set1, const std::vector$<$ {\bf EOFitness} $>$ \&\_\-set2) +\begin{CompactList}\small\item\em Returns the contribution of the Pareto set '\_\-set1' relatively to the Pareto set '\_\-set2'. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +unsigned {\bf card\_\-C} (const std::vector$<$ {\bf EOFitness} $>$ \&\_\-set1, const std::vector$<$ {\bf EOFitness} $>$ \&\_\-set2) +\begin{CompactList}\small\item\em Returns the number of solutions both in '\_\-set1' and '\_\-set2'. \item\end{CompactList}\item +unsigned {\bf card\_\-W} (const std::vector$<$ {\bf EOFitness} $>$ \&\_\-set1, const std::vector$<$ {\bf EOFitness} $>$ \&\_\-set2) +\begin{CompactList}\small\item\em Returns the number of solutions in '\_\-set1' dominating at least one solution of '\_\-set2'. \item\end{CompactList}\item +unsigned {\bf card\_\-N} (const std::vector$<$ {\bf EOFitness} $>$ \&\_\-set1, const std::vector$<$ {\bf EOFitness} $>$ \&\_\-set2) +\begin{CompactList}\small\item\em Returns the number of solutions in '\_\-set1' having no relation of dominance with those from '\_\-set2'. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moeo\-Contribution\-Metric$<$ EOT $>$} + +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) + + + +Definition at line 23 of file moeo\-Contribution\-Metric.h. + +\subsection{Member Function Documentation} +\index{moeoContributionMetric@{moeo\-Contribution\-Metric}!operator()@{operator()}} +\index{operator()@{operator()}!moeoContributionMetric@{moeo\-Contribution\-Metric}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ double {\bf moeo\-Contribution\-Metric}$<$ EOT $>$::operator() (const std::vector$<$ {\bf EOFitness} $>$ \& {\em \_\-set1}, const std::vector$<$ {\bf EOFitness} $>$ \& {\em \_\-set2})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoContributionMetric_76b6b93124263ca1a8232b12a556d843} + + +Returns the contribution of the Pareto set '\_\-set1' relatively to the Pareto set '\_\-set2'. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-set1}]the first Pareto set \item[{\em \_\-set2}]the second Pareto set \end{description} +\end{Desc} + + +Definition at line 38 of file moeo\-Contribution\-Metric.h. + +References moeo\-Contribution\-Metric$<$ EOT $>$::card\_\-C(), moeo\-Contribution\-Metric$<$ EOT $>$::card\_\-N(), and moeo\-Contribution\-Metric$<$ EOT $>$::card\_\-W().\index{moeoContributionMetric@{moeo\-Contribution\-Metric}!card_C@{card\_\-C}} +\index{card_C@{card\_\-C}!moeoContributionMetric@{moeo\-Contribution\-Metric}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ unsigned {\bf moeo\-Contribution\-Metric}$<$ EOT $>$::card\_\-C (const std::vector$<$ {\bf EOFitness} $>$ \& {\em \_\-set1}, const std::vector$<$ {\bf EOFitness} $>$ \& {\em \_\-set2})\hspace{0.3cm}{\tt [inline, private]}}\label{classmoeoContributionMetric_a0041e60c941dd1909f28fadcf011b87} + + +Returns the number of solutions both in '\_\-set1' and '\_\-set2'. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-set1}]the first Pareto set \item[{\em \_\-set2}]the second Pareto set \end{description} +\end{Desc} + + +Definition at line 57 of file moeo\-Contribution\-Metric.h. + +Referenced by moeo\-Contribution\-Metric$<$ EOT $>$::operator()().\index{moeoContributionMetric@{moeo\-Contribution\-Metric}!card_W@{card\_\-W}} +\index{card_W@{card\_\-W}!moeoContributionMetric@{moeo\-Contribution\-Metric}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ unsigned {\bf moeo\-Contribution\-Metric}$<$ EOT $>$::card\_\-W (const std::vector$<$ {\bf EOFitness} $>$ \& {\em \_\-set1}, const std::vector$<$ {\bf EOFitness} $>$ \& {\em \_\-set2})\hspace{0.3cm}{\tt [inline, private]}}\label{classmoeoContributionMetric_64a72db699a10d6b4794773d4adbae3c} + + +Returns the number of solutions in '\_\-set1' dominating at least one solution of '\_\-set2'. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-set1}]the first Pareto set \item[{\em \_\-set2}]the second Pareto set \end{description} +\end{Desc} + + +Definition at line 76 of file moeo\-Contribution\-Metric.h. + +Referenced by moeo\-Contribution\-Metric$<$ EOT $>$::operator()().\index{moeoContributionMetric@{moeo\-Contribution\-Metric}!card_N@{card\_\-N}} +\index{card_N@{card\_\-N}!moeoContributionMetric@{moeo\-Contribution\-Metric}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ unsigned {\bf moeo\-Contribution\-Metric}$<$ EOT $>$::card\_\-N (const std::vector$<$ {\bf EOFitness} $>$ \& {\em \_\-set1}, const std::vector$<$ {\bf EOFitness} $>$ \& {\em \_\-set2})\hspace{0.3cm}{\tt [inline, private]}}\label{classmoeoContributionMetric_9960fc1396dbadb412719aaeeedcf961} + + +Returns the number of solutions in '\_\-set1' having no relation of dominance with those from '\_\-set2'. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-set1}]the first Pareto set \item[{\em \_\-set2}]the second Pareto set \end{description} +\end{Desc} + + +Definition at line 95 of file moeo\-Contribution\-Metric.h. + +Referenced by moeo\-Contribution\-Metric$<$ EOT $>$::operator()(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Contribution\-Metric.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoDisctinctElitistReplacement.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoDisctinctElitistReplacement.eps new file mode 100644 index 000000000..cb6876239 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoDisctinctElitistReplacement.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 318.471 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.57 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoDisctinctElitistReplacement< EOT, WorthT >) cw +(moeoReplacement< EOT, WorthT >) cw +(eoReplacement< EOT >) cw +(eoBF< eoPop< EOT > &, eoPop< EOT > &, void >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoDisctinctElitistReplacement< EOT, WorthT >) 0 0 box + (moeoReplacement< EOT, WorthT >) 0 1 box + (eoReplacement< EOT >) 0 2 box + (eoBF< eoPop< EOT > &, eoPop< EOT > &, void >) 0 3 box + (eoFunctorBase) 0 4 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in +solid +0 0 3 out +solid +1 0 4 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoDisctinctElitistReplacement.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoDisctinctElitistReplacement.tex new file mode 100644 index 000000000..68117695d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoDisctinctElitistReplacement.tex @@ -0,0 +1,101 @@ +\section{moeo\-Disctinct\-Elitist\-Replacement$<$ EOT, Worth\-T $>$ Class Template Reference} +\label{classmoeoDisctinctElitistReplacement}\index{moeoDisctinctElitistReplacement@{moeoDisctinctElitistReplacement}} +Same than \doxyref{moeo\-Elitist\-Replacement}{p.}{classmoeoElitistReplacement} except that distinct individuals are privilegied. + + +{\tt \#include $<$moeo\-Replacement.h$>$} + +Inheritance diagram for moeo\-Disctinct\-Elitist\-Replacement$<$ EOT, Worth\-T $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5cm]{classmoeoDisctinctElitistReplacement} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moeo\-Disctinct\-Elitist\-Replacement} ({\bf eo\-Perf2Worth}$<$ EOT, Worth\-T $>$ \&\_\-perf2worth) +\begin{CompactList}\small\item\em constructor \item\end{CompactList}\item +void {\bf operator()} ({\bf eo\-Pop}$<$ EOT $>$ \&\_\-parents, {\bf eo\-Pop}$<$ EOT $>$ \&\_\-offspring) +\begin{CompactList}\small\item\em replacement - result in \_\-parents \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +void {\bf create\-New\-Pop} ({\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop, unsigned \_\-size) +\begin{CompactList}\small\item\em creation of the new population of size \_\-size \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf eo\-Perf2Worth}$<$ EOT, Worth\-T $>$ \& {\bf perf2worth}\label{classmoeoDisctinctElitistReplacement_3d1616ba57c10f5a77e0ec021cc8beb2} + +\begin{CompactList}\small\item\em the functor object to transform raw fitnesses into fitness for selection \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class Worth\-T = double$>$ class moeo\-Disctinct\-Elitist\-Replacement$<$ EOT, Worth\-T $>$} + +Same than \doxyref{moeo\-Elitist\-Replacement}{p.}{classmoeoElitistReplacement} except that distinct individuals are privilegied. + + + +Definition at line 78 of file moeo\-Replacement.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moeoDisctinctElitistReplacement@{moeo\-Disctinct\-Elitist\-Replacement}!moeoDisctinctElitistReplacement@{moeoDisctinctElitistReplacement}} +\index{moeoDisctinctElitistReplacement@{moeoDisctinctElitistReplacement}!moeoDisctinctElitistReplacement@{moeo\-Disctinct\-Elitist\-Replacement}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Worth\-T = double$>$ {\bf moeo\-Disctinct\-Elitist\-Replacement}$<$ EOT, Worth\-T $>$::{\bf moeo\-Disctinct\-Elitist\-Replacement} ({\bf eo\-Perf2Worth}$<$ EOT, Worth\-T $>$ \& {\em \_\-perf2worth})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoDisctinctElitistReplacement_f39200df2b68f6d35fbed2a2688a9d75} + + +constructor + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-perf2worth}]the functor class to transform raw fitnesses into fitness for selection \end{description} +\end{Desc} + + +Definition at line 87 of file moeo\-Replacement.h. + +\subsection{Member Function Documentation} +\index{moeoDisctinctElitistReplacement@{moeo\-Disctinct\-Elitist\-Replacement}!operator()@{operator()}} +\index{operator()@{operator()}!moeoDisctinctElitistReplacement@{moeo\-Disctinct\-Elitist\-Replacement}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Worth\-T = double$>$ void {\bf moeo\-Disctinct\-Elitist\-Replacement}$<$ EOT, Worth\-T $>$::operator() ({\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-parents}, {\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-offspring})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmoeoDisctinctElitistReplacement_ca73704e827074092e7d228253427a8a} + + +replacement - result in \_\-parents + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-parents}]parents population \item[{\em \_\-offspring}]offspring population \end{description} +\end{Desc} + + +Implements {\bf eo\-BF$<$ eo\-Pop$<$ EOT $>$ \&, eo\-Pop$<$ EOT $>$ \&, void $>$}. + +Definition at line 99 of file moeo\-Replacement.h. + +References moeo\-Disctinct\-Elitist\-Replacement$<$ EOT, Worth\-T $>$::create\-New\-Pop().\index{moeoDisctinctElitistReplacement@{moeo\-Disctinct\-Elitist\-Replacement}!createNewPop@{createNewPop}} +\index{createNewPop@{createNewPop}!moeoDisctinctElitistReplacement@{moeo\-Disctinct\-Elitist\-Replacement}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Worth\-T = double$>$ void {\bf moeo\-Disctinct\-Elitist\-Replacement}$<$ EOT, Worth\-T $>$::create\-New\-Pop ({\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-pop}, unsigned {\em \_\-size})\hspace{0.3cm}{\tt [inline, private]}}\label{classmoeoDisctinctElitistReplacement_7aed100016940e4806a7c93c0e22bf85} + + +creation of the new population of size \_\-size + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]the initial population (will be modified) \item[{\em \_\-size}]the size of the population to create \end{description} +\end{Desc} + + +Definition at line 123 of file moeo\-Replacement.h. + +References moeo\-Disctinct\-Elitist\-Replacement$<$ EOT, Worth\-T $>$::perf2worth, and eo\-Pop$<$ EOT $>$::swap(). + +Referenced by moeo\-Disctinct\-Elitist\-Replacement$<$ EOT, Worth\-T $>$::operator()(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Replacement.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoElitistReplacement.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoElitistReplacement.eps new file mode 100644 index 000000000..dacd4c9bb --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoElitistReplacement.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 318.471 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.57 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoElitistReplacement< EOT, WorthT >) cw +(moeoReplacement< EOT, WorthT >) cw +(eoReplacement< EOT >) cw +(eoBF< eoPop< EOT > &, eoPop< EOT > &, void >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoElitistReplacement< EOT, WorthT >) 0 0 box + (moeoReplacement< EOT, WorthT >) 0 1 box + (eoReplacement< EOT >) 0 2 box + (eoBF< eoPop< EOT > &, eoPop< EOT > &, void >) 0 3 box + (eoFunctorBase) 0 4 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in +solid +0 0 3 out +solid +1 0 4 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoElitistReplacement.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoElitistReplacement.tex new file mode 100644 index 000000000..260c40587 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoElitistReplacement.tex @@ -0,0 +1,76 @@ +\section{moeo\-Elitist\-Replacement$<$ EOT, Worth\-T $>$ Class Template Reference} +\label{classmoeoElitistReplacement}\index{moeoElitistReplacement@{moeoElitistReplacement}} +Keep all the best individuals (almost cut-and-pasted from {\bf eo\-NDPlus\-Replacement}, (c) Maarten Keijzer, Marc Schoenauer and Ge\-Neura Team, 2002). + + +{\tt \#include $<$moeo\-Replacement.h$>$} + +Inheritance diagram for moeo\-Elitist\-Replacement$<$ EOT, Worth\-T $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5cm]{classmoeoElitistReplacement} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moeo\-Elitist\-Replacement} ({\bf eo\-Perf2Worth}$<$ EOT, Worth\-T $>$ \&\_\-perf2worth) +\begin{CompactList}\small\item\em constructor \item\end{CompactList}\item +void {\bf operator()} ({\bf eo\-Pop}$<$ EOT $>$ \&\_\-parents, {\bf eo\-Pop}$<$ EOT $>$ \&\_\-offspring) +\begin{CompactList}\small\item\em replacement - result in \_\-parents \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf eo\-Perf2Worth}$<$ EOT, Worth\-T $>$ \& {\bf perf2worth}\label{classmoeoElitistReplacement_020f0e0b6b88a0081d922cca5b05990e} + +\begin{CompactList}\small\item\em the functor object to transform raw fitnesses into fitness for selection \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class Worth\-T = double$>$ class moeo\-Elitist\-Replacement$<$ EOT, Worth\-T $>$} + +Keep all the best individuals (almost cut-and-pasted from {\bf eo\-NDPlus\-Replacement}, (c) Maarten Keijzer, Marc Schoenauer and Ge\-Neura Team, 2002). + + + +Definition at line 35 of file moeo\-Replacement.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moeoElitistReplacement@{moeo\-Elitist\-Replacement}!moeoElitistReplacement@{moeoElitistReplacement}} +\index{moeoElitistReplacement@{moeoElitistReplacement}!moeoElitistReplacement@{moeo\-Elitist\-Replacement}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Worth\-T = double$>$ {\bf moeo\-Elitist\-Replacement}$<$ EOT, Worth\-T $>$::{\bf moeo\-Elitist\-Replacement} ({\bf eo\-Perf2Worth}$<$ EOT, Worth\-T $>$ \& {\em \_\-perf2worth})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoElitistReplacement_fa62ed508ac194ed7b720e37dd22458c} + + +constructor + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-perf2worth}]the functor class to transform raw fitnesses into fitness for selection \end{description} +\end{Desc} + + +Definition at line 43 of file moeo\-Replacement.h. + +\subsection{Member Function Documentation} +\index{moeoElitistReplacement@{moeo\-Elitist\-Replacement}!operator()@{operator()}} +\index{operator()@{operator()}!moeoElitistReplacement@{moeo\-Elitist\-Replacement}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Worth\-T = double$>$ void {\bf moeo\-Elitist\-Replacement}$<$ EOT, Worth\-T $>$::operator() ({\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-parents}, {\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-offspring})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmoeoElitistReplacement_aad627deb45859e65ace0709c004049a} + + +replacement - result in \_\-parents + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-parents}]parents population \item[{\em \_\-offspring}]offspring population \end{description} +\end{Desc} + + +Implements {\bf eo\-BF$<$ eo\-Pop$<$ EOT $>$ \&, eo\-Pop$<$ EOT $>$ \&, void $>$}. + +Definition at line 54 of file moeo\-Replacement.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Replacement.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoEntropyMetric.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoEntropyMetric.eps new file mode 100644 index 000000000..62b905032 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoEntropyMetric.eps @@ -0,0 +1,227 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 195.312 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.56 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoEntropyMetric< EOT >) cw +(moeoVectorVsVectorBM< EOT, double >) cw +(moeoBM< A1, A2, R >) cw +(eoBF< A1, A2, R >) cw +(moeoMetric) cw +(eoFunctorBase) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoEntropyMetric< EOT >) 0.5 0 box + (moeoVectorVsVectorBM< EOT, double >) 0.5 1 box + (moeoBM< A1, A2, R >) 0.5 2 box + (eoBF< A1, A2, R >) 0 3 box + (moeoMetric) 1 3 box + (eoFunctorBase) 0 4 box + (eoFunctorBase) 1 4 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +0 1 3 conn +solid +1 0 3 in +solid +0 0 3 out +solid +1 1 3 in +solid +0 1 3 out +solid +1 0 4 in +solid +1 1 4 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoEntropyMetric.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoEntropyMetric.tex new file mode 100644 index 000000000..33d9fc7b7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoEntropyMetric.tex @@ -0,0 +1,89 @@ +\section{moeo\-Entropy\-Metric$<$ EOT $>$ Class Template Reference} +\label{classmoeoEntropyMetric}\index{moeoEntropyMetric@{moeoEntropyMetric}} +The entropy gives an idea of the diversity of a Pareto set relatively to another Pareto set. + + +{\tt \#include $<$moeo\-Entropy\-Metric.h$>$} + +Inheritance diagram for moeo\-Entropy\-Metric$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5cm]{classmoeoEntropyMetric} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef EOT::Fitness {\bf EOFitness}\label{classmoeoEntropyMetric_306b72d2236de1ecbae986c65490a8fe} + +\begin{CompactList}\small\item\em The fitness type of a solution. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +double {\bf operator()} (const std::vector$<$ {\bf EOFitness} $>$ \&\_\-set1, const std::vector$<$ {\bf EOFitness} $>$ \&\_\-set2) +\begin{CompactList}\small\item\em Returns the entropy of the Pareto set '\_\-set1' relatively to the Pareto set '\_\-set2'. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +void {\bf remove\-Dominated} (std::vector$<$ {\bf EOFitness} $>$ \&\_\-f)\label{classmoeoEntropyMetric_3252e7534b1ceb1317936c5d2b3abcbe} + +\item +void {\bf prenormalize} (const std::vector$<$ {\bf EOFitness} $>$ \&\_\-f)\label{classmoeoEntropyMetric_c9f0c65b4de69accbfb42486f6445cb0} + +\item +void {\bf normalize} (std::vector$<$ {\bf EOFitness} $>$ \&\_\-f)\label{classmoeoEntropyMetric_bc32468b148a0da4eb21a9fc14dfafae} + +\item +void {\bf compute\-Union} (const std::vector$<$ {\bf EOFitness} $>$ \&\_\-f1, const std::vector$<$ {\bf EOFitness} $>$ \&\_\-f2, std::vector$<$ {\bf EOFitness} $>$ \&\_\-f)\label{classmoeoEntropyMetric_2de60a0e6be362f074b50e6b455152ab} + +\item +unsigned {\bf how\-Many\-In\-Niche\-Of} (const std::vector$<$ {\bf EOFitness} $>$ \&\_\-f, const {\bf EOFitness} \&\_\-s, unsigned \_\-size)\label{classmoeoEntropyMetric_a9369be315e139ebdf19fac09ad0563f} + +\item +double {\bf euclidian\-Distance} (const {\bf EOFitness} \&\_\-set1, const {\bf EOFitness} \&\_\-to, unsigned \_\-deg=2)\label{classmoeoEntropyMetric_34f825ce7c53132f7218483130da8652} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +std::vector$<$ double $>$ {\bf vect\_\-min\_\-val}\label{classmoeoEntropyMetric_d4046a304badfe78aa35b2d57938ffe9} + +\item +std::vector$<$ double $>$ {\bf vect\_\-max\_\-val}\label{classmoeoEntropyMetric_af0ae9645bdbb993de4bc990a0a08883} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moeo\-Entropy\-Metric$<$ EOT $>$} + +The entropy gives an idea of the diversity of a Pareto set relatively to another Pareto set. + +(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) + + + +Definition at line 23 of file moeo\-Entropy\-Metric.h. + +\subsection{Member Function Documentation} +\index{moeoEntropyMetric@{moeo\-Entropy\-Metric}!operator()@{operator()}} +\index{operator()@{operator()}!moeoEntropyMetric@{moeo\-Entropy\-Metric}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ double {\bf moeo\-Entropy\-Metric}$<$ EOT $>$::operator() (const std::vector$<$ {\bf EOFitness} $>$ \& {\em \_\-set1}, const std::vector$<$ {\bf EOFitness} $>$ \& {\em \_\-set2})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoEntropyMetric_58136405dfed951efa340ddf541c29fd} + + +Returns the entropy of the Pareto set '\_\-set1' relatively to the Pareto set '\_\-set2'. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-set1}]the first Pareto set \item[{\em \_\-set2}]the second Pareto set \end{description} +\end{Desc} + + +Definition at line 38 of file moeo\-Entropy\-Metric.h. + +References moeo\-Entropy\-Metric$<$ EOT $>$::compute\-Union(), moeo\-Entropy\-Metric$<$ EOT $>$::how\-Many\-In\-Niche\-Of(), moeo\-Entropy\-Metric$<$ EOT $>$::normalize(), moeo\-Entropy\-Metric$<$ EOT $>$::prenormalize(), and moeo\-Entropy\-Metric$<$ EOT $>$::remove\-Dominated(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Entropy\-Metric.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoHybridMOLS.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoHybridMOLS.eps new file mode 100644 index 000000000..77aee0c9e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoHybridMOLS.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 462.428 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.08125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoHybridMOLS< EOT >) cw +(eoUpdater) cw +(eoF< void >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoHybridMOLS< EOT >) 0 0 box + (eoUpdater) 0 1 box + (eoF< void >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoHybridMOLS.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoHybridMOLS.tex new file mode 100644 index 000000000..899ca25fb --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoHybridMOLS.tex @@ -0,0 +1,67 @@ +\section{moeo\-Hybrid\-MOLS$<$ EOT $>$ Class Template Reference} +\label{classmoeoHybridMOLS}\index{moeoHybridMOLS@{moeoHybridMOLS}} +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. + + +{\tt \#include $<$moeo\-Hybrid\-MOLS.h$>$} + +Inheritance diagram for moeo\-Hybrid\-MOLS$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmoeoHybridMOLS} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf eo\-Hybrid\-MOLS} ({\bf eo\-Continue}$<$ EOT $>$ \&\_\-term, {\bf eo\-Select}$<$ EOT $>$ \&\_\-select, {\bf moeo\-MOLS}$<$ EOT $>$ \&\_\-mols, {\bf moeo\-Archive}$<$ EOT $>$ \&\_\-arch) +\begin{CompactList}\small\item\em Ctor. \item\end{CompactList}\item +void {\bf operator()} ()\label{classmoeoHybridMOLS_f62b4221d0ec094e39b73b386b508fc1} + +\begin{CompactList}\small\item\em Applies the multi-objective local search to selected individuals contained in the archive if the stopping criteria is not verified. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf eo\-Continue}$<$ EOT $>$ \& {\bf term}\label{classmoeoHybridMOLS_cd05dc1c82febb819945663c3b5c6a75} + +\begin{CompactList}\small\item\em stopping criteria \item\end{CompactList}\item +{\bf eo\-Select}$<$ EOT $>$ \& {\bf select}\label{classmoeoHybridMOLS_b47c4d1bce77c5648b437a5884a7c41f} + +\begin{CompactList}\small\item\em selector \item\end{CompactList}\item +{\bf moeo\-MOLS}$<$ EOT $>$ \& {\bf mols}\label{classmoeoHybridMOLS_5ecf318c321a71857c11da1ff5000092} + +\begin{CompactList}\small\item\em multi-objective local search \item\end{CompactList}\item +{\bf moeo\-Archive}$<$ EOT $>$ \& {\bf arch}\label{classmoeoHybridMOLS_4aecb1f300f2f09b8d45998cc140576b} + +\begin{CompactList}\small\item\em archive \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moeo\-Hybrid\-MOLS$<$ EOT $>$} + +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. + + + +Definition at line 27 of file moeo\-Hybrid\-MOLS.h. + +\subsection{Member Function Documentation} +\index{moeoHybridMOLS@{moeo\-Hybrid\-MOLS}!eoHybridMOLS@{eoHybridMOLS}} +\index{eoHybridMOLS@{eoHybridMOLS}!moeoHybridMOLS@{moeo\-Hybrid\-MOLS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf moeo\-Hybrid\-MOLS}$<$ EOT $>$::eo\-Hybrid\-MOLS ({\bf eo\-Continue}$<$ EOT $>$ \& {\em \_\-term}, {\bf eo\-Select}$<$ EOT $>$ \& {\em \_\-select}, {\bf moeo\-MOLS}$<$ EOT $>$ \& {\em \_\-mols}, {\bf moeo\-Archive}$<$ EOT $>$ \& {\em \_\-arch})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoHybridMOLS_ced4b6d35035bfe3339dd571646e570d} + + +Ctor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-term}]stopping criteria \item[{\em \_\-select}]selector \item[{\em \_\-mols}]a multi-objective local search \item[{\em \_\-arch}]the archive \end{description} +\end{Desc} + + +Definition at line 38 of file moeo\-Hybrid\-MOLS.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Hybrid\-MOLS.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEA.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEA.eps new file mode 100644 index 000000000..de81ca4cd --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEA.eps @@ -0,0 +1,233 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 240.964 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.075 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 6 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoIBEA< EOT, Fitness >) cw +(eoPerf2WorthCached< EOT, double >) cw +(eoPerf2Worth< EOT, WorthT >) cw +(eoUF< const eoPop< EOT > &, void >) cw +(eoValueParam< std::vector< WorthT > >) cw +(eoFunctorBase) cw +(eoParam) cw +(moeoIBEASorting< EOT, Fitness >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoIBEA< EOT, Fitness >) 0.5 1 box + (eoPerf2WorthCached< EOT, double >) 0.5 2 box + (eoPerf2Worth< EOT, WorthT >) 0.5 3 box + (eoUF< const eoPop< EOT > &, void >) 0 4 box + (eoValueParam< std::vector< WorthT > >) 1 4 box + (eoFunctorBase) 0 5 box + (eoParam) 1 5 box + (moeoIBEASorting< EOT, Fitness >) 0.5 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +0 0.5 3 out +solid +0 1 4 conn +solid +1 0 4 in +solid +0 0 4 out +solid +1 1 4 in +solid +0 1 4 out +solid +1 0 5 in +solid +1 1 5 in +solid +1 0.5 0.25 out +solid +0 0.5 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEA.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEA.tex new file mode 100644 index 000000000..1398210e5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEA.tex @@ -0,0 +1,60 @@ +\section{moeo\-IBEA$<$ EOT, Fitness $>$ Class Template Reference} +\label{classmoeoIBEA}\index{moeoIBEA@{moeoIBEA}} +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm). + + +{\tt \#include $<$moeo\-IBEA.h$>$} + +Inheritance diagram for moeo\-IBEA$<$ EOT, Fitness $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=6cm]{classmoeoIBEA} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moeo\-IBEA} ({\bf moeo\-Binary\-Quality\-Indicator}$<$ Fitness $>$ $\ast$\_\-I)\label{classmoeoIBEA_3de9693e4e8a723b2e40864ac1f4ac65} + +\item +void {\bf calculate\_\-worths} (const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em mapping \item\end{CompactList}\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +{\bf moeo\-Binary\-Quality\-Indicator}$<$ Fitness $>$ $\ast$ {\bf I}\label{classmoeoIBEA_15ef4c06c2bf6101e5c3d36e162a3965} + +\begin{CompactList}\small\item\em binary quality indicator to use in the selection process \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class Fitness$>$ class moeo\-IBEA$<$ EOT, Fitness $>$} + +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm). + + + +Definition at line 28 of file moeo\-IBEA.h. + +\subsection{Member Function Documentation} +\index{moeoIBEA@{moeo\-IBEA}!calculate_worths@{calculate\_\-worths}} +\index{calculate_worths@{calculate\_\-worths}!moeoIBEA@{moeo\-IBEA}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Fitness$>$ void {\bf moeo\-IBEA}$<$ EOT, Fitness $>$::calculate\_\-worths (const {\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmoeoIBEA_9e8738189ef146eb2e6ecb19c9709a31} + + +mapping + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em const}]eo\-Pop$<$EOT$>$\& \_\-pop the population \end{description} +\end{Desc} + + +Implements {\bf eo\-Perf2Worth\-Cached$<$ EOT, double $>$}. + +Definition at line 46 of file moeo\-IBEA.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-IBEA.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEAAvgSorting.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEAAvgSorting.eps new file mode 100644 index 000000000..3a0416e5b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEAAvgSorting.eps @@ -0,0 +1,233 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 227.273 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.2 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 6 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoIBEAAvgSorting< EOT, FitnessEval >) cw +(moeoIBEA< EOT, FitnessEval >) cw +(eoPerf2WorthCached< EOT, double >) cw +(eoPerf2Worth< EOT, WorthT >) cw +(eoUF< const eoPop< EOT > &, void >) cw +(eoValueParam< std::vector< WorthT > >) cw +(eoFunctorBase) cw +(eoParam) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoIBEAAvgSorting< EOT, FitnessEval >) 0.5 0 box + (moeoIBEA< EOT, FitnessEval >) 0.5 1 box + (eoPerf2WorthCached< EOT, double >) 0.5 2 box + (eoPerf2Worth< EOT, WorthT >) 0.5 3 box + (eoUF< const eoPop< EOT > &, void >) 0 4 box + (eoValueParam< std::vector< WorthT > >) 1 4 box + (eoFunctorBase) 0 5 box + (eoParam) 1 5 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +0 0.5 3 out +solid +0 1 4 conn +solid +1 0 4 in +solid +0 0 4 out +solid +1 1 4 in +solid +0 1 4 out +solid +1 0 5 in +solid +1 1 5 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEAAvgSorting.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEAAvgSorting.tex new file mode 100644 index 000000000..2afb37333 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEAAvgSorting.tex @@ -0,0 +1,103 @@ +\section{moeo\-IBEAAvg\-Sorting$<$ EOT, Fitness\-Eval $>$ Class Template Reference} +\label{classmoeoIBEAAvgSorting}\index{moeoIBEAAvgSorting@{moeoIBEAAvgSorting}} +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty using averaged values for each objective Follow the idea presented in the Deb \& Gupta paper \char`\"{}Searching for Robust Pareto-Optimal Solutions in Multi-Objective Optimization\char`\"{}, 2005 Of course, the fitness of an individual needs to be an eo\-Stochastic\-Pareto\-Fitness object. + + +{\tt \#include $<$moeo\-IBEA.h$>$} + +Inheritance diagram for moeo\-IBEAAvg\-Sorting$<$ EOT, Fitness\-Eval $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=6cm]{classmoeoIBEAAvgSorting} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moeo\-IBEAAvg\-Sorting} ({\bf moeo\-Binary\-Quality\-Indicator}$<$ Fitness\-Eval $>$ $\ast$\_\-I, const double \_\-kappa) +\begin{CompactList}\small\item\em constructor \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +void {\bf set\-Bounds} (const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em computation and setting of the bounds for each objective \item\end{CompactList}\item +void {\bf fitnesses} (const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em computation and setting of the fitness for each individual of the population \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +double {\bf kappa}\label{classmoeoIBEAAvgSorting_89375a49f85c93492b59dc8450b8a983} + +\begin{CompactList}\small\item\em scaling factor kappa \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class Fitness\-Eval = typename EOT::Fitness::Fitness\-Eval$>$ class moeo\-IBEAAvg\-Sorting$<$ EOT, Fitness\-Eval $>$} + +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty using averaged values for each objective Follow the idea presented in the Deb \& Gupta paper \char`\"{}Searching for Robust Pareto-Optimal Solutions in Multi-Objective Optimization\char`\"{}, 2005 Of course, the fitness of an individual needs to be an eo\-Stochastic\-Pareto\-Fitness object. + + + +Definition at line 361 of file moeo\-IBEA.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moeoIBEAAvgSorting@{moeo\-IBEAAvg\-Sorting}!moeoIBEAAvgSorting@{moeoIBEAAvgSorting}} +\index{moeoIBEAAvgSorting@{moeoIBEAAvgSorting}!moeoIBEAAvgSorting@{moeo\-IBEAAvg\-Sorting}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Fitness\-Eval = typename EOT::Fitness::Fitness\-Eval$>$ {\bf moeo\-IBEAAvg\-Sorting}$<$ EOT, Fitness\-Eval $>$::{\bf moeo\-IBEAAvg\-Sorting} ({\bf moeo\-Binary\-Quality\-Indicator}$<$ Fitness\-Eval $>$ $\ast$ {\em \_\-I}, const double {\em \_\-kappa})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoIBEAAvgSorting_02056e5794eb5c1d0e3d9d1cbb347c41} + + +constructor + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Binary\-Quality\-Indicator$<$EOT$>$$\ast$}]\_\-I the binary quality indicator to use in the selection process \item[{\em double}]\_\-kappa scaling factor kappa \end{description} +\end{Desc} + + +Definition at line 373 of file moeo\-IBEA.h. + +References moeo\-IBEAAvg\-Sorting$<$ EOT, Fitness\-Eval $>$::kappa. + +\subsection{Member Function Documentation} +\index{moeoIBEAAvgSorting@{moeo\-IBEAAvg\-Sorting}!setBounds@{setBounds}} +\index{setBounds@{setBounds}!moeoIBEAAvgSorting@{moeo\-IBEAAvg\-Sorting}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Fitness\-Eval = typename EOT::Fitness::Fitness\-Eval$>$ void {\bf moeo\-IBEAAvg\-Sorting}$<$ EOT, Fitness\-Eval $>$::set\-Bounds (const {\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, private, virtual]}}\label{classmoeoIBEAAvgSorting_b62fcfda9ac75352479fa06952754f90} + + +computation and setting of the bounds for each objective + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em const}]eo\-Pop$<$EOT$>$\& \_\-pop the population \end{description} +\end{Desc} + + +Implements {\bf moeo\-IBEA$<$ EOT, Fitness\-Eval $>$} \doxyref{}{p.}{classmoeoIBEA}. + +Definition at line 398 of file moeo\-IBEA.h. + +References moeo\-IBEA$<$ EOT, Fitness\-Eval $>$::I, and moeo\-Binary\-Quality\-Indicator$<$ EOFitness $>$::set\-Bounds().\index{moeoIBEAAvgSorting@{moeo\-IBEAAvg\-Sorting}!fitnesses@{fitnesses}} +\index{fitnesses@{fitnesses}!moeoIBEAAvgSorting@{moeo\-IBEAAvg\-Sorting}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Fitness\-Eval = typename EOT::Fitness::Fitness\-Eval$>$ void {\bf moeo\-IBEAAvg\-Sorting}$<$ EOT, Fitness\-Eval $>$::fitnesses (const {\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, private, virtual]}}\label{classmoeoIBEAAvgSorting_e88f9280e5c81cd0b54d738b7863dc1d} + + +computation and setting of the fitness for each individual of the population + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em const}]eo\-Pop$<$EOT$>$\& \_\-pop the population \end{description} +\end{Desc} + + +Implements {\bf moeo\-IBEA$<$ EOT, Fitness\-Eval $>$} \doxyref{}{p.}{classmoeoIBEA}. + +Definition at line 431 of file moeo\-IBEA.h. + +References moeo\-IBEAAvg\-Sorting$<$ EOT, Fitness\-Eval $>$::kappa, and eo\-Value\-Param$<$ std::vector$<$ Worth\-T $>$ $>$::value(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-IBEA.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEASorting.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEASorting.eps new file mode 100644 index 000000000..ab49cfe74 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEASorting.eps @@ -0,0 +1,233 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 240.964 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.075 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 6 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoIBEASorting< EOT, Fitness >) cw +(moeoIBEA< EOT, Fitness >) cw +(eoPerf2WorthCached< EOT, double >) cw +(eoPerf2Worth< EOT, WorthT >) cw +(eoUF< const eoPop< EOT > &, void >) cw +(eoValueParam< std::vector< WorthT > >) cw +(eoFunctorBase) cw +(eoParam) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoIBEASorting< EOT, Fitness >) 0.5 0 box + (moeoIBEA< EOT, Fitness >) 0.5 1 box + (eoPerf2WorthCached< EOT, double >) 0.5 2 box + (eoPerf2Worth< EOT, WorthT >) 0.5 3 box + (eoUF< const eoPop< EOT > &, void >) 0 4 box + (eoValueParam< std::vector< WorthT > >) 1 4 box + (eoFunctorBase) 0 5 box + (eoParam) 1 5 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +0 0.5 3 out +solid +0 1 4 conn +solid +1 0 4 in +solid +0 0 4 out +solid +1 1 4 in +solid +0 1 4 out +solid +1 0 5 in +solid +1 1 5 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEASorting.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEASorting.tex new file mode 100644 index 000000000..0eded5df5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEASorting.tex @@ -0,0 +1,103 @@ +\section{moeo\-IBEASorting$<$ EOT, Fitness $>$ Class Template Reference} +\label{classmoeoIBEASorting}\index{moeoIBEASorting@{moeoIBEASorting}} +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) without uncertainty Adapted from the Zitzler and K\~{A}¼nzli paper \char`\"{}Indicator-Based Selection in Multiobjective Search\char`\"{} (2004) Of course, Fitness needs to be an {\bf eo\-Pareto\-Fitness} object. + + +{\tt \#include $<$moeo\-IBEA.h$>$} + +Inheritance diagram for moeo\-IBEASorting$<$ EOT, Fitness $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=6cm]{classmoeoIBEASorting} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moeo\-IBEASorting} ({\bf moeo\-Binary\-Quality\-Indicator}$<$ Fitness $>$ $\ast$\_\-I, const double \_\-kappa) +\begin{CompactList}\small\item\em constructor \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +void {\bf set\-Bounds} (const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em computation and setting of the bounds for each objective \item\end{CompactList}\item +void {\bf fitnesses} (const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em computation and setting of the fitness for each individual of the population \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +double {\bf kappa}\label{classmoeoIBEASorting_4789daab5ea5e215075d7430f343a321} + +\begin{CompactList}\small\item\em scaling factor kappa \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class Fitness = typename EOT::Fitness$>$ class moeo\-IBEASorting$<$ EOT, Fitness $>$} + +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) without uncertainty Adapted from the Zitzler and K\~{A}¼nzli paper \char`\"{}Indicator-Based Selection in Multiobjective Search\char`\"{} (2004) Of course, Fitness needs to be an {\bf eo\-Pareto\-Fitness} object. + + + +Definition at line 84 of file moeo\-IBEA.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moeoIBEASorting@{moeo\-IBEASorting}!moeoIBEASorting@{moeoIBEASorting}} +\index{moeoIBEASorting@{moeoIBEASorting}!moeoIBEASorting@{moeo\-IBEASorting}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Fitness = typename EOT::Fitness$>$ {\bf moeo\-IBEASorting}$<$ EOT, Fitness $>$::{\bf moeo\-IBEASorting} ({\bf moeo\-Binary\-Quality\-Indicator}$<$ Fitness $>$ $\ast$ {\em \_\-I}, const double {\em \_\-kappa})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoIBEASorting_4d00a499f4d03b8cf66e9ce8f68cb174} + + +constructor + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Binary\-Quality\-Indicator$<$EOT$>$$\ast$}]\_\-I the binary quality indicator to use in the selection process \item[{\em double}]\_\-kappa scaling factor kappa \end{description} +\end{Desc} + + +Definition at line 96 of file moeo\-IBEA.h. + +References moeo\-IBEASorting$<$ EOT, Fitness $>$::kappa. + +\subsection{Member Function Documentation} +\index{moeoIBEASorting@{moeo\-IBEASorting}!setBounds@{setBounds}} +\index{setBounds@{setBounds}!moeoIBEASorting@{moeo\-IBEASorting}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Fitness = typename EOT::Fitness$>$ void {\bf moeo\-IBEASorting}$<$ EOT, Fitness $>$::set\-Bounds (const {\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, private, virtual]}}\label{classmoeoIBEASorting_f29f38584c69217f25e904118f6bfb2b} + + +computation and setting of the bounds for each objective + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em const}]eo\-Pop$<$EOT$>$\& \_\-pop the population \end{description} +\end{Desc} + + +Implements {\bf moeo\-IBEA$<$ EOT, Fitness $>$} \doxyref{}{p.}{classmoeoIBEA}. + +Definition at line 121 of file moeo\-IBEA.h. + +References moeo\-IBEA$<$ EOT, Fitness $>$::I, and moeo\-Binary\-Quality\-Indicator$<$ EOFitness $>$::set\-Bounds().\index{moeoIBEASorting@{moeo\-IBEASorting}!fitnesses@{fitnesses}} +\index{fitnesses@{fitnesses}!moeoIBEASorting@{moeo\-IBEASorting}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Fitness = typename EOT::Fitness$>$ void {\bf moeo\-IBEASorting}$<$ EOT, Fitness $>$::fitnesses (const {\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, private, virtual]}}\label{classmoeoIBEASorting_63c3953d362b41e875e6e7759a308e07} + + +computation and setting of the fitness for each individual of the population + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em const}]eo\-Pop$<$EOT$>$\& \_\-pop the population \end{description} +\end{Desc} + + +Implements {\bf moeo\-IBEA$<$ EOT, Fitness $>$} \doxyref{}{p.}{classmoeoIBEA}. + +Definition at line 150 of file moeo\-IBEA.h. + +References moeo\-IBEASorting$<$ EOT, Fitness $>$::kappa, and eo\-Value\-Param$<$ std::vector$<$ Worth\-T $>$ $>$::value(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-IBEA.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEAStochSorting.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEAStochSorting.eps new file mode 100644 index 000000000..8d72ffe1a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEAStochSorting.eps @@ -0,0 +1,233 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 219.78 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.275 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 6 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoIBEAStochSorting< EOT, FitnessEval >) cw +(moeoIBEA< EOT, FitnessEval >) cw +(eoPerf2WorthCached< EOT, double >) cw +(eoPerf2Worth< EOT, WorthT >) cw +(eoUF< const eoPop< EOT > &, void >) cw +(eoValueParam< std::vector< WorthT > >) cw +(eoFunctorBase) cw +(eoParam) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoIBEAStochSorting< EOT, FitnessEval >) 0.5 0 box + (moeoIBEA< EOT, FitnessEval >) 0.5 1 box + (eoPerf2WorthCached< EOT, double >) 0.5 2 box + (eoPerf2Worth< EOT, WorthT >) 0.5 3 box + (eoUF< const eoPop< EOT > &, void >) 0 4 box + (eoValueParam< std::vector< WorthT > >) 1 4 box + (eoFunctorBase) 0 5 box + (eoParam) 1 5 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +0 0.5 3 out +solid +0 1 4 conn +solid +1 0 4 in +solid +0 0 4 out +solid +1 1 4 in +solid +0 1 4 out +solid +1 0 5 in +solid +1 1 5 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEAStochSorting.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEAStochSorting.tex new file mode 100644 index 000000000..d6d6c676b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoIBEAStochSorting.tex @@ -0,0 +1,101 @@ +\section{moeo\-IBEAStoch\-Sorting$<$ EOT, Fitness\-Eval $>$ Class Template Reference} +\label{classmoeoIBEAStochSorting}\index{moeoIBEAStochSorting@{moeoIBEAStochSorting}} +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty Adapted from the Basseur and Zitzler paper \char`\"{}Handling Uncertainty in Indicator-Based Multiobjective Optimization\char`\"{} (2006) Of course, the fitness of an individual needs to be an eo\-Stochastic\-Pareto\-Fitness object. + + +{\tt \#include $<$moeo\-IBEA.h$>$} + +Inheritance diagram for moeo\-IBEAStoch\-Sorting$<$ EOT, Fitness\-Eval $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=6cm]{classmoeoIBEAStochSorting} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moeo\-IBEAStoch\-Sorting} ({\bf moeo\-Binary\-Quality\-Indicator}$<$ Fitness\-Eval $>$ $\ast$\_\-I) +\begin{CompactList}\small\item\em constructor \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +void {\bf set\-Bounds} (const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em computation and setting of the bounds for each objective \item\end{CompactList}\item +void {\bf fitnesses} (const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em computation and setting of the fitness for each individual of the population \item\end{CompactList}\end{CompactItemize} +\subsection*{Static Private Member Functions} +\begin{CompactItemize} +\item +static double {\bf zero} ()\label{classmoeoIBEAStochSorting_3426ae274256fe8cedb9e0c009f81e15} + +\begin{CompactList}\small\item\em approximated zero value \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class Fitness\-Eval = typename EOT::Fitness::Fitness\-Eval$>$ class moeo\-IBEAStoch\-Sorting$<$ EOT, Fitness\-Eval $>$} + +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty Adapted from the Basseur and Zitzler paper \char`\"{}Handling Uncertainty in Indicator-Based Multiobjective Optimization\char`\"{} (2006) Of course, the fitness of an individual needs to be an eo\-Stochastic\-Pareto\-Fitness object. + + + +Definition at line 203 of file moeo\-IBEA.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moeoIBEAStochSorting@{moeo\-IBEAStoch\-Sorting}!moeoIBEAStochSorting@{moeoIBEAStochSorting}} +\index{moeoIBEAStochSorting@{moeoIBEAStochSorting}!moeoIBEAStochSorting@{moeo\-IBEAStoch\-Sorting}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Fitness\-Eval = typename EOT::Fitness::Fitness\-Eval$>$ {\bf moeo\-IBEAStoch\-Sorting}$<$ EOT, Fitness\-Eval $>$::{\bf moeo\-IBEAStoch\-Sorting} ({\bf moeo\-Binary\-Quality\-Indicator}$<$ Fitness\-Eval $>$ $\ast$ {\em \_\-I})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoIBEAStochSorting_675d3ff90643f398b8aacbea5ea7eb31} + + +constructor + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Binary\-Quality\-Indicator$<$EOT$>$$\ast$}]\_\-I the binary quality indicator to use in the selection process \end{description} +\end{Desc} + + +Definition at line 214 of file moeo\-IBEA.h. + +\subsection{Member Function Documentation} +\index{moeoIBEAStochSorting@{moeo\-IBEAStoch\-Sorting}!setBounds@{setBounds}} +\index{setBounds@{setBounds}!moeoIBEAStochSorting@{moeo\-IBEAStoch\-Sorting}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Fitness\-Eval = typename EOT::Fitness::Fitness\-Eval$>$ void {\bf moeo\-IBEAStoch\-Sorting}$<$ EOT, Fitness\-Eval $>$::set\-Bounds (const {\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, private, virtual]}}\label{classmoeoIBEAStochSorting_c23afa90c4eb5b21bb8f118c968ed0a2} + + +computation and setting of the bounds for each objective + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em const}]eo\-Pop$<$EOT$>$\& \_\-pop the population \end{description} +\end{Desc} + + +Implements {\bf moeo\-IBEA$<$ EOT, Fitness\-Eval $>$} \doxyref{}{p.}{classmoeoIBEA}. + +Definition at line 243 of file moeo\-IBEA.h. + +References moeo\-IBEA$<$ EOT, Fitness\-Eval $>$::I, and moeo\-Binary\-Quality\-Indicator$<$ EOFitness $>$::set\-Bounds().\index{moeoIBEAStochSorting@{moeo\-IBEAStoch\-Sorting}!fitnesses@{fitnesses}} +\index{fitnesses@{fitnesses}!moeoIBEAStochSorting@{moeo\-IBEAStoch\-Sorting}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT, class Fitness\-Eval = typename EOT::Fitness::Fitness\-Eval$>$ void {\bf moeo\-IBEAStoch\-Sorting}$<$ EOT, Fitness\-Eval $>$::fitnesses (const {\bf eo\-Pop}$<$ EOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, private, virtual]}}\label{classmoeoIBEAStochSorting_b75848ab2c0d03058b48147f11105dcb} + + +computation and setting of the fitness for each individual of the population + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em const}]eo\-Pop$<$EOT$>$\& \_\-pop the population \end{description} +\end{Desc} + + +Implements {\bf moeo\-IBEA$<$ EOT, Fitness\-Eval $>$} \doxyref{}{p.}{classmoeoIBEA}. + +Definition at line 272 of file moeo\-IBEA.h. + +References eo\-Value\-Param$<$ std::vector$<$ Worth\-T $>$ $>$::value(), and moeo\-IBEAStoch\-Sorting$<$ EOT, Fitness\-Eval $>$::zero(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-IBEA.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoMOLS.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoMOLS.eps new file mode 100644 index 000000000..2d25dc070 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoMOLS.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 243.902 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.05 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoMOLS< EOT >) cw +(eoBF< const EOT &, moeoArchive< EOT > &, void >) cw +(eoFunctorBase) cw +(moeoCombinedMOLS< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoMOLS< EOT >) 0 1 box + (eoBF< const EOT &, moeoArchive< EOT > &, void >) 0 2 box + (eoFunctorBase) 0 3 box + (moeoCombinedMOLS< EOT >) 0 0 box + +% ----- relations ----- + +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in +solid +1 0 0.25 out +solid +0 0 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoMOLS.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoMOLS.tex new file mode 100644 index 000000000..5a0b3885c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoMOLS.tex @@ -0,0 +1,29 @@ +\section{moeo\-MOLS$<$ EOT $>$ Class Template Reference} +\label{classmoeoMOLS}\index{moeoMOLS@{moeoMOLS}} +Abstract class for local searches applied to multi-objective optimization. + + +{\tt \#include $<$moeo\-MOLS.h$>$} + +Inheritance diagram for moeo\-MOLS$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmoeoMOLS} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moeo\-MOLS$<$ EOT $>$} + +Abstract class for local searches applied to multi-objective optimization. + +Starting from only one solution, it produces a set of new non-dominated solutions. + + + +Definition at line 23 of file moeo\-MOLS.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-MOLS.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoMetric.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoMetric.eps new file mode 100644 index 000000000..23737595a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoMetric.eps @@ -0,0 +1,236 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 149.031 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.355 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 10 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoMetric) cw +(eoFunctorBase) cw +(moeoBM< A1, A2, R >) cw +(moeoBM< const const EOFitness &, EOFitness &, R >) cw +(moeoBM< const const std::vector< EOFitness > &, EOFitness &, R >) cw +(moeoBM< const const std::vector< EOFitness > &, std::vector< EOFitness > &, R >) cw +(moeoBM< const const std::vector< typename EOT::Fitness > &, std::vector< typename EOT::Fitness > &, double >) cw +(moeoUM< A, R >) cw +(moeoUM< const EOFitness &, R >) cw +(moeoUM< const std::vector< EOFitness > &, R >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoMetric) 0 8 box + (eoFunctorBase) 0 9 box + (moeoBM< A1, A2, R >) 1 7 box +1 7 mark + (moeoBM< const const EOFitness &, EOFitness &, R >) 1 6 box + (moeoBM< const const std::vector< EOFitness > &, EOFitness &, R >) 1 5 box + (moeoBM< const const std::vector< EOFitness > &, std::vector< EOFitness > &, R >) 1 4 box + (moeoBM< const const std::vector< typename EOT::Fitness > &, std::vector< typename EOT::Fitness > &, double >) 1 3 box + (moeoUM< A, R >) 1 2 box + (moeoUM< const EOFitness &, R >) 1 1 box +1 1 mark + (moeoUM< const std::vector< EOFitness > &, R >) 1 0 box +1 0 mark + +% ----- relations ----- + +solid +0 0 8 out +solid +1 0 9 in +solid +1 0 7.25 out +solid +0 0 7.5 hedge +solid +0 0 6.5 hedge +solid +0 0 5.5 hedge +solid +0 0 4.5 hedge +solid +0 0 3.5 hedge +solid +0 0 2.5 hedge +solid +0 0 1.5 hedge +solid +0 0 0.5 hedge +solid +0 8 0.5 vedge diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoMetric.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoMetric.tex new file mode 100644 index 000000000..f6c2d9573 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoMetric.tex @@ -0,0 +1,25 @@ +\section{moeo\-Metric Class Reference} +\label{classmoeoMetric}\index{moeoMetric@{moeoMetric}} +Base class for performance metrics (also called quality indicators). + + +{\tt \#include $<$moeo\-Metric.h$>$} + +Inheritance diagram for moeo\-Metric::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4.17288cm]{classmoeoMetric} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +Base class for performance metrics (also called quality indicators). + + + +Definition at line 21 of file moeo\-Metric.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Metric.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoNDSorting__II.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoNDSorting__II.eps new file mode 100644 index 000000000..8ecf5da0b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoNDSorting__II.eps @@ -0,0 +1,233 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 240.964 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.075 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 6 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoNDSorting_II< EOT >) cw +(eoNDSorting< EOT >) cw +(eoPerf2WorthCached< EOT, double >) cw +(eoPerf2Worth< EOT, WorthT >) cw +(eoUF< const eoPop< EOT > &, void >) cw +(eoValueParam< std::vector< WorthT > >) cw +(eoFunctorBase) cw +(eoParam) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoNDSorting_II< EOT >) 0.5 0 box + (eoNDSorting< EOT >) 0.5 1 box + (eoPerf2WorthCached< EOT, double >) 0.5 2 box + (eoPerf2Worth< EOT, WorthT >) 0.5 3 box + (eoUF< const eoPop< EOT > &, void >) 0 4 box + (eoValueParam< std::vector< WorthT > >) 1 4 box + (eoFunctorBase) 0 5 box + (eoParam) 1 5 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +0 0.5 3 out +solid +0 1 4 conn +solid +1 0 4 in +solid +0 0 4 out +solid +1 1 4 in +solid +0 1 4 out +solid +1 0 5 in +solid +1 1 5 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoNDSorting__II.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoNDSorting__II.tex new file mode 100644 index 000000000..f74f31db1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoNDSorting__II.tex @@ -0,0 +1,51 @@ +\section{moeo\-NDSorting\_\-II$<$ EOT $>$ Class Template Reference} +\label{classmoeoNDSorting__II}\index{moeoNDSorting_II@{moeoNDSorting\_\-II}} +Fast Elitist Non-Dominant Sorting Genetic Algorithm assignment strategie Note : This is a corrected version of the original {\bf eo\-NDSorting\_\-II} class. + + +{\tt \#include $<$moeo\-NDSorting.h$>$} + +Inheritance diagram for moeo\-NDSorting\_\-II$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=6cm]{classmoeoNDSorting__II} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef std::pair$<$ double, unsigned $>$ {\bf double\_\-index\_\-pair}\label{classmoeoNDSorting__II_0987beaa2f600f5bce61c77215679e43} + +\begin{CompactList}\small\item\em index pair \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moeo\-NDSorting\_\-II} (bool nasty\_\-flag\_\-=false)\label{classmoeoNDSorting__II_820e9987853858ddc59e36c7f267955e} + +\begin{CompactList}\small\item\em constructor \item\end{CompactList}\item +std::vector$<$ double $>$ {\bf niche\_\-penalty} (const std::vector$<$ unsigned $>$ \&\_\-cf, const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop)\label{classmoeoNDSorting__II_265c74b9f64731db86e2c363593f67f9} + +\begin{CompactList}\small\item\em \_\-cf points into the elements that consist of the current front \item\end{CompactList}\end{CompactItemize} +\subsection*{Classes} +\begin{CompactItemize} +\item +class {\bf compare\_\-nodes} +\begin{CompactList}\small\item\em A class to compare the nodes. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moeo\-NDSorting\_\-II$<$ EOT $>$} + +Fast Elitist Non-Dominant Sorting Genetic Algorithm assignment strategie Note : This is a corrected version of the original {\bf eo\-NDSorting\_\-II} class. + +\begin{Desc} +\item[See also:]{\bf eo\-NDSorting\_\-II} \end{Desc} + + + + +Definition at line 26 of file moeo\-NDSorting.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-NDSorting.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoNDSorting__II_1_1compare__nodes.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoNDSorting__II_1_1compare__nodes.tex new file mode 100644 index 000000000..cec86004e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoNDSorting__II_1_1compare__nodes.tex @@ -0,0 +1,27 @@ +\section{moeo\-NDSorting\_\-II$<$ EOT $>$::compare\_\-nodes Class Reference} +\label{classmoeoNDSorting__II_1_1compare__nodes}\index{moeoNDSorting_II::compare_nodes@{moeoNDSorting\_\-II::compare\_\-nodes}} +A class to compare the nodes. + + +{\tt \#include $<$moeo\-NDSorting.h$>$} + +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +bool {\bf operator()} (const {\bf double\_\-index\_\-pair} \&a, const {\bf double\_\-index\_\-pair} \&b) const\label{classmoeoNDSorting__II_1_1compare__nodes_471ebe9e88bfc778c4c281399eb0c196} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moeo\-NDSorting\_\-II$<$ EOT $>$::compare\_\-nodes} + +A class to compare the nodes. + + + +Definition at line 46 of file moeo\-NDSorting.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-NDSorting.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoNSGA__II.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoNSGA__II.eps new file mode 100644 index 000000000..16c1780e3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoNSGA__II.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 388.35 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.2875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoNSGA_II< EOT >) cw +(eoAlgo< EOT >) cw +(eoUF< eoPop< EOT > &, void >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoNSGA_II< EOT >) 0 0 box + (eoAlgo< EOT >) 0 1 box + (eoUF< eoPop< EOT > &, void >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoNSGA__II.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoNSGA__II.tex new file mode 100644 index 000000000..70fcda63a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoNSGA__II.tex @@ -0,0 +1,83 @@ +\section{moeo\-NSGA\_\-II$<$ EOT $>$ Class Template Reference} +\label{classmoeoNSGA__II}\index{moeoNSGA_II@{moeoNSGA\_\-II}} +Inheritance diagram for moeo\-NSGA\_\-II$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmoeoNSGA__II} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moeo\-NSGA\_\-II} (unsigned \_\-max\_\-gen, {\bf eo\-Eval\-Func}$<$ EOT $>$ \&\_\-eval, {\bf eo\-Gen\-Op}$<$ EOT $>$ \&\_\-op) +\begin{CompactList}\small\item\em This constructor builds the algorithm as descibed in the paper. \item\end{CompactList}\item +{\bf moeo\-NSGA\_\-II} (unsigned \_\-max\_\-gen, {\bf eo\-Eval\-Func}$<$ EOT $>$ \&\_\-eval, {\bf eo\-Quad\-Op}$<$ EOT $>$ \&crossover, double p\-Cross, {\bf eo\-Mon\-Op}$<$ EOT $>$ \&mutation, double p\-Mut)\label{classmoeoNSGA__II_37109beabe74b0fecb2f3f899ef573d7} + +\begin{CompactList}\small\item\em Ctor taking \_\-max\_\-gen, crossover and mutation. \item\end{CompactList}\item +{\bf moeo\-NSGA\_\-II} ({\bf eo\-Continue}$<$ EOT $>$ \&\_\-continuator, {\bf eo\-Eval\-Func}$<$ EOT $>$ \&\_\-eval, {\bf eo\-Gen\-Op}$<$ EOT $>$ \&\_\-op)\label{classmoeoNSGA__II_29ae86b4254ba6e5263c159df812fb7e} + +\begin{CompactList}\small\item\em Ctor taking a continuator instead of \_\-gen\_\-max. \item\end{CompactList}\item +virtual void {\bf operator()} ({\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop)\label{classmoeoNSGA__II_a9a94b2ee67038b81cdba0fd005350d0} + +\begin{CompactList}\small\item\em Apply a few generation of evolution to the population. \item\end{CompactList}\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +{\bf eo\-Continue}$<$ EOT $>$ \& {\bf continuator}\label{classmoeoNSGA__II_22ba11ba501fb7cf3423d9b777294998} + +\item +{\bf eo\-Eval\-Func}$<$ EOT $>$ \& {\bf eval}\label{classmoeoNSGA__II_6b90df8b9890035788a4d4a3f0c26742} + +\item +{\bf eo\-Pop\-Loop\-Eval}$<$ EOT $>$ {\bf loop\-Eval}\label{classmoeoNSGA__II_72fd9c6e70e9ee19db82a6894cafc60b} + +\item +{\bf eo\-Pop\-Eval\-Func}$<$ EOT $>$ \& {\bf pop\-Eval}\label{classmoeoNSGA__II_c1975957e19a164fde96ed7b5ce90ba4} + +\item +{\bf moeo\-NDSorting\_\-II}$<$ EOT $>$ {\bf sorting}\label{classmoeoNSGA__II_1aa7de4992f6c0f1c3a093aca735874c} + +\begin{CompactList}\small\item\em NSGAII sorting. \item\end{CompactList}\item +{\bf eo\-Det\-Tournament\-Worth\-Select}$<$ EOT $>$ {\bf select\-One}\label{classmoeoNSGA__II_add129e06168846b7e405ddd25d70c4d} + +\begin{CompactList}\small\item\em Binary tournament selection. \item\end{CompactList}\item +{\bf moeo\-Elitist\-Replacement}$<$ EOT $>$ {\bf replace}\label{classmoeoNSGA__II_c75535b7a47c26d8a66c1f227d33a3af} + +\begin{CompactList}\small\item\em Elitist replacement. \item\end{CompactList}\item +{\bf eo\-General\-Breeder}$<$ EOT $>$ {\bf gen\-Breed}\label{classmoeoNSGA__II_febee845341b96dba1cdfc18640d4960} + +\item +{\bf eo\-Breed}$<$ EOT $>$ \& {\bf breed}\label{classmoeoNSGA__II_f0dc0665ea743729e6284d812192acfc} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moeo\-NSGA\_\-II$<$ EOT $>$} + + + + + +Definition at line 31 of file moeo\-NSGA\_\-II.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moeoNSGA_II@{moeo\-NSGA\_\-II}!moeoNSGA_II@{moeoNSGA\_\-II}} +\index{moeoNSGA_II@{moeoNSGA\_\-II}!moeoNSGA_II@{moeo\-NSGA\_\-II}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf moeo\-NSGA\_\-II}$<$ EOT $>$::{\bf moeo\-NSGA\_\-II} (unsigned {\em \_\-max\_\-gen}, {\bf eo\-Eval\-Func}$<$ EOT $>$ \& {\em \_\-eval}, {\bf eo\-Gen\-Op}$<$ EOT $>$ \& {\em \_\-op})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoNSGA__II_bdbf13431487a83afdfd4f527f99ebcf} + + +This constructor builds the algorithm as descibed in the paper. + +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. \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-max\_\-gen}]number of generations before stopping \item[{\em \_\-eval}]evaluation function \item[{\em \_\-op}]variation operator \end{description} +\end{Desc} + + +Definition at line 46 of file moeo\-NSGA\_\-II.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-NSGA\_\-II.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoEuclidDist.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoEuclidDist.eps new file mode 100644 index 000000000..d4372982b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoEuclidDist.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 160 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoParetoEuclidDist< EOT, DistType >) cw +(moeoParetoPhenDist< EOT, DistType >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoParetoEuclidDist< EOT, DistType >) 0 0 box + (moeoParetoPhenDist< EOT, DistType >) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoEuclidDist.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoEuclidDist.tex new file mode 100644 index 000000000..3bc887b32 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoEuclidDist.tex @@ -0,0 +1,28 @@ +\section{moeo\-Pareto\-Euclid\-Dist$<$ EOT, Dist\-Type $>$ Class Template Reference} +\label{classmoeoParetoEuclidDist}\index{moeoParetoEuclidDist@{moeoParetoEuclidDist}} +Inheritance diagram for moeo\-Pareto\-Euclid\-Dist$<$ EOT, Dist\-Type $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classmoeoParetoEuclidDist} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +Dist\-Type {\bf operator()} (const EOT \&eopf1, const EOT \&eopf2)\label{classmoeoParetoEuclidDist_5369b5167c0305ca99836ed2122d8c8b} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class Dist\-Type = double$>$ class moeo\-Pareto\-Euclid\-Dist$<$ EOT, Dist\-Type $>$} + + + + + +Definition at line 27 of file moeo\-Pareto\-Phen\-Dist.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Pareto\-Phen\-Dist.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoPhenDist.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoPhenDist.eps new file mode 100644 index 000000000..16044ebdf --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoPhenDist.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 160 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoParetoPhenDist< EOT, DistType >) cw +(moeoParetoEuclidDist< EOT, DistType >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoParetoPhenDist< EOT, DistType >) 0 1 box + (moeoParetoEuclidDist< EOT, DistType >) 0 0 box + +% ----- relations ----- + +solid +1 0 0.25 out +solid +0 0 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoPhenDist.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoPhenDist.tex new file mode 100644 index 000000000..f20b2e543 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoPhenDist.tex @@ -0,0 +1,22 @@ +\section{moeo\-Pareto\-Phen\-Dist$<$ EOT, Dist\-Type $>$ Class Template Reference} +\label{classmoeoParetoPhenDist}\index{moeoParetoPhenDist@{moeoParetoPhenDist}} +Inheritance diagram for moeo\-Pareto\-Phen\-Dist$<$ EOT, Dist\-Type $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classmoeoParetoPhenDist} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class Dist\-Type$>$ class moeo\-Pareto\-Phen\-Dist$<$ EOT, Dist\-Type $>$} + + + + + +Definition at line 15 of file moeo\-Pareto\-Phen\-Dist.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Pareto\-Phen\-Dist.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoSharing.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoSharing.eps new file mode 100644 index 000000000..aa65f1c78 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoSharing.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 161.943 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.0875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoParetoSharing< EOT, worthT >) cw +(eoPerf2Worth< EOT, worthT >) cw +(eoUF< const eoPop< EOT > &, void >) cw +(eoValueParam< std::vector< worthT > >) cw +(eoFunctorBase) cw +(eoParam) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoParetoSharing< EOT, worthT >) 0.5 0 box + (eoPerf2Worth< EOT, worthT >) 0.5 1 box + (eoUF< const eoPop< EOT > &, void >) 0 2 box + (eoValueParam< std::vector< worthT > >) 1 2 box + (eoFunctorBase) 0 3 box + (eoParam) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +0 0 2 out +solid +1 1 2 in +solid +0 1 2 out +solid +1 0 3 in +solid +1 1 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoSharing.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoSharing.tex new file mode 100644 index 000000000..c0174bb79 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoSharing.tex @@ -0,0 +1,60 @@ +\section{moeo\-Pareto\-Sharing$<$ EOT, worth\-T $>$ Class Template Reference} +\label{classmoeoParetoSharing}\index{moeoParetoSharing@{moeoParetoSharing}} +Inheritance diagram for moeo\-Pareto\-Sharing$<$ EOT, worth\-T $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmoeoParetoSharing} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moeo\-Pareto\-Sharing} (double \_\-niche\-Size)\label{classmoeoParetoSharing_e2bb92004d3ec5193c7c3efcd499c489} + +\item +{\bf moeo\-Pareto\-Sharing} (double \_\-niche\-Size, {\bf moeo\-Pareto\-Phen\-Dist}$<$ EOT, worth\-T $>$ \&\_\-dist)\label{classmoeoParetoSharing_757d64059315641796855d5adc48cce9} + +\item +void {\bf operator} ()(const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop)\label{classmoeoParetoSharing_67f211b508194562903dae15989ab515} + +\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +double {\bf sh} (double {\bf dist}, double {\bf Dmax})\label{classmoeoParetoSharing_002e355f0df0ad242cdf171207b592ac} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +double {\bf niche\-Size}\label{classmoeoParetoSharing_b5519750a3f30747cbabf67df9b4afd8} + +\item +{\bf moeo\-Pareto\-Phen\-Dist}$<$ EOT, worth\-T $>$ \& {\bf dist}\label{classmoeoParetoSharing_329d7d08f06988fcb0f03059c88ed209} + +\item +{\bf moeo\-Pareto\-Euclid\-Dist}$<$ EOT $>$ {\bf euc\_\-dist}\label{classmoeoParetoSharing_42bc90da2e7f3f7d3837484c771f638e} + +\item +double {\bf Dmax}\label{classmoeoParetoSharing_0219625f2dd8bfd9ae7cb3039084059f} + +\end{CompactItemize} +\subsection*{Classes} +\begin{CompactItemize} +\item +class {\bf d\-Matrix} +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class worth\-T = double$>$ class moeo\-Pareto\-Sharing$<$ EOT, worth\-T $>$} + + + + + +Definition at line 19 of file moeo\-Pareto\-Sharing.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Pareto\-Sharing.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoSharing_1_1dMatrix.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoSharing_1_1dMatrix.tex new file mode 100644 index 000000000..6ab35847c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoParetoSharing_1_1dMatrix.tex @@ -0,0 +1,31 @@ +\section{moeo\-Pareto\-Sharing$<$ EOT, worth\-T $>$::d\-Matrix Class Reference} +\label{classmoeoParetoSharing_1_1dMatrix}\index{moeoParetoSharing::dMatrix@{moeoParetoSharing::dMatrix}} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf d\-Matrix} (unsigned \_\-s)\label{classmoeoParetoSharing_1_1dMatrix_97aa4b1596be7ddba2b52a43ebc4cb6a} + +\item +void {\bf print\-On} (std::ostream \&\_\-os)\label{classmoeoParetoSharing_1_1dMatrix_e63c5e6d70866a31eff53fab563922d7} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +unsigned {\bf r\-Size}\label{classmoeoParetoSharing_1_1dMatrix_792b8a45e222a0daecad1ed344fc9a4f} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class worth\-T = double$>$ class moeo\-Pareto\-Sharing$<$ EOT, worth\-T $>$::d\-Matrix} + + + + + +Definition at line 109 of file moeo\-Pareto\-Sharing.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Pareto\-Sharing.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoReplacement.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoReplacement.eps new file mode 100644 index 000000000..07df814b6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoReplacement.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 159.236 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.14 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoReplacement< EOT, WorthT >) cw +(eoReplacement< EOT >) cw +(eoBF< eoPop< EOT > &, eoPop< EOT > &, void >) cw +(eoFunctorBase) cw +(moeoDisctinctElitistReplacement< EOT, WorthT >) cw +(moeoElitistReplacement< EOT, WorthT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoReplacement< EOT, WorthT >) 0.5 1 box + (eoReplacement< EOT >) 0.5 2 box + (eoBF< eoPop< EOT > &, eoPop< EOT > &, void >) 0.5 3 box + (eoFunctorBase) 0.5 4 box + (moeoDisctinctElitistReplacement< EOT, WorthT >) 0 0 box + (moeoElitistReplacement< EOT, WorthT >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +0 0.5 3 out +solid +1 0.5 4 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoReplacement.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoReplacement.tex new file mode 100644 index 000000000..f146d8ad4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoReplacement.tex @@ -0,0 +1,27 @@ +\section{moeo\-Replacement$<$ EOT, Worth\-T $>$ Class Template Reference} +\label{classmoeoReplacement}\index{moeoReplacement@{moeoReplacement}} +Replacement strategy for multi-objective optimization. + + +{\tt \#include $<$moeo\-Replacement.h$>$} + +Inheritance diagram for moeo\-Replacement$<$ EOT, Worth\-T $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4.4586cm]{classmoeoReplacement} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class Worth\-T$>$ class moeo\-Replacement$<$ EOT, Worth\-T $>$} + +Replacement strategy for multi-objective optimization. + + + +Definition at line 24 of file moeo\-Replacement.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Replacement.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoSelectOneFromPopAndArch.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoSelectOneFromPopAndArch.eps new file mode 100644 index 000000000..f9c38857e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoSelectOneFromPopAndArch.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 307.692 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.625 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoSelectOneFromPopAndArch< EOT >) cw +(eoSelectOne< EOT >) cw +(eoUF< A1, R >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoSelectOneFromPopAndArch< EOT >) 0 0 box + (eoSelectOne< EOT >) 0 1 box + (eoUF< A1, R >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoSelectOneFromPopAndArch.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoSelectOneFromPopAndArch.tex new file mode 100644 index 000000000..0f8858baa --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoSelectOneFromPopAndArch.tex @@ -0,0 +1,89 @@ +\section{moeo\-Select\-One\-From\-Pop\-And\-Arch$<$ EOT $>$ Class Template Reference} +\label{classmoeoSelectOneFromPopAndArch}\index{moeoSelectOneFromPopAndArch@{moeoSelectOneFromPopAndArch}} +Elitist selection process that consists in choosing individuals in the archive as well as in the current population. + + +{\tt \#include $<$moeo\-Select\-One\-From\-Pop\-And\-Arch.h$>$} + +Inheritance diagram for moeo\-Select\-One\-From\-Pop\-And\-Arch$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmoeoSelectOneFromPopAndArch} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moeo\-Select\-One\-From\-Pop\-And\-Arch} ({\bf eo\-Select\-One}$<$ EOT $>$ \&\_\-pop\-Select\-One, {\bf eo\-Select\-One}$<$ EOT $>$ \_\-arch\-Select\-One, {\bf moeo\-Archive}$<$ EOT $>$ \&\_\-arch, double \_\-ratio\-From\-Pop=0.5) +\begin{CompactList}\small\item\em Ctor. \item\end{CompactList}\item +{\bf moeo\-Select\-One\-From\-Pop\-And\-Arch} ({\bf eo\-Select\-One}$<$ EOT $>$ \&\_\-pop\-Select\-One, {\bf moeo\-Archive}$<$ EOT $>$ \&\_\-arch, double \_\-ratio\-From\-Pop=0.5) +\begin{CompactList}\small\item\em Ctor - the archive's selection operator is a random selector. \item\end{CompactList}\item +virtual const EOT \& {\bf operator()} (const {\bf eo\-Pop}$<$ EOT $>$ \&pop)\label{classmoeoSelectOneFromPopAndArch_3c97abfde2dd9959ae4db4c32038017d} + +\begin{CompactList}\small\item\em The selection process. \item\end{CompactList}\item +virtual void {\bf setup} (const {\bf eo\-Pop}$<$ EOT $>$ \&\_\-pop)\label{classmoeoSelectOneFromPopAndArch_a2acc5ddcf045c0c63c22f8d04274858} + +\begin{CompactList}\small\item\em Setups some population stats. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf eo\-Select\-One}$<$ EOT $>$ \& {\bf pop\-Select\-One}\label{classmoeoSelectOneFromPopAndArch_4f6d51d06d92b0a3383f9f47e3b2b682} + +\begin{CompactList}\small\item\em The population's selection operator. \item\end{CompactList}\item +{\bf eo\-Select\-One}$<$ EOT $>$ \& {\bf arch\-Select\-One}\label{classmoeoSelectOneFromPopAndArch_5e062a1deca0307a91121271d3b976ba} + +\begin{CompactList}\small\item\em The archive's selection operator. \item\end{CompactList}\item +{\bf moeo\-Archive}$<$ EOT $>$ \& {\bf arch}\label{classmoeoSelectOneFromPopAndArch_3ca71296847a931355a1e88d0cc524cb} + +\begin{CompactList}\small\item\em the archive \item\end{CompactList}\item +double {\bf ratio\-From\-Pop}\label{classmoeoSelectOneFromPopAndArch_97b57e598752bccafaaf6a8a724d9a43} + +\begin{CompactList}\small\item\em the ratio of selected individuals from the population \item\end{CompactList}\item +{\bf eo\-Random\-Select}$<$ EOT $>$ {\bf random\-Select}\label{classmoeoSelectOneFromPopAndArch_77cbe0150e70219e5a7fd48296acc4c7} + +\begin{CompactList}\small\item\em the random selection operator \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moeo\-Select\-One\-From\-Pop\-And\-Arch$<$ EOT $>$} + +Elitist selection process that consists in choosing individuals in the archive as well as in the current population. + + + +Definition at line 25 of file moeo\-Select\-One\-From\-Pop\-And\-Arch.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moeoSelectOneFromPopAndArch@{moeo\-Select\-One\-From\-Pop\-And\-Arch}!moeoSelectOneFromPopAndArch@{moeoSelectOneFromPopAndArch}} +\index{moeoSelectOneFromPopAndArch@{moeoSelectOneFromPopAndArch}!moeoSelectOneFromPopAndArch@{moeo\-Select\-One\-From\-Pop\-And\-Arch}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf moeo\-Select\-One\-From\-Pop\-And\-Arch}$<$ EOT $>$::{\bf moeo\-Select\-One\-From\-Pop\-And\-Arch} ({\bf eo\-Select\-One}$<$ EOT $>$ \& {\em \_\-pop\-Select\-One}, {\bf eo\-Select\-One}$<$ EOT $>$ {\em \_\-arch\-Select\-One}, {\bf moeo\-Archive}$<$ EOT $>$ \& {\em \_\-arch}, double {\em \_\-ratio\-From\-Pop} = {\tt 0.5})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoSelectOneFromPopAndArch_8d75155e2bb6994b080c696d6382c6c9} + + +Ctor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop\-Select\-One}]the population's selection operator \item[{\em \_\-arch\-Select\-One}]the archive's selection operator \item[{\em \_\-arch}]the archive \item[{\em \_\-ratio\-From\-Pop}]the ratio of selected individuals from the population \end{description} +\end{Desc} + + +Definition at line 37 of file moeo\-Select\-One\-From\-Pop\-And\-Arch.h.\index{moeoSelectOneFromPopAndArch@{moeo\-Select\-One\-From\-Pop\-And\-Arch}!moeoSelectOneFromPopAndArch@{moeoSelectOneFromPopAndArch}} +\index{moeoSelectOneFromPopAndArch@{moeoSelectOneFromPopAndArch}!moeoSelectOneFromPopAndArch@{moeo\-Select\-One\-From\-Pop\-And\-Arch}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf moeo\-Select\-One\-From\-Pop\-And\-Arch}$<$ EOT $>$::{\bf moeo\-Select\-One\-From\-Pop\-And\-Arch} ({\bf eo\-Select\-One}$<$ EOT $>$ \& {\em \_\-pop\-Select\-One}, {\bf moeo\-Archive}$<$ EOT $>$ \& {\em \_\-arch}, double {\em \_\-ratio\-From\-Pop} = {\tt 0.5})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoSelectOneFromPopAndArch_1aeab159a74bf4cd171e2045e25be2b7} + + +Ctor - the archive's selection operator is a random selector. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop\-Select\-One}]the population's selection operator \item[{\em \_\-arch}]the archive \item[{\em \_\-ratio\-From\-Pop}]the ratio of selected individuals from the population \end{description} +\end{Desc} + + +Definition at line 49 of file moeo\-Select\-One\-From\-Pop\-And\-Arch.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Select\-One\-From\-Pop\-And\-Arch.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoSolutionUM.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoSolutionUM.eps new file mode 100644 index 000000000..ba240a9a5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoSolutionUM.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 161.943 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.0875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoSolutionUM< EOT, R, EOFitness >) cw +(moeoUM< const EOFitness &, R >) cw +(eoUF< const EOFitness &, R >) cw +(moeoMetric) cw +(eoFunctorBase) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoSolutionUM< EOT, R, EOFitness >) 0.5 0 box + (moeoUM< const EOFitness &, R >) 0.5 1 box + (eoUF< const EOFitness &, R >) 0 2 box + (moeoMetric) 1 2 box + (eoFunctorBase) 0 3 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +0 0 2 out +solid +1 1 2 in +solid +0 1 2 out +solid +1 0 3 in +solid +1 1 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoSolutionUM.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoSolutionUM.tex new file mode 100644 index 000000000..01c9d0450 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoSolutionUM.tex @@ -0,0 +1,27 @@ +\section{moeo\-Solution\-UM$<$ EOT, R, EOFitness $>$ Class Template Reference} +\label{classmoeoSolutionUM}\index{moeoSolutionUM@{moeoSolutionUM}} +Base class for unary metrics dedicated to the performance evaluation of a single solution's Pareto fitness. + + +{\tt \#include $<$moeo\-Metric.h$>$} + +Inheritance diagram for moeo\-Solution\-UM$<$ EOT, R, EOFitness $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmoeoSolutionUM} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class R, class EOFitness = typename EOT::Fitness$>$ class moeo\-Solution\-UM$<$ EOT, R, EOFitness $>$} + +Base class for unary metrics dedicated to the performance evaluation of a single solution's Pareto fitness. + + + +Definition at line 47 of file moeo\-Metric.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Metric.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoSolutionVsSolutionBM.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoSolutionVsSolutionBM.eps new file mode 100644 index 000000000..f3491d31f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoSolutionVsSolutionBM.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 130.293 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.8375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoSolutionVsSolutionBM< EOT, R, EOFitness >) cw +(moeoBM< A1, A2, R >) cw +(eoBF< A1, A2, R >) cw +(moeoMetric) cw +(eoFunctorBase) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoSolutionVsSolutionBM< EOT, R, EOFitness >) 0.5 0 box + (moeoBM< A1, A2, R >) 0.5 1 box + (eoBF< A1, A2, R >) 0 2 box + (moeoMetric) 1 2 box + (eoFunctorBase) 0 3 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +0 0 2 out +solid +1 1 2 in +solid +0 1 2 out +solid +1 0 3 in +solid +1 1 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoSolutionVsSolutionBM.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoSolutionVsSolutionBM.tex new file mode 100644 index 000000000..2c3797c15 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoSolutionVsSolutionBM.tex @@ -0,0 +1,27 @@ +\section{moeo\-Solution\-Vs\-Solution\-BM$<$ EOT, R, EOFitness $>$ Class Template Reference} +\label{classmoeoSolutionVsSolutionBM}\index{moeoSolutionVsSolutionBM@{moeoSolutionVsSolutionBM}} +Base class for binary metrics dedicated to the performance comparison between two solutions's Pareto fitnesses. + + +{\tt \#include $<$moeo\-Metric.h$>$} + +Inheritance diagram for moeo\-Solution\-Vs\-Solution\-BM$<$ EOT, R, EOFitness $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3.64821cm]{classmoeoSolutionVsSolutionBM} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class R, class EOFitness = typename EOT::Fitness$>$ class moeo\-Solution\-Vs\-Solution\-BM$<$ EOT, R, EOFitness $>$} + +Base class for binary metrics dedicated to the performance comparison between two solutions's Pareto fitnesses. + + + +Definition at line 70 of file moeo\-Metric.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Metric.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoUM.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoUM.eps new file mode 100644 index 000000000..384c9b3af --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoUM.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 252.101 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.98333 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoUM< A, R >) cw +(eoUF< A, R >) cw +(moeoMetric) cw +(eoFunctorBase) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoUM< A, R >) 0.5 0 box + (eoUF< A, R >) 0 1 box + (moeoMetric) 1 1 box + (eoFunctorBase) 0 2 box + (eoFunctorBase) 1 2 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +0 1 1 conn +solid +1 0 1 in +solid +0 0 1 out +solid +1 1 1 in +solid +0 1 1 out +solid +1 0 2 in +solid +1 1 2 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoUM.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoUM.tex new file mode 100644 index 000000000..a1be4b19f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoUM.tex @@ -0,0 +1,27 @@ +\section{moeo\-UM$<$ A, R $>$ Class Template Reference} +\label{classmoeoUM}\index{moeoUM@{moeoUM}} +Base class for unary metrics. + + +{\tt \#include $<$moeo\-Metric.h$>$} + +Inheritance diagram for moeo\-UM$<$ A, R $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classmoeoUM} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class A, class R$>$ class moeo\-UM$<$ A, R $>$} + +Base class for unary metrics. + + + +Definition at line 29 of file moeo\-Metric.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Metric.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoVectorUM.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoVectorUM.eps new file mode 100644 index 000000000..7b5eb73fc --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoVectorUM.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 133.779 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.7375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoVectorUM< EOT, R, EOFitness >) cw +(moeoUM< const std::vector< EOFitness > &, R >) cw +(eoUF< const std::vector< EOFitness > &, R >) cw +(moeoMetric) cw +(eoFunctorBase) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoVectorUM< EOT, R, EOFitness >) 0.5 0 box + (moeoUM< const std::vector< EOFitness > &, R >) 0.5 1 box + (eoUF< const std::vector< EOFitness > &, R >) 0 2 box + (moeoMetric) 1 2 box + (eoFunctorBase) 0 3 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +0 0 2 out +solid +1 1 2 in +solid +0 1 2 out +solid +1 0 3 in +solid +1 1 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoVectorUM.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoVectorUM.tex new file mode 100644 index 000000000..86b8fa6d6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoVectorUM.tex @@ -0,0 +1,27 @@ +\section{moeo\-Vector\-UM$<$ EOT, R, EOFitness $>$ Class Template Reference} +\label{classmoeoVectorUM}\index{moeoVectorUM@{moeoVectorUM}} +Base class for unary metrics dedicated to the performance evaluation of a Pareto set (a vector of Pareto fitnesses). + + +{\tt \#include $<$moeo\-Metric.h$>$} + +Inheritance diagram for moeo\-Vector\-UM$<$ EOT, R, EOFitness $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3.74582cm]{classmoeoVectorUM} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class R, class EOFitness = typename EOT::Fitness$>$ class moeo\-Vector\-UM$<$ EOT, R, EOFitness $>$} + +Base class for unary metrics dedicated to the performance evaluation of a Pareto set (a vector of Pareto fitnesses). + + + +Definition at line 58 of file moeo\-Metric.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Metric.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoVectorVsSolutionBM.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoVectorVsSolutionBM.eps new file mode 100644 index 000000000..cb9caa6f9 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoVectorVsSolutionBM.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 133.333 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.75 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoVectorVsSolutionBM< EOT, R, EOFitness >) cw +(moeoBM< A1, A2, R >) cw +(eoBF< A1, A2, R >) cw +(moeoMetric) cw +(eoFunctorBase) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoVectorVsSolutionBM< EOT, R, EOFitness >) 0.5 0 box + (moeoBM< A1, A2, R >) 0.5 1 box + (eoBF< A1, A2, R >) 0 2 box + (moeoMetric) 1 2 box + (eoFunctorBase) 0 3 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +0 0 2 out +solid +1 1 2 in +solid +0 1 2 out +solid +1 0 3 in +solid +1 1 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoVectorVsSolutionBM.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoVectorVsSolutionBM.tex new file mode 100644 index 000000000..3d8168722 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoVectorVsSolutionBM.tex @@ -0,0 +1,27 @@ +\section{moeo\-Vector\-Vs\-Solution\-BM$<$ EOT, R, EOFitness $>$ Class Template Reference} +\label{classmoeoVectorVsSolutionBM}\index{moeoVectorVsSolutionBM@{moeoVectorVsSolutionBM}} +Base class for binary metrics dedicated to the performance comparison between a Pareto set (a vector of Pareto fitnesses) and a single solution's Pareto fitness. + + +{\tt \#include $<$moeo\-Metric.h$>$} + +Inheritance diagram for moeo\-Vector\-Vs\-Solution\-BM$<$ EOT, R, EOFitness $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3.73333cm]{classmoeoVectorVsSolutionBM} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class R, class EOFitness = typename EOT::Fitness$>$ class moeo\-Vector\-Vs\-Solution\-BM$<$ EOT, R, EOFitness $>$} + +Base class for binary metrics dedicated to the performance comparison between a Pareto set (a vector of Pareto fitnesses) and a single solution's Pareto fitness. + + + +Definition at line 82 of file moeo\-Metric.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Metric.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoVectorVsVectorBM.eps b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoVectorVsVectorBM.eps new file mode 100644 index 000000000..9602d3d8d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoVectorVsVectorBM.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 136.519 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.6625 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moeoVectorVsVectorBM< EOT, R, EOFitness >) cw +(moeoBM< A1, A2, R >) cw +(eoBF< A1, A2, R >) cw +(moeoMetric) cw +(eoFunctorBase) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moeoVectorVsVectorBM< EOT, R, EOFitness >) 0.5 0 box + (moeoBM< A1, A2, R >) 0.5 1 box + (eoBF< A1, A2, R >) 0 2 box + (moeoMetric) 1 2 box + (eoFunctorBase) 0 3 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +0 0 2 out +solid +1 1 2 in +solid +0 1 2 out +solid +1 0 3 in +solid +1 1 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoVectorVsVectorBM.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoVectorVsVectorBM.tex new file mode 100644 index 000000000..0ede3e6ee --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/classmoeoVectorVsVectorBM.tex @@ -0,0 +1,27 @@ +\section{moeo\-Vector\-Vs\-Vector\-BM$<$ EOT, R, EOFitness $>$ Class Template Reference} +\label{classmoeoVectorVsVectorBM}\index{moeoVectorVsVectorBM@{moeoVectorVsVectorBM}} +Base class for binary metrics dedicated to the performance comparison between two Pareto sets (two vectors of Pareto fitnesses). + + +{\tt \#include $<$moeo\-Metric.h$>$} + +Inheritance diagram for moeo\-Vector\-Vs\-Vector\-BM$<$ EOT, R, EOFitness $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3.82253cm]{classmoeoVectorVsVectorBM} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT, class R, class EOFitness = typename EOT::Fitness$>$ class moeo\-Vector\-Vs\-Vector\-BM$<$ EOT, R, EOFitness $>$} + +Base class for binary metrics dedicated to the performance comparison between two Pareto sets (two vectors of Pareto fitnesses). + + + +Definition at line 95 of file moeo\-Metric.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Metric.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/doxygen.sty b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/doxygen.sty new file mode 100644 index 000000000..d627a4e02 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/doxygen.sty @@ -0,0 +1,78 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} +\RequirePackage{calc} +\RequirePackage{array} +\pagestyle{fancyplain} +\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}} +\renewcommand{\chaptermark}[1]{\markboth{#1}{}} +\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} +\lhead[\fancyplain{}{\bfseries\thepage}] + {\fancyplain{}{\bfseries\rightmark}} +\rhead[\fancyplain{}{\bfseries\leftmark}] + {\fancyplain{}{\bfseries\thepage}} +\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Mon Jan 15 14:19:18 2007 for Paradis\-EO-MOEO by Doxygen }]{} +\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Mon Jan 15 14:19:18 2007 for Paradis\-EO-MOEO by Doxygen }} +\cfoot{} +\newenvironment{Code} +{\footnotesize} +{\normalsize} +\newcommand{\doxyref}[3]{\textbf{#1} (\textnormal{#2}\,\pageref{#3})} +\newenvironment{DocInclude} +{\footnotesize} +{\normalsize} +\newenvironment{VerbInclude} +{\footnotesize} +{\normalsize} +\newenvironment{Image} +{\begin{figure}[H]} +{\end{figure}} +\newenvironment{ImageNoCaption}{}{} +\newenvironment{CompactList} +{\begin{list}{}{ + \setlength{\leftmargin}{0.5cm} + \setlength{\itemsep}{0pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \renewcommand{\makelabel}{\hfill}}} +{\end{list}} +\newenvironment{CompactItemize} +{ + \begin{itemize} + \setlength{\itemsep}{-3pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \setlength{\partopsep}{0pt} +} +{\end{itemize}} +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp} +\newlength{\tmplength} +\newenvironment{TabularC}[1] +{ +\setlength{\tmplength} + {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)} + \par\begin{tabular*}{\linewidth} + {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|} +} +{\end{tabular*}\par} +\newcommand{\entrylabel}[1]{ + {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\vspace{1.5\baselineskip}}}} +\newenvironment{Desc} +{\begin{list}{} + { + \settowidth{\labelwidth}{40pt} + \setlength{\leftmargin}{\labelwidth} + \setlength{\parsep}{0pt} + \setlength{\itemsep}{-4pt} + \renewcommand{\makelabel}{\entrylabel} + } +} +{\end{list}} +\newenvironment{Indent} + {\begin{list}{}{\setlength{\leftmargin}{0.5cm}} + \item[]\ignorespaces} + {\unskip\end{list}} +\setlength{\parindent}{0cm} +\setlength{\parskip}{0.2cm} +\addtocounter{secnumdepth}{1} +\sloppy +\usepackage[T1]{fontenc} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/hierarchy.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/hierarchy.tex new file mode 100644 index 000000000..86788b042 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/hierarchy.tex @@ -0,0 +1,138 @@ +\section{Paradis\-EO-MOEO Class Hierarchy} +This inheritance list is sorted roughly, but not completely, alphabetically:\begin{CompactList} +\item eo\-Functor\-Base{\tt [external]}\begin{CompactList} +\item eo\-BF$<$ A1, A2, R $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moeo\-Binary\-Quality\-Indicator$<$ EOFitness $>$}{\pageref{classmoeoBinaryQualityIndicator}}{} +\begin{CompactList} +\item \contentsline{section}{moeo\-Additive\-Binary\-Epsilon\-Indicator$<$ EOFitness $>$}{\pageref{classmoeoAdditiveBinaryEpsilonIndicator}}{} +\item \contentsline{section}{moeo\-Binary\-Hypervolume\-Indicator$<$ EOFitness $>$}{\pageref{classmoeoBinaryHypervolumeIndicator}}{} +\end{CompactList} +\item \contentsline{section}{moeo\-Binary\-Quality\-Indicator$<$ Fitness\-Eval $>$}{\pageref{classmoeoBinaryQualityIndicator}}{} +\item \contentsline{section}{moeo\-BM$<$ A1, A2, R $>$}{\pageref{classmoeoBM}}{} +\begin{CompactList} +\item \contentsline{section}{moeo\-Solution\-Vs\-Solution\-BM$<$ EOT, R, EOFitness $>$}{\pageref{classmoeoSolutionVsSolutionBM}}{} +\item \contentsline{section}{moeo\-Vector\-Vs\-Solution\-BM$<$ EOT, R, EOFitness $>$}{\pageref{classmoeoVectorVsSolutionBM}}{} +\item \contentsline{section}{moeo\-Vector\-Vs\-Vector\-BM$<$ EOT, R, EOFitness $>$}{\pageref{classmoeoVectorVsVectorBM}}{} +\item \contentsline{section}{moeo\-Vector\-Vs\-Vector\-BM$<$ EOT, double $>$}{\pageref{classmoeoVectorVsVectorBM}}{} +\begin{CompactList} +\item \contentsline{section}{moeo\-Contribution\-Metric$<$ EOT $>$}{\pageref{classmoeoContributionMetric}}{} +\item \contentsline{section}{moeo\-Entropy\-Metric$<$ EOT $>$}{\pageref{classmoeoEntropyMetric}}{} +\end{CompactList} +\end{CompactList} +\end{CompactList} +\item eo\-BF$<$ const const EOFitness \&, EOFitness \&, R $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moeo\-BM$<$ const const EOFitness \&, EOFitness \&, R $>$}{\pageref{classmoeoBM}}{} +\end{CompactList} +\item eo\-BF$<$ const const std::vector$<$ EOFitness $>$ \&, EOFitness \&, R $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moeo\-BM$<$ const const std::vector$<$ EOFitness $>$ \&, EOFitness \&, R $>$}{\pageref{classmoeoBM}}{} +\end{CompactList} +\item eo\-BF$<$ const const std::vector$<$ EOFitness $>$ \&, std::vector$<$ EOFitness $>$ \&, R $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moeo\-BM$<$ const const std::vector$<$ EOFitness $>$ \&, std::vector$<$ EOFitness $>$ \&, R $>$}{\pageref{classmoeoBM}}{} +\end{CompactList} +\item eo\-BF$<$ const const std::vector$<$ typename EOT::Fitness $>$ \&, std::vector$<$ typename EOT::Fitness $>$ \&, double $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moeo\-BM$<$ const const std::vector$<$ typename EOT::Fitness $>$ \&, std::vector$<$ typename EOT::Fitness $>$ \&, double $>$}{\pageref{classmoeoBM}}{} +\end{CompactList} +\item eo\-BF$<$ const EOT \&, moeo\-Archive$<$ EOT $>$ \&, void $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moeo\-MOLS$<$ EOT $>$}{\pageref{classmoeoMOLS}}{} +\begin{CompactList} +\item \contentsline{section}{moeo\-Combined\-MOLS$<$ EOT $>$}{\pageref{classmoeoCombinedMOLS}}{} +\end{CompactList} +\end{CompactList} +\item eo\-BF$<$ eo\-Pop$<$ EOT $>$ \&, eo\-Pop$<$ EOT $>$ \&, void $>${\tt [external]}\begin{CompactList} +\item eo\-Replacement$<$ EOT $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moeo\-Replacement$<$ EOT, Worth\-T $>$}{\pageref{classmoeoReplacement}}{} +\begin{CompactList} +\item \contentsline{section}{moeo\-Disctinct\-Elitist\-Replacement$<$ EOT, Worth\-T $>$}{\pageref{classmoeoDisctinctElitistReplacement}}{} +\item \contentsline{section}{moeo\-Elitist\-Replacement$<$ EOT, Worth\-T $>$}{\pageref{classmoeoElitistReplacement}}{} +\end{CompactList} +\end{CompactList} +\end{CompactList} +\item eo\-F$<$ void $>${\tt [external]}\begin{CompactList} +\item eo\-Updater{\tt [external]}\begin{CompactList} +\item \contentsline{section}{moeo\-Archive\-Fitness\-Saving\-Updater$<$ EOT $>$}{\pageref{classmoeoArchiveFitnessSavingUpdater}}{} +\item \contentsline{section}{moeo\-Archive\-Updater$<$ EOT $>$}{\pageref{classmoeoArchiveUpdater}}{} +\item \contentsline{section}{moeo\-Binary\-Metric\-Saving\-Updater$<$ EOT $>$}{\pageref{classmoeoBinaryMetricSavingUpdater}}{} +\item \contentsline{section}{moeo\-Hybrid\-MOLS$<$ EOT $>$}{\pageref{classmoeoHybridMOLS}}{} +\end{CompactList} +\end{CompactList} +\item eo\-UF$<$ A1, R $>${\tt [external]}\begin{CompactList} +\item eo\-Select\-One$<$ EOT $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moeo\-Select\-One\-From\-Pop\-And\-Arch$<$ EOT $>$}{\pageref{classmoeoSelectOneFromPopAndArch}}{} +\end{CompactList} +\end{CompactList} +\item eo\-UF$<$ A, R $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moeo\-UM$<$ A, R $>$}{\pageref{classmoeoUM}}{} +\end{CompactList} +\item eo\-UF$<$ const EOFitness \&, R $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moeo\-UM$<$ const EOFitness \&, R $>$}{\pageref{classmoeoUM}}{} +\begin{CompactList} +\item \contentsline{section}{moeo\-Solution\-UM$<$ EOT, R, EOFitness $>$}{\pageref{classmoeoSolutionUM}}{} +\end{CompactList} +\end{CompactList} +\item eo\-UF$<$ const eo\-Pop$<$ EOT $>$ \&, void $>${\tt [external]}\begin{CompactList} +\item eo\-Perf2Worth$<$ EOT, Worth\-T $>${\tt [external]}\begin{CompactList} +\item eo\-Perf2Worth\-Cached$<$ EOT, double $>${\tt [external]}\begin{CompactList} +\item eo\-NDSorting$<$ EOT $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moeo\-NDSorting\_\-II$<$ EOT $>$}{\pageref{classmoeoNDSorting__II}}{} +\end{CompactList} +\item \contentsline{section}{moeo\-IBEA$<$ EOT, Fitness $>$}{\pageref{classmoeoIBEA}}{} +\begin{CompactList} +\item \contentsline{section}{moeo\-IBEASorting$<$ EOT, Fitness $>$}{\pageref{classmoeoIBEASorting}}{} +\end{CompactList} +\item \contentsline{section}{moeo\-IBEA$<$ EOT, Fitness\-Eval $>$}{\pageref{classmoeoIBEA}}{} +\begin{CompactList} +\item \contentsline{section}{moeo\-IBEAAvg\-Sorting$<$ EOT, Fitness\-Eval $>$}{\pageref{classmoeoIBEAAvgSorting}}{} +\item \contentsline{section}{moeo\-IBEAStoch\-Sorting$<$ EOT, Fitness\-Eval $>$}{\pageref{classmoeoIBEAStochSorting}}{} +\end{CompactList} +\end{CompactList} +\end{CompactList} +\item eo\-Perf2Worth$<$ EOT, worth\-T $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moeo\-Pareto\-Sharing$<$ EOT, worth\-T $>$}{\pageref{classmoeoParetoSharing}}{} +\end{CompactList} +\end{CompactList} +\item eo\-UF$<$ const std::vector$<$ EOFitness $>$ \&, R $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moeo\-UM$<$ const std::vector$<$ EOFitness $>$ \&, R $>$}{\pageref{classmoeoUM}}{} +\begin{CompactList} +\item \contentsline{section}{moeo\-Vector\-UM$<$ EOT, R, EOFitness $>$}{\pageref{classmoeoVectorUM}}{} +\end{CompactList} +\end{CompactList} +\item eo\-UF$<$ eo\-Pop$<$ EOT $>$ \&, void $>${\tt [external]}\begin{CompactList} +\item eo\-Algo$<$ EOT $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moeo\-NSGA\_\-II$<$ EOT $>$}{\pageref{classmoeoNSGA__II}}{} +\end{CompactList} +\end{CompactList} +\item \contentsline{section}{moeo\-Metric}{\pageref{classmoeoMetric}}{} +\begin{CompactList} +\item \contentsline{section}{moeo\-BM$<$ A1, A2, R $>$}{\pageref{classmoeoBM}}{} +\item \contentsline{section}{moeo\-BM$<$ const const EOFitness \&, EOFitness \&, R $>$}{\pageref{classmoeoBM}}{} +\item \contentsline{section}{moeo\-BM$<$ const const std::vector$<$ EOFitness $>$ \&, EOFitness \&, R $>$}{\pageref{classmoeoBM}}{} +\item \contentsline{section}{moeo\-BM$<$ const const std::vector$<$ EOFitness $>$ \&, std::vector$<$ EOFitness $>$ \&, R $>$}{\pageref{classmoeoBM}}{} +\item \contentsline{section}{moeo\-BM$<$ const const std::vector$<$ typename EOT::Fitness $>$ \&, std::vector$<$ typename EOT::Fitness $>$ \&, double $>$}{\pageref{classmoeoBM}}{} +\item \contentsline{section}{moeo\-UM$<$ A, R $>$}{\pageref{classmoeoUM}}{} +\item \contentsline{section}{moeo\-UM$<$ const EOFitness \&, R $>$}{\pageref{classmoeoUM}}{} +\item \contentsline{section}{moeo\-UM$<$ const std::vector$<$ EOFitness $>$ \&, R $>$}{\pageref{classmoeoUM}}{} +\end{CompactList} +\end{CompactList} +\item eo\-Object{\tt [external]}\begin{CompactList} +\item eo\-Pop$<$ EOT $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moeo\-Archive$<$ EOT $>$}{\pageref{classmoeoArchive}}{} +\end{CompactList} +\end{CompactList} +\item eo\-Param{\tt [external]}\begin{CompactList} +\item eo\-Value\-Param$<$ std::vector$<$ Worth\-T $>$ $>${\tt [external]}\begin{CompactList} +\item eo\-Perf2Worth$<$ EOT, Worth\-T $>${\tt [external]}\end{CompactList} +\item eo\-Value\-Param$<$ std::vector$<$ worth\-T $>$ $>${\tt [external]}\begin{CompactList} +\item eo\-Perf2Worth$<$ EOT, worth\-T $>${\tt [external]}\end{CompactList} +\end{CompactList} +\item eo\-Printable{\tt [external]}\begin{CompactList} +\item eo\-Persistent{\tt [external]}\begin{CompactList} +\item eo\-Pop$<$ EOT $>${\tt [external]}\end{CompactList} +\end{CompactList} +\item \contentsline{section}{moeo\-Binary\-Quality\-Indicator$<$ EOFitness $>$::Range}{\pageref{classmoeoBinaryQualityIndicator_1_1Range}}{} +\item \contentsline{section}{moeo\-NDSorting\_\-II$<$ EOT $>$::compare\_\-nodes}{\pageref{classmoeoNDSorting__II_1_1compare__nodes}}{} +\item \contentsline{section}{moeo\-Pareto\-Phen\-Dist$<$ EOT, Dist\-Type $>$}{\pageref{classmoeoParetoPhenDist}}{} +\begin{CompactList} +\item \contentsline{section}{moeo\-Pareto\-Euclid\-Dist$<$ EOT, Dist\-Type $>$}{\pageref{classmoeoParetoEuclidDist}}{} +\end{CompactList} +\item \contentsline{section}{moeo\-Pareto\-Sharing$<$ EOT, worth\-T $>$::d\-Matrix}{\pageref{classmoeoParetoSharing_1_1dMatrix}}{} +\end{CompactList} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/main.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/main.tex new file mode 100644 index 000000000..7297a0ecb --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/main.tex @@ -0,0 +1,5 @@ +\section{intro}\label{main_intro} +Paradis\-EO-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. Paradis\-EO-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 Paradis\-EO-MOEO using the whole version of Paradis\-EO.\section{tutorial}\label{main_tutorial} +A tutorial about a bi-objective flow-shop scheduling problem will be available soon.\section{install}\label{main_install} +The installation procedure of the package is detailed in the {\tt README} file in the top-directory of the source-tree.\section{design}\label{main_design} +For an introduction to the design of Paradis\-EO-MOEO, you can look at the {\tt Paradis\-EO website}. \ No newline at end of file diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/pages.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/pages.tex new file mode 100644 index 000000000..8297a1563 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/pages.tex @@ -0,0 +1,5 @@ +\section{Paradis\-EO-MOEO Related Pages} +Here is a list of all related documentation pages:\begin{CompactList} +\item \contentsline{section}{Related webpages}{\pageref{webpages}}{} + +\end{CompactList} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/refman.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/refman.tex new file mode 100644 index 000000000..15cb018d4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/refman.tex @@ -0,0 +1,74 @@ +\documentclass[a4paper]{book} +\usepackage{a4wide} +\usepackage{makeidx} +\usepackage{fancyhdr} +\usepackage{graphicx} +\usepackage{multicol} +\usepackage{float} +\usepackage{textcomp} +\usepackage{alltt} +\usepackage{doxygen} +\makeindex +\setcounter{tocdepth}{1} +\renewcommand{\footrulewidth}{0.4pt} +\begin{document} +\begin{titlepage} +\vspace*{7cm} +\begin{center} +{\Large Paradis\-EO-MOEO Reference Manual\\[1ex]\large 0.1 }\\ +\vspace*{1cm} +{\large Generated by Doxygen 1.5.1}\\ +\vspace*{0.5cm} +{\small Mon Jan 15 14:19:18 2007}\\ +\end{center} +\end{titlepage} +\clearemptydoublepage +\pagenumbering{roman} +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} +\chapter{Welcome to Paradis\-EO-MOEO } +\label{index}\input{main} +\chapter{Paradis\-EO-MOEO Hierarchical Index} +\input{hierarchy} +\chapter{Paradis\-EO-MOEO Class Index} +\input{annotated} +\chapter{Paradis\-EO-MOEO Class Documentation} +\input{classmoeoAdditiveBinaryEpsilonIndicator} +\include{classmoeoArchive} +\include{classmoeoArchiveFitnessSavingUpdater} +\include{classmoeoArchiveUpdater} +\include{classmoeoBinaryHypervolumeIndicator} +\include{classmoeoBinaryMetricSavingUpdater} +\include{classmoeoBinaryQualityIndicator} +\include{classmoeoBinaryQualityIndicator_1_1Range} +\include{classmoeoBM} +\include{classmoeoCombinedMOLS} +\include{classmoeoContributionMetric} +\include{classmoeoDisctinctElitistReplacement} +\include{classmoeoElitistReplacement} +\include{classmoeoEntropyMetric} +\include{classmoeoHybridMOLS} +\include{classmoeoIBEA} +\include{classmoeoIBEAAvgSorting} +\include{classmoeoIBEASorting} +\include{classmoeoIBEAStochSorting} +\include{classmoeoMetric} +\include{classmoeoMOLS} +\include{classmoeoNDSorting__II} +\include{classmoeoNDSorting__II_1_1compare__nodes} +\include{classmoeoNSGA__II} +\include{classmoeoParetoEuclidDist} +\include{classmoeoParetoPhenDist} +\include{classmoeoParetoSharing} +\include{classmoeoParetoSharing_1_1dMatrix} +\include{classmoeoReplacement} +\include{classmoeoSelectOneFromPopAndArch} +\include{classmoeoSolutionUM} +\include{classmoeoSolutionVsSolutionBM} +\include{classmoeoUM} +\include{classmoeoVectorUM} +\include{classmoeoVectorVsSolutionBM} +\include{classmoeoVectorVsVectorBM} +\printindex +\end{document} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/webpages.tex b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/webpages.tex new file mode 100644 index 000000000..f17506321 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/latex/webpages.tex @@ -0,0 +1,3 @@ +\section{Related webpages}\label{webpages} +\begin{itemize} +\item Paradis\-EO {\tt homepage}\item INRIA GForge {\tt project page}\item {\tt README}\item {\tt NEWS} \end{itemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoAdditiveBinaryEpsilonIndicator.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoAdditiveBinaryEpsilonIndicator.3 new file mode 100644 index 000000000..312538709 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoAdditiveBinaryEpsilonIndicator.3 @@ -0,0 +1,91 @@ +.TH "eoAdditiveBinaryEpsilonIndicator" 3 "22 Dec 2006" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoAdditiveBinaryEpsilonIndicator \- Functor Additive binary epsilon indicator for \fBeoParetoFitness\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBinaryQualityIndicator< EOFitness >< EOFitness >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBeoAdditiveBinaryEpsilonIndicator\fP ()" +.br +.RI "\fIconstructor \fP" +.ti -1c +.RI "double \fBoperator()\fP (const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2)" +.br +.RI "\fIcomputation of the maximum epsilon value by which individual _eo1 must be decreased in all objectives such that individual _eo2 is weakly dominated (do not forget to set the bounds before the call of this function) \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef EOFitness::fitness_traits \fBtraits\fP" +.br +.RI "\fIfitness traits \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "double \fBepsilonValue\fP (const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2, const unsigned _iObj)" +.br +.RI "\fIcomputation of the epsilon value by which individual _eo1 must be decreased in the objective _iObj such that individual _eo2 is weakly dominated \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class eoAdditiveBinaryEpsilonIndicator< EOFitness >" +Functor Additive binary epsilon indicator for \fBeoParetoFitness\fP. +.PP +Definition at line 126 of file eoBinaryQualityIndicator.h. +.SH "Member Function Documentation" +.PP +.SS "template double \fBeoAdditiveBinaryEpsilonIndicator\fP< EOFitness >::operator() (const EOFitness & _fitness_eo1, const EOFitness & _fitness_eo2)\fC [inline, virtual]\fP" +.PP +computation of the maximum epsilon value by which individual _eo1 must be decreased in all objectives such that individual _eo2 is weakly dominated (do not forget to set the bounds before the call of this function) +.PP +\fBParameters:\fP +.RS 4 +\fIEOFitness\fP & _fitness_eo1 the fitness of the first individual +.br +\fIEOFitness\fP & _fitness_eo2 the fitness of the second individual +.RE +.PP + +.PP +Implements \fBeoBF< const EOFitness &, const EOFitness &, double >\fP. +.PP +Definition at line 149 of file eoBinaryQualityIndicator.h. +.PP +References eoAdditiveBinaryEpsilonIndicator< EOFitness >::epsilonValue(). +.SS "template double \fBeoAdditiveBinaryEpsilonIndicator\fP< EOFitness >::epsilonValue (const EOFitness & _fitness_eo1, const EOFitness & _fitness_eo2, const unsigned _iObj)\fC [inline, private]\fP" +.PP +computation of the epsilon value by which individual _eo1 must be decreased in the objective _iObj such that individual _eo2 is weakly dominated +.PP +\fBParameters:\fP +.RS 4 +\fIEOFitness\fP & _fitness_eo1 the fitness of the first individual +.br +\fIEOFitness\fP & _fitness_eo2 the fitness of the second individual +.br +\fIunsigned\fP _iObj the index of the objective +.RE +.PP + +.PP +Definition at line 181 of file eoBinaryQualityIndicator.h. +.PP +Referenced by eoAdditiveBinaryEpsilonIndicator< EOFitness >::operator()(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoBinaryHypervolumeIndicator.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoBinaryHypervolumeIndicator.3 new file mode 100644 index 000000000..58ab7568e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoBinaryHypervolumeIndicator.3 @@ -0,0 +1,171 @@ +.TH "eoBinaryHypervolumeIndicator" 3 "22 Dec 2006" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoBinaryHypervolumeIndicator \- Functor Binary hypervolume indicator for \fBeoParetoFitness\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBinaryQualityIndicator< EOFitness >< EOFitness >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBeoBinaryHypervolumeIndicator\fP (double _rho)" +.br +.RI "\fIconstructor \fP" +.ti -1c +.RI "double \fBoperator()\fP (const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2)" +.br +.RI "\fIindicator value of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 (don't forget to set the bounds before the call of this function) \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef EOFitness::fitness_traits \fBtraits\fP" +.br +.RI "\fIfitness traits \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "double \fBhypervolumeIndicatorValue\fP (const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2, const unsigned _iObj, const bool _flag=false)" +.br +.RI "\fIcomputation of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 \fP" +.ti -1c +.RI "double \fBhypervolumeIndicatorValueMin\fP (const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2, const unsigned _iObj, const bool _flag)" +.br +.RI "\fIcomputation of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 in case of a minimization on the objective _iObj \fP" +.ti -1c +.RI "double \fBhypervolumeIndicatorValueMax\fP (const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2, const unsigned _iObj, const bool _flag)" +.br +.RI "\fIcomputation of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 in case of a maximization on the objective _iObj \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "double \fBrho\fP" +.br +.RI "\fIreference point for the hypervolume calculation \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class eoBinaryHypervolumeIndicator< EOFitness >" +Functor Binary hypervolume indicator for \fBeoParetoFitness\fP. +.PP +Definition at line 217 of file eoBinaryQualityIndicator.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBeoBinaryHypervolumeIndicator\fP< EOFitness >::\fBeoBinaryHypervolumeIndicator\fP (double _rho)\fC [inline]\fP" +.PP +constructor +.PP +\fBParameters:\fP +.RS 4 +\fIdouble\fP _rho reference point for the hypervolume calculation (rho must not be smaller than 1) +.RE +.PP + +.PP +Definition at line 227 of file eoBinaryQualityIndicator.h. +.PP +References eoBinaryHypervolumeIndicator< EOFitness >::rho. +.SH "Member Function Documentation" +.PP +.SS "template double \fBeoBinaryHypervolumeIndicator\fP< EOFitness >::operator() (const EOFitness & _fitness_eo1, const EOFitness & _fitness_eo2)\fC [inline, virtual]\fP" +.PP +indicator value of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 (don't forget to set the bounds before the call of this function) +.PP +\fBParameters:\fP +.RS 4 +\fIEOFitness\fP & _fitness_eo1 the fitness of the first individual +.br +\fIEOFitness\fP & _fitness_eo2 the fitness of the second individual +.RE +.PP + +.PP +Implements \fBeoBF< const EOFitness &, const EOFitness &, double >\fP. +.PP +Definition at line 250 of file eoBinaryQualityIndicator.h. +.PP +References eoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValue(). +.SS "template double \fBeoBinaryHypervolumeIndicator\fP< EOFitness >::hypervolumeIndicatorValue (const EOFitness & _fitness_eo1, const EOFitness & _fitness_eo2, const unsigned _iObj, const bool _flag = \fCfalse\fP)\fC [inline, private]\fP" +.PP +computation of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 +.PP +\fBParameters:\fP +.RS 4 +\fIEOFitness\fP & _fitness_eo1 the fitness of the first individual +.br +\fIEOFitness\fP & _fitness_eo2 the fitness of the second individual +.br +\fIunsigned\fP _iObj number of objectives (used for iteration) +.br +\fIbool\fP _flag = false (only used for iteration) +.RE +.PP + +.PP +Definition at line 285 of file eoBinaryQualityIndicator.h. +.PP +References eoBinaryQualityIndicator< EOFitness >::bounds, eoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValueMax(), and eoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValueMin(). +.PP +Referenced by eoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValueMax(), eoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValueMin(), and eoBinaryHypervolumeIndicator< EOFitness >::operator()(). +.SS "template double \fBeoBinaryHypervolumeIndicator\fP< EOFitness >::hypervolumeIndicatorValueMin (const EOFitness & _fitness_eo1, const EOFitness & _fitness_eo2, const unsigned _iObj, const bool _flag)\fC [inline, private]\fP" +.PP +computation of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 in case of a minimization on the objective _iObj +.PP +\fBParameters:\fP +.RS 4 +\fIEOFitness\fP & _fitness_eo1 the fitness of the first individual +.br +\fIEOFitness\fP & _fitness_eo2 the fitness of the second individual +.br +\fIunsigned\fP _iObj index of the objective +.br +\fIbool\fP _flag (only used for iteration) +.RE +.PP + +.PP +Definition at line 320 of file eoBinaryQualityIndicator.h. +.PP +References eoBinaryQualityIndicator< EOFitness >::bounds, eoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValue(), and eoBinaryHypervolumeIndicator< EOFitness >::rho. +.PP +Referenced by eoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValue(). +.SS "template double \fBeoBinaryHypervolumeIndicator\fP< EOFitness >::hypervolumeIndicatorValueMax (const EOFitness & _fitness_eo1, const EOFitness & _fitness_eo2, const unsigned _iObj, const bool _flag)\fC [inline, private]\fP" +.PP +computation of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 in case of a maximization on the objective _iObj +.PP +\fBParameters:\fP +.RS 4 +\fIEOFitness\fP & _fitness_eo1 the fitness of the first individual +.br +\fIEOFitness\fP & _fitness_eo2 the fitness of the second individual +.br +\fIunsigned\fP _iObj index of the objective +.br +\fIbool\fP _flag (only used for iteration) +.RE +.PP + +.PP +Definition at line 374 of file eoBinaryQualityIndicator.h. +.PP +References eoBinaryQualityIndicator< EOFitness >::bounds, eoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValue(), and eoBinaryHypervolumeIndicator< EOFitness >::rho. +.PP +Referenced by eoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValue(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoBinaryQualityIndicator.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoBinaryQualityIndicator.3 new file mode 100644 index 000000000..26d376cff --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoBinaryQualityIndicator.3 @@ -0,0 +1,81 @@ +.TH "eoBinaryQualityIndicator" 3 "22 Dec 2006" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoBinaryQualityIndicator \- Functor Binary quality indicator Binary performance measure to use in the replacement selection process of IBEA (Indicator-Based Evolutionary Algorithm) Of course, EOFitness needs to be an \fBeoParetoFitness\fP object. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< const EOFitness &, const EOFitness &, double >\fP. +.PP +Inherited by \fBeoAdditiveBinaryEpsilonIndicator< EOFitness >\fP, and \fBeoBinaryHypervolumeIndicator< EOFitness >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBeoBinaryQualityIndicator\fP ()" +.br +.RI "\fIconstructor \fP" +.ti -1c +.RI "void \fBsetBounds\fP (const unsigned _iObj, const double _min, const double _max)" +.br +.RI "\fIset the bounds for objective _iObj \fP" +.in -1c +.SS "Protected Attributes" + +.in +1c +.ti -1c +.RI "std::vector< \fBRange\fP > \fBbounds\fP" +.br +.RI "\fIrange (min and max double value) for each objective \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef EOFitness::fitness_traits \fBtraits\fP" +.br +.RI "\fIfitness traits \fP" +.in -1c +.SS "Classes" + +.in +1c +.ti -1c +.RI "class \fBRange\fP" +.br +.RI "\fIPrivate class to represent the bounds. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class eoBinaryQualityIndicator< EOFitness >" +Functor Binary quality indicator Binary performance measure to use in the replacement selection process of IBEA (Indicator-Based Evolutionary Algorithm) Of course, EOFitness needs to be an \fBeoParetoFitness\fP object. +.PP +Definition at line 39 of file eoBinaryQualityIndicator.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBeoBinaryQualityIndicator\fP< EOFitness >::setBounds (const unsigned _iObj, const double _min, const double _max)\fC [inline]\fP" +.PP +set the bounds for objective _iObj +.PP +\fBParameters:\fP +.RS 4 +\fIunsigned\fP _iObj the index of the objective +.br +\fIdouble\fP _min the minimum value +.br +\fIdouble\fP _max the maximum value +.RE +.PP + +.PP +Definition at line 62 of file eoBinaryQualityIndicator.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoBinaryQualityIndicator_Range.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoBinaryQualityIndicator_Range.3 new file mode 100644 index 000000000..58a342dda --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoBinaryQualityIndicator_Range.3 @@ -0,0 +1,55 @@ +.TH "eoBinaryQualityIndicator::Range" 3 "22 Dec 2006" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoBinaryQualityIndicator::Range \- Private class to represent the bounds. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBRange\fP ()" +.br +.ti -1c +.RI "\fBRange\fP (const double _min, const double _max)" +.br +.ti -1c +.RI "double \fBminimum\fP ()" +.br +.ti -1c +.RI "double \fBmaximum\fP ()" +.br +.ti -1c +.RI "double \fBrange\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "double \fBmin\fP" +.br +.ti -1c +.RI "double \fBmax\fP" +.br +.ti -1c +.RI "double \fBr\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class eoBinaryQualityIndicator< EOFitness >::Range" +Private class to represent the bounds. +.PP +Definition at line 73 of file eoBinaryQualityIndicator.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoIBEA.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoIBEA.3 new file mode 100644 index 000000000..c476420d4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoIBEA.3 @@ -0,0 +1,62 @@ +.TH "eoIBEA" 3 "22 Dec 2006" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoIBEA \- Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoPerf2WorthCached< EOT, double >\fP. +.PP +Inherited by \fBeoIBEASorting< EOT, Fitness >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBeoIBEA\fP (\fBeoBinaryQualityIndicator\fP< Fitness > *_I)" +.br +.ti -1c +.RI "void \fBcalculate_worths\fP (const \fBeoPop\fP< EOT > &_pop)" +.br +.RI "\fImapping \fP" +.in -1c +.SS "Protected Attributes" + +.in +1c +.ti -1c +.RI "\fBeoBinaryQualityIndicator\fP< Fitness > * \fBI\fP" +.br +.RI "\fIbinary quality indicator to use in the selection process \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class eoIBEA< EOT, Fitness >" +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm). +.PP +Definition at line 38 of file eoIBEA.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBeoIBEA\fP< EOT, Fitness >::calculate_worths (const \fBeoPop\fP< EOT > & _pop)\fC [inline, virtual]\fP" +.PP +mapping +.PP +\fBParameters:\fP +.RS 4 +\fIconst\fP eoPop& _pop the population +.RE +.PP + +.PP +Implements \fBeoPerf2WorthCached< EOT, double >\fP. +.PP +Definition at line 56 of file eoIBEA.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoIBEAAvgSorting.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoIBEAAvgSorting.3 new file mode 100644 index 000000000..9261a32dd --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoIBEAAvgSorting.3 @@ -0,0 +1,101 @@ +.TH "eoIBEAAvgSorting" 3 "22 Dec 2006" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoIBEAAvgSorting \- Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty using averaged values for each objective Follow the idea presented in the Deb & Gupta paper 'Searching for Robust Pareto-Optimal Solutions in Multi-Objective Optimization', 2005 Of course, the fitness of an individual needs to be an eoStochasticParetoFitness object. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoIBEA< EOT, FitnessEval >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBeoIBEAAvgSorting\fP (\fBeoBinaryQualityIndicator\fP< FitnessEval > *_I, const double _kappa)" +.br +.RI "\fIconstructor \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBsetBounds\fP (const \fBeoPop\fP< EOT > &_pop)" +.br +.RI "\fIcomputation and setting of the bounds for each objective \fP" +.ti -1c +.RI "void \fBfitnesses\fP (const \fBeoPop\fP< EOT > &_pop)" +.br +.RI "\fIcomputation and setting of the fitness for each individual of the population \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "double \fBkappa\fP" +.br +.RI "\fIscaling factor kappa \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class eoIBEAAvgSorting< EOT, FitnessEval >" +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty using averaged values for each objective Follow the idea presented in the Deb & Gupta paper 'Searching for Robust Pareto-Optimal Solutions in Multi-Objective Optimization', 2005 Of course, the fitness of an individual needs to be an eoStochasticParetoFitness object. +.PP +Definition at line 373 of file eoIBEA.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBeoIBEAAvgSorting\fP< EOT, FitnessEval >::\fBeoIBEAAvgSorting\fP (\fBeoBinaryQualityIndicator\fP< FitnessEval > * _I, const double _kappa)\fC [inline]\fP" +.PP +constructor +.PP +\fBParameters:\fP +.RS 4 +\fIeoBinaryQualityIndicator*\fP _I the binary quality indicator to use in the selection process +.br +\fIdouble\fP _kappa scaling factor kappa +.RE +.PP + +.PP +Definition at line 385 of file eoIBEA.h. +.PP +References eoIBEAAvgSorting< EOT, FitnessEval >::kappa. +.SH "Member Function Documentation" +.PP +.SS "template void \fBeoIBEAAvgSorting\fP< EOT, FitnessEval >::setBounds (const \fBeoPop\fP< EOT > & _pop)\fC [inline, private, virtual]\fP" +.PP +computation and setting of the bounds for each objective +.PP +\fBParameters:\fP +.RS 4 +\fIconst\fP eoPop& _pop the population +.RE +.PP + +.PP +Implements \fBeoIBEA< EOT, FitnessEval >\fP. +.PP +Definition at line 413 of file eoIBEA.h. +.SS "template void \fBeoIBEAAvgSorting\fP< EOT, FitnessEval >::fitnesses (const \fBeoPop\fP< EOT > & _pop)\fC [inline, private, virtual]\fP" +.PP +computation and setting of the fitness for each individual of the population +.PP +\fBParameters:\fP +.RS 4 +\fIconst\fP eoPop& _pop the population +.RE +.PP + +.PP +Implements \fBeoIBEA< EOT, FitnessEval >\fP. +.PP +Definition at line 445 of file eoIBEA.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoIBEASorting.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoIBEASorting.3 new file mode 100644 index 000000000..19388dc1c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoIBEASorting.3 @@ -0,0 +1,101 @@ +.TH "eoIBEASorting" 3 "22 Dec 2006" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoIBEASorting \- Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) without uncertainty Adapted from the Zitzler and Künzli paper 'Indicator-Based Selection in Multiobjective Search' (2004) Of course, Fitness needs to be an \fBeoParetoFitness\fP object. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoIBEA< EOT, Fitness >< EOT, Fitness >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBeoIBEASorting\fP (\fBeoBinaryQualityIndicator\fP< Fitness > *_I, const double _kappa)" +.br +.RI "\fIconstructor \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBsetBounds\fP (const \fBeoPop\fP< EOT > &_pop)" +.br +.RI "\fIcomputation and setting of the bounds for each objective \fP" +.ti -1c +.RI "void \fBfitnesses\fP (const \fBeoPop\fP< EOT > &_pop)" +.br +.RI "\fIcomputation and setting of the fitness for each individual of the population \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "double \fBkappa\fP" +.br +.RI "\fIscaling factor kappa \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class eoIBEASorting< EOT, Fitness >" +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) without uncertainty Adapted from the Zitzler and Künzli paper 'Indicator-Based Selection in Multiobjective Search' (2004) Of course, Fitness needs to be an \fBeoParetoFitness\fP object. +.PP +Definition at line 94 of file eoIBEA.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBeoIBEASorting\fP< EOT, Fitness >::\fBeoIBEASorting\fP (\fBeoBinaryQualityIndicator\fP< Fitness > * _I, const double _kappa)\fC [inline]\fP" +.PP +constructor +.PP +\fBParameters:\fP +.RS 4 +\fIeoBinaryQualityIndicator*\fP _I the binary quality indicator to use in the selection process +.br +\fIdouble\fP _kappa scaling factor kappa +.RE +.PP + +.PP +Definition at line 106 of file eoIBEA.h. +.PP +References eoIBEASorting< EOT, Fitness >::kappa. +.SH "Member Function Documentation" +.PP +.SS "template void \fBeoIBEASorting\fP< EOT, Fitness >::setBounds (const \fBeoPop\fP< EOT > & _pop)\fC [inline, private, virtual]\fP" +.PP +computation and setting of the bounds for each objective +.PP +\fBParameters:\fP +.RS 4 +\fIconst\fP eoPop& _pop the population +.RE +.PP + +.PP +Implements \fBeoIBEA< EOT, Fitness >\fP. +.PP +Definition at line 134 of file eoIBEA.h. +.SS "template void \fBeoIBEASorting\fP< EOT, Fitness >::fitnesses (const \fBeoPop\fP< EOT > & _pop)\fC [inline, private, virtual]\fP" +.PP +computation and setting of the fitness for each individual of the population +.PP +\fBParameters:\fP +.RS 4 +\fIconst\fP eoPop& _pop the population +.RE +.PP + +.PP +Implements \fBeoIBEA< EOT, Fitness >\fP. +.PP +Definition at line 162 of file eoIBEA.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoIBEAStochSorting.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoIBEAStochSorting.3 new file mode 100644 index 000000000..9f919b4f0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoIBEAStochSorting.3 @@ -0,0 +1,97 @@ +.TH "eoIBEAStochSorting" 3 "22 Dec 2006" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoIBEAStochSorting \- Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty Adapted from the Basseur and Zitzler paper 'Handling Uncertainty in Indicator-Based Multiobjective Optimization' (2006) Of course, the fitness of an individual needs to be an eoStochasticParetoFitness object. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoIBEA< EOT, FitnessEval >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBeoIBEAStochSorting\fP (\fBeoBinaryQualityIndicator\fP< FitnessEval > *_I)" +.br +.RI "\fIconstructor \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBsetBounds\fP (const \fBeoPop\fP< EOT > &_pop)" +.br +.RI "\fIcomputation and setting of the bounds for each objective \fP" +.ti -1c +.RI "void \fBfitnesses\fP (const \fBeoPop\fP< EOT > &_pop)" +.br +.RI "\fIcomputation and setting of the fitness for each individual of the population \fP" +.in -1c +.SS "Static Private Member Functions" + +.in +1c +.ti -1c +.RI "static double \fBzero\fP ()" +.br +.RI "\fIapproximated zero value \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class eoIBEAStochSorting< EOT, FitnessEval >" +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty Adapted from the Basseur and Zitzler paper 'Handling Uncertainty in Indicator-Based Multiobjective Optimization' (2006) Of course, the fitness of an individual needs to be an eoStochasticParetoFitness object. +.PP +Definition at line 215 of file eoIBEA.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBeoIBEAStochSorting\fP< EOT, FitnessEval >::\fBeoIBEAStochSorting\fP (\fBeoBinaryQualityIndicator\fP< FitnessEval > * _I)\fC [inline]\fP" +.PP +constructor +.PP +\fBParameters:\fP +.RS 4 +\fIeoBinaryQualityIndicator*\fP _I the binary quality indicator to use in the selection process +.RE +.PP + +.PP +Definition at line 226 of file eoIBEA.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBeoIBEAStochSorting\fP< EOT, FitnessEval >::setBounds (const \fBeoPop\fP< EOT > & _pop)\fC [inline, private, virtual]\fP" +.PP +computation and setting of the bounds for each objective +.PP +\fBParameters:\fP +.RS 4 +\fIconst\fP eoPop& _pop the population +.RE +.PP + +.PP +Implements \fBeoIBEA< EOT, FitnessEval >\fP. +.PP +Definition at line 258 of file eoIBEA.h. +.SS "template void \fBeoIBEAStochSorting\fP< EOT, FitnessEval >::fitnesses (const \fBeoPop\fP< EOT > & _pop)\fC [inline, private, virtual]\fP" +.PP +computation and setting of the fitness for each individual of the population +.PP +\fBParameters:\fP +.RS 4 +\fIconst\fP eoPop& _pop the population +.RE +.PP + +.PP +Implements \fBeoIBEA< EOT, FitnessEval >\fP. +.PP +Definition at line 286 of file eoIBEA.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoParetoEuclidDist.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoParetoEuclidDist.3 new file mode 100644 index 000000000..021ac7075 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoParetoEuclidDist.3 @@ -0,0 +1,28 @@ +.TH "eoParetoEuclidDist" 3 "22 Dec 2006" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoParetoEuclidDist \- +.SH SYNOPSIS +.br +.PP +Inherits \fBeoParetoPhenDist< EOT, DistType >< EOT, DistType >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "DistType \fBoperator()\fP (const EOT &eopf1, const EOT &eopf2)" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class eoParetoEuclidDist< EOT, DistType >" + +.PP +Definition at line 15 of file eoParetoPhenDist.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoParetoPhenDist.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoParetoPhenDist.3 new file mode 100644 index 000000000..e901eec51 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoParetoPhenDist.3 @@ -0,0 +1,21 @@ +.TH "eoParetoPhenDist" 3 "22 Dec 2006" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoParetoPhenDist \- +.SH SYNOPSIS +.br +.PP +Inherited by \fBeoParetoEuclidDist< EOT, DistType >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class eoParetoPhenDist< EOT, DistType >" + +.PP +Definition at line 3 of file eoParetoPhenDist.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoParetoSharing.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoParetoSharing.3 new file mode 100644 index 000000000..080787919 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoParetoSharing.3 @@ -0,0 +1,64 @@ +.TH "eoParetoSharing" 3 "22 Dec 2006" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoParetoSharing \- +.SH SYNOPSIS +.br +.PP +Inherits \fBeoPerf2Worth< EOT, worthT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBeoParetoSharing\fP (double _nicheSize)" +.br +.ti -1c +.RI "\fBeoParetoSharing\fP (double _nicheSize, \fBeoParetoPhenDist\fP< EOT, worthT > &_dist)" +.br +.ti -1c +.RI "void \fBoperator\fP ()(const \fBeoPop\fP< EOT > &_pop)" +.br +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "double \fBsh\fP (double \fBdist\fP, double \fBDmax\fP)" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "double \fBnicheSize\fP" +.br +.ti -1c +.RI "\fBeoParetoPhenDist\fP< EOT, worthT > & \fBdist\fP" +.br +.ti -1c +.RI "\fBeoParetoEuclidDist\fP< EOT > \fBeuc_dist\fP" +.br +.ti -1c +.RI "double \fBDmax\fP" +.br +.in -1c +.SS "Classes" + +.in +1c +.ti -1c +.RI "class \fBdMatrix\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class eoParetoSharing< EOT, worthT >" + +.PP +Definition at line 9 of file eoParetoSharing.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoParetoSharing_dMatrix.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoParetoSharing_dMatrix.3 new file mode 100644 index 000000000..5ffca64b3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/eoParetoSharing_dMatrix.3 @@ -0,0 +1,36 @@ +.TH "eoParetoSharing::dMatrix" 3 "22 Dec 2006" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoParetoSharing::dMatrix \- +.SH SYNOPSIS +.br +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBdMatrix\fP (unsigned _s)" +.br +.ti -1c +.RI "void \fBprintOn\fP (std::ostream &_os)" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "unsigned \fBrSize\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class eoParetoSharing< EOT, worthT >::dMatrix" + +.PP +Definition at line 99 of file eoParetoSharing.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoAdditiveBinaryEpsilonIndicator.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoAdditiveBinaryEpsilonIndicator.3 new file mode 100644 index 000000000..1766b226a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoAdditiveBinaryEpsilonIndicator.3 @@ -0,0 +1,91 @@ +.TH "moeoAdditiveBinaryEpsilonIndicator" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoAdditiveBinaryEpsilonIndicator \- Functor Additive binary epsilon indicator for \fBeoParetoFitness\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoBinaryQualityIndicator< EOFitness >< EOFitness >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoAdditiveBinaryEpsilonIndicator\fP ()" +.br +.RI "\fIconstructor \fP" +.ti -1c +.RI "double \fBoperator()\fP (const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2)" +.br +.RI "\fIcomputation of the maximum epsilon value by which individual _eo1 must be decreased in all objectives such that individual _eo2 is weakly dominated (do not forget to set the bounds before the call of this function) \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef EOFitness::fitness_traits \fBtraits\fP" +.br +.RI "\fIfitness traits \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "double \fBepsilonValue\fP (const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2, const unsigned _iObj)" +.br +.RI "\fIcomputation of the epsilon value by which individual _eo1 must be decreased in the objective _iObj such that individual _eo2 is weakly dominated \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoAdditiveBinaryEpsilonIndicator< EOFitness >" +Functor Additive binary epsilon indicator for \fBeoParetoFitness\fP. +.PP +Definition at line 115 of file moeoBinaryQualityIndicator.h. +.SH "Member Function Documentation" +.PP +.SS "template double \fBmoeoAdditiveBinaryEpsilonIndicator\fP< EOFitness >::operator() (const EOFitness & _fitness_eo1, const EOFitness & _fitness_eo2)\fC [inline]\fP" +.PP +computation of the maximum epsilon value by which individual _eo1 must be decreased in all objectives such that individual _eo2 is weakly dominated (do not forget to set the bounds before the call of this function) +.PP +\fBParameters:\fP +.RS 4 +\fIEOFitness\fP & _fitness_eo1 the fitness of the first individual +.br +\fIEOFitness\fP & _fitness_eo2 the fitness of the second individual +.RE +.PP + +.PP +Definition at line 138 of file moeoBinaryQualityIndicator.h. +.PP +References moeoAdditiveBinaryEpsilonIndicator< EOFitness >::epsilonValue(). +.SS "template double \fBmoeoAdditiveBinaryEpsilonIndicator\fP< EOFitness >::epsilonValue (const EOFitness & _fitness_eo1, const EOFitness & _fitness_eo2, const unsigned _iObj)\fC [inline, private]\fP" +.PP +computation of the epsilon value by which individual _eo1 must be decreased in the objective _iObj such that individual _eo2 is weakly dominated +.PP +\fBParameters:\fP +.RS 4 +\fIEOFitness\fP & _fitness_eo1 the fitness of the first individual +.br +\fIEOFitness\fP & _fitness_eo2 the fitness of the second individual +.br +\fIunsigned\fP _iObj the index of the objective +.RE +.PP + +.PP +Definition at line 170 of file moeoBinaryQualityIndicator.h. +.PP +References moeoBinaryQualityIndicator< EOFitness >::bounds. +.PP +Referenced by moeoAdditiveBinaryEpsilonIndicator< EOFitness >::operator()(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoArchive.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoArchive.3 new file mode 100644 index 000000000..e1bf41ffa --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoArchive.3 @@ -0,0 +1,111 @@ +.TH "moeoArchive" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoArchive \- An archive is a secondary population that stores non-dominated solutions. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoPop< EOT >< EOT >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef EOT::Fitness \fBEOFitness\fP" +.br +.RI "\fIThe fitness type of a solution. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "bool \fBdominates\fP (const \fBEOFitness\fP &_fit) const" +.br +.RI "\fIReturns true if the current archive dominates _fit. \fP" +.ti -1c +.RI "bool \fBcontains\fP (const \fBEOFitness\fP &_fit) const" +.br +.RI "\fIReturns true if the current archive contains _fit. \fP" +.ti -1c +.RI "void \fBupdate\fP (const EOT &_eo)" +.br +.RI "\fIUpdates the archive with a given individual _eo. \fP" +.ti -1c +.RI "void \fBupdate\fP (const \fBeoPop\fP< EOT > &_pop)" +.br +.RI "\fIUpdates the archive with a given population _pop. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoArchive< EOT >" +An archive is a secondary population that stores non-dominated solutions. +.PP +Definition at line 21 of file moeoArchive.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoeoArchive\fP< EOT >::dominates (const \fBEOFitness\fP & _fit) const\fC [inline]\fP" +.PP +Returns true if the current archive dominates _fit. +.PP +\fBParameters:\fP +.RS 4 +\fI_fit\fP the (Pareto) fitness to compare with the current archive +.RE +.PP + +.PP +Definition at line 39 of file moeoArchive.h. +.PP +Referenced by moeoArchive< EOT >::update(). +.SS "template bool \fBmoeoArchive\fP< EOT >::contains (const \fBEOFitness\fP & _fit) const\fC [inline]\fP" +.PP +Returns true if the current archive contains _fit. +.PP +\fBParameters:\fP +.RS 4 +\fI_fit\fP the (Pareto) fitness to search within the current archive +.RE +.PP + +.PP +Definition at line 51 of file moeoArchive.h. +.SS "template void \fBmoeoArchive\fP< EOT >::update (const EOT & _eo)\fC [inline]\fP" +.PP +Updates the archive with a given individual _eo. +.PP +\fBParameters:\fP +.RS 4 +\fI_eo\fP the given individual +.RE +.PP + +.PP +Definition at line 63 of file moeoArchive.h. +.PP +References moeoArchive< EOT >::dominates(). +.PP +Referenced by moeoArchive< EOT >::update(). +.SS "template void \fBmoeoArchive\fP< EOT >::update (const \fBeoPop\fP< EOT > & _pop)\fC [inline]\fP" +.PP +Updates the archive with a given population _pop. +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP the given population +.RE +.PP + +.PP +Definition at line 98 of file moeoArchive.h. +.PP +References moeoArchive< EOT >::update(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoArchiveFitnessSavingUpdater.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoArchiveFitnessSavingUpdater.3 new file mode 100644 index 000000000..2110dd8f7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoArchiveFitnessSavingUpdater.3 @@ -0,0 +1,75 @@ +.TH "moeoArchiveFitnessSavingUpdater" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoArchiveFitnessSavingUpdater \- This class allows to save the fitnesses of solutions contained in an archive into a file at each generation. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoUpdater\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoArchiveFitnessSavingUpdater\fP (\fBmoeoArchive\fP< EOT > &_arch, const std::string &_filename='Res/Arch', int _id=-1)" +.br +.RI "\fICtor. \fP" +.ti -1c +.RI "void \fBoperator()\fP ()" +.br +.RI "\fISaves the fitness of the archive's members into the file. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoeoArchive\fP< EOT > & \fBarch\fP" +.br +.RI "\fIlocal archive \fP" +.ti -1c +.RI "std::string \fBfilename\fP" +.br +.RI "\fItarget filename \fP" +.ti -1c +.RI "int \fBid\fP" +.br +.RI "\fIown ID \fP" +.ti -1c +.RI "unsigned \fBcounter\fP" +.br +.RI "\fIcounter \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoArchiveFitnessSavingUpdater< EOT >" +This class allows to save the fitnesses of solutions contained in an archive into a file at each generation. +.PP +Definition at line 27 of file moeoArchiveFitnessSavingUpdater.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoeoArchiveFitnessSavingUpdater\fP< EOT >::\fBmoeoArchiveFitnessSavingUpdater\fP (\fBmoeoArchive\fP< EOT > & _arch, const std::string & _filename = \fC'Res/Arch'\fP, int _id = \fC-1\fP)\fC [inline]\fP" +.PP +Ctor. +.PP +\fBParameters:\fP +.RS 4 +\fI_arch\fP local archive +.br +\fI_filename\fP target filename +.br +\fI_id\fP own ID +.RE +.PP + +.PP +Definition at line 37 of file moeoArchiveFitnessSavingUpdater.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoArchiveUpdater.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoArchiveUpdater.3 new file mode 100644 index 000000000..a0e7c74e9 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoArchiveUpdater.3 @@ -0,0 +1,65 @@ +.TH "moeoArchiveUpdater" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoArchiveUpdater \- This class allows to update the archive at each generation with newly found non-dominated solutions. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoUpdater\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoArchiveUpdater\fP (\fBmoeoArchive\fP< EOT > &_arch, const \fBeoPop\fP< EOT > &_pop)" +.br +.RI "\fICtor. \fP" +.ti -1c +.RI "void \fBoperator()\fP ()" +.br +.RI "\fIUpdates the archive with newly found non-dominated solutions contained in the main population. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoeoArchive\fP< EOT > & \fBarch\fP" +.br +.RI "\fIthe archive of non-dominated solutions \fP" +.ti -1c +.RI "const \fBeoPop\fP< EOT > & \fBpop\fP" +.br +.RI "\fIthe main population \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoArchiveUpdater< EOT >" +This class allows to update the archive at each generation with newly found non-dominated solutions. +.PP +Definition at line 23 of file moeoArchiveUpdater.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoeoArchiveUpdater\fP< EOT >::\fBmoeoArchiveUpdater\fP (\fBmoeoArchive\fP< EOT > & _arch, const \fBeoPop\fP< EOT > & _pop)\fC [inline]\fP" +.PP +Ctor. +.PP +\fBParameters:\fP +.RS 4 +\fI_arch\fP an archive of non-dominated solutions +.br +\fI_pop\fP the main population +.RE +.PP + +.PP +Definition at line 32 of file moeoArchiveUpdater.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoBM.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoBM.3 new file mode 100644 index 000000000..dfa636828 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoBM.3 @@ -0,0 +1,27 @@ +.TH "moeoBM" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoBM \- Base class for binary metrics. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< A1, A2, R >< A1, A2, R >\fP, and \fBmoeoMetric\fP. +.PP +Inherited by \fBmoeoSolutionVsSolutionBM< EOT, R, EOFitness >\fP, \fBmoeoVectorVsSolutionBM< EOT, R, EOFitness >\fP, \fBmoeoVectorVsVectorBM< EOT, R, EOFitness >\fP, and \fBmoeoVectorVsVectorBM< EOT, double >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moeoBM< A1, A2, R >" +Base class for binary metrics. +.PP +Definition at line 38 of file moeoMetric.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoBinaryHypervolumeIndicator.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoBinaryHypervolumeIndicator.3 new file mode 100644 index 000000000..39404e2e1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoBinaryHypervolumeIndicator.3 @@ -0,0 +1,169 @@ +.TH "moeoBinaryHypervolumeIndicator" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoBinaryHypervolumeIndicator \- Functor Binary hypervolume indicator for \fBeoParetoFitness\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoBinaryQualityIndicator< EOFitness >< EOFitness >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoBinaryHypervolumeIndicator\fP (double _rho)" +.br +.RI "\fIconstructor \fP" +.ti -1c +.RI "double \fBoperator()\fP (const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2)" +.br +.RI "\fIindicator value of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 (don't forget to set the bounds before the call of this function) \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef EOFitness::fitness_traits \fBtraits\fP" +.br +.RI "\fIfitness traits \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "double \fBhypervolumeIndicatorValue\fP (const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2, const unsigned _iObj, const bool _flag=false)" +.br +.RI "\fIcomputation of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 \fP" +.ti -1c +.RI "double \fBhypervolumeIndicatorValueMin\fP (const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2, const unsigned _iObj, const bool _flag)" +.br +.RI "\fIcomputation of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 in case of a minimization on the objective _iObj \fP" +.ti -1c +.RI "double \fBhypervolumeIndicatorValueMax\fP (const EOFitness &_fitness_eo1, const EOFitness &_fitness_eo2, const unsigned _iObj, const bool _flag)" +.br +.RI "\fIcomputation of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 in case of a maximization on the objective _iObj \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "double \fBrho\fP" +.br +.RI "\fIreference point for the hypervolume calculation \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoBinaryHypervolumeIndicator< EOFitness >" +Functor Binary hypervolume indicator for \fBeoParetoFitness\fP. +.PP +Definition at line 206 of file moeoBinaryQualityIndicator.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoeoBinaryHypervolumeIndicator\fP< EOFitness >::\fBmoeoBinaryHypervolumeIndicator\fP (double _rho)\fC [inline]\fP" +.PP +constructor +.PP +\fBParameters:\fP +.RS 4 +\fIdouble\fP _rho reference point for the hypervolume calculation (rho must not be smaller than 1) +.RE +.PP + +.PP +Definition at line 216 of file moeoBinaryQualityIndicator.h. +.PP +References moeoBinaryHypervolumeIndicator< EOFitness >::rho. +.SH "Member Function Documentation" +.PP +.SS "template double \fBmoeoBinaryHypervolumeIndicator\fP< EOFitness >::operator() (const EOFitness & _fitness_eo1, const EOFitness & _fitness_eo2)\fC [inline]\fP" +.PP +indicator value of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 (don't forget to set the bounds before the call of this function) +.PP +\fBParameters:\fP +.RS 4 +\fIEOFitness\fP & _fitness_eo1 the fitness of the first individual +.br +\fIEOFitness\fP & _fitness_eo2 the fitness of the second individual +.RE +.PP + +.PP +Definition at line 239 of file moeoBinaryQualityIndicator.h. +.PP +References moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValue(). +.SS "template double \fBmoeoBinaryHypervolumeIndicator\fP< EOFitness >::hypervolumeIndicatorValue (const EOFitness & _fitness_eo1, const EOFitness & _fitness_eo2, const unsigned _iObj, const bool _flag = \fCfalse\fP)\fC [inline, private]\fP" +.PP +computation of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 +.PP +\fBParameters:\fP +.RS 4 +\fIEOFitness\fP & _fitness_eo1 the fitness of the first individual +.br +\fIEOFitness\fP & _fitness_eo2 the fitness of the second individual +.br +\fIunsigned\fP _iObj number of objectives (used for iteration) +.br +\fIbool\fP _flag = false (only used for iteration) +.RE +.PP + +.PP +Definition at line 274 of file moeoBinaryQualityIndicator.h. +.PP +References moeoBinaryQualityIndicator< EOFitness >::bounds, moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValueMax(), and moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValueMin(). +.PP +Referenced by moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValueMax(), moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValueMin(), and moeoBinaryHypervolumeIndicator< EOFitness >::operator()(). +.SS "template double \fBmoeoBinaryHypervolumeIndicator\fP< EOFitness >::hypervolumeIndicatorValueMin (const EOFitness & _fitness_eo1, const EOFitness & _fitness_eo2, const unsigned _iObj, const bool _flag)\fC [inline, private]\fP" +.PP +computation of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 in case of a minimization on the objective _iObj +.PP +\fBParameters:\fP +.RS 4 +\fIEOFitness\fP & _fitness_eo1 the fitness of the first individual +.br +\fIEOFitness\fP & _fitness_eo2 the fitness of the second individual +.br +\fIunsigned\fP _iObj index of the objective +.br +\fIbool\fP _flag (only used for iteration) +.RE +.PP + +.PP +Definition at line 309 of file moeoBinaryQualityIndicator.h. +.PP +References moeoBinaryQualityIndicator< EOFitness >::bounds, moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValue(), and moeoBinaryHypervolumeIndicator< EOFitness >::rho. +.PP +Referenced by moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValue(). +.SS "template double \fBmoeoBinaryHypervolumeIndicator\fP< EOFitness >::hypervolumeIndicatorValueMax (const EOFitness & _fitness_eo1, const EOFitness & _fitness_eo2, const unsigned _iObj, const bool _flag)\fC [inline, private]\fP" +.PP +computation of the hypervolume of the portion of the objective space that is dominated by individual _eo1 but not by individual _eo2 in case of a maximization on the objective _iObj +.PP +\fBParameters:\fP +.RS 4 +\fIEOFitness\fP & _fitness_eo1 the fitness of the first individual +.br +\fIEOFitness\fP & _fitness_eo2 the fitness of the second individual +.br +\fIunsigned\fP _iObj index of the objective +.br +\fIbool\fP _flag (only used for iteration) +.RE +.PP + +.PP +Definition at line 363 of file moeoBinaryQualityIndicator.h. +.PP +References moeoBinaryQualityIndicator< EOFitness >::bounds, moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValue(), and moeoBinaryHypervolumeIndicator< EOFitness >::rho. +.PP +Referenced by moeoBinaryHypervolumeIndicator< EOFitness >::hypervolumeIndicatorValue(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoBinaryMetricSavingUpdater.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoBinaryMetricSavingUpdater.3 new file mode 100644 index 000000000..a296fd8d2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoBinaryMetricSavingUpdater.3 @@ -0,0 +1,91 @@ +.TH "moeoBinaryMetricSavingUpdater" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoBinaryMetricSavingUpdater \- This class allows to save the progression of a binary metric comparing the fitness values of the current population (or archive) with the fitness values of the population (or archive) of the generation (n-1) into a file. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoUpdater\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef EOT::Fitness \fBEOFitness\fP" +.br +.RI "\fIThe fitness type of a solution. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoBinaryMetricSavingUpdater\fP (\fBmoeoVectorVsVectorBM\fP< EOT, double > &_metric, const \fBeoPop\fP< EOT > &_pop, std::string _filename)" +.br +.RI "\fICtor. \fP" +.ti -1c +.RI "void \fBoperator()\fP ()" +.br +.RI "\fISaves the metric's value for the current generation. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoeoVectorVsVectorBM\fP< EOT, double > & \fBmetric\fP" +.br +.RI "\fIbinary metric comparing two Pareto sets \fP" +.ti -1c +.RI "const \fBeoPop\fP< EOT > & \fBpop\fP" +.br +.RI "\fImain population \fP" +.ti -1c +.RI "\fBeoPop\fP< EOT > \fBoldPop\fP" +.br +.RI "\fI(n-1) population \fP" +.ti -1c +.RI "std::string \fBfilename\fP" +.br +.RI "\fItarget filename \fP" +.ti -1c +.RI "bool \fBfirstGen\fP" +.br +.RI "\fIis it the first generation ? \fP" +.ti -1c +.RI "unsigned \fBcounter\fP" +.br +.RI "\fIcounter \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoBinaryMetricSavingUpdater< EOT >" +This class allows to save the progression of a binary metric comparing the fitness values of the current population (or archive) with the fitness values of the population (or archive) of the generation (n-1) into a file. +.PP +Definition at line 26 of file moeoBinaryMetricSavingUpdater.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoeoBinaryMetricSavingUpdater\fP< EOT >::\fBmoeoBinaryMetricSavingUpdater\fP (\fBmoeoVectorVsVectorBM\fP< EOT, double > & _metric, const \fBeoPop\fP< EOT > & _pop, std::string _filename)\fC [inline]\fP" +.PP +Ctor. +.PP +\fBParameters:\fP +.RS 4 +\fI_metric\fP the binary metric comparing two Pareto sets +.br +\fI_pop\fP the main population +.br +\fI_filename\fP the target filename +.RE +.PP + +.PP +Definition at line 41 of file moeoBinaryMetricSavingUpdater.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoBinaryQualityIndicator.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoBinaryQualityIndicator.3 new file mode 100644 index 000000000..f289ce828 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoBinaryQualityIndicator.3 @@ -0,0 +1,83 @@ +.TH "moeoBinaryQualityIndicator" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoBinaryQualityIndicator \- Functor Binary quality indicator Binary performance measure to use in the replacement selection process of IBEA (Indicator-Based Evolutionary Algorithm) Of course, EOFitness needs to be an \fBeoParetoFitness\fP object. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< A1, A2, R >< const const EOFitness &, EOFitness &, double >\fP. +.PP +Inherited by \fBmoeoAdditiveBinaryEpsilonIndicator< EOFitness >\fP, and \fBmoeoBinaryHypervolumeIndicator< EOFitness >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoBinaryQualityIndicator\fP ()" +.br +.RI "\fIconstructor \fP" +.ti -1c +.RI "void \fBsetBounds\fP (const unsigned _iObj, const double _min, const double _max)" +.br +.RI "\fIset the bounds for objective _iObj \fP" +.in -1c +.SS "Protected Attributes" + +.in +1c +.ti -1c +.RI "std::vector< \fBRange\fP > \fBbounds\fP" +.br +.RI "\fIrange (min and max double value) for each objective \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef EOFitness::fitness_traits \fBtraits\fP" +.br +.RI "\fIfitness traits \fP" +.in -1c +.SS "Classes" + +.in +1c +.ti -1c +.RI "class \fBRange\fP" +.br +.RI "\fIPrivate class to represent the bounds. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoBinaryQualityIndicator< EOFitness >" +Functor Binary quality indicator Binary performance measure to use in the replacement selection process of IBEA (Indicator-Based Evolutionary Algorithm) Of course, EOFitness needs to be an \fBeoParetoFitness\fP object. +.PP +Definition at line 28 of file moeoBinaryQualityIndicator.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoeoBinaryQualityIndicator\fP< EOFitness >::setBounds (const unsigned _iObj, const double _min, const double _max)\fC [inline]\fP" +.PP +set the bounds for objective _iObj +.PP +\fBParameters:\fP +.RS 4 +\fIunsigned\fP _iObj the index of the objective +.br +\fIdouble\fP _min the minimum value +.br +\fIdouble\fP _max the maximum value +.RE +.PP + +.PP +Definition at line 51 of file moeoBinaryQualityIndicator.h. +.PP +Referenced by moeoIBEAAvgSorting< EOT, FitnessEval >::setBounds(), moeoIBEAStochSorting< EOT, FitnessEval >::setBounds(), and moeoIBEASorting< EOT, Fitness >::setBounds(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoBinaryQualityIndicator_Range.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoBinaryQualityIndicator_Range.3 new file mode 100644 index 000000000..56e95eb6c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoBinaryQualityIndicator_Range.3 @@ -0,0 +1,55 @@ +.TH "moeoBinaryQualityIndicator::Range" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoBinaryQualityIndicator::Range \- Private class to represent the bounds. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBRange\fP ()" +.br +.ti -1c +.RI "\fBRange\fP (const double _min, const double _max)" +.br +.ti -1c +.RI "double \fBminimum\fP ()" +.br +.ti -1c +.RI "double \fBmaximum\fP ()" +.br +.ti -1c +.RI "double \fBrange\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "double \fBmin\fP" +.br +.ti -1c +.RI "double \fBmax\fP" +.br +.ti -1c +.RI "double \fBr\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoBinaryQualityIndicator< EOFitness >::Range" +Private class to represent the bounds. +.PP +Definition at line 62 of file moeoBinaryQualityIndicator.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoCombinedMOLS.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoCombinedMOLS.3 new file mode 100644 index 000000000..c9f97bdc9 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoCombinedMOLS.3 @@ -0,0 +1,107 @@ +.TH "moeoCombinedMOLS" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoCombinedMOLS \- 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. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoMOLS< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoCombinedMOLS\fP (\fBeoEvalFunc\fP< EOT > &_eval, \fBmoeoMOLS\fP< EOT > &_first_ls)" +.br +.RI "\fICtor. \fP" +.ti -1c +.RI "void \fBadd\fP (\fBmoeoMOLS\fP< EOT > &_ls)" +.br +.RI "\fIAdds a new local search to combine. \fP" +.ti -1c +.RI "void \fBoperator()\fP (const EOT &_eo, \fBmoeoArchive\fP< EOT > &_arch)" +.br +.RI "\fIGives a new solution in order to explore the neigborhood. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBeoEvalFunc\fP< EOT > & \fBeval\fP" +.br +.RI "\fIthe full evaluator of a solution \fP" +.ti -1c +.RI "std::vector< \fBmoeoMOLS\fP< EOT > * > \fBcombinedMOLS\fP" +.br +.RI "\fIthe vector that contains the combined MOLS \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoCombinedMOLS< EOT >" +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. +.PP +Definition at line 24 of file moeoCombinedMOLS.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoeoCombinedMOLS\fP< EOT >::\fBmoeoCombinedMOLS\fP (\fBeoEvalFunc\fP< EOT > & _eval, \fBmoeoMOLS\fP< EOT > & _first_ls)\fC [inline]\fP" +.PP +Ctor. +.PP +\fBParameters:\fP +.RS 4 +\fI_eval\fP the full evaluator of a solution +.br +\fI_first_ls\fP the first multi-objective local search to add +.RE +.PP + +.PP +Definition at line 33 of file moeoCombinedMOLS.h. +.PP +References moeoCombinedMOLS< EOT >::combinedMOLS. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoeoCombinedMOLS\fP< EOT >::add (\fBmoeoMOLS\fP< EOT > & _ls)\fC [inline]\fP" +.PP +Adds a new local search to combine. +.PP +\fBParameters:\fP +.RS 4 +\fI_ls\fP the multi-objective local search to add +.RE +.PP + +.PP +Definition at line 43 of file moeoCombinedMOLS.h. +.PP +References moeoCombinedMOLS< EOT >::combinedMOLS. +.SS "template void \fBmoeoCombinedMOLS\fP< EOT >::operator() (const EOT & _eo, \fBmoeoArchive\fP< EOT > & _arch)\fC [inline, virtual]\fP" +.PP +Gives a new solution in order to explore the neigborhood. +.PP +The new non-dominated solutions are added to the archive +.PP +\fBParameters:\fP +.RS 4 +\fI_eo\fP the solution +.br +\fI_arch\fP the archive of non-dominated solutions +.RE +.PP + +.PP +Implements \fBeoBF< const EOT &, moeoArchive< EOT > &, void >\fP. +.PP +Definition at line 54 of file moeoCombinedMOLS.h. +.PP +References moeoCombinedMOLS< EOT >::combinedMOLS, and moeoCombinedMOLS< EOT >::eval. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoContributionMetric.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoContributionMetric.3 new file mode 100644 index 000000000..c4c472986 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoContributionMetric.3 @@ -0,0 +1,125 @@ +.TH "moeoContributionMetric" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoContributionMetric \- The contribution metric evaluates the proportion of non-dominated solutions given by a Pareto set relatively to another Pareto set. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoVectorVsVectorBM< EOT, double >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef EOT::Fitness \fBEOFitness\fP" +.br +.RI "\fIThe fitness type of a solution. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "double \fBoperator()\fP (const std::vector< \fBEOFitness\fP > &_set1, const std::vector< \fBEOFitness\fP > &_set2)" +.br +.RI "\fIReturns the contribution of the Pareto set '_set1' relatively to the Pareto set '_set2'. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "unsigned \fBcard_C\fP (const std::vector< \fBEOFitness\fP > &_set1, const std::vector< \fBEOFitness\fP > &_set2)" +.br +.RI "\fIReturns the number of solutions both in '_set1' and '_set2'. \fP" +.ti -1c +.RI "unsigned \fBcard_W\fP (const std::vector< \fBEOFitness\fP > &_set1, const std::vector< \fBEOFitness\fP > &_set2)" +.br +.RI "\fIReturns the number of solutions in '_set1' dominating at least one solution of '_set2'. \fP" +.ti -1c +.RI "unsigned \fBcard_N\fP (const std::vector< \fBEOFitness\fP > &_set1, const std::vector< \fBEOFitness\fP > &_set2)" +.br +.RI "\fIReturns the number of solutions in '_set1' having no relation of dominance with those from '_set2'. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoContributionMetric< EOT >" +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) +.PP +Definition at line 23 of file moeoContributionMetric.h. +.SH "Member Function Documentation" +.PP +.SS "template double \fBmoeoContributionMetric\fP< EOT >::operator() (const std::vector< \fBEOFitness\fP > & _set1, const std::vector< \fBEOFitness\fP > & _set2)\fC [inline]\fP" +.PP +Returns the contribution of the Pareto set '_set1' relatively to the Pareto set '_set2'. +.PP +\fBParameters:\fP +.RS 4 +\fI_set1\fP the first Pareto set +.br +\fI_set2\fP the second Pareto set +.RE +.PP + +.PP +Definition at line 38 of file moeoContributionMetric.h. +.PP +References moeoContributionMetric< EOT >::card_C(), moeoContributionMetric< EOT >::card_N(), and moeoContributionMetric< EOT >::card_W(). +.SS "template unsigned \fBmoeoContributionMetric\fP< EOT >::card_C (const std::vector< \fBEOFitness\fP > & _set1, const std::vector< \fBEOFitness\fP > & _set2)\fC [inline, private]\fP" +.PP +Returns the number of solutions both in '_set1' and '_set2'. +.PP +\fBParameters:\fP +.RS 4 +\fI_set1\fP the first Pareto set +.br +\fI_set2\fP the second Pareto set +.RE +.PP + +.PP +Definition at line 57 of file moeoContributionMetric.h. +.PP +Referenced by moeoContributionMetric< EOT >::operator()(). +.SS "template unsigned \fBmoeoContributionMetric\fP< EOT >::card_W (const std::vector< \fBEOFitness\fP > & _set1, const std::vector< \fBEOFitness\fP > & _set2)\fC [inline, private]\fP" +.PP +Returns the number of solutions in '_set1' dominating at least one solution of '_set2'. +.PP +\fBParameters:\fP +.RS 4 +\fI_set1\fP the first Pareto set +.br +\fI_set2\fP the second Pareto set +.RE +.PP + +.PP +Definition at line 76 of file moeoContributionMetric.h. +.PP +Referenced by moeoContributionMetric< EOT >::operator()(). +.SS "template unsigned \fBmoeoContributionMetric\fP< EOT >::card_N (const std::vector< \fBEOFitness\fP > & _set1, const std::vector< \fBEOFitness\fP > & _set2)\fC [inline, private]\fP" +.PP +Returns the number of solutions in '_set1' having no relation of dominance with those from '_set2'. +.PP +\fBParameters:\fP +.RS 4 +\fI_set1\fP the first Pareto set +.br +\fI_set2\fP the second Pareto set +.RE +.PP + +.PP +Definition at line 95 of file moeoContributionMetric.h. +.PP +Referenced by moeoContributionMetric< EOT >::operator()(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoDisctinctElitistReplacement.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoDisctinctElitistReplacement.3 new file mode 100644 index 000000000..2388951f9 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoDisctinctElitistReplacement.3 @@ -0,0 +1,105 @@ +.TH "moeoDisctinctElitistReplacement" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoDisctinctElitistReplacement \- Same than \fBmoeoElitistReplacement\fP except that distinct individuals are privilegied. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoReplacement< EOT, WorthT >< EOT, WorthT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoDisctinctElitistReplacement\fP (\fBeoPerf2Worth\fP< EOT, WorthT > &_perf2worth)" +.br +.RI "\fIconstructor \fP" +.ti -1c +.RI "void \fBoperator()\fP (\fBeoPop\fP< EOT > &_parents, \fBeoPop\fP< EOT > &_offspring)" +.br +.RI "\fIreplacement - result in _parents \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBcreateNewPop\fP (\fBeoPop\fP< EOT > &_pop, unsigned _size)" +.br +.RI "\fIcreation of the new population of size _size \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBeoPerf2Worth\fP< EOT, WorthT > & \fBperf2worth\fP" +.br +.RI "\fIthe functor object to transform raw fitnesses into fitness for selection \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoDisctinctElitistReplacement< EOT, WorthT >" +Same than \fBmoeoElitistReplacement\fP except that distinct individuals are privilegied. +.PP +Definition at line 78 of file moeoReplacement.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoeoDisctinctElitistReplacement\fP< EOT, WorthT >::\fBmoeoDisctinctElitistReplacement\fP (\fBeoPerf2Worth\fP< EOT, WorthT > & _perf2worth)\fC [inline]\fP" +.PP +constructor +.PP +\fBParameters:\fP +.RS 4 +\fI_perf2worth\fP the functor class to transform raw fitnesses into fitness for selection +.RE +.PP + +.PP +Definition at line 87 of file moeoReplacement.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoeoDisctinctElitistReplacement\fP< EOT, WorthT >::operator() (\fBeoPop\fP< EOT > & _parents, \fBeoPop\fP< EOT > & _offspring)\fC [inline, virtual]\fP" +.PP +replacement - result in _parents +.PP +\fBParameters:\fP +.RS 4 +\fI_parents\fP parents population +.br +\fI_offspring\fP offspring population +.RE +.PP + +.PP +Implements \fBeoBF< eoPop< EOT > &, eoPop< EOT > &, void >\fP. +.PP +Definition at line 99 of file moeoReplacement.h. +.PP +References moeoDisctinctElitistReplacement< EOT, WorthT >::createNewPop(). +.SS "template void \fBmoeoDisctinctElitistReplacement\fP< EOT, WorthT >::createNewPop (\fBeoPop\fP< EOT > & _pop, unsigned _size)\fC [inline, private]\fP" +.PP +creation of the new population of size _size +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP the initial population (will be modified) +.br +\fI_size\fP the size of the population to create +.RE +.PP + +.PP +Definition at line 123 of file moeoReplacement.h. +.PP +References moeoDisctinctElitistReplacement< EOT, WorthT >::perf2worth, and eoPop< EOT >::swap(). +.PP +Referenced by moeoDisctinctElitistReplacement< EOT, WorthT >::operator()(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoElitistReplacement.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoElitistReplacement.3 new file mode 100644 index 000000000..5e1c4777d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoElitistReplacement.3 @@ -0,0 +1,77 @@ +.TH "moeoElitistReplacement" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoElitistReplacement \- Keep all the best individuals (almost cut-and-pasted from \fBeoNDPlusReplacement\fP, (c) Maarten Keijzer, Marc Schoenauer and GeNeura Team, 2002). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoReplacement< EOT, WorthT >< EOT, WorthT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoElitistReplacement\fP (\fBeoPerf2Worth\fP< EOT, WorthT > &_perf2worth)" +.br +.RI "\fIconstructor \fP" +.ti -1c +.RI "void \fBoperator()\fP (\fBeoPop\fP< EOT > &_parents, \fBeoPop\fP< EOT > &_offspring)" +.br +.RI "\fIreplacement - result in _parents \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBeoPerf2Worth\fP< EOT, WorthT > & \fBperf2worth\fP" +.br +.RI "\fIthe functor object to transform raw fitnesses into fitness for selection \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoElitistReplacement< EOT, WorthT >" +Keep all the best individuals (almost cut-and-pasted from \fBeoNDPlusReplacement\fP, (c) Maarten Keijzer, Marc Schoenauer and GeNeura Team, 2002). +.PP +Definition at line 35 of file moeoReplacement.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoeoElitistReplacement\fP< EOT, WorthT >::\fBmoeoElitistReplacement\fP (\fBeoPerf2Worth\fP< EOT, WorthT > & _perf2worth)\fC [inline]\fP" +.PP +constructor +.PP +\fBParameters:\fP +.RS 4 +\fI_perf2worth\fP the functor class to transform raw fitnesses into fitness for selection +.RE +.PP + +.PP +Definition at line 43 of file moeoReplacement.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoeoElitistReplacement\fP< EOT, WorthT >::operator() (\fBeoPop\fP< EOT > & _parents, \fBeoPop\fP< EOT > & _offspring)\fC [inline, virtual]\fP" +.PP +replacement - result in _parents +.PP +\fBParameters:\fP +.RS 4 +\fI_parents\fP parents population +.br +\fI_offspring\fP offspring population +.RE +.PP + +.PP +Implements \fBeoBF< eoPop< EOT > &, eoPop< EOT > &, void >\fP. +.PP +Definition at line 54 of file moeoReplacement.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoEntropyMetric.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoEntropyMetric.3 new file mode 100644 index 000000000..2cf1583d5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoEntropyMetric.3 @@ -0,0 +1,93 @@ +.TH "moeoEntropyMetric" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoEntropyMetric \- The entropy gives an idea of the diversity of a Pareto set relatively to another Pareto set. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoVectorVsVectorBM< EOT, double >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef EOT::Fitness \fBEOFitness\fP" +.br +.RI "\fIThe fitness type of a solution. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "double \fBoperator()\fP (const std::vector< \fBEOFitness\fP > &_set1, const std::vector< \fBEOFitness\fP > &_set2)" +.br +.RI "\fIReturns the entropy of the Pareto set '_set1' relatively to the Pareto set '_set2'. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBremoveDominated\fP (std::vector< \fBEOFitness\fP > &_f)" +.br +.ti -1c +.RI "void \fBprenormalize\fP (const std::vector< \fBEOFitness\fP > &_f)" +.br +.ti -1c +.RI "void \fBnormalize\fP (std::vector< \fBEOFitness\fP > &_f)" +.br +.ti -1c +.RI "void \fBcomputeUnion\fP (const std::vector< \fBEOFitness\fP > &_f1, const std::vector< \fBEOFitness\fP > &_f2, std::vector< \fBEOFitness\fP > &_f)" +.br +.ti -1c +.RI "unsigned \fBhowManyInNicheOf\fP (const std::vector< \fBEOFitness\fP > &_f, const \fBEOFitness\fP &_s, unsigned _size)" +.br +.ti -1c +.RI "double \fBeuclidianDistance\fP (const \fBEOFitness\fP &_set1, const \fBEOFitness\fP &_to, unsigned _deg=2)" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "std::vector< double > \fBvect_min_val\fP" +.br +.ti -1c +.RI "std::vector< double > \fBvect_max_val\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoEntropyMetric< EOT >" +The entropy gives an idea of the diversity of a Pareto set relatively to another Pareto set. + +(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) +.PP +Definition at line 23 of file moeoEntropyMetric.h. +.SH "Member Function Documentation" +.PP +.SS "template double \fBmoeoEntropyMetric\fP< EOT >::operator() (const std::vector< \fBEOFitness\fP > & _set1, const std::vector< \fBEOFitness\fP > & _set2)\fC [inline]\fP" +.PP +Returns the entropy of the Pareto set '_set1' relatively to the Pareto set '_set2'. +.PP +\fBParameters:\fP +.RS 4 +\fI_set1\fP the first Pareto set +.br +\fI_set2\fP the second Pareto set +.RE +.PP + +.PP +Definition at line 38 of file moeoEntropyMetric.h. +.PP +References moeoEntropyMetric< EOT >::computeUnion(), moeoEntropyMetric< EOT >::howManyInNicheOf(), moeoEntropyMetric< EOT >::normalize(), moeoEntropyMetric< EOT >::prenormalize(), and moeoEntropyMetric< EOT >::removeDominated(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoHybridMOLS.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoHybridMOLS.3 new file mode 100644 index 000000000..a417ee37f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoHybridMOLS.3 @@ -0,0 +1,77 @@ +.TH "moeoHybridMOLS" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoHybridMOLS \- 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. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoUpdater\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBeoHybridMOLS\fP (\fBeoContinue\fP< EOT > &_term, \fBeoSelect\fP< EOT > &_select, \fBmoeoMOLS\fP< EOT > &_mols, \fBmoeoArchive\fP< EOT > &_arch)" +.br +.RI "\fICtor. \fP" +.ti -1c +.RI "void \fBoperator()\fP ()" +.br +.RI "\fIApplies the multi-objective local search to selected individuals contained in the archive if the stopping criteria is not verified. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBeoContinue\fP< EOT > & \fBterm\fP" +.br +.RI "\fIstopping criteria \fP" +.ti -1c +.RI "\fBeoSelect\fP< EOT > & \fBselect\fP" +.br +.RI "\fIselector \fP" +.ti -1c +.RI "\fBmoeoMOLS\fP< EOT > & \fBmols\fP" +.br +.RI "\fImulti-objective local search \fP" +.ti -1c +.RI "\fBmoeoArchive\fP< EOT > & \fBarch\fP" +.br +.RI "\fIarchive \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoHybridMOLS< EOT >" +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. +.PP +Definition at line 27 of file moeoHybridMOLS.h. +.SH "Member Function Documentation" +.PP +.SS "template \fBmoeoHybridMOLS\fP< EOT >::eoHybridMOLS (\fBeoContinue\fP< EOT > & _term, \fBeoSelect\fP< EOT > & _select, \fBmoeoMOLS\fP< EOT > & _mols, \fBmoeoArchive\fP< EOT > & _arch)\fC [inline]\fP" +.PP +Ctor. +.PP +\fBParameters:\fP +.RS 4 +\fI_term\fP stopping criteria +.br +\fI_select\fP selector +.br +\fI_mols\fP a multi-objective local search +.br +\fI_arch\fP the archive +.RE +.PP + +.PP +Definition at line 38 of file moeoHybridMOLS.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoIBEA.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoIBEA.3 new file mode 100644 index 000000000..e2e07ddce --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoIBEA.3 @@ -0,0 +1,62 @@ +.TH "moeoIBEA" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoIBEA \- Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoPerf2WorthCached< EOT, double >\fP. +.PP +Inherited by \fBmoeoIBEASorting< EOT, Fitness >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoIBEA\fP (\fBmoeoBinaryQualityIndicator\fP< Fitness > *_I)" +.br +.ti -1c +.RI "void \fBcalculate_worths\fP (const \fBeoPop\fP< EOT > &_pop)" +.br +.RI "\fImapping \fP" +.in -1c +.SS "Protected Attributes" + +.in +1c +.ti -1c +.RI "\fBmoeoBinaryQualityIndicator\fP< Fitness > * \fBI\fP" +.br +.RI "\fIbinary quality indicator to use in the selection process \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoIBEA< EOT, Fitness >" +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm). +.PP +Definition at line 28 of file moeoIBEA.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoeoIBEA\fP< EOT, Fitness >::calculate_worths (const \fBeoPop\fP< EOT > & _pop)\fC [inline, virtual]\fP" +.PP +mapping +.PP +\fBParameters:\fP +.RS 4 +\fIconst\fP eoPop& _pop the population +.RE +.PP + +.PP +Implements \fBeoPerf2WorthCached< EOT, double >\fP. +.PP +Definition at line 46 of file moeoIBEA.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoIBEAAvgSorting.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoIBEAAvgSorting.3 new file mode 100644 index 000000000..85a679a29 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoIBEAAvgSorting.3 @@ -0,0 +1,105 @@ +.TH "moeoIBEAAvgSorting" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoIBEAAvgSorting \- Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty using averaged values for each objective Follow the idea presented in the Deb & Gupta paper 'Searching for Robust Pareto-Optimal Solutions in Multi-Objective Optimization', 2005 Of course, the fitness of an individual needs to be an eoStochasticParetoFitness object. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoIBEA< EOT, FitnessEval >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoIBEAAvgSorting\fP (\fBmoeoBinaryQualityIndicator\fP< FitnessEval > *_I, const double _kappa)" +.br +.RI "\fIconstructor \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBsetBounds\fP (const \fBeoPop\fP< EOT > &_pop)" +.br +.RI "\fIcomputation and setting of the bounds for each objective \fP" +.ti -1c +.RI "void \fBfitnesses\fP (const \fBeoPop\fP< EOT > &_pop)" +.br +.RI "\fIcomputation and setting of the fitness for each individual of the population \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "double \fBkappa\fP" +.br +.RI "\fIscaling factor kappa \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoIBEAAvgSorting< EOT, FitnessEval >" +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty using averaged values for each objective Follow the idea presented in the Deb & Gupta paper 'Searching for Robust Pareto-Optimal Solutions in Multi-Objective Optimization', 2005 Of course, the fitness of an individual needs to be an eoStochasticParetoFitness object. +.PP +Definition at line 361 of file moeoIBEA.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoeoIBEAAvgSorting\fP< EOT, FitnessEval >::\fBmoeoIBEAAvgSorting\fP (\fBmoeoBinaryQualityIndicator\fP< FitnessEval > * _I, const double _kappa)\fC [inline]\fP" +.PP +constructor +.PP +\fBParameters:\fP +.RS 4 +\fIeoBinaryQualityIndicator*\fP _I the binary quality indicator to use in the selection process +.br +\fIdouble\fP _kappa scaling factor kappa +.RE +.PP + +.PP +Definition at line 373 of file moeoIBEA.h. +.PP +References moeoIBEAAvgSorting< EOT, FitnessEval >::kappa. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoeoIBEAAvgSorting\fP< EOT, FitnessEval >::setBounds (const \fBeoPop\fP< EOT > & _pop)\fC [inline, private, virtual]\fP" +.PP +computation and setting of the bounds for each objective +.PP +\fBParameters:\fP +.RS 4 +\fIconst\fP eoPop& _pop the population +.RE +.PP + +.PP +Implements \fBmoeoIBEA< EOT, FitnessEval >\fP. +.PP +Definition at line 398 of file moeoIBEA.h. +.PP +References moeoIBEA< EOT, FitnessEval >::I, and moeoBinaryQualityIndicator< EOFitness >::setBounds(). +.SS "template void \fBmoeoIBEAAvgSorting\fP< EOT, FitnessEval >::fitnesses (const \fBeoPop\fP< EOT > & _pop)\fC [inline, private, virtual]\fP" +.PP +computation and setting of the fitness for each individual of the population +.PP +\fBParameters:\fP +.RS 4 +\fIconst\fP eoPop& _pop the population +.RE +.PP + +.PP +Implements \fBmoeoIBEA< EOT, FitnessEval >\fP. +.PP +Definition at line 431 of file moeoIBEA.h. +.PP +References moeoIBEAAvgSorting< EOT, FitnessEval >::kappa, and eoValueParam< std::vector< WorthT > >::value(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoIBEASorting.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoIBEASorting.3 new file mode 100644 index 000000000..708ee8cb2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoIBEASorting.3 @@ -0,0 +1,105 @@ +.TH "moeoIBEASorting" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoIBEASorting \- Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) without uncertainty Adapted from the Zitzler and Künzli paper 'Indicator-Based Selection in Multiobjective Search' (2004) Of course, Fitness needs to be an \fBeoParetoFitness\fP object. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoIBEA< EOT, Fitness >< EOT, Fitness >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoIBEASorting\fP (\fBmoeoBinaryQualityIndicator\fP< Fitness > *_I, const double _kappa)" +.br +.RI "\fIconstructor \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBsetBounds\fP (const \fBeoPop\fP< EOT > &_pop)" +.br +.RI "\fIcomputation and setting of the bounds for each objective \fP" +.ti -1c +.RI "void \fBfitnesses\fP (const \fBeoPop\fP< EOT > &_pop)" +.br +.RI "\fIcomputation and setting of the fitness for each individual of the population \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "double \fBkappa\fP" +.br +.RI "\fIscaling factor kappa \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoIBEASorting< EOT, Fitness >" +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) without uncertainty Adapted from the Zitzler and Künzli paper 'Indicator-Based Selection in Multiobjective Search' (2004) Of course, Fitness needs to be an \fBeoParetoFitness\fP object. +.PP +Definition at line 84 of file moeoIBEA.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoeoIBEASorting\fP< EOT, Fitness >::\fBmoeoIBEASorting\fP (\fBmoeoBinaryQualityIndicator\fP< Fitness > * _I, const double _kappa)\fC [inline]\fP" +.PP +constructor +.PP +\fBParameters:\fP +.RS 4 +\fIeoBinaryQualityIndicator*\fP _I the binary quality indicator to use in the selection process +.br +\fIdouble\fP _kappa scaling factor kappa +.RE +.PP + +.PP +Definition at line 96 of file moeoIBEA.h. +.PP +References moeoIBEASorting< EOT, Fitness >::kappa. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoeoIBEASorting\fP< EOT, Fitness >::setBounds (const \fBeoPop\fP< EOT > & _pop)\fC [inline, private, virtual]\fP" +.PP +computation and setting of the bounds for each objective +.PP +\fBParameters:\fP +.RS 4 +\fIconst\fP eoPop& _pop the population +.RE +.PP + +.PP +Implements \fBmoeoIBEA< EOT, Fitness >\fP. +.PP +Definition at line 121 of file moeoIBEA.h. +.PP +References moeoIBEA< EOT, Fitness >::I, and moeoBinaryQualityIndicator< EOFitness >::setBounds(). +.SS "template void \fBmoeoIBEASorting\fP< EOT, Fitness >::fitnesses (const \fBeoPop\fP< EOT > & _pop)\fC [inline, private, virtual]\fP" +.PP +computation and setting of the fitness for each individual of the population +.PP +\fBParameters:\fP +.RS 4 +\fIconst\fP eoPop& _pop the population +.RE +.PP + +.PP +Implements \fBmoeoIBEA< EOT, Fitness >\fP. +.PP +Definition at line 150 of file moeoIBEA.h. +.PP +References moeoIBEASorting< EOT, Fitness >::kappa, and eoValueParam< std::vector< WorthT > >::value(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoIBEAStochSorting.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoIBEAStochSorting.3 new file mode 100644 index 000000000..9e4b4fd92 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoIBEAStochSorting.3 @@ -0,0 +1,101 @@ +.TH "moeoIBEAStochSorting" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoIBEAStochSorting \- Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty Adapted from the Basseur and Zitzler paper 'Handling Uncertainty in Indicator-Based Multiobjective Optimization' (2006) Of course, the fitness of an individual needs to be an eoStochasticParetoFitness object. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoIBEA< EOT, FitnessEval >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoIBEAStochSorting\fP (\fBmoeoBinaryQualityIndicator\fP< FitnessEval > *_I)" +.br +.RI "\fIconstructor \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBsetBounds\fP (const \fBeoPop\fP< EOT > &_pop)" +.br +.RI "\fIcomputation and setting of the bounds for each objective \fP" +.ti -1c +.RI "void \fBfitnesses\fP (const \fBeoPop\fP< EOT > &_pop)" +.br +.RI "\fIcomputation and setting of the fitness for each individual of the population \fP" +.in -1c +.SS "Static Private Member Functions" + +.in +1c +.ti -1c +.RI "static double \fBzero\fP ()" +.br +.RI "\fIapproximated zero value \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoIBEAStochSorting< EOT, FitnessEval >" +Functor The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty Adapted from the Basseur and Zitzler paper 'Handling Uncertainty in Indicator-Based Multiobjective Optimization' (2006) Of course, the fitness of an individual needs to be an eoStochasticParetoFitness object. +.PP +Definition at line 203 of file moeoIBEA.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoeoIBEAStochSorting\fP< EOT, FitnessEval >::\fBmoeoIBEAStochSorting\fP (\fBmoeoBinaryQualityIndicator\fP< FitnessEval > * _I)\fC [inline]\fP" +.PP +constructor +.PP +\fBParameters:\fP +.RS 4 +\fIeoBinaryQualityIndicator*\fP _I the binary quality indicator to use in the selection process +.RE +.PP + +.PP +Definition at line 214 of file moeoIBEA.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoeoIBEAStochSorting\fP< EOT, FitnessEval >::setBounds (const \fBeoPop\fP< EOT > & _pop)\fC [inline, private, virtual]\fP" +.PP +computation and setting of the bounds for each objective +.PP +\fBParameters:\fP +.RS 4 +\fIconst\fP eoPop& _pop the population +.RE +.PP + +.PP +Implements \fBmoeoIBEA< EOT, FitnessEval >\fP. +.PP +Definition at line 243 of file moeoIBEA.h. +.PP +References moeoIBEA< EOT, FitnessEval >::I, and moeoBinaryQualityIndicator< EOFitness >::setBounds(). +.SS "template void \fBmoeoIBEAStochSorting\fP< EOT, FitnessEval >::fitnesses (const \fBeoPop\fP< EOT > & _pop)\fC [inline, private, virtual]\fP" +.PP +computation and setting of the fitness for each individual of the population +.PP +\fBParameters:\fP +.RS 4 +\fIconst\fP eoPop& _pop the population +.RE +.PP + +.PP +Implements \fBmoeoIBEA< EOT, FitnessEval >\fP. +.PP +Definition at line 272 of file moeoIBEA.h. +.PP +References eoValueParam< std::vector< WorthT > >::value(), and moeoIBEAStochSorting< EOT, FitnessEval >::zero(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoMOLS.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoMOLS.3 new file mode 100644 index 000000000..95a92aa15 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoMOLS.3 @@ -0,0 +1,29 @@ +.TH "moeoMOLS" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoMOLS \- Abstract class for local searches applied to multi-objective optimization. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< const EOT &, moeoArchive< EOT > &, void >\fP. +.PP +Inherited by \fBmoeoCombinedMOLS< EOT >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moeoMOLS< EOT >" +Abstract class for local searches applied to multi-objective optimization. + +Starting from only one solution, it produces a set of new non-dominated solutions. +.PP +Definition at line 23 of file moeoMOLS.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoMetric.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoMetric.3 new file mode 100644 index 000000000..9a698fee7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoMetric.3 @@ -0,0 +1,25 @@ +.TH "moeoMetric" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoMetric \- Base class for performance metrics (also called quality indicators). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoFunctorBase\fP. +.PP +Inherited by \fBmoeoBM< A1, A2, R >\fP, \fBmoeoBM< const const EOFitness &, EOFitness &, R >\fP, \fBmoeoBM< const const std::vector< EOFitness > &, EOFitness &, R >\fP, \fBmoeoBM< const const std::vector< EOFitness > &, std::vector< EOFitness > &, R >\fP, \fBmoeoBM< const const std::vector< typename EOT::Fitness > &, std::vector< typename EOT::Fitness > &, double >\fP, \fBmoeoUM< A, R >\fP, \fBmoeoUM< const EOFitness &, R >\fP, and \fBmoeoUM< const std::vector< EOFitness > &, R >\fP. +.PP +.SH "Detailed Description" +.PP +Base class for performance metrics (also called quality indicators). +.PP +Definition at line 21 of file moeoMetric.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoNDSorting_II.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoNDSorting_II.3 new file mode 100644 index 000000000..ef0618944 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoNDSorting_II.3 @@ -0,0 +1,60 @@ +.TH "moeoNDSorting_II" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoNDSorting_II \- Fast Elitist Non-Dominant Sorting Genetic Algorithm assignment strategie Note : This is a corrected version of the original \fBeoNDSorting_II\fP class. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoNDSorting< EOT >< EOT >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef std::pair< double, unsigned > \fBdouble_index_pair\fP" +.br +.RI "\fIindex pair \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoNDSorting_II\fP (bool nasty_flag_=false)" +.br +.RI "\fIconstructor \fP" +.ti -1c +.RI "std::vector< double > \fBniche_penalty\fP (const std::vector< unsigned > &_cf, const \fBeoPop\fP< EOT > &_pop)" +.br +.RI "\fI_cf points into the elements that consist of the current front \fP" +.in -1c +.SS "Classes" + +.in +1c +.ti -1c +.RI "class \fBcompare_nodes\fP" +.br +.RI "\fIA class to compare the nodes. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoNDSorting_II< EOT >" +Fast Elitist Non-Dominant Sorting Genetic Algorithm assignment strategie Note : This is a corrected version of the original \fBeoNDSorting_II\fP class. + +\fBSee also:\fP +.RS 4 +\fBeoNDSorting_II\fP +.RE +.PP + +.PP +Definition at line 26 of file moeoNDSorting.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoNDSorting_II_compare_nodes.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoNDSorting_II_compare_nodes.3 new file mode 100644 index 000000000..735dd97b3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoNDSorting_II_compare_nodes.3 @@ -0,0 +1,30 @@ +.TH "moeoNDSorting_II::compare_nodes" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoNDSorting_II::compare_nodes \- A class to compare the nodes. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "bool \fBoperator()\fP (const \fBdouble_index_pair\fP &a, const \fBdouble_index_pair\fP &b) const" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoNDSorting_II< EOT >::compare_nodes" +A class to compare the nodes. +.PP +Definition at line 46 of file moeoNDSorting.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoNSGA_II.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoNSGA_II.3 new file mode 100644 index 000000000..34da46cda --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoNSGA_II.3 @@ -0,0 +1,95 @@ +.TH "moeoNSGA_II" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoNSGA_II \- +.SH SYNOPSIS +.br +.PP +Inherits \fBeoAlgo< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoNSGA_II\fP (unsigned _max_gen, \fBeoEvalFunc\fP< EOT > &_eval, \fBeoGenOp\fP< EOT > &_op)" +.br +.RI "\fIThis constructor builds the algorithm as descibed in the paper. \fP" +.ti -1c +.RI "\fBmoeoNSGA_II\fP (unsigned _max_gen, \fBeoEvalFunc\fP< EOT > &_eval, \fBeoQuadOp\fP< EOT > &crossover, double pCross, \fBeoMonOp\fP< EOT > &mutation, double pMut)" +.br +.RI "\fICtor taking _max_gen, crossover and mutation. \fP" +.ti -1c +.RI "\fBmoeoNSGA_II\fP (\fBeoContinue\fP< EOT > &_continuator, \fBeoEvalFunc\fP< EOT > &_eval, \fBeoGenOp\fP< EOT > &_op)" +.br +.RI "\fICtor taking a continuator instead of _gen_max. \fP" +.ti -1c +.RI "virtual void \fBoperator()\fP (\fBeoPop\fP< EOT > &_pop)" +.br +.RI "\fIApply a few generation of evolution to the population. \fP" +.in -1c +.SS "Protected Attributes" + +.in +1c +.ti -1c +.RI "\fBeoContinue\fP< EOT > & \fBcontinuator\fP" +.br +.ti -1c +.RI "\fBeoEvalFunc\fP< EOT > & \fBeval\fP" +.br +.ti -1c +.RI "\fBeoPopLoopEval\fP< EOT > \fBloopEval\fP" +.br +.ti -1c +.RI "\fBeoPopEvalFunc\fP< EOT > & \fBpopEval\fP" +.br +.ti -1c +.RI "\fBmoeoNDSorting_II\fP< EOT > \fBsorting\fP" +.br +.RI "\fINSGAII sorting. \fP" +.ti -1c +.RI "\fBeoDetTournamentWorthSelect\fP< EOT > \fBselectOne\fP" +.br +.RI "\fIBinary tournament selection. \fP" +.ti -1c +.RI "\fBmoeoElitistReplacement\fP< EOT > \fBreplace\fP" +.br +.RI "\fIElitist replacement. \fP" +.ti -1c +.RI "\fBeoGeneralBreeder\fP< EOT > \fBgenBreed\fP" +.br +.ti -1c +.RI "\fBeoBreed\fP< EOT > & \fBbreed\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoNSGA_II< EOT >" + +.PP +Definition at line 31 of file moeoNSGA_II.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoeoNSGA_II\fP< EOT >::\fBmoeoNSGA_II\fP (unsigned _max_gen, \fBeoEvalFunc\fP< EOT > & _eval, \fBeoGenOp\fP< EOT > & _op)\fC [inline]\fP" +.PP +This constructor builds the algorithm as descibed in the paper. +.PP +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. +.PP +\fBParameters:\fP +.RS 4 +\fI_max_gen\fP number of generations before stopping +.br +\fI_eval\fP evaluation function +.br +\fI_op\fP variation operator +.RE +.PP + +.PP +Definition at line 46 of file moeoNSGA_II.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoParetoEuclidDist.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoParetoEuclidDist.3 new file mode 100644 index 000000000..8502a0824 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoParetoEuclidDist.3 @@ -0,0 +1,28 @@ +.TH "moeoParetoEuclidDist" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoParetoEuclidDist \- +.SH SYNOPSIS +.br +.PP +Inherits \fBmoeoParetoPhenDist< EOT, DistType >< EOT, DistType >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "DistType \fBoperator()\fP (const EOT &eopf1, const EOT &eopf2)" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoParetoEuclidDist< EOT, DistType >" + +.PP +Definition at line 27 of file moeoParetoPhenDist.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoParetoPhenDist.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoParetoPhenDist.3 new file mode 100644 index 000000000..e0b2549db --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoParetoPhenDist.3 @@ -0,0 +1,21 @@ +.TH "moeoParetoPhenDist" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoParetoPhenDist \- +.SH SYNOPSIS +.br +.PP +Inherited by \fBmoeoParetoEuclidDist< EOT, DistType >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moeoParetoPhenDist< EOT, DistType >" + +.PP +Definition at line 15 of file moeoParetoPhenDist.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoParetoSharing.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoParetoSharing.3 new file mode 100644 index 000000000..92e246be1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoParetoSharing.3 @@ -0,0 +1,64 @@ +.TH "moeoParetoSharing" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoParetoSharing \- +.SH SYNOPSIS +.br +.PP +Inherits \fBeoPerf2Worth< EOT, worthT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoParetoSharing\fP (double _nicheSize)" +.br +.ti -1c +.RI "\fBmoeoParetoSharing\fP (double _nicheSize, \fBmoeoParetoPhenDist\fP< EOT, worthT > &_dist)" +.br +.ti -1c +.RI "void \fBoperator\fP ()(const \fBeoPop\fP< EOT > &_pop)" +.br +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "double \fBsh\fP (double \fBdist\fP, double \fBDmax\fP)" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "double \fBnicheSize\fP" +.br +.ti -1c +.RI "\fBmoeoParetoPhenDist\fP< EOT, worthT > & \fBdist\fP" +.br +.ti -1c +.RI "\fBmoeoParetoEuclidDist\fP< EOT > \fBeuc_dist\fP" +.br +.ti -1c +.RI "double \fBDmax\fP" +.br +.in -1c +.SS "Classes" + +.in +1c +.ti -1c +.RI "class \fBdMatrix\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoParetoSharing< EOT, worthT >" + +.PP +Definition at line 19 of file moeoParetoSharing.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoParetoSharing_dMatrix.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoParetoSharing_dMatrix.3 new file mode 100644 index 000000000..16063b07a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoParetoSharing_dMatrix.3 @@ -0,0 +1,36 @@ +.TH "moeoParetoSharing::dMatrix" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoParetoSharing::dMatrix \- +.SH SYNOPSIS +.br +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBdMatrix\fP (unsigned _s)" +.br +.ti -1c +.RI "void \fBprintOn\fP (std::ostream &_os)" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "unsigned \fBrSize\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoParetoSharing< EOT, worthT >::dMatrix" + +.PP +Definition at line 109 of file moeoParetoSharing.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoReplacement.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoReplacement.3 new file mode 100644 index 000000000..4c7f876c6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoReplacement.3 @@ -0,0 +1,27 @@ +.TH "moeoReplacement" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoReplacement \- Replacement strategy for multi-objective optimization. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoReplacement< EOT >< EOT >\fP. +.PP +Inherited by \fBmoeoDisctinctElitistReplacement< EOT, WorthT >\fP, and \fBmoeoElitistReplacement< EOT, WorthT >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moeoReplacement< EOT, WorthT >" +Replacement strategy for multi-objective optimization. +.PP +Definition at line 24 of file moeoReplacement.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoSelectOneFromPopAndArch.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoSelectOneFromPopAndArch.3 new file mode 100644 index 000000000..6bd2ec495 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoSelectOneFromPopAndArch.3 @@ -0,0 +1,105 @@ +.TH "moeoSelectOneFromPopAndArch" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoSelectOneFromPopAndArch \- Elitist selection process that consists in choosing individuals in the archive as well as in the current population. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoSelectOne< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoSelectOneFromPopAndArch\fP (\fBeoSelectOne\fP< EOT > &_popSelectOne, \fBeoSelectOne\fP< EOT > _archSelectOne, \fBmoeoArchive\fP< EOT > &_arch, double _ratioFromPop=0.5)" +.br +.RI "\fICtor. \fP" +.ti -1c +.RI "\fBmoeoSelectOneFromPopAndArch\fP (\fBeoSelectOne\fP< EOT > &_popSelectOne, \fBmoeoArchive\fP< EOT > &_arch, double _ratioFromPop=0.5)" +.br +.RI "\fICtor - the archive's selection operator is a random selector. \fP" +.ti -1c +.RI "virtual const EOT & \fBoperator()\fP (const \fBeoPop\fP< EOT > &pop)" +.br +.RI "\fIThe selection process. \fP" +.ti -1c +.RI "virtual void \fBsetup\fP (const \fBeoPop\fP< EOT > &_pop)" +.br +.RI "\fISetups some population stats. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBeoSelectOne\fP< EOT > & \fBpopSelectOne\fP" +.br +.RI "\fIThe population's selection operator. \fP" +.ti -1c +.RI "\fBeoSelectOne\fP< EOT > & \fBarchSelectOne\fP" +.br +.RI "\fIThe archive's selection operator. \fP" +.ti -1c +.RI "\fBmoeoArchive\fP< EOT > & \fBarch\fP" +.br +.RI "\fIthe archive \fP" +.ti -1c +.RI "double \fBratioFromPop\fP" +.br +.RI "\fIthe ratio of selected individuals from the population \fP" +.ti -1c +.RI "\fBeoRandomSelect\fP< EOT > \fBrandomSelect\fP" +.br +.RI "\fIthe random selection operator \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoSelectOneFromPopAndArch< EOT >" +Elitist selection process that consists in choosing individuals in the archive as well as in the current population. +.PP +Definition at line 25 of file moeoSelectOneFromPopAndArch.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoeoSelectOneFromPopAndArch\fP< EOT >::\fBmoeoSelectOneFromPopAndArch\fP (\fBeoSelectOne\fP< EOT > & _popSelectOne, \fBeoSelectOne\fP< EOT > _archSelectOne, \fBmoeoArchive\fP< EOT > & _arch, double _ratioFromPop = \fC0.5\fP)\fC [inline]\fP" +.PP +Ctor. +.PP +\fBParameters:\fP +.RS 4 +\fI_popSelectOne\fP the population's selection operator +.br +\fI_archSelectOne\fP the archive's selection operator +.br +\fI_arch\fP the archive +.br +\fI_ratioFromPop\fP the ratio of selected individuals from the population +.RE +.PP + +.PP +Definition at line 37 of file moeoSelectOneFromPopAndArch.h. +.SS "template \fBmoeoSelectOneFromPopAndArch\fP< EOT >::\fBmoeoSelectOneFromPopAndArch\fP (\fBeoSelectOne\fP< EOT > & _popSelectOne, \fBmoeoArchive\fP< EOT > & _arch, double _ratioFromPop = \fC0.5\fP)\fC [inline]\fP" +.PP +Ctor - the archive's selection operator is a random selector. +.PP +\fBParameters:\fP +.RS 4 +\fI_popSelectOne\fP the population's selection operator +.br +\fI_arch\fP the archive +.br +\fI_ratioFromPop\fP the ratio of selected individuals from the population +.RE +.PP + +.PP +Definition at line 49 of file moeoSelectOneFromPopAndArch.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoSolutionUM.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoSolutionUM.3 new file mode 100644 index 000000000..bbbdd40a7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoSolutionUM.3 @@ -0,0 +1,25 @@ +.TH "moeoSolutionUM" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoSolutionUM \- Base class for unary metrics dedicated to the performance evaluation of a single solution's Pareto fitness. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoUM< const EOFitness &, R >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moeoSolutionUM< EOT, R, EOFitness >" +Base class for unary metrics dedicated to the performance evaluation of a single solution's Pareto fitness. +.PP +Definition at line 47 of file moeoMetric.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoSolutionVsSolutionBM.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoSolutionVsSolutionBM.3 new file mode 100644 index 000000000..1ba173f99 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoSolutionVsSolutionBM.3 @@ -0,0 +1,25 @@ +.TH "moeoSolutionVsSolutionBM" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoSolutionVsSolutionBM \- Base class for binary metrics dedicated to the performance comparison between two solutions's Pareto fitnesses. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoBM< A1, A2, R >< const const EOFitness &, EOFitness &, R >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moeoSolutionVsSolutionBM< EOT, R, EOFitness >" +Base class for binary metrics dedicated to the performance comparison between two solutions's Pareto fitnesses. +.PP +Definition at line 70 of file moeoMetric.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoUM.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoUM.3 new file mode 100644 index 000000000..42fbb8089 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoUM.3 @@ -0,0 +1,25 @@ +.TH "moeoUM" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoUM \- Base class for unary metrics. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoUF< A, R >\fP, and \fBmoeoMetric\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moeoUM< A, R >" +Base class for unary metrics. +.PP +Definition at line 29 of file moeoMetric.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoVectorUM.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoVectorUM.3 new file mode 100644 index 000000000..441effd9a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoVectorUM.3 @@ -0,0 +1,25 @@ +.TH "moeoVectorUM" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoVectorUM \- Base class for unary metrics dedicated to the performance evaluation of a Pareto set (a vector of Pareto fitnesses). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoUM< const std::vector< EOFitness > &, R >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moeoVectorUM< EOT, R, EOFitness >" +Base class for unary metrics dedicated to the performance evaluation of a Pareto set (a vector of Pareto fitnesses). +.PP +Definition at line 58 of file moeoMetric.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoVectorVsSolutionBM.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoVectorVsSolutionBM.3 new file mode 100644 index 000000000..0159f5e27 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoVectorVsSolutionBM.3 @@ -0,0 +1,25 @@ +.TH "moeoVectorVsSolutionBM" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoVectorVsSolutionBM \- Base class for binary metrics dedicated to the performance comparison between a Pareto set (a vector of Pareto fitnesses) and a single solution's Pareto fitness. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoBM< A1, A2, R >< const const std::vector< EOFitness > &, EOFitness &, R >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moeoVectorVsSolutionBM< EOT, R, EOFitness >" +Base class for binary metrics dedicated to the performance comparison between a Pareto set (a vector of Pareto fitnesses) and a single solution's Pareto fitness. +.PP +Definition at line 82 of file moeoMetric.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoVectorVsVectorBM.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoVectorVsVectorBM.3 new file mode 100644 index 000000000..5a782680d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/moeoVectorVsVectorBM.3 @@ -0,0 +1,25 @@ +.TH "moeoVectorVsVectorBM" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoVectorVsVectorBM \- Base class for binary metrics dedicated to the performance comparison between two Pareto sets (two vectors of Pareto fitnesses). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoBM< A1, A2, R >< const const std::vector< EOFitness > &, std::vector< EOFitness > &, R >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moeoVectorVsVectorBM< EOT, R, EOFitness >" +Base class for binary metrics dedicated to the performance comparison between two Pareto sets (two vectors of Pareto fitnesses). +.PP +Definition at line 95 of file moeoMetric.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/webpages.3 b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/webpages.3 new file mode 100644 index 000000000..a3ae4ccca --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/man/man3/webpages.3 @@ -0,0 +1,15 @@ +.TH "webpages" 3 "15 Jan 2007" "Version 0.1" "ParadisEO-MOEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +webpages \- Related webpages +.IP "\(bu" 2 +ParadisEO \fChomepage\fP +.IP "\(bu" 2 +INRIA GForge \fCproject page\fP +.IP "\(bu" 2 +\fCREADME\fP +.IP "\(bu" 2 +\fCNEWS\fP +.PP + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/moeo.doxyfile b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/moeo.doxyfile new file mode 100644 index 000000000..5b8de0c70 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/docs/moeo.doxyfile @@ -0,0 +1,237 @@ +# Doxyfile 1.5.1 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = ParadisEO-MOEO +PROJECT_NUMBER = 0.1 +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/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-i386-0.2/paradiseo-moeo/src/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/Makefile.am new file mode 100755 index 000000000..ae1e51b3c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/Makefile.am @@ -0,0 +1 @@ +# Nothing to compile ! diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/metric/moeoBinaryMetricSavingUpdater.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/metric/moeoBinaryMetricSavingUpdater.h new file mode 100644 index 000000000..01aadfaa5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/metric/moeoBinaryMetricSavingUpdater.h @@ -0,0 +1,94 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// moeoBinaryMetricSavingUpdater.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + 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 + +/** + * This class allows to save the progression of a binary metric comparing the fitness values of the current population (or archive) + * with the fitness values of the population (or archive) of the generation (n-1) into a file + */ +template < class EOT > class moeoBinaryMetricSavingUpdater:public eoUpdater +{ +public: + + /** + * The fitness type of a solution + */ + typedef typename EOT::Fitness EOFitness; + + /** + * Ctor + * @param _metric the binary metric comparing two Pareto sets + * @param _pop the main population + * @param _filename the target filename + */ + moeoBinaryMetricSavingUpdater (moeoVectorVsVectorBM < EOT, double >&_metric, + const eoPop < EOT > &_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 < EOFitness > from; + std::vector < EOFitness > to; + for (unsigned i = 0; i < pop.size (); i++) + from.push_back (pop[i].fitness ()); + for (unsigned i = 0; i < oldPop.size (); i++) + to.push_back (oldPop[i].fitness ()); + // writing the result into the file + std::ofstream f (filename.c_str (), std::ios::app); + f << counter++ << ' ' << metric (from, to) << std::endl; + f.close (); + } + oldPop = pop; + } + } + +private: + + /** binary metric comparing two Pareto sets */ + moeoVectorVsVectorBM < EOT, double >&metric; + /** main population */ + const eoPop < EOT > &pop; + /** (n-1) population */ + eoPop < EOT > oldPop; + /** target filename */ + std::string filename; + /** is it the first generation ? */ + bool firstGen; + /** counter */ + unsigned counter; + +}; + +#endif /*MOEOBINARYMETRICSAVINGUPDATER_H_ */ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/metric/moeoContributionMetric.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/metric/moeoContributionMetric.h new file mode 100644 index 000000000..7da5702df --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/metric/moeoContributionMetric.h @@ -0,0 +1,116 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// moeoContributionMetric.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef MOEOCONTRIBUTIONMETRIC_H_ +#define MOEOCONTRIBUTIONMETRIC_H_ + +#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 EOT > class moeoContributionMetric:public moeoVectorVsVectorBM < EOT, + double > +{ +public: + + /** + * The fitness type of a solution + */ + typedef typename EOT::Fitness EOFitness; + + /** + * 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 < EOFitness > &_set1, + const std::vector < EOFitness > &_set2) + { + unsigned c = card_C (_set1, _set2); + unsigned w1 = card_W (_set1, _set2); + unsigned n1 = card_N (_set1, _set2); + unsigned w2 = card_W (_set2, _set1); + unsigned n2 = card_N (_set2, _set1); + return (double) (c / 2.0 + w1 + n1) / (c + w1 + n1 + w2 + n2); + } + + +private: + + /** + * Returns the number of solutions both in '_set1' and '_set2' + * @param _set1 the first Pareto set + * @param _set2 the second Pareto set + */ + unsigned card_C (const std::vector < EOFitness > &_set1, + const std::vector < EOFitness > &_set2) + { + unsigned c = 0; + for (unsigned i = 0; i < _set1.size (); i++) + for (unsigned 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 card_W (const std::vector < EOFitness > &_set1, + const std::vector < EOFitness > &_set2) + { + unsigned w = 0; + for (unsigned i = 0; i < _set1.size (); i++) + for (unsigned j = 0; j < _set2.size (); j++) + if (_set1[i].dominates (_set2[j])) + { + 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 card_N (const std::vector < EOFitness > &_set1, + const std::vector < EOFitness > &_set2) + { + unsigned n = 0; + for (unsigned i = 0; i < _set1.size (); i++) + { + bool domin_rel = false; + for (unsigned j = 0; j < _set2.size (); j++) + if (_set1[i].dominates (_set2[j]) || _set2[j].dominates (_set1[i])) + { + domin_rel = true; + break; + } + if (!domin_rel) + n++; + } + return n; + } + +}; + +#endif /*MOEOCONTRIBUTIONMETRIC_H_ */ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/metric/moeoEntropyMetric.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/metric/moeoEntropyMetric.h new file mode 100644 index 000000000..e760e35f6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/metric/moeoEntropyMetric.h @@ -0,0 +1,179 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// moeoEntropyMetric.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef MOEOENTROPYMETRIC_H_ +#define MOEOENTROPYMETRIC_H_ + +#include + +/** + * The entropy gives an idea of the diversity of a Pareto set relatively to another Pareto set + * + * (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 EOT > class moeoEntropyMetric:public moeoVectorVsVectorBM < EOT, + double > +{ +public: + + /** + * The fitness type of a solution + */ + typedef typename EOT::Fitness EOFitness; + + /** + * 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 < EOFitness > &_set1, + const std::vector < EOFitness > &_set2) + { + // normalization + std::vector < EOFitness > set1 = _set1; + std::vector < EOFitness > set2 = _set2; + removeDominated (set1); + removeDominated (set2); + prenormalize (set1); + normalize (set1); + normalize (set2); + + // making of PO* + std::vector < EOFitness > star; // rotf :-) + computeUnion (set1, set2, star); + removeDominated (star); + + // making of PO1 U PO* + std::vector < EOFitness > union_set1_star; // rotf again ... + computeUnion (set1, star, union_set1_star); + + unsigned C = union_set1_star.size (); + float omega = 0; + float entropy = 0; + + for (unsigned i = 0; i < C; i++) + { + unsigned N_i = + howManyInNicheOf (union_set1_star, union_set1_star[i], + star.size ()); + unsigned n_i = + howManyInNicheOf (set1, union_set1_star[i], star.size ()); + if (n_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: + + std::vector < double >vect_min_val; + std::vector < double >vect_max_val; + + void removeDominated (std::vector < EOFitness > &_f) + { + for (unsigned i = 0; i < _f.size (); i++) + { + bool dom = false; + for (unsigned j = 0; j < _f.size (); j++) + if (i != j && _f[j].dominates (_f[i])) + { + dom = true; + break; + } + if (dom) + { + _f[i] = _f.back (); + _f.pop_back (); + i--; + } + } + } + + void prenormalize (const std::vector < EOFitness > &_f) + { + vect_min_val.clear (); + vect_max_val.clear (); + + for (unsigned char i = 0; i < EOFitness::fitness_traits::nObjectives (); + i++) + { + float min_val = _f.front ()[i], max_val = min_val; + for (unsigned j = 1; j < _f.size (); j++) + { + if (_f[j][i] < min_val) + min_val = _f[j][i]; + if (_f[j][i] > max_val) + max_val = _f[j][i]; + } + vect_min_val.push_back (min_val); + vect_max_val.push_back (max_val); + } + } + + void normalize (std::vector < EOFitness > &_f) + { + for (unsigned i = 0; i < EOFitness::fitness_traits::nObjectives (); i++) + for (unsigned j = 0; j < _f.size (); j++) + _f[j][i] = + (_f[j][i] - vect_min_val[i]) / (vect_max_val[i] - vect_min_val[i]); + } + + void computeUnion (const std::vector < EOFitness > &_f1, + const std::vector < EOFitness > &_f2, + std::vector < EOFitness > &_f) + { + _f = _f1; + for (unsigned i = 0; i < _f2.size (); i++) + { + bool b = false; + for (unsigned j = 0; j < _f1.size (); j++) + if (_f1[j] == _f2[i]) + { + b = true; + break; + } + if (!b) + _f.push_back (_f2[i]); + } + } + + unsigned howManyInNicheOf (const std::vector < EOFitness > &_f, + const EOFitness & _s, unsigned _size) + { + unsigned n = 0; + for (unsigned i = 0; i < _f.size (); i++) + { + if (euclidianDistance (_f[i], _s) < (_s.size () / (double) _size)) + n++; + } + return n; + } + + double euclidianDistance (const EOFitness & _set1, const EOFitness & _to, + unsigned _deg = 2) + { + double dist = 0; + for (unsigned 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-i386-0.2/paradiseo-moeo/src/metric/moeoMetric.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/metric/moeoMetric.h new file mode 100644 index 000000000..8e29440dd --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/metric/moeoMetric.h @@ -0,0 +1,106 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// moeoMetric.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef MOEOMETRIC_H_ +#define MOEOMETRIC_H_ + +#include + +/** + * Base class for performance metrics (also called quality indicators) + */ +class moeoMetric:public eoFunctorBase +{ +}; + + +/** + * Base class for unary metrics + */ +template < class A, class R > class moeoUM:public eoUF < A, R >, + public moeoMetric +{ +}; + + +/** + * Base class for binary metrics + */ +template < class A1, class A2, class R > class moeoBM:public eoBF < A1, A2, R >, + public moeoMetric +{ +}; + + +/** + * Base class for unary metrics dedicated to the performance evaluation of a single solution's Pareto fitness + */ +template < class EOT, class R, class EOFitness = typename EOT::Fitness > class moeoSolutionUM:public moeoUM < + const + EOFitness &, + R > +{ +}; + + +/** + * Base class for unary metrics dedicated to the performance evaluation of a Pareto set (a vector of Pareto fitnesses) + */ +template < class EOT, class R, class EOFitness = typename EOT::Fitness > class moeoVectorUM:public moeoUM < + const + std::vector < +EOFitness > &, + R > +{ +}; + + +/** + * Base class for binary metrics dedicated to the performance comparison between two solutions's Pareto fitnesses + */ +template < class EOT, class R, class EOFitness = typename EOT::Fitness > class moeoSolutionVsSolutionBM:public moeoBM < + const + EOFitness &, const + EOFitness &, + R > +{ +}; + + +/** + * Base class for binary metrics dedicated to the performance comparison between a Pareto set (a vector of Pareto fitnesses) and a single solution's Pareto fitness + */ +template < class EOT, class R, class EOFitness = typename EOT::Fitness > class moeoVectorVsSolutionBM:public moeoBM < + const + std::vector < +EOFitness > &, const + EOFitness &, + R > +{ +}; + + +/** + * Base class for binary metrics dedicated to the performance comparison between two Pareto sets (two vectors of Pareto fitnesses) + */ +template < class EOT, class R, class EOFitness = typename EOT::Fitness > class moeoVectorVsVectorBM:public moeoBM < + const + std::vector < +EOFitness > &, const + std::vector < +EOFitness > &, + R > +{ +}; + + +#endif /*MOEOMETRIC_H_ */ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeo b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeo new file mode 100644 index 000000000..3bf19e773 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeo @@ -0,0 +1,18 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// moeo +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef MOEO_ +#define MOEO_ + +#include + +#endif /*MOEO_H_*/ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeo.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeo.h new file mode 100644 index 000000000..8478ee48e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeo.h @@ -0,0 +1,31 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// moeo.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef MOEO_H_ +#define MOEO_H_ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif /*MOEO_H_ */ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoArchive.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoArchive.h new file mode 100644 index 000000000..9547dd06e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoArchive.h @@ -0,0 +1,106 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// moeoArchive.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef MOEOARCHIVE_H_ +#define MOEOARCHIVE_H_ + +#include + +/** + * An archive is a secondary population that stores non-dominated solutions + */ +template < class EOT > class moeoArchive:public eoPop < EOT > +{ +public: + + using std::vector < EOT >::size; + using std::vector < EOT >::operator[]; + using std::vector < EOT >::back; + using std::vector < EOT >::pop_back; + + /** + * The fitness type of a solution + */ + typedef typename EOT::Fitness EOFitness; + + /** + * Returns true if the current archive dominates _fit + * @param _fit the (Pareto) fitness to compare with the current archive + */ + bool dominates (const EOFitness & _fit) const + { + for (unsigned i = 0; i < size; i++) + if (operator[](i).fitness ().dominates (_fit)) + return true; + return false; + } + + /** + * Returns true if the current archive contains _fit + * @param _fit the (Pareto) fitness to search within the current archive + */ + bool contains (const EOFitness & _fit) const + { + for (unsigned i = 0; i < size; i++) + if (operator[](i).fitness () == _fit) + return true; + return false; + } + + /** + * Updates the archive with a given individual _eo + * @param _eo the given individual + */ + void update (const EOT & _eo) + { + // Removing the dominated solutions from the archive + for (unsigned j = 0; j < size ();) + { + if (_eo.fitness ().dominates (operator[](j).fitness ())) + { + operator[](j) = back (); + pop_back (); + } + else if (_eo.fitness () == operator[](j).fitness ()) + { + operator[](j) = back (); + pop_back (); + } + else + j++; + } + + // Dominated ? + bool dom = false; + for (unsigned j = 0; j < size (); j++) + if (operator [](j).fitness ().dominates (_eo.fitness ())) + { + dom = true; + break; + } + if (!dom) + push_back (_eo); + } + + /** + * Updates the archive with a given population _pop + * @param _pop the given population + */ + void update (const eoPop < EOT > &_pop) + { + for (unsigned i = 0; i < _pop.size (); i++) + update (_pop[i]); + } + +}; + +#endif /*MOEOARCHIVE_H_ */ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoArchiveFitnessSavingUpdater.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoArchiveFitnessSavingUpdater.h new file mode 100644 index 000000000..b1e839331 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoArchiveFitnessSavingUpdater.h @@ -0,0 +1,73 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// moeoArchiveFitnessSavingUpdater.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef MOEOARCHIVEFITNESSSAVINGUPDATER_H_ +#define MOEOARCHIVEFITNESSSAVINGUPDATER_H_ + +#include +#include +#include +#include +#include + +#define MAX_BUFFER_SIZE 1000 + +/** + * This class allows to save the fitnesses of solutions contained in an archive into a file at each generation. + */ +template < class EOT > class moeoArchiveFitnessSavingUpdater:public eoUpdater +{ +public: + + /** + * Ctor + * @param _arch local archive + * @param _filename target filename + * @param _id own ID + */ +moeoArchiveFitnessSavingUpdater (moeoArchive < EOT > &_arch, const std::string & _filename = "Res/Arch", int _id = -1):arch (_arch), filename (_filename), id (_id), + counter + (0) + { + } + + /** + * Saves the fitness of the archive's members into the file + */ + void operator () () + { + char buff[MAX_BUFFER_SIZE]; + if (id == -1) + sprintf (buff, "%s.%u", filename.c_str (), counter++); + else + sprintf (buff, "%s.%u.%u", filename.c_str (), id, counter++); + std::ofstream f (buff); + for (unsigned i = 0; i < arch.size (); i++) + f << arch[i].fitness () << std::endl; + f.close (); + } + + +private: + + /** local archive */ + moeoArchive < EOT > &arch; + /** target filename */ + std::string filename; + /** own ID */ + int id; + /** counter */ + unsigned counter; + +}; + +#endif /*MOEOARCHIVEFITNESSSAVINGUPDATER_H_ */ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoArchiveUpdater.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoArchiveUpdater.h new file mode 100644 index 000000000..581742849 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoArchiveUpdater.h @@ -0,0 +1,56 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// moeoArchiveUpdater.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + 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 EOT > class moeoArchiveUpdater:public eoUpdater +{ +public: + + /** + * Ctor + * @param _arch an archive of non-dominated solutions + * @param _pop the main population + */ + moeoArchiveUpdater (moeoArchive < EOT > &_arch, + const eoPop < EOT > &_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 < EOT > &arch; + /** the main population */ + const eoPop < EOT > &pop; + +}; + +#endif /*MOEOARCHIVEUPDATER_H_ */ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoCombinedMOLS.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoCombinedMOLS.h new file mode 100644 index 000000000..30c9dc206 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoCombinedMOLS.h @@ -0,0 +1,71 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// moeoCombinedMOLS.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef MOEOCOMBINEDMOLS_H_ +#define MOEOCOMBINEDMOLS_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 EOT > class moeoCombinedMOLS:public moeoMOLS < EOT > +{ +public: + + /** + * Ctor + * @param _eval the full evaluator of a solution + * @param _first_ls the first multi-objective local search to add + */ +moeoCombinedMOLS (eoEvalFunc < EOT > &_eval, moeoMOLS < EOT > &_first_ls):eval + (_eval) + { + combinedMOLS.push_back (&_first_ls); + } + + /** + * Adds a new local search to combine + * @param _ls the multi-objective local search to add + */ + void add (moeoMOLS < EOT > &_ls) + { + combinedMOLS.push_back (&_ls); + } + + /** + * Gives a new solution in order to explore the neigborhood. + * The new non-dominated solutions are added to the archive + * @param _eo the solution + * @param _arch the archive of non-dominated solutions + */ + void operator () (const EOT & _eo, moeoArchive < EOT > &_arch) + { + eval (const_cast < EOT & >(_eo)); + for (unsigned i = 0; i < combinedMOLS.size (); i++) + combinedMOLS[i]->operator ()(_eo, _arch); + } + + +private: + + /** the full evaluator of a solution */ + eoEvalFunc < EOT > &eval; + /** the vector that contains the combined MOLS */ + std::vector < moeoMOLS < EOT > *>combinedMOLS; + +}; + +#endif /*MOEOCOMBINEDMOLS_H_ */ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoHybridMOLS.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoHybridMOLS.h new file mode 100644 index 000000000..7ab4fc2ed --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoHybridMOLS.h @@ -0,0 +1,74 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// moeoHybridMOLS.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef MOEOHYBRIDMOLS_H_ +#define MOEOHYBRIDMOLS_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 EOT > class moeoHybridMOLS:public eoUpdater +{ +public: + + /** + * Ctor + * @param _term stopping criteria + * @param _select selector + * @param _mols a multi-objective local search + * @param _arch the archive + */ +eoHybridMOLS (eoContinue < EOT > &_term, eoSelect < EOT > &_select, moeoMOLS < EOT > &_mols, moeoArchive < EOT > &_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 (!cont (arch)) + { + // selection of solutions + eoPop < EOT > selectedSolutions; + select (arch, selectedSolutions); + // apply the local search to every selected solution + for (unsigned i = 0; i < selectedSolutions.size (); i++) + mols (selectedSolutions[i], arch); + } + } + + +private: + + /** stopping criteria*/ + eoContinue < EOT > &term; + /** selector */ + eoSelect < EOT > &select; + /** multi-objective local search */ + moeoMOLS < EOT > &mols; + /** archive */ + moeoArchive < EOT > &arch; + +}; + +#endif /*MOEOHYBRIDMOLS_H_ */ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoMOLS.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoMOLS.h new file mode 100644 index 000000000..b2ecd3353 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoMOLS.h @@ -0,0 +1,28 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// moeoMOLS.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef MOEOMOLS_H_ +#define MOEOMOLS_H_ + +#include +#include + +/** + * Abstract class for local searches applied to multi-objective optimization. + * Starting from only one solution, it produces a set of new non-dominated solutions. + */ +template < class EOT > class moeoMOLS:public eoBF < const EOT &, moeoArchive < EOT > &, + void > +{ +}; + +#endif /*MOEOMOLS_H_ */ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoNDSorting.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoNDSorting.h new file mode 100644 index 000000000..8cd7c4aa6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoNDSorting.h @@ -0,0 +1,108 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// moeoNDSorting.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef moeoNDSorting_h +#define moeoNDSorting_h + +#include +#include + +# define INF 1.0e14 // DBL_MAX + +/** + * Fast Elitist Non-Dominant Sorting Genetic Algorithm assignment strategie + * Note : This is a corrected version of the original eoNDSorting_II class + * @see eoNDSorting_II + */ +template < class EOT > class moeoNDSorting_II:public eoNDSorting < EOT > +{ +public: + + /** + * constructor + */ +moeoNDSorting_II (bool nasty_flag_ = false):eoNDSorting < EOT > + (nasty_flag_) + { + } + + /** + * index pair + */ + typedef std::pair < double, unsigned >double_index_pair; + + /** + * A class to compare the nodes + */ + class compare_nodes + { + public:bool operator () (const double_index_pair & a, + const double_index_pair & b) const + { + return a.first < b.first; + } + }; + + /// _cf points into the elements that consist of the current front + std::vector < double >niche_penalty (const std::vector < unsigned >&_cf, + const eoPop < EOT > &_pop) + { + typedef typename EOT::Fitness::fitness_traits traits; + unsigned i; + std::vector < double >niche_count (_cf.size (), 0.); + + + unsigned nObjectives = traits::nObjectives (); //_pop[_cf[0]].fitness().size(); + + for (unsigned o = 0; o < nObjectives; ++o) + { + std::vector < std::pair < double, + unsigned > >performance (_cf.size ()); + for (i = 0; i < _cf.size (); ++i) + { + performance[i].first = _pop[_cf[i]].fitness ()[o]; + performance[i].second = i; + } + + std::sort (performance.begin (), performance.end (), compare_nodes ()); // a lambda operator would've been nice here + + // set boundary at INF (so it will get chosen over all the others + niche_count[performance[0].second] = INF; + niche_count[performance.back ().second] = INF; + + if (performance[0].first != performance.back ().first) + { + for (i = 1; i < _cf.size () - 1; ++i) + { + if (niche_count[performance[i].second] != INF) + { + niche_count[performance[i].second] += + (performance[i + 1].first - + performance[i - + 1].first) / (performance.back ().first - + performance[0].first); + } + } + } + } + + // transform niche_count into penality + for (i = 0; i < niche_count.size (); ++i) + { + niche_count[i] = INF - niche_count[i]; + } + + return niche_count; + } +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoNSGA_II.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoNSGA_II.h new file mode 100644 index 000000000..07f19f0a8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoNSGA_II.h @@ -0,0 +1,106 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// moeoNSGA_II.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +// (c) Deneche Abdelhakim, 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr + */ +//----------------------------------------------------------------------------- +#ifndef MOEONSGA_II_H_ +#define MOEONSGA_II_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +/** +*/ +template < class EOT > class moeoNSGA_II:public eoAlgo < EOT > +{ +public: + + /** + This constructor builds the algorithm as descibed in the paper + + 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. + @param _max_gen number of generations before stopping + @param _eval evaluation function + @param _op variation operator + */ + + moeoNSGA_II (unsigned _max_gen, eoEvalFunc < EOT > &_eval, eoGenOp < EOT > &_op):continuator (*(new eoGenContinue < EOT > (_max_gen))), eval (_eval), loopEval (_eval), popEval (loopEval), selectOne (sorting, 2), // binary tournament selection + replace (sorting), genBreed (selectOne, _op), breed (genBreed) + { + } + + /// Ctor taking _max_gen, crossover and mutation + moeoNSGA_II (unsigned _max_gen, eoEvalFunc < EOT > &_eval, eoQuadOp < EOT > &crossover, double pCross, eoMonOp < EOT > &mutation, double pMut):continuator (*(new eoGenContinue < EOT > (_max_gen))), eval (_eval), loopEval (_eval), popEval (loopEval), selectOne (sorting, 2), // binary tournament selection + + replace (sorting), + genBreed (selectOne, + *new eoSGAGenOp < EOT > (crossover, pCross, mutation, pMut)), + breed (genBreed) + { + } + + /// Ctor taking a continuator instead of _gen_max +moeoNSGA_II (eoContinue < EOT > &_continuator, eoEvalFunc < EOT > &_eval, eoGenOp < EOT > &_op): + continuator (_continuator), eval (_eval), loopEval (_eval), popEval (loopEval), selectOne (sorting, 2), // binary tournament selection + replace (sorting), genBreed (selectOne, _op), breed (genBreed) + { + } + + ///Apply a few generation of evolution to the population. + virtual void operator () (eoPop < EOT > &_pop) + { + eoPop < EOT > offspring, empty_pop; + popEval (empty_pop, _pop); // a first eval of _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: + eoContinue < EOT > &continuator; + + eoEvalFunc < EOT > &eval; + eoPopLoopEval < EOT > loopEval; + + eoPopEvalFunc < EOT > &popEval; + + /// NSGAII sorting + moeoNDSorting_II < EOT > sorting; + /// Binary tournament selection + eoDetTournamentWorthSelect < EOT > selectOne; + /// Elitist replacement + moeoElitistReplacement < EOT > replace; + eoGeneralBreeder < EOT > genBreed; + eoBreed < EOT > &breed; +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoReplacement.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoReplacement.h new file mode 100644 index 000000000..a1148e119 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoReplacement.h @@ -0,0 +1,169 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// moeoReplacement.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef MOEOREPLACEMENT_H_ +#define MOEOREPLACEMENT_H_ + +#include +#include +#include + + +/** + * Replacement strategy for multi-objective optimization + */ +template < class EOT, class WorthT > class moeoReplacement:public eoReplacement < + EOT > +{ +}; + + +/** + * Keep all the best individuals + * (almost cut-and-pasted from eoNDPlusReplacement, (c) Maarten Keijzer, Marc Schoenauer and GeNeura Team, 2002) + */ +template < class EOT, class WorthT = + double >class moeoElitistReplacement:public moeoReplacement < EOT, WorthT > +{ +public: + + /** + * constructor + * @param _perf2worth the functor class to transform raw fitnesses into fitness for selection + */ + moeoElitistReplacement (eoPerf2Worth < EOT, + WorthT > &_perf2worth):perf2worth (_perf2worth) + { + } + + + /** + * replacement - result in _parents + * @param _parents parents population + * @param _offspring offspring population + */ + void operator () (eoPop < EOT > &_parents, eoPop < EOT > &_offspring) + { + unsigned size = _parents.size (); + _parents.reserve (_parents.size () + _offspring.size ()); + copy (_offspring.begin (), _offspring.end (), back_inserter (_parents)); + + // calculate worths + perf2worth (_parents); + perf2worth.sort_pop (_parents); + perf2worth.resize (_parents, size); + + _offspring.clear (); + } + +private: + /** the functor object to transform raw fitnesses into fitness for selection */ + eoPerf2Worth < EOT, WorthT > &perf2worth; +}; + + +/** + * Same than moeoElitistReplacement except that distinct individuals are privilegied + */ +template < class EOT, class WorthT = + double >class moeoDisctinctElitistReplacement:public moeoReplacement < EOT, + WorthT > +{ +public: + + /** + * constructor + * @param _perf2worth the functor class to transform raw fitnesses into fitness for selection + */ + moeoDisctinctElitistReplacement (eoPerf2Worth < EOT, + WorthT > + &_perf2worth):perf2worth (_perf2worth) + { + } + + + /** + * replacement - result in _parents + * @param _parents parents population + * @param _offspring offspring population + */ + void operator () (eoPop < EOT > &_parents, eoPop < EOT > &_offspring) + { + unsigned size = _parents.size (); + _parents.reserve (_parents.size () + _offspring.size ()); + copy (_offspring.begin (), _offspring.end (), back_inserter (_parents)); + + // creation of the new population (of size 'size') + createNewPop (_parents, size); + + _offspring.clear (); + } + + +private: + + /** the functor object to transform raw fitnesses into fitness for selection */ + eoPerf2Worth < EOT, WorthT > &perf2worth; + + + /** + * creation of the new population of size _size + * @param _pop the initial population (will be modified) + * @param _size the size of the population to create + */ + void createNewPop (eoPop < EOT > &_pop, unsigned _size) + { + // the number of occurences for each individual + std::map < EOT, unsigned >nb_occurences; + for (unsigned i = 0; i < _pop.size (); i++) + nb_occurences[_pop[i]] = 0; + // the new population + eoPop < EOT > new_pop; + new_pop.reserve (_pop.size ()); + for (unsigned i = 0; i < _pop.size (); i++) + { + if (nb_occurences[_pop[i]] == 0) + new_pop.push_back (_pop[i]); + nb_occurences[_pop[i]]++; + } + + // calculate worths (on the new population) + perf2worth (new_pop); + perf2worth.sort_pop (new_pop); + + // if case there's not enough individuals in the population... + unsigned new_pop_size_init = new_pop.size (); + unsigned k = 0; + while (new_pop.size () < _size) + { + if (k < new_pop_size_init) + { + if (nb_occurences[new_pop[k]] > 1) + { + new_pop.push_back (new_pop[k]); + nb_occurences[new_pop[k]]--; + } + k++; + } + else + k = 0; + } + + // resize and swap the populations + perf2worth.resize (new_pop, _size); + _pop.resize (_size); + _pop.swap (new_pop); + } + +}; + +#endif /*MOEOREPLACEMENT_H_ */ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoSelectOneFromPopAndArch.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoSelectOneFromPopAndArch.h new file mode 100644 index 000000000..aea605b51 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/moeoSelectOneFromPopAndArch.h @@ -0,0 +1,93 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// moeoSelectOneFormPopAndArch.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + 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 EOT > class moeoSelectOneFromPopAndArch:public eoSelectOne < + EOT > +{ +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 + */ +moeoSelectOneFromPopAndArch (eoSelectOne < EOT > &_popSelectOne, eoSelectOne < EOT > _archSelectOne, moeoArchive < EOT > &_arch, double _ratioFromPop = 0.5):popSelectOne (_popSelectOne), archSelectOne (_archSelectOne), arch (_arch), + ratioFromPop + (_ratioFromPop) + { + } + + /** + * 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 + */ +moeoSelectOneFromPopAndArch (eoSelectOne < EOT > &_popSelectOne, moeoArchive < EOT > &_arch, double _ratioFromPop = 0.5):popSelectOne (_popSelectOne), archSelectOne (randomSelect), arch (_arch), + ratioFromPop + (_ratioFromPop) + { + } + + /** + * The selection process + */ + virtual const EOT & operator () (const eoPop < EOT > &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 < EOT > &_pop) + { + popSelectOne.setup (_pop); + } + + +private: + + /** The population's selection operator */ + eoSelectOne < EOT > &popSelectOne; + /** The archive's selection operator */ + eoSelectOne < EOT > &archSelectOne; + /** the archive */ + moeoArchive < EOT > &arch; + /** the ratio of selected individuals from the population*/ + double ratioFromPop; + /** the random selection operator */ + eoRandomSelect < EOT > randomSelect; + +}; + +#endif /*MOEOSELECTONEFROMPOPANDARCH_H_ */ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/old/README b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/old/README new file mode 100644 index 000000000..c7fc0b6a2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/old/README @@ -0,0 +1,2 @@ +All the files contained in src/old/ will be fully rebuilt in the next version of ParadisEO-MOEO. +For more informations, please contact paradiseo-help@lists.gforge.inria.fr. \ No newline at end of file diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/old/make_algo_MOEO.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/old/make_algo_MOEO.h new file mode 100644 index 000000000..fc7ab9322 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/old/make_algo_MOEO.h @@ -0,0 +1,250 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// make_algo_MOEO.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef _make_algo_MOEO_h +#define _make_algo_MOEO_h + +// the parser and parameter includes +#include "utils/eoParser.h" +#include "utils/eoState.h" +// selections +#include "eoNDSorting.h" +#include "old/moeoIBEA.h" +#include "old/moeoBinaryQualityIndicator.h" +#include "eoParetoRanking.h" +#include "moeoParetoSharing.h" +#include "eoSelectFromWorth.h" +#include "moeoSelectOneFromPopAndArch.h" +// replacements +#include "eoReplacement.h" +#include "moeoReplacement.h" +// breeders +#include "eoGeneralBreeder.h" +// the algorithm +#include "eoEasyEA.h" + +/* + * This function builds the algorithm (i.e. selection and replacement) from existing continue (or checkpoint) and operators + * It uses a parser (to get user parameters) and a state (to store the memory) + * + * NB: this function is almost cut-and-pasted from EO/make_algo_pareto.h and integrates MOEO features + */ +template < class EOT > + eoAlgo < EOT > &do_make_algo_MOEO (eoParser & _parser, eoState & _state, + eoEvalFunc < EOT > &_eval, + eoContinue < EOT > &_continue, + eoGenOp < EOT > &_op, + moeoArchive < EOT > &_arch) +{ + + // the fitness of an EOT object + typedef typename EOT::Fitness EOFitness; + + + + + + /* the selection criteria */ + string & selStr = _parser.createParam (string ("NSGA-II"), "selCrit", + "Multi-objective selection criterion: NSGA, NSGA-II, IBEA, ParetoRanking, ParetoSharing", + 'S', "Evolution Engine").value (); + double nicheSize = _parser.createParam (1.0, "nicheSize", + "Size of niche for NSGA-I or ParetoSharing", + 'n', + "Evolution Engine").value (); + double kappa = + _parser.createParam (0.05, "kappa", "Scaling factor kappa for IBEA", 'k', + "Evolution Engine").value (); + string & indStr = + _parser.createParam (string ("Epsilon"), "indicator", + "Binary quality indicator for IBEA : Epsilon, Hypervolume", + 'I', "Evolution Engine").value (); + double rho = _parser.createParam (1.1, "rho", + "reference point for the hypervolume calculation (must not be smaller than 1)", + 'r', "Evolution Engine").value (); + // the eoPerf2Worth object + eoPerf2Worth < EOT, double >*p2w; + if ((selStr == string ("NSGA")) || (selStr == string ("NSGA-I"))) // NSGA-I + p2w = new eoNDSorting_I < EOT > (nicheSize); + else if (selStr == string ("NSGA-II")) // NSGA-II + p2w = new eoNDSorting_II < EOT > (); + else if (selStr == string ("IBEA")) + { // IBEA + // the binary quality indicator + moeoBinaryQualityIndicator < EOFitness > *I; + if (indStr == string ("Epsilon")) + I = new moeoAdditiveBinaryEpsilonIndicator < EOFitness >; + else if (indStr == string ("Hypervolume")) + I = new moeoBinaryHypervolumeIndicator < EOFitness > (rho); + else + { + string stmp = + string ("Invalid binary quality indicator (for IBEA): ") + indStr; + throw std::runtime_error (stmp.c_str ()); + } + p2w = new moeoIBEASorting < EOT > (I, kappa); + } + else if (selStr == string ("ParetoRanking")) + { // Pareto Ranking + eoDominanceMap < EOT > &dominance = + _state.storeFunctor (new eoDominanceMap < EOT >); + p2w = new eoParetoRanking < EOT > (dominance); + } + else if (selStr == string ("ParetoSharing")) + { // Pareto Sharing + p2w = new moeoParetoSharing < EOT > (nicheSize); + } + else + { + string stmp = string ("Invalid Pareto selection criterion: ") + selStr; + throw std::runtime_error (stmp.c_str ()); + } + // store + _state.storeFunctor (p2w); + + + + + + /* the selector */ + eoValueParam < eoParamParamType > &selectionParam = + _parser.createParam (eoParamParamType ("DetTour(2)"), "selection", + "Selection: Roulette, DetTour(T), StochTour(t) or Random", + 's', "Evolution Engine"); + eoParamParamType & ppSelect = selectionParam.value (); // pair< string , vector > + // the select object + eoSelectOne < EOT > *select; + if (ppSelect.first == string ("DetTour")) + { // DetTour + unsigned detSize; + if (!ppSelect.second.size ()) + { // no parameter added + cerr << "WARNING, no parameter passed to DetTour, using 2" << endl; + detSize = 2; + // put back 2 in parameter for consistency (and status file) + ppSelect.second.push_back (string ("2")); + } + else // parameter passed by user as DetTour(T) + detSize = atoi (ppSelect.second[0].c_str ()); + select = new eoDetTournamentWorthSelect < EOT > (*p2w, detSize); + } + else if (ppSelect.first == string ("StochTour")) + { // StochTour + double p; + if (!ppSelect.second.size ()) + { // no parameter added + cerr << "WARNING, no parameter passed to StochTour, using 1" << + endl; + p = 1; + // put back p in parameter for consistency (and status file) + ppSelect.second.push_back (string ("1")); + } + else // parameter passed by user as DetTour(T) + p = atof (ppSelect.second[0].c_str ()); + select = new eoStochTournamentWorthSelect < EOT > (*p2w, p); + } + else if (ppSelect.first == string ("Roulette")) + { // Roulette + select = new eoRouletteWorthSelect < EOT > (*p2w); + } + else if (ppSelect.first == string ("Random")) + { // Random + select = new eoRandomSelect < EOT >; + } + else + { + string stmp = string ("Invalid selection: ") + ppSelect.first; + throw std::runtime_error (stmp.c_str ()); + } + // store + _state.storeFunctor (select); + + + + + + /* elitism */ + bool useElitism = _parser.createParam (false, "elitism", + "Use elitism in the selection process (individuals from the archive are randomly selected)", + 'E', "Evolution Engine").value (); + double ratioFromPop = _parser.createParam (0.8, "ratio", + "Ratio from the population for elitism (must not be greater than 1)", + '\0', + "Evolution Engine").value (); + if (useElitism) + { + eoSelectOne < EOT > *selectPop = select; + select = + new moeoSelectOneFromPopAndArch < EOT > (*selectPop, _arch, + ratioFromPop); + // store + _state.storeFunctor (select); + } + + + + + + /* the number of offspring */ + eoValueParam < eoHowMany > &offspringRateParam = + _parser.createParam (eoHowMany (1.0), "nbOffspring", + "Nb of offspring (percentage or absolute)", 'O', + "Evolution Engine"); + + + + + + /* the replacement */ + string & repStr = + _parser.createParam (string ("Plus"), "replacement", + "Replacement: Plus, DistinctPlus or Generational", + 'R', "Evolution Engine").value (); + eoReplacement < EOT > *replace; + if (repStr == string ("Plus")) // Plus + { + replace = new moeoElitistReplacement < EOT, double >(*p2w); + } + else if (repStr == string ("DistinctPlus")) // DistinctPlus + { + replace = new moeoDisctinctElitistReplacement < EOT, double >(*p2w); + } + else if (repStr == string ("Generational")) // Generational + { + replace = new eoGenerationalReplacement < EOT >; + } + else + { + string stmp = string ("Invalid replacement: ") + repStr; + throw std::runtime_error (stmp.c_str ()); + } + // store + _state.storeFunctor (replace); + + + + + + // the general breeder + eoGeneralBreeder < EOT > *breed = + new eoGeneralBreeder < EOT > (*select, _op, offspringRateParam.value ()); + _state.storeFunctor (breed); + + // the eoEasyEA + eoAlgo < EOT > *algo = + new eoEasyEA < EOT > (_continue, _eval, *breed, *replace); + _state.storeFunctor (algo); + // that's it! + return *algo; +} + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/old/moeoBinaryQualityIndicator.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/old/moeoBinaryQualityIndicator.h new file mode 100644 index 000000000..50767188a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/old/moeoBinaryQualityIndicator.h @@ -0,0 +1,409 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// moeoBinaryQualityIndicator.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef _moeoBinaryQualityIndicator_h +#define _moeoBinaryQualityIndicator_h + +// for std::exceptions +#include +// for eoBF +#include + + +/** + * Functor + * Binary quality indicator + * Binary performance measure to use in the replacement selection process of IBEA (Indicator-Based Evolutionary Algorithm) + * Of course, EOFitness needs to be an eoParetoFitness object + */ +template < class EOFitness > class moeoBinaryQualityIndicator:public eoBF < const EOFitness &, const EOFitness &, + double > +{ + +public: + + /** + * constructor + */ + moeoBinaryQualityIndicator ():eoBF < const EOFitness &, const EOFitness &, + double >() + { + bounds.reserve (traits::nObjectives ()); + bounds.resize (traits::nObjectives ()); + } + + + /** + * set the bounds for objective _iObj + * @param unsigned _iObj the index of the objective + * @param double _min the minimum value + * @param double _max the maximum value + */ + void setBounds (const unsigned _iObj, const double _min, const double _max) + { + bounds[_iObj] = Range (_min, _max); + } + + +protected: + + /** + * Private class to represent the bounds + */ + class Range + { + public: + Range () + { + min = 0; + max = 0; + r = 0; + } + Range (const double _min, const double _max) + { + min = _min; + max = _max; + r = max - min; + if (r < 0) + throw std::logic_error ("Negative range in eoBinaryQualityIndicator"); + } + double minimum () + { + return min; + } + double maximum () + { + return max; + } + double range () + { + return r; + } + private: + double min, max, r; + }; + + + /** range (min and max double value) for each objective */ + std::vector < Range > bounds; + + +private: + + /** fitness traits */ + typedef typename EOFitness::fitness_traits traits; + +}; + + + + + +/** + * Functor + * Additive binary epsilon indicator for eoParetoFitness + */ +template < class EOFitness > class moeoAdditiveBinaryEpsilonIndicator:public moeoBinaryQualityIndicator < + EOFitness + > +{ + +public: + + /** + * constructor + */ +moeoAdditiveBinaryEpsilonIndicator ():moeoBinaryQualityIndicator < EOFitness > + () + { + } + + + /** + * computation of the maximum epsilon value by which individual _eo1 must be + * decreased in all objectives such that individual _eo2 is weakly dominated + * (do not forget to set the bounds before the call of this function) + * @param EOFitness & _fitness_eo1 the fitness of the first individual + * @param EOFitness & _fitness_eo2 the fitness of the second individual + */ + double operator () (const EOFitness & _fitness_eo1, + const EOFitness & _fitness_eo2) + { + double epsilon, tmp; + // computation of the epsilon value for the first objective + epsilon = epsilonValue (_fitness_eo1, _fitness_eo2, 0); + // computation of the epsilon value for other objectives + for (unsigned i = 1; i < traits::nObjectives (); i++) + { + tmp = epsilonValue (_fitness_eo1, _fitness_eo2, i); + epsilon = std::max (epsilon, tmp); + } + // the maximum epsilon value + return epsilon; + } + + +private: + + /** fitness traits */ + typedef typename EOFitness::fitness_traits traits; + /** bounds */ + using moeoBinaryQualityIndicator < EOFitness >::bounds; + + + /** + * computation of the epsilon value by which individual _eo1 must be + * decreased in the objective _iObj such that individual _eo2 is weakly dominated + * @param EOFitness & _fitness_eo1 the fitness of the first individual + * @param EOFitness & _fitness_eo2 the fitness of the second individual + * @param unsigned _iObj the index of the objective + */ + double epsilonValue (const EOFitness & _fitness_eo1, + const EOFitness & _fitness_eo2, const unsigned _iObj) + { + double result; + if (bounds[_iObj].range () == 0) + { + // min==max => every individuals has the same value for this objective + result = 0; + } + else + { + // computation of the epsilon value for the objective _iObj (in case of a minimization) + result = + (_fitness_eo1[_iObj] - + bounds[_iObj].minimum ()) / bounds[_iObj].range (); + result -= + (_fitness_eo2[_iObj] - + bounds[_iObj].minimum ()) / bounds[_iObj].range (); + // if we are maximizing, invert the value + if (traits::maximizing (_iObj)) + result = -result; + } + // the espilon value + return result; + } + +}; + + + + + +/** + * Functor + * Binary hypervolume indicator for eoParetoFitness + */ +template < class EOFitness > class moeoBinaryHypervolumeIndicator:public moeoBinaryQualityIndicator < + EOFitness > +{ + +public: + + /** + * constructor + * @param double _rho reference point for the hypervolume calculation (rho must not be smaller than 1) + */ +moeoBinaryHypervolumeIndicator (double _rho):moeoBinaryQualityIndicator < EOFitness > + () + { + rho = _rho; + // consistency check + if (rho < 1) + { + cout << + "Warning, reference point rho for the hypervolume calculation must not be smaller than 1" + << endl; + cout << "Adjusted to 1" << endl; + rho = 1; + } + } + + + /** + * indicator value of the hypervolume of the portion of the objective space + * that is dominated by individual _eo1 but not by individual _eo2 + * (don't forget to set the bounds before the call of this function) + * @param EOFitness & _fitness_eo1 the fitness of the first individual + * @param EOFitness & _fitness_eo2 the fitness of the second individual + */ + double operator () (const EOFitness & _fitness_eo1, + const EOFitness & _fitness_eo2) + { + double result; + if (_fitness_eo1.dominates (_fitness_eo2)) + result = + -hypervolumeIndicatorValue (_fitness_eo1, _fitness_eo2, + traits::nObjectives ()); + else + result = + hypervolumeIndicatorValue (_fitness_eo2, _fitness_eo1, + traits::nObjectives ()); + return result; + } + + +private: + + /** fitness traits */ + typedef typename EOFitness::fitness_traits traits; + /** bounds */ + using moeoBinaryQualityIndicator < EOFitness >::bounds; + + /** reference point for the hypervolume calculation */ + double rho; + + + /** + * computation of the hypervolume of the portion of the objective space + * that is dominated by individual _eo1 but not by individual _eo2 + * @param EOFitness & _fitness_eo1 the fitness of the first individual + * @param EOFitness & _fitness_eo2 the fitness of the second individual + * @param unsigned _iObj number of objectives (used for iteration) + * @param bool _flag = false (only used for iteration) + */ + double hypervolumeIndicatorValue (const EOFitness & _fitness_eo1, + const EOFitness & _fitness_eo2, + const unsigned _iObj, const bool _flag = + false) + { + double result; + if (bounds[_iObj - 1].range () == 0) + { + // min==max => every individuals as the same value for this objective + result = 0; + } + else + { + if (traits::maximizing (_iObj - 1)) // maximizing + result = + hypervolumeIndicatorValueMax (_fitness_eo1, _fitness_eo2, _iObj, + _flag); + else // minimizing + result = + hypervolumeIndicatorValueMin (_fitness_eo1, _fitness_eo2, _iObj, + _flag); + } + return result; + } + + + /** + * computation of the hypervolume of the portion of the objective space + * that is dominated by individual _eo1 but not by individual _eo2 + * in case of a minimization on the objective _iObj + * @param EOFitness & _fitness_eo1 the fitness of the first individual + * @param EOFitness & _fitness_eo2 the fitness of the second individual + * @param unsigned _iObj index of the objective + * @param bool _flag (only used for iteration) + */ + double hypervolumeIndicatorValueMin (const EOFitness & _fitness_eo1, + const EOFitness & _fitness_eo2, + const unsigned _iObj, const bool _flag) + { + double result; + double r = rho * bounds[_iObj - 1].range (); + double max = bounds[_iObj - 1].minimum () + r; + // fitness of individuals _eo1 and _eo2 for the objective _iObj (if flag==true, _eo2 is not taken into account) + double fitness_eo1 = _fitness_eo1[_iObj - 1]; + double fitness_eo2; + if (_flag) + fitness_eo2 = max; + else + fitness_eo2 = _fitness_eo2[_iObj - 1]; + // computation of the volume + if (_iObj == 1) + { + if (fitness_eo1 < fitness_eo2) + result = (fitness_eo2 - fitness_eo1) / r; + else + result = 0; + } + else + { + if (fitness_eo1 < fitness_eo2) + { + result = + hypervolumeIndicatorValue (_fitness_eo1, _fitness_eo2, + _iObj - 1) * (max - fitness_eo2) / r; + result += + hypervolumeIndicatorValue (_fitness_eo1, _fitness_eo2, + _iObj - 1, + true) * (fitness_eo2 - + fitness_eo1) / r; + } + else + result = + hypervolumeIndicatorValue (_fitness_eo1, _fitness_eo2, + _iObj - 1) * (max - fitness_eo2) / r; + } + // the volume + return result; + } + + + /** + * computation of the hypervolume of the portion of the objective space + * that is dominated by individual _eo1 but not by individual _eo2 + * in case of a maximization on the objective _iObj + * @param EOFitness & _fitness_eo1 the fitness of the first individual + * @param EOFitness & _fitness_eo2 the fitness of the second individual + * @param unsigned _iObj index of the objective + * @param bool _flag (only used for iteration) + */ + double hypervolumeIndicatorValueMax (const EOFitness & _fitness_eo1, + const EOFitness & _fitness_eo2, + const unsigned _iObj, const bool _flag) + { + double result; + double r = rho * bounds[_iObj - 1].range (); + double min = bounds[_iObj - 1].maximum () - r; + // fitness of individuals _eo1 and _eo2 for the objective _iObj (if flag==true, _eo2 is not taken into account) + double fitness_eo1 = _fitness_eo1[_iObj - 1]; + double fitness_eo2; + if (_flag) + fitness_eo2 = min; + else + fitness_eo2 = _fitness_eo2[_iObj - 1]; + // computation of the volume + if (_iObj == 1) + { + if (fitness_eo1 > fitness_eo2) + result = (fitness_eo1 - fitness_eo2) / r; + else + result = 0; + } + else + { + if (fitness_eo1 > fitness_eo2) + { + result = + hypervolumeIndicatorValue (_fitness_eo1, _fitness_eo2, + _iObj - 1) * (fitness_eo2 - min) / r; + result += + hypervolumeIndicatorValue (_fitness_eo1, _fitness_eo2, + _iObj - 1, + true) * (fitness_eo1 - + fitness_eo2) / r; + } + else + result = + hypervolumeIndicatorValue (_fitness_eo1, _fitness_eo2, + _iObj - 1) * (fitness_eo2 - min) / r; + } + // the volume + return result; + } + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/old/moeoIBEA.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/old/moeoIBEA.h new file mode 100644 index 000000000..8a21be09a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/old/moeoIBEA.h @@ -0,0 +1,476 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// moeoIBEASorting.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + + +#ifndef _moeoIBEASorting_h +#define _moeoIBEASorting_h + +#include +#include +#include +#include +#include "moeoBinaryQualityIndicator.h" + + +/** + * Functor + * The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) + */ +template < class EOT, class Fitness > class moeoIBEA:public eoPerf2WorthCached < EOT, + double > +{ + +public: + /** values */ + using eoPerf2WorthCached < EOT, double >::value; + + moeoIBEA (moeoBinaryQualityIndicator < Fitness > *_I) + { + I = _I; + } + + + /** + * mapping + * @param const eoPop& _pop the population + */ + void calculate_worths (const eoPop < EOT > &_pop) + { + /* resizing the worths beforehand */ + value ().resize (_pop.size ()); + + /* computation and setting of the bounds for each objective */ + setBounds (_pop); + + /* computation of the fitness for each individual */ + fitnesses (_pop); + + // higher is better, so invert the value + double max = *std::max_element (value ().begin (), value ().end ()); + for (unsigned i = 0; i < value ().size (); i++) + value ()[i] = max - value ()[i]; + } + + +protected: + + /** binary quality indicator to use in the selection process */ + moeoBinaryQualityIndicator < Fitness > *I; + + virtual void setBounds (const eoPop < EOT > &_pop) = 0; + virtual void fitnesses (const eoPop < EOT > &_pop) = 0; + +}; + + + + + +/** + * Functor + * The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) without uncertainty + * Adapted from the Zitzler and Künzli paper "Indicator-Based Selection in Multiobjective Search" (2004) + * Of course, Fitness needs to be an eoParetoFitness object + */ +template < class EOT, class Fitness = typename EOT::Fitness > class moeoIBEASorting:public moeoIBEA < EOT, + Fitness + > +{ + +public: + + /** + * constructor + * @param eoBinaryQualityIndicator* _I the binary quality indicator to use in the selection process + * @param double _kappa scaling factor kappa + */ + moeoIBEASorting (moeoBinaryQualityIndicator < Fitness > *_I, + const double _kappa): + moeoIBEA < + EOT, + Fitness > (_I) + { + kappa = _kappa; + } + + +private: + /** quality indicator */ + using moeoIBEA < EOT, Fitness >::I; + /** values */ + using moeoIBEA < EOT, Fitness >::value; + /** scaling factor kappa */ + double + kappa; + + + /** + * computation and setting of the bounds for each objective + * @param const eoPop& _pop the population + */ + void + setBounds (const eoPop < EOT > &_pop) + { + typedef + typename + EOT::Fitness::fitness_traits + traits; + double + min, + max; + for (unsigned i = 0; i < traits::nObjectives (); i++) + { + min = _pop[0].fitness ()[i]; + max = _pop[0].fitness ()[i]; + for (unsigned j = 1; j < _pop.size (); j++) + { + min = std::min (min, _pop[j].fitness ()[i]); + max = std::max (max, _pop[j].fitness ()[i]); + } + // setting of the bounds for the objective i + I->setBounds (i, min, max); + } + } + + + /** + * computation and setting of the fitness for each individual of the population + * @param const eoPop& _pop the population + */ + void + fitnesses (const eoPop < EOT > &_pop) + { + // reprsentation of the fitness components + std::vector < std::vector < double > > + fitComponents (_pop.size (), _pop.size ()); + // the maximum absolute indicator value + double + maxAbsoluteIndicatorValue = 0; + + // computation of the indicator values and of the maximum absolute indicator value + for (unsigned i = 0; i < _pop.size (); i++) + for (unsigned j = 0; j < _pop.size (); j++) + if (i != j) + { + fitComponents[i][j] = + (*I) (_pop[i].fitness (), _pop[j].fitness ()); + maxAbsoluteIndicatorValue = + std::max (maxAbsoluteIndicatorValue, + fabs (fitComponents[i][j])); + } + + // computation of the fitness components for each pair of individuals + // if maxAbsoluteIndicatorValue==0, every individuals have the same fitness values for all objectives (already = 0) + if (maxAbsoluteIndicatorValue != 0) + for (unsigned i = 0; i < _pop.size (); i++) + for (unsigned j = 0; j < _pop.size (); j++) + if (i != j) + fitComponents[i][j] = + exp (-fitComponents[i][j] / + (maxAbsoluteIndicatorValue * kappa)); + + // computation of the fitness for each individual + for (unsigned i = 0; i < _pop.size (); i++) + { + value ()[i] = 0; + for (unsigned j = 0; j < _pop.size (); j++) + if (i != j) + value ()[i] += fitComponents[j][i]; + } + } + +}; + + + + + +/** + * Functor + * The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty + * Adapted from the Basseur and Zitzler paper "Handling Uncertainty in Indicator-Based Multiobjective Optimization" (2006) + * Of course, the fitness of an individual needs to be an eoStochasticParetoFitness object + */ +template < class EOT, class FitnessEval = typename EOT::Fitness::FitnessEval > class moeoIBEAStochSorting:public moeoIBEA < EOT, + FitnessEval + > +{ + +public: + + /** + * constructor + * @param eoBinaryQualityIndicator* _I the binary quality indicator to use in the selection process + */ +moeoIBEAStochSorting (moeoBinaryQualityIndicator < FitnessEval > *_I):moeoIBEA < EOT, + FitnessEval > + (_I) + { + } + + +private: + /** quality indicator */ + using moeoIBEAStochSorting < EOT, FitnessEval >::I; + /** values */ + using moeoIBEAStochSorting < EOT, FitnessEval >::value; + + + /** + * approximated zero value + */ + static double + zero () + { + return 1e-7; + } + + + /** + * computation and setting of the bounds for each objective + * @param const eoPop& _pop the population + */ + void + setBounds (const eoPop < EOT > &_pop) + { + typedef + typename + EOT::Fitness::FitnessTraits + traits; + double + min, + max; + for (unsigned i = 0; i < traits::nObjectives (); i++) + { + min = _pop[0].fitness ().minimum (i); + max = _pop[0].fitness ().maximum (i); + for (unsigned j = 1; j < _pop.size (); j++) + { + min = std::min (min, _pop[j].fitness ().minimum (i)); + max = std::max (max, _pop[j].fitness ().maximum (i)); + } + // setting of the bounds for the ith objective + I->setBounds (i, min, max); + } + } + + + /** + * computation and setting of the fitness for each individual of the population + * @param const eoPop& _pop the population + */ + void + fitnesses (const eoPop < EOT > &_pop) + { + typedef + typename + EOT::Fitness::FitnessTraits + traits; + unsigned + nEval = traits::nEvaluations (); + unsigned + index; + double + eiv, + p, + sumP, + iValue; + std::list < std::pair < double, unsigned > > + l; + std::vector < unsigned > + n (_pop.size ()); + + for (unsigned ind = 0; ind < _pop.size (); ind++) + { + value ()[ind] = 0.0; // fitness value for the individual ind + for (unsigned eval = 0; eval < nEval; eval++) + { + + // I-values computation for the evaluation eval of the individual ind + l.clear (); + for (unsigned i = 0; i < _pop.size (); i++) + { + if (i != ind) + { + for (unsigned j = 0; j < nEval; j++) + { + std::pair < double, unsigned > + pa; + // I-value + pa.first = + (*I) (_pop[ind].fitness ()[eval], + _pop[i].fitness ()[j]); + // index of the individual + pa.second = i; + // append this to the list + l.push_back (pa); + } + } + } + + // sorting of the I-values (in decreasing order) + l.sort (); + + // computation of the Expected Indicator Value (eiv) for the evaluation eval of the individual ind + eiv = 0.0; + n.assign (n.size (), 0); // n[i]==0 for all i + sumP = 0.0; + while (((1 - sumP) > zero ()) && (l.size () > 0)) + { + // we use the last element of the list (the greatest one) + iValue = l.back ().first; + index = l.back ().second; + // computation of the probability to appear + p = (1.0 / (nEval - n[index])) * (1.0 - sumP); + // eiv update + eiv += p * iValue; + // update of the number of elements for individual index + n[index]++; + // removing the last element of the list + l.pop_back (); + // sum of p update + sumP += p; + } + value ()[ind] += eiv / nEval; + } + } + + } + +}; + + + + + +/** + * Functor + * The sorting phase of IBEA (Indicator-Based Evolutionary Algorithm) under uncertainty using averaged values for each objective + * Follow the idea presented in the Deb & Gupta paper "Searching for Robust Pareto-Optimal Solutions in Multi-Objective Optimization", 2005 + * Of course, the fitness of an individual needs to be an eoStochasticParetoFitness object + */ +template < class EOT, class FitnessEval = typename EOT::Fitness::FitnessEval > class moeoIBEAAvgSorting:public moeoIBEA < EOT, + FitnessEval + > +{ + +public: + + /** + * constructor + * @param eoBinaryQualityIndicator* _I the binary quality indicator to use in the selection process + * @param double _kappa scaling factor kappa + */ + moeoIBEAAvgSorting (moeoBinaryQualityIndicator < FitnessEval > *_I, + const double _kappa): + moeoIBEA < + EOT, + FitnessEval > (_I) + { + kappa = _kappa; + } + + +private: + /** quality indicator */ + using moeoIBEAAvgSorting < EOT, FitnessEval >::I; + /** values */ + using moeoIBEAAvgSorting < EOT, FitnessEval >::value; + /** scaling factor kappa */ + double + kappa; + + + /** + * computation and setting of the bounds for each objective + * @param const eoPop& _pop the population + */ + void + setBounds (const eoPop < EOT > &_pop) + { + typedef + typename + EOT::Fitness::FitnessTraits + traits; + double + min, + max; + for (unsigned i = 0; i < traits::nObjectives (); i++) + { + min = _pop[0].fitness ().averagedParetoFitnessObject ()[i]; + max = _pop[0].fitness ().averagedParetoFitnessObject ()[i]; + for (unsigned j = 1; j < _pop.size (); j++) + { + min = + std::min (min, + _pop[j].fitness ().averagedParetoFitnessObject ()[i]); + max = + std::max (max, + _pop[j].fitness ().averagedParetoFitnessObject ()[i]); + } + // setting of the bounds for the objective i + I->setBounds (i, min, max); + } + } + + + /** + * computation and setting of the fitness for each individual of the population + * @param const eoPop& _pop the population + */ + void + fitnesses (const eoPop < EOT > &_pop) + { + // reprsentation of the fitness components + std::vector < std::vector < double > > + fitComponents (_pop.size (), _pop.size ()); + // the maximum absolute indicator value + double + maxAbsoluteIndicatorValue = 0; + + // computation of the indicator values and of the maximum absolute indicator value + for (unsigned i = 0; i < _pop.size (); i++) + for (unsigned j = 0; j < _pop.size (); j++) + if (i != j) + { + fitComponents[i][j] = + (*I) (_pop[i].fitness ().averagedParetoFitnessObject (), + _pop[j].fitness ().averagedParetoFitnessObject ()); + maxAbsoluteIndicatorValue = + std::max (maxAbsoluteIndicatorValue, + fabs (fitComponents[i][j])); + } + + // computation of the fitness components for each pair of individuals + // if maxAbsoluteIndicatorValue==0, every individuals have the same fitness values for all objectives (already = 0) + if (maxAbsoluteIndicatorValue != 0) + for (unsigned i = 0; i < _pop.size (); i++) + for (unsigned j = 0; j < _pop.size (); j++) + if (i != j) + fitComponents[i][j] = + exp (-fitComponents[i][j] / + (maxAbsoluteIndicatorValue * kappa)); + + // computation of the fitness for each individual + for (unsigned i = 0; i < _pop.size (); i++) + { + value ()[i] = 0; + for (unsigned j = 0; j < _pop.size (); j++) + if (i != j) + value ()[i] += fitComponents[j][i]; + } + } + +}; + + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/old/moeoParetoPhenDist.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/old/moeoParetoPhenDist.h new file mode 100644 index 000000000..8f223bc66 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/old/moeoParetoPhenDist.h @@ -0,0 +1,50 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// moeoParetoPhenDist.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#include + +template < class EOT, class DistType > class moeoParetoPhenDist +{ +public: + virtual DistType operator ()(const EOT & eopf1, const EOT & eopf2) = 0; + +}; + + + +//Euclidien distance + +template < class EOT, class DistType = + double >class moeoParetoEuclidDist:public moeoParetoPhenDist < EOT, + DistType > +{ + +public: + DistType operator () (const EOT & eopf1, const EOT & eopf2) + { + double res = 0.0; + double max = 0.0; + double temp; + for (unsigned i = 0; i < eopf1.fitness ().size (); ++i) + { + temp = + (eopf1.fitness ().operator[](i) - + eopf2.fitness ().operator[](i)) * (eopf1.fitness ().operator[](i) - + eopf2.fitness ().operator[](i)); + if (temp > max) + max = temp; /* for normalization */ + res = res + temp; + } + return sqrt (res / max); + } + +}; diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/src/old/moeoParetoSharing.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/old/moeoParetoSharing.h new file mode 100644 index 000000000..8fb949bcb --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/src/old/moeoParetoSharing.h @@ -0,0 +1,157 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// moeoParetoSharing.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#include +#include +#include +#include + +template < class EOT, class worthT = + double >class moeoParetoSharing:public eoPerf2Worth < EOT, worthT > +{ +public: + + moeoParetoSharing (double _nicheSize):eoPerf2Worth < EOT, + worthT > ("ParetoSharing"), nicheSize (_nicheSize), dist (euc_dist), + Dmax (_nicheSize) + { + } + + + moeoParetoSharing (double _nicheSize, moeoParetoPhenDist < EOT, + worthT > &_dist):eoPerf2Worth < EOT, + worthT > ("ParetoSharing"), nicheSize (_nicheSize), dist (_dist), + Dmax (_nicheSize) + { + } + + + + + void operator () /*calculate_worths */ (const eoPop < EOT > &_pop) + { + + unsigned i, j, pSize = _pop.size (); + //cout<<"**************************************************************************************\n"; + // std :: cout << "psize = " << pSize << std :: endl ; + if (pSize <= 1) + throw std:: + runtime_error ("Apptempt to do sharing with population of size 1"); + eoPerf2Worth < EOT, worthT >::value ().resize (pSize); + std::vector < double >sim (pSize); // to hold the similarities + + dMatrix distMatrix (pSize); + +// compute the distance + distMatrix[0][0] = 0; + for (i = 1; i < pSize; i++) + { + distMatrix[i][i] = 0; + for (j = 0; j < i; j++) + { + //if + distMatrix[i][j] = distMatrix[j][i] = dist (_pop[i], _pop[j]); + //cout<<" "<"< Dmap1; + Dmap1.setup (_pop); + + eoParetoRanking < EOT > rnk1 (Dmap1); + rnk1.calculate_worths (_pop); +// now set the worthes values + for (i = 0; i < pSize; ++i) + { + typename EOT::Fitness v; + + + +//cout<<"voila: "<< +//rnk1.value().operator[](i); + +//vector v; +//v.resize(_pop[i].fitness().size()); +//for(unsigned k=0;k<_pop[i].fitness().size();++k) +//v[k]=_pop[i].fitness().operator[](k)/sim[i]; +//_pop[i].fitness(v);//.operator[](k)=0;//_pop[i].fitness().operator[](k)/sim[i]; + eoPerf2Worth < EOT, worthT >::value ()[i] = rnk1.value ().operator[](i) / sim[i]; //*_pop[i].fitness().operator[](1)*_pop[i].fitness().operator[](1)); +//cout<<"\n__________"< > + { + public: + dMatrix (unsigned _s):rSize (_s) + { + this->resize (_s); + for (unsigned i = 0; i < _s; ++i) + this->operator[] (i).resize (_s); + } + + void printOn (std::ostream & _os) + { + for (unsigned i = 0; i < rSize; i++) + for (unsigned j = 0; j < rSize; ++j) + { + _os << this->operator[](i)[j] << " "; + _os << endl; + } + _os << endl; + } +//public: +//std::vectorv; + + private: + + + + + unsigned rSize; + }; + +private: + + ; + + double sh (double dist, double Dmax) + { + if (dist < Dmax) + return (1.0 - dist / Dmax); + else + return (0.0); + } + + double nicheSize; + moeoParetoPhenDist < EOT, worthT > &dist; + moeoParetoEuclidDist < EOT > euc_dist; + double Dmax; + +}; diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/Makefile.am new file mode 100755 index 000000000..845f8f563 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/Makefile.am @@ -0,0 +1 @@ +SUBDIRS=lesson1 lesson2 diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShop.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShop.h new file mode 100644 index 000000000..df533b4df --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShop.h @@ -0,0 +1,137 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// FlowShop.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef _FlowShop_h +#define _FlowShop_h + +#include +// Fitness for multi-objective flow-shop +#include "FlowShopFitness.h" + + +/** + * Structure of the genotype for the flow-shop scheduling problem + */ +class FlowShop:public EO < FlowShopFitness > +{ + +public: + + /** + * default constructor + */ + FlowShop () + { + } + + /** + * destructor + */ + virtual ~ FlowShop () + { + } + + /** + * class name + */ + virtual string className () const + { + return "FlowShop"; + } + + /** + * set scheduling vector + * @param vector & _scheduling the new scheduling to set + */ + void setScheduling (vector < unsigned >&_scheduling) + { + scheduling = _scheduling; + } + + /** + * get scheduling vector + */ + const vector < unsigned >&getScheduling () const + { + return scheduling; + } + + /** + * printing... + */ + void printOn (ostream & _os) const + { + // fitness + EO < FlowShopFitness >::printOn (_os); + _os << "\t"; + // size + _os << scheduling.size () << "\t"; + // scheduling + for (unsigned i = 0; i < scheduling.size (); i++) + _os << scheduling[i] << ' '; + } + + /** + * reading... + */ + void readFrom (istream & _is) + { + // fitness + EO < FlowShopFitness >::readFrom (_is); + // size + unsigned size; + _is >> size; + // scheduling + scheduling.resize (size); + bool tmp; + for (unsigned i = 0; i < size; i++) + { + _is >> tmp; + scheduling[i] = tmp; + } + } + + + bool operator== (const FlowShop & _other) const + { + return scheduling == _other.getScheduling (); + } + bool operator!= (const FlowShop & _other) const + { + return scheduling != _other.getScheduling (); + } + bool operator< (const FlowShop & _other) const + { + return scheduling < _other.getScheduling (); + } + bool operator> (const FlowShop & _other) const + { + return scheduling > _other.getScheduling (); + } + bool operator<= (const FlowShop & _other) const + { + return scheduling <= _other.getScheduling (); + } + bool operator>= (const FlowShop & _other) const + { + return scheduling >= _other.getScheduling (); + } + + +private: + + /** scheduling (order of operations) */ + std::vector < unsigned >scheduling; + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopBenchmarkParser.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopBenchmarkParser.h new file mode 100644 index 000000000..f0e36d8fd --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopBenchmarkParser.h @@ -0,0 +1,182 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// FlowShopBenchmarkParser.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef _FlowShopBenchmarkParser_h +#define _FlowShopBenchmarkParser_h + +// general include +#include +#include + +/** Web site to download benchmarks */ +const static + std::string + BENCHMARKS_WEB_SITE = "www.lifl.fr/~liefooga/benchmarks/"; + + +/** + * Class to handle parameters of a flow-shop instance from a benchmark file + * benchmark files are available at www.lifl.fr/~basseur/BenchsUncertain/ + */ +class + FlowShopBenchmarkParser +{ + +public: + + /** + * constructor + * @param const string _benchmarkFileName the name of the benchmark file + */ + FlowShopBenchmarkParser (const string _benchmarkFileName) + { + init (_benchmarkFileName); + } + + /** + * the number of machines + */ + const unsigned + getM () + { + return M; + } + + /** + * the number of jobs + */ + const unsigned + getN () + { + return N; + } + + /** + * the processing times + */ + const + std::vector < + std::vector < unsigned > > + getP () + { + return p; + } + + /** + * the due-dates + */ + const + std::vector < unsigned > + getD () + { + return d; + } + + /** + * printing... + */ + void + printOn (ostream & _os) const + { + _os << + "M=" << + M << + " N=" << + N << + endl; + _os << + "*** processing times" << + endl; + for (unsigned i = 0; i < M; i++) + { + for (unsigned j = 0; j < N; j++) + { + _os << p[i][j] << " "; + } + _os << + endl; + } + _os << "*** due-dates" << endl; + for (unsigned j = 0; j < N; j++) + { + _os << d[j] << " "; + } + _os << endl << endl; + } + +private: + /** number of machines */ + unsigned + M; + /** number of jobs */ + unsigned + N; + /** p[i][j] = processing time of job j on machine i */ + std::vector < std::vector < unsigned > > + p; + /** d[j] = due-date of the job j */ + std::vector < unsigned > + d; + + + /** + * Initialisation of the parameters with the data contained in the benchmark file + * @param const string _benchmarkFileName the name of the benchmark file + */ + void + init (const string _benchmarkFileName) + { + string + buffer; + string::size_type start, end; + ifstream + inputFile (_benchmarkFileName.data (), ios::in); + // opening of the benchmark file + if (!inputFile) + cerr << "*** ERROR : Unable to open the benchmark file '" << + _benchmarkFileName << "'" << endl; + // number of jobs (N) + getline (inputFile, buffer, '\n'); + N = atoi (buffer.data ()); + // number of machines M + getline (inputFile, buffer, '\n'); + M = atoi (buffer.data ()); + // initial and current seeds (not used) + getline (inputFile, buffer, '\n'); + // processing times and due-dates + p = std::vector < std::vector < unsigned > > (M, N); + d = std::vector < unsigned >(N); + // for each job... + for (unsigned j = 0; j < N; j++) + { + // index of the job (<=> 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 i = 0; i < M; i++) + { + end = buffer.find_first_of (" ", start); + p[i][j] = atoi (buffer.substr (start, end - start).data ()); + start = buffer.find_first_not_of (" ", end); + } + } + // closing of the input file + inputFile.close (); + } + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopEA b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopEA new file mode 100755 index 000000000..6898829b1 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopEA differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopEA.cpp b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopEA.cpp new file mode 100644 index 000000000..3f9dbf3ee --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopEA.cpp @@ -0,0 +1,158 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// FlowShopEA.cpp +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +// Miscilaneous include and declaration +using namespace std; + + +/* EO */ +// eo general include +#include "eo" +// for the creation of an evaluator +#include "make_eval_FlowShop.h" +// for the creation of an initializer +#include "make_genotype_FlowShop.h" +// for the creation of the variation operators +#include "make_op_FlowShop.h" +// how to initialize the population +#include +// the stopping criterion +#include +// outputs (stats, population dumps, ...) +#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); + + +/* MOEO */ +#include +#include +#include +#include +#include +#include +// evolution engine (selection and replacement) +#include + +/* FLOW-SHOP */ +// definition of representation +#include "FlowShop.h" +// definition of fitness +#include "FlowShopFitness.h" + + + +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 < FlowShop > &eval = do_make_eval (parser, state); + // the genotype (through a genotype initializer) + eoInit < FlowShop > &init = do_make_genotype (parser, state); + // the variation operators + eoGenOp < FlowShop > &op = do_make_op (parser, state); + + + + + + /*** the representation-independent things ***/ + + // initialization of the population + eoPop < FlowShop > &pop = do_make_pop (parser, state, init); + // definition of the archive + moeoArchive < FlowShop > arch; + // stopping criteria + eoContinue < FlowShop > &term = + do_make_continue_pareto (parser, state, eval); + // output + eoCheckPoint < FlowShop > &checkpoint = + do_make_checkpoint_pareto (parser, state, eval, term); + // algorithm + eoAlgo < FlowShop > &algo = + do_make_algo_MOEO (parser, state, eval, checkpoint, op, arch); + + + + + + /*** archive-related features ***/ + // update the archive every generation + moeoArchiveUpdater < FlowShop > updater (arch, pop); + checkpoint.add (updater); + // save the archive every generation in 'Res/Arch*' + moeoArchiveFitnessSavingUpdater < FlowShop > save_updater (arch); + checkpoint.add (save_updater); + // save the contribution of the non-dominated solutions in 'Res/Contribution.txt' + moeoVectorVsVectorBM < FlowShop, double >*contribution = + new moeoContributionMetric < FlowShop > (); + moeoBinaryMetricSavingUpdater < FlowShop > + contribution_updater (*contribution, arch, "Res/Contribution.txt"); + checkpoint.add (contribution_updater); + // save the entropy of the non-dominated solutions in 'Res/Entropy.txt' + moeoVectorVsVectorBM < FlowShop, double >*entropy = + new moeoEntropyMetric < FlowShop > (); + moeoBinaryMetricSavingUpdater < FlowShop > entropy_updater (*entropy, + arch, + "Res/Entropy.txt"); + checkpoint.add (entropy_updater); + + + + + /*** Go ! ***/ + + // help ? + make_help (parser); + + // first evalution + apply < FlowShop > (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-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopEA.param b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopEA.param new file mode 100644 index 000000000..c70b0b1a7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopEA.param @@ -0,0 +1,51 @@ + +###### General ###### +# --help=0 # -h : Prints this message +# --stopOnUnknownParam=1 # Stop if unkown param entered +# --seed=1165485212 # -S : Random number seed + +###### Evolution Engine ###### +--popSize=20 # -P : Population Size +--selCrit=NSGA-II # -S : Multi-objective selection criterion: NSGA, NSGA-II, IBEA, ParetoRanking, ParetoSharing +--nicheSize=1 # -n : Size of niche for NSGA-I or ParetoSharing +--kappa=0.05 # -k : Scaling factor kappa for IBEA +--indicator=Epsilon # -I : Binary quality indicator for IBEA : Epsilon, Hypervolume +--rho=1.1 # -r : reference point for the hypervolume calculation (must not be smaller than 1) +--selection=DetTour(2) # -s : Selection: Roulette, DetTour(T), StochTour(t) or Random +--elitism=0 # -E : Use elitism in the selection process (individuals from the archive are randomly selected) +--ratio=0.8 # Ratio from the population for elitism (must not be greater than 1) +--nbOffspring=100% # -O : Nb of offspring (percentage or absolute) +--replacement=Plus # -R : Replacement: Plus, DistinctPlus or Generational + +###### Output ###### +--useEval=1 # Use nb of eval. as counter (vs nb of gen.) +--printPop=0 # Print sorted pop. every gen. + +###### Output - Disk ###### +--resDir=Res # Directory to store DISK outputs +--eraseDir=1 # erase files in dirName if any +--frontFileFrequency=1(0,1) # File save frequency in objective spaces (std::pairs of comma-separated objectives in 1 single parentheses std::pair) + +###### Output - Graphical ###### +--plotFront=0 # Objective plots (requires corresponding files - see frontFileFrequency + +###### 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_05_01.txt # -B : Benchmark file name (benchmarks are available at www.lifl.fr/~basseur/BenchsUncertain/) REQUIRED + +###### Stopping criterion ###### +--maxGen=100 # -G : Maximum number of generations () = 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-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopEval.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopEval.h new file mode 100644 index 000000000..10754ccaf --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopEval.h @@ -0,0 +1,146 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// FlowShopEval.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef _FlowShopEval_h +#define _FlowShopEval_h + +// Flow-shop fitness +#include "FlowShopFitness.h" +// include the base definition of eoEvalFunc +#include + + + +/** + * Functor + * Computation of the multi-objective evaluation of a FlowShop object + */ +class FlowShopEval:public eoEvalFunc < FlowShop > +{ + +public: + + /** + * constructor + * @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 (const unsigned _M, const unsigned _N, + const vector < vector < unsigned > >&_p, + const vector < unsigned >&_d):M (_M), N (_N), p (_p), d (_d) + { + + unsigned nObjs = 2; + std::vector < bool > bObjs (nObjs, false); + eoVariableParetoTraits::setUp (nObjs, bObjs); + } + + + + /** + * computation of the multi-objective evaluation of an eoFlowShop object + * @param FlowShop & _eo the FlowShop object to evaluate + */ + void operator () (FlowShop & _eo) + { + FlowShopFitness fitness; + fitness[0] = tardiness (_eo); + fitness[1] = makespan (_eo); + _eo.fitness (fitness); + } + + + + + +private: + + /** number of machines */ + unsigned M; + /** number of jobs */ + unsigned N; + /** p[i][j] = processing time of job j on machine i */ + std::vector < std::vector < unsigned > >p; + /** d[j] = due-date of the job j */ + std::vector < unsigned >d; + + + + /** + * computation of the makespan + * @param FlowShop _eo the FlowShop object to evaluate + */ + double makespan (FlowShop _eo) + { + // the scheduling to evaluate + vector < unsigned >scheduling = _eo.getScheduling (); + // 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 < unsigned > >C = completionTime (_eo); + // fitness == C[M-1][scheduling[N-1]]; + return C[M - 1][scheduling[N - 1]]; + } + + + + /** + * computation of the tardiness + * @param _eo the FlowShop object to evaluate + */ + double tardiness (FlowShop _eo) + { + // the scheduling to evaluate + vector < unsigned >scheduling = _eo.getScheduling (); + // 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 < unsigned > >C = completionTime (_eo); + // tardiness computation + unsigned long sum = 0; + for (unsigned j = 0; j < N; j++) + sum += + (unsigned) std::max (0, + (int) (C[M - 1][scheduling[j]] - + d[scheduling[j]])); + // fitness == sum + return sum; + } + + + + /** + * 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 const FlowShop _eo the genotype to evaluate + */ + std::vector < std::vector < unsigned > >completionTime (FlowShop _eo) + { + vector < unsigned >scheduling = _eo.getScheduling (); + std::vector < std::vector < unsigned > >C (M, N); + C[0][scheduling[0]] = p[0][scheduling[0]]; + for (unsigned j = 1; j < N; j++) + C[0][scheduling[j]] = C[0][scheduling[j - 1]] + p[0][scheduling[j]]; + for (unsigned i = 1; i < M; i++) + C[i][scheduling[0]] = C[i - 1][scheduling[0]] + p[i][scheduling[0]]; + for (unsigned i = 1; i < M; i++) + for (unsigned j = 1; j < N; j++) + C[i][scheduling[j]] = + std::max (C[i][scheduling[j - 1]], + C[i - 1][scheduling[j]]) + p[i][scheduling[j]]; + return C; + } + + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopFitness.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopFitness.h new file mode 100644 index 000000000..e9094bd86 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopFitness.h @@ -0,0 +1,24 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// FlowShopFitness.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef _FlowShopFitness_h +#define _FlowShopFitness_h + +#include + + +/** + * definition of the fitness for multi-objective flow-shop problems + */ +typedef eoParetoFitness < eoVariableParetoTraits > FlowShopFitness; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopInit.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopInit.h new file mode 100644 index 000000000..616b52c39 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopInit.h @@ -0,0 +1,68 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// FlowShopInit.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef _FlowShopInit_h +#define _FlowShopInit_h + +#include + + +/** + * Functor + * Initialisation of a random genotype built by the default constructor of the eoFlowShop class + */ +class FlowShopInit:public eoInit < FlowShop > +{ + +public: + + /** + * constructor + * @param const unsigned _N the number of jobs to schedule + */ + FlowShopInit (const unsigned _N) + { + N = _N; + } + + /** + * randomize a genotype + * @param FlowShop & _genotype a genotype that has been default-constructed + */ + void operator () (FlowShop & _genotype) + { + // scheduling vector + vector < unsigned >scheduling (N); + // initialisation of possible values + vector < unsigned >possibles (N); + for (unsigned i = 0; i < N; i++) + possibles[i] = i; + // random initialization + unsigned rInd; // random index + for (unsigned i = 0; i < N; i++) + { + rInd = (unsigned) rng.uniform (N - i); + scheduling[i] = possibles[rInd]; + possibles[rInd] = possibles[N - i - 1]; + } + _genotype.setScheduling (scheduling); + _genotype.invalidate (); // IMPORTANT in case the _genotype is old + } + + +private: + /** the number of jobs (size of a scheduling vector) */ + unsigned N; + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopOpCrossoverQuad.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopOpCrossoverQuad.h new file mode 100644 index 000000000..c755664c4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopOpCrossoverQuad.h @@ -0,0 +1,138 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// FlowShopOpCrossoverQuad.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef _FlowShopOpCrossoverQuad_h +#define _FlowShopOpCrossoverQuad_h + +#include + +/** + * Functor + * Quadratic crossover operator for flow-shop (modify the both genotypes) + */ +class FlowShopOpCrossoverQuad:public eoQuadOp < FlowShop > +{ + +public: + + /** + * default constructor + */ + FlowShopOpCrossoverQuad () + { + } + + /** + * the class name (used to display statistics) + */ + string className () const + { + return "FlowShopOpCrossoverQuad"; + } + + /** + * eoQuad crossover - _genotype1 and _genotype2 are the (future) offspring, i.e. _copies_ of the parents + * @param FlowShop & _genotype1 the first parent + * @param FlowShop & _genotype2 the second parent + */ + bool operator () (FlowShop & _genotype1, FlowShop & _genotype2) + { + bool oneAtLeastIsModified; + + // parents + vector < unsigned >parent1 = _genotype1.getScheduling (); + vector < unsigned >parent2 = _genotype2.getScheduling (); + + // computation of the 2 random points + unsigned point1, point2; + do + { + point1 = rng.random (min (parent1.size (), parent2.size ())); + point2 = rng.random (min (parent1.size (), parent2.size ())); + } + while (fabs ((double) point1 - point2) <= 1); + + // computation of the offspring + vector < unsigned >offspring1 = + generateOffspring (parent1, parent2, point1, point2); + vector < unsigned >offspring2 = + generateOffspring (parent2, parent1, point1, point2); + + // does at least one genotype has been modified ? + if ((parent1 != offspring1) || (parent2 != offspring2)) + { + // update + _genotype1.setScheduling (offspring1); + _genotype2.setScheduling (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; + } + + +private: + + /** + * generation of an offspring by a 2 points crossover + * @param vector _parent1 the first parent + * @param vector _parent2 the second parent + * @param unsigned_point1 the first point + * @param unsigned_point2 the second point + */ + vector < unsigned >generateOffspring (vector < unsigned >_parent1, + vector < unsigned >_parent2, + unsigned _point1, unsigned _point2) + { + vector < unsigned >result = _parent1; + vector < bool > taken_values (result.size (), false); + if (_point1 > _point2) + swap (_point1, _point2); + + /* first parent */ + for (unsigned i = 0; i <= _point1; i++) + { + // result[i] == _parent1[i] + taken_values[_parent1[i]] = true; + } + for (unsigned i = _point2; i < result.size (); i++) + { + // result[i] == _parent1[i] + taken_values[_parent1[i]] = true; + } + + /* second parent */ + unsigned i = _point1 + 1; + unsigned j = 0; + while (i < _point2 && j < _parent2.size ()) + { + if (!taken_values[_parent2[j]]) + { + result[i] = _parent2[j]; + i++; + } + j++; + } + + return result; + } + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopOpMutationExchange.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopOpMutationExchange.h new file mode 100644 index 000000000..af9ded0d8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopOpMutationExchange.h @@ -0,0 +1,87 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// FlowShopOpMutationExchange.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef _FlowShopOpMutationExchange_h +#define _FlowShopOpMutationExchange_h + +#include + + +/** + * Functor + * Exchange mutation operator for flow-shop + */ +class FlowShopOpMutationExchange:public eoMonOp < FlowShop > +{ + +public: + + /** + * default constructor + */ + FlowShopOpMutationExchange () + { + } + + /** + * the class name (used to display statistics) + */ + string className () const + { + return "FlowShopOpMutationExchange"; + } + + /** + * modifies the parent with an exchange mutation + * @param FlowShop & _genotype the parent genotype (will be modified) + */ + bool operator () (FlowShop & _genotype) + { + bool isModified; + + // schedulings + vector < unsigned >initScheduling = _genotype.getScheduling (); + vector < unsigned >resultScheduling = _genotype.getScheduling (); + + // computation of the 2 random points + unsigned point1, point2; + do + { + point1 = rng.random (resultScheduling.size ()); + point2 = rng.random (resultScheduling.size ()); + } + while (point1 == point2); + + // swap + swap (resultScheduling[point1], resultScheduling[point2]); + + // update (if necessary) + if (resultScheduling != initScheduling) + { + // update + _genotype.setScheduling (resultScheduling); + // 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; + } + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopOpMutationShift.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopOpMutationShift.h new file mode 100644 index 000000000..77ce5ec84 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/FlowShopOpMutationShift.h @@ -0,0 +1,97 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// FlowShopOpMutationShift.h +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef _FlowShopOpMutationShift_h +#define _FlowShopOpMutationShift_h + +#include + + +/** + * Functor + * Shift mutation operator for flow-shop + */ +class FlowShopOpMutationShift:public eoMonOp < FlowShop > +{ + +public: + + /** + * default constructor + */ + FlowShopOpMutationShift () + { + } + + /** + * the class name (used to display statistics) + */ + string className () const + { + return "FlowShopOpMutationShift"; + } + + /** + * modifies the parent with a shift mutation + * @param FlowShop & _genotype the parent genotype (will be modified) + */ + bool operator () (FlowShop & _genotype) + { + bool isModified; + int direction; + unsigned tmp; + + // schedulings + vector < unsigned >initScheduling = _genotype.getScheduling (); + vector < unsigned >resultScheduling = initScheduling; + + // computation of the 2 random points + unsigned point1, point2; + do + { + point1 = rng.random (resultScheduling.size ()); + point2 = rng.random (resultScheduling.size ()); + } + while (point1 == point2); + + // direction + if (point1 < point2) + direction = 1; + else + direction = -1; + // mutation + tmp = resultScheduling[point1]; + for (unsigned i = point1; i != point2; i += direction) + resultScheduling[i] = resultScheduling[i + direction]; + resultScheduling[point2] = tmp; + + // update (if necessary) + if (resultScheduling != initScheduling) + { + // update + _genotype.setScheduling (resultScheduling); + // 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; + } + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/Makefile.am new file mode 100644 index 000000000..26370a030 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/Makefile.am @@ -0,0 +1,9 @@ + +noinst_PROGRAMS = FlowShopEA + +FlowShopEA_SOURCES = FlowShopEA.cpp + +LDADD = -L$(top_builddir)/src ${EO_DIR}/src/libeo.a ${EO_DIR}/src/utils/libeoutils.a + +INCLUDES = -I${EO_DIR}/src/ -I$(top_srcdir)/src + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/020_05_01.txt b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/020_05_01.txt new file mode 100644 index 000000000..2c2f78d86 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/020_05_01.txt @@ -0,0 +1,63 @@ +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-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/020_05_02.txt b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/020_05_02.txt new file mode 100644 index 000000000..c82c2d033 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/020_05_02.txt @@ -0,0 +1,63 @@ +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-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/020_10_01.txt b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/020_10_01.txt new file mode 100644 index 000000000..96bca095d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/020_10_01.txt @@ -0,0 +1,63 @@ +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-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/020_10_02.txt b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/020_10_02.txt new file mode 100644 index 000000000..bf23361f5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/020_10_02.txt @@ -0,0 +1,63 @@ +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-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/020_20_01.txt b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/020_20_01.txt new file mode 100644 index 000000000..2ef8f0bee --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/020_20_01.txt @@ -0,0 +1,63 @@ +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-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/050_05_01.txt b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/050_05_01.txt new file mode 100644 index 000000000..5f4b46f37 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/050_05_01.txt @@ -0,0 +1,153 @@ +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-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/050_10_01.txt b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/050_10_01.txt new file mode 100644 index 000000000..17f3cb117 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/050_10_01.txt @@ -0,0 +1,153 @@ +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-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/050_20_01.txt b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/050_20_01.txt new file mode 100644 index 000000000..23ccddab3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/050_20_01.txt @@ -0,0 +1,153 @@ +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-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/100_05_01.txt b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/100_05_01.txt new file mode 100644 index 000000000..f0d8d9b38 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/100_05_01.txt @@ -0,0 +1,303 @@ +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-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/100_10_01.txt b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/100_10_01.txt new file mode 100644 index 000000000..480d6be62 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/100_10_01.txt @@ -0,0 +1,303 @@ +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-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/100_20_01.txt b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/100_20_01.txt new file mode 100644 index 000000000..f063c0f7c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/100_20_01.txt @@ -0,0 +1,303 @@ +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-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/200_10_01.txt b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/200_10_01.txt new file mode 100644 index 000000000..d1bccf9b0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/200_10_01.txt @@ -0,0 +1,603 @@ +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-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/README b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/README new file mode 100644 index 000000000..7f3c69274 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/benchmarks/README @@ -0,0 +1 @@ +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-i386-0.2/paradiseo-moeo/tutorials/lesson1/make_eval_FlowShop.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/make_eval_FlowShop.h new file mode 100644 index 000000000..3ab17dc1d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/make_eval_FlowShop.h @@ -0,0 +1,65 @@ +// -*- 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), 2006 +/* + 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 "FlowShop.h" +#include "FlowShopBenchmarkParser.h" +#include "FlowShopEval.h" +// also need the parser and param includes +#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 < FlowShop > &do_make_eval (eoParser & _parser, + eoState & _state) +{ + + // benchmark file name + string benchmarkFileName = + _parser.getORcreateParam (string (), "BenchmarkFile", + "Benchmark file name (benchmarks are available at " + + BENCHMARKS_WEB_SITE + ")", '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 " + BENCHMARKS_WEB_SITE; + throw std::runtime_error (stmp.c_str ()); + } + // reading of the parameters contained in the benchmark file + FlowShopBenchmarkParser fParser (benchmarkFileName); + unsigned M = fParser.getM (); + unsigned N = fParser.getN (); + std::vector < std::vector < unsigned > >p = fParser.getP (); + std::vector < unsigned >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 < FlowShop > *eval = + new eoEvalFuncCounter < FlowShop > (*plainEval); + // store in state + _state.storeFunctor (eval); + // and return a reference + return *eval; +} + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/make_genotype_FlowShop.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/make_genotype_FlowShop.h new file mode 100644 index 000000000..771377183 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/make_genotype_FlowShop.h @@ -0,0 +1,58 @@ +// -*- 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), 2006 +/* + 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 "FlowShop.h" +#include "FlowShopInit.h" +#include "FlowShopBenchmarkParser.h" +// also need the parser and param includes +#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 < FlowShop > &do_make_genotype (eoParser & _parser, eoState & _state) +{ + + // benchmark file name + string benchmarkFileName = + _parser.getORcreateParam (string (), "BenchmarkFile", + "Benchmark file name (benchmarks are available at " + + BENCHMARKS_WEB_SITE + ")", '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 " + BENCHMARKS_WEB_SITE; + throw std::runtime_error (stmp.c_str ()); + } + // reading of number of jobs to schedule contained in the benchmark file + FlowShopBenchmarkParser fParser (benchmarkFileName); + unsigned N = fParser.getN (); + + // build of the initializer (a pointer, stored in the eoState) + eoInit < FlowShop > *init = new FlowShopInit (N); + // store in state + _state.storeFunctor (init); + // and return a reference + return *init; +} + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/make_op_FlowShop.h b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/make_op_FlowShop.h new file mode 100644 index 000000000..6581838f1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson1/make_op_FlowShop.h @@ -0,0 +1,131 @@ +// -*- 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), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +#ifndef _make_op_FlowShop_h +#define _make_op_FlowShop_h + +// the operators +#include +#include +#include +#include +// combinations of simple eoOps (eoMonOp and eoQuadOp) +#include + +// definition of crossover +#include "FlowShopOpCrossoverQuad.h" +// definition of mutation +#include "FlowShopOpMutationShift.h" +#include "FlowShopOpMutationExchange.h" + +// also need the parser and state includes +#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 < FlowShop > &do_make_op (eoParameterLoader & _parser, + eoState & _state) +{ + + ///////////////////////////// + // Variation operators + //////////////////////////// + + // the crossover + //////////////// + + // a first crossover + eoQuadOp < FlowShop > *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 < FlowShop > *propXover = + new eoPropCombinedQuadOp < FlowShop > (*cross, cross1Rate); + // store in the state + _state.storeFunctor (propXover); + + + // the mutation + /////////////// + + // a first mutation : the shift mutation + eoMonOp < FlowShop > *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 < FlowShop > *propMutation = + new eoPropCombinedMonOp < FlowShop > (*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 < double >&pCrossParam = + _parser.createParam (0.25, "pCross", "Probability of Crossover", 'c', + "Variation Operators"); + // minimum check + if ((pCrossParam.value () < 0) || (pCrossParam.value () > 1)) + throw runtime_error ("Invalid pCross"); + + eoValueParam < double >&pMutParam = + _parser.createParam (0.35, "pMut", "Probability of Mutation", 'm', + "Variation Operators"); + // minimum check + if ((pMutParam.value () < 0) || (pMutParam.value () > 1)) + throw runtime_error ("Invalid pMut"); + + // the crossover - with probability pCross + eoProportionalOp < FlowShop > *propOp = new eoProportionalOp < FlowShop >; + _state.storeFunctor (propOp); + eoQuadOp < FlowShop > *ptQuad = new eoQuadCloneOp < FlowShop >; + _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 < FlowShop > *op = new eoSequentialOp < FlowShop >; + _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 diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson2/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson2/Makefile.am new file mode 100644 index 000000000..086363914 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson2/Makefile.am @@ -0,0 +1,9 @@ + +noinst_PROGRAMS = Sch1 + +Sch1_SOURCES = Sch1.cpp + +LDADD = -L$(top_builddir)/src ${EO_DIR}/src/libeo.a ${EO_DIR}/src/utils/libeoutils.a + +INCLUDES = -I${EO_DIR}/src/ -I$(top_srcdir)/src + diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson2/Sch1 b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson2/Sch1 new file mode 100755 index 000000000..a63d0d32b Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson2/Sch1 differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson2/Sch1.cpp b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson2/Sch1.cpp new file mode 100644 index 000000000..612a55128 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-moeo/tutorials/lesson2/Sch1.cpp @@ -0,0 +1,109 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// Sch1.cpp +// (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2006 +/* + This library... + + Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr + */ +//----------------------------------------------------------------------------- + +using namespace std; + +#include + +/* ParadisEO-EO */ +#include +#include + +/* ParadisEO-MOEO */ +#include +#include + + +// Extend eoParetoFitnessTraits +class SCH1Traits:public eoParetoFitnessTraits +{ + public:static bool maximizing (int i) + { + return false; + } // is the i-th objective + static unsigned nObjectives () + { + return 2; + } // number of objectives +}; + +// Code decision variables +typedef eoParetoFitness < SCH1Traits > SCH1Fit; + +class SCH1EO:public eoReal < SCH1Fit > +{ +public: + SCH1EO ():eoReal < SCH1Fit > (1) + { + } +}; + +// evaluation of the individuals +class SCH1Eval:public eoEvalFunc < SCH1EO > +{ +public: + SCH1Eval ():eoEvalFunc < SCH1EO > () + { + } + + void operator () (SCH1EO & _eo) + { + SCH1Fit fitness; + double x = _eo[0]; + + fitness[0] = x * x; + fitness[1] = (x - 2.0) * (x - 2.0); + + _eo.fitness (fitness); + } +}; + +int +main (int argc, char *argv[]) +{ + + unsigned POP_SIZE = 20; + unsigned MAX_GEN = 100; + double M_EPSILON = 0.01; + double P_CROSS = 0.25; + double P_MUT = 0.35; + + // The fitness evaluation + SCH1Eval eval; + + // choose crossover and mutation + eoQuadCloneOp < SCH1EO > xover; + eoUniformMutation < SCH1EO > mutation (M_EPSILON); + + // generate initial population + eoRealVectorBounds bounds (1, 0.0, 2.0); // [0, 2] + eoRealInitBounded < SCH1EO > init (bounds); + eoPop < SCH1EO > pop (POP_SIZE, init); + + // pass parameters to NSGA2 + moeoNSGA_II < SCH1EO > nsga2 (MAX_GEN, eval, xover, P_CROSS, mutation, + P_MUT); + + // run the algo + nsga2 (pop); + + // extract first front of the final population (this is the solution of nsga2) + moeoArchive < SCH1EO > arch; + arch.update (pop); + + // printing of the final archive + cout << "Final Archive\n"; + arch.sortedPrintOn (cout); + cout << endl; + + return EXIT_SUCCESS; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/AUTHORS b/tags/paradiseo-i386-0.2/paradiseo-peo/AUTHORS new file mode 100755 index 000000000..e69de29bb diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/COPYING b/tags/paradiseo-i386-0.2/paradiseo-peo/COPYING new file mode 100755 index 000000000..8b215f700 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/ChangeLog b/tags/paradiseo-i386-0.2/paradiseo-peo/ChangeLog new file mode 100755 index 000000000..e69de29bb diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/INSTALL b/tags/paradiseo-i386-0.2/paradiseo-peo/INSTALL new file mode 100755 index 000000000..56b077d6a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/INSTALL @@ -0,0 +1,236 @@ +Installation Instructions +************************* + +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free +Software Foundation, Inc. + +This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + +These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. (Caching is +disabled by default to prevent problems with accidental use of stale +cache files.) + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You only need +`configure.ac' if you want to change it or regenerate `configure' using +a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + +Some systems require unusual options for compilation or linking that the +`configure' script does not know about. Run `./configure --help' for +details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + +You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a +time in the source code directory. After you have installed the +package for one architecture, use `make distclean' before reconfiguring +for another architecture. + +Installation Names +================== + +By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PREFIX'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PREFIX', the package will +use PREFIX as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + +Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + +There may be some features `configure' cannot figure out automatically, +but needs to determine by the type of machine the package will run on. +Usually, assuming the package is built to be run on the _same_ +architectures, `configure' can figure that out, but if it prints a +message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the `--target=TYPE' option to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + +If you want to set default values for `configure' scripts to share, you +can create a site shell script called `config.site' that gives default +values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + +Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). Here is a another example: + + /bin/bash ./configure CONFIG_SHELL=/bin/bash + +Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent +configuration-related scripts to be executed by `/bin/bash'. + +`configure' Invocation +====================== + +`configure' recognizes the following options to control how it operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-peo/Makefile.am new file mode 100755 index 000000000..a23a71d41 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/Makefile.am @@ -0,0 +1,36 @@ +## Process this file with automake to produce Makefile.in +## Created by Anjuta - will be overwritten +## If you don't want it to overwrite it, +## Please disable it in the Anjuta project configuration + +SUBDIRS = src examples docs + +libparadiseodocdir = ${prefix}/docs/paradisEO +libparadiseodoc_DATA = \ + README\ + COPYING\ + AUTHORS\ + ChangeLog\ + INSTALL\ + NEWS\ + TODO + +EXTRA_DIST = $(libparadiseodoc_DATA) + +# Add documentation to distribution +dist-hook: + for specfile in *.spec; do \ + if test -f $$specfile; then \ + cp -p $$specfile $(distdir); \ + fi \ + done + $(MAKE) documentation + $(INSTALL_DATA) -d $(srcdir)/docs/html $(srcdir)/docs/latex $(srcdir)/docs/man $(distdir)/docs/ + +# Prepare documentation +documentation: + cd docs && $(MAKE) doc && cd .. && cd examples && $(MAKE) doc && cd .. + +# convenience-target +doc: documentation + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/NEWS b/tags/paradiseo-i386-0.2/paradiseo-peo/NEWS new file mode 100755 index 000000000..e69de29bb diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/README b/tags/paradiseo-i386-0.2/paradiseo-peo/README new file mode 100755 index 000000000..e69de29bb diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/TODO b/tags/paradiseo-i386-0.2/paradiseo-peo/TODO new file mode 100755 index 000000000..e69de29bb diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/autogen.sh b/tags/paradiseo-i386-0.2/paradiseo-peo/autogen.sh new file mode 100755 index 000000000..245311580 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/autogen.sh @@ -0,0 +1,127 @@ +#!/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/" + 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/" + 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/" + 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." + ./setup-gettext + 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." + ./setup-gettext + 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 + test -d m4 && aclocalinclude="$aclocalinclude -I m4" + 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-i386-0.2/paradiseo-peo/configure.in b/tags/paradiseo-i386-0.2/paradiseo-peo/configure.in new file mode 100755 index 000000000..218f925e9 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/configure.in @@ -0,0 +1,94 @@ +dnl Process this file with autoconf to produce a configure script. +dnl Created by Anjuta - will be overwritten +dnl If you don't want it to overwrite it, +dnl Please disable it in the Anjuta project configuration + +AC_INIT(configure.in) +AM_INIT_AUTOMAKE(paradisEO, 0.3) +dnl AM_CONFIG_HEADER(config.h) + +AC_ISC_POSIX +CXXFLAGS="" +AC_SUBST(CXXFLAGS) +AC_PROG_CXX +AM_PROG_CC_STDC +AC_HEADER_STDC +AC_PROG_RANLIB + + +AC_SUBST(EO_DIR) + +dnl EO +AC_ARG_WITH(EOdir, + --with-EOdir : Giving the path of the EO tree., + dnl Well done :-) + EO_DIR="$withval" + if test ! -d $EO_DIR + then + echo "" + echo "# --with-EOdir Invalid directory $withval" + exit 1 + fi, + dnl Bouhhhh !!!! + 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_SUBST(MO_DIR) + +dnl MO +AC_ARG_WITH(MOdir, + --with-MOdir : Giving the path of the MO tree., + dnl Well done :-) + MO_DIR="$withval" + if test ! -d $MO_DIR + then + echo "" + echo "# --with-MOdir Invalid directory $withval" + exit 1 + fi, + dnl Bouhhhh !!!! + echo "" + echo "# You forgot to give the path of the MO tree !" + echo "# Please write something like ... './configure --with-MOdir=\$HOME/mo'" + exit 1 + ) + + +AC_SUBST(MOEO_DIR) + +dnl MOEO +AC_ARG_WITH(MOEOdir, + --with-MOEOdir : Giving the path of the MOEO tree., + dnl Well done :-) + MOEO_DIR="$withval" + if test ! -d $MOEO_DIR + then + echo "" + echo "# --with-MOEOdir Invalid directory $withval" + exit 1 + fi, + dnl Bouhhhh !!!! + echo "" + echo "# You forgot to give the path of the MOEO tree !" + echo "# Please write something like ... './configure --with-MOEOdir=\$HOME/moeo'" + exit 1 + ) + + +AC_OUTPUT([ +Makefile +docs/Makefile +examples/Makefile +examples/shared/Makefile +examples/lesson1/Makefile +examples/lesson2/Makefile +src/Makefile +src/core/Makefile +src/rmc/Makefile +src/rmc/mpi/Makefile +]) + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/Makefile.am new file mode 100755 index 000000000..a3e68d93a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/Makefile.am @@ -0,0 +1,10 @@ +## Makefile.am for paradiseo/docs + + +EXTRA_DIST = paradiseo-peo.doxyfile foot.html + +doc: + cd $(srcdir) && doxygen paradiseo-peo.doxyfile + +clean-local: + cd $(srcdir) && rm -rf html latex man diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/Makefile.in b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/Makefile.in new file mode 100644 index 000000000..1dd6905ce --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/Makefile.in @@ -0,0 +1,295 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EO_DIR = @EO_DIR@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MOEO_DIR = @MOEO_DIR@ +MO_DIR = @MO_DIR@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +EXTRA_DIST = paradiseo-peo.doxyfile foot.html +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-local mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-local \ + distclean distclean-generic distdir dvi dvi-am html html-am \ + info info-am install install-am install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-man install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ + uninstall-am uninstall-info-am + + +doc: + cd $(srcdir) && doxygen paradiseo-peo.doxyfile + +clean-local: + cd $(srcdir) && rm -rf html latex man +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/annotated.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/annotated.html new file mode 100644 index 000000000..941109e2e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/annotated.html @@ -0,0 +1,62 @@ + + +ParadisEO-PEO: Class List + + + + +
+
+ +

ParadisEO-PEO Class List

Here are the classes, structs, unions and interfaces with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable
Communicator
Cooperative
Node
peoAggEvalFunc< EOT >The peoAggEvalFunc class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided
peoAsyncIslandMig< EOT >The peoAsyncIslandMig class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e
peoEA< EOT >The peoEA class offers an elementary evolutionary algorithm implementation
peoNoAggEvalFunc< EOT >The peoNoAggEvalFunc class does nothing more than an association between a fitness value and a specified individual
peoParaPopEval< EOT >The peoParaPopEval represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor
peoParaSGATransform< EOT >
peoPopEval< EOT >The peoPopEval class provides the interface for constructing ParadisEO specific evaluation functors
peoSeqPopEval< EOT >The peoSeqPopEval class acts only as a ParadisEO specific sequential evaluation functor - a wrapper for incorporating an eoEvalFunc< EOT >-derived class as evaluation functor
peoSeqTransform< EOT >The peoSeqTransform represent a wrapper for offering the possibility of using EO derived transform operators along with the ParadisEO evolutionary algorithms
peoSyncIslandMig< EOT >The peoSyncIslandMig class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e
peoSyncMultiStart< EOT >The peoSyncMultiStart class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population
peoTransform< EOT >The peoTransform class acts only as an interface for creating transform operators - for an example please refer to the peoSeqTransform and the peoParaSGATransform classes
ReactiveThread
RingTopology
Runner
SEND_REQUEST
Service
Thread
Topology
Worker
+
Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCommunicable-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCommunicable-members.html new file mode 100644 index 000000000..9c2210646 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCommunicable-members.html @@ -0,0 +1,48 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

Communicable Member List

This is the complete list of members for Communicable, including all inherited members.

+ + + + + + + + + + + +
Communicable()Communicable
getKey()Communicable
keyCommunicable [protected]
lock()Communicable
num_commCommunicable [protected, static]
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
stop()Communicable
unlock()Communicable
~Communicable()Communicable [virtual]


Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCommunicable.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCommunicable.html new file mode 100644 index 000000000..8d0d2ca68 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCommunicable.html @@ -0,0 +1,100 @@ + + +ParadisEO-PEO: Communicable Class Reference + + + + +
+
+ +

Communicable Class Reference

Inheritance diagram for Communicable: +

+ +Cooperative +Runner +Service +Worker +peoAsyncIslandMig< EOT > +peoSyncIslandMig< EOT > +peoEA< EOT > +peoPopEval< EOT > +peoSyncMultiStart< EOT > +peoTransform< EOT > +peoParaPopEval< EOT > +peoSeqPopEval< EOT > +peoParaSGATransform< EOT > +peoSeqTransform< EOT > + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Communicable ()
+virtual ~Communicable ()
+COMM_ID getKey ()
+void lock ()
+void unlock ()
+void stop ()
+void resume ()

Protected Attributes

+COMM_ID key
+sem_t sem_lock
+sem_t sem_stop

Static Protected Attributes

+static unsigned num_comm = 0
+

Detailed Description

+ +

+ +

+Definition at line 16 of file communicable.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCommunicable.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCommunicable.png new file mode 100644 index 000000000..a229e7068 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCommunicable.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCommunicator-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCommunicator-members.html new file mode 100644 index 000000000..8e350a051 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCommunicator-members.html @@ -0,0 +1,46 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

Communicator Member List

This is the complete list of members for Communicator, including all inherited members.

+ + + + + + + + + +
Communicator(int *__argc, char ***__argv)Communicator
ReactiveThread()ReactiveThread
setActive()Thread
setPassive()Thread
sleep()ReactiveThread
start()Communicator [virtual]
Thread()Thread
wakeUp()ReactiveThread
~Thread()Thread [virtual]


Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCommunicator.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCommunicator.html new file mode 100644 index 000000000..22ad5b00d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCommunicator.html @@ -0,0 +1,59 @@ + + +ParadisEO-PEO: Communicator Class Reference + + + + +
+
+ +

Communicator Class Reference

Inheritance diagram for Communicator: +

+ +ReactiveThread +Thread + +List of all members. + + + + + + +

Public Member Functions

Communicator (int *__argc, char ***__argv)
+void start ()
+

Detailed Description

+ +

+ +

+Definition at line 15 of file comm.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCommunicator.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCommunicator.png new file mode 100644 index 000000000..0f0ce225b Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCommunicator.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCooperative-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCooperative-members.html new file mode 100644 index 000000000..24cbe129e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCooperative-members.html @@ -0,0 +1,53 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

Cooperative Member List

This is the complete list of members for Cooperative, including all inherited members.

+ + + + + + + + + + + + + + + + +
Communicable()Communicable
getKey()Communicable
getOwner()Cooperative
keyCommunicable [protected]
lock()Communicable
notifySending()Cooperative [virtual]
num_commCommunicable [protected, static]
ownerCooperative [private]
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
send(Cooperative *__coop)Cooperative
setOwner(Runner &__runner)Cooperative
stop()Communicable
unlock()Communicable
~Communicable()Communicable [virtual]


Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCooperative.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCooperative.html new file mode 100644 index 000000000..316b0f93a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCooperative.html @@ -0,0 +1,70 @@ + + +ParadisEO-PEO: Cooperative Class Reference + + + + +
+
+ +

Cooperative Class Reference

Inheritance diagram for Cooperative: +

+ +Communicable +peoAsyncIslandMig< EOT > +peoSyncIslandMig< EOT > + +List of all members. + + + + + + + + + + + + + +

Public Member Functions

+RunnergetOwner ()
+void setOwner (Runner &__runner)
+void send (Cooperative *__coop)
+virtual void notifySending ()

Private Attributes

+Runnerowner
+

Detailed Description

+ +

+ +

+Definition at line 17 of file cooperative.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCooperative.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCooperative.png new file mode 100644 index 000000000..826cbc31b Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classCooperative.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classReactiveThread-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classReactiveThread-members.html new file mode 100644 index 000000000..bc2e2ecb8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classReactiveThread-members.html @@ -0,0 +1,45 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

ReactiveThread Member List

This is the complete list of members for ReactiveThread, including all inherited members.

+ + + + + + + + +
ReactiveThread()ReactiveThread
semReactiveThread [private]
setActive()Thread
setPassive()Thread
sleep()ReactiveThread
Thread()Thread
wakeUp()ReactiveThread
~Thread()Thread [virtual]


Generated on Tue Jan 9 15:47:40 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classReactiveThread.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classReactiveThread.html new file mode 100644 index 000000000..a92c24e1e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classReactiveThread.html @@ -0,0 +1,67 @@ + + +ParadisEO-PEO: ReactiveThread Class Reference + + + + +
+
+ +

ReactiveThread Class Reference

Inheritance diagram for ReactiveThread: +

+ +Thread +Communicator +Worker + +List of all members. + + + + + + + + + + + +

Public Member Functions

ReactiveThread ()
+void sleep ()
+void wakeUp ()

Private Attributes

+sem_t sem
+

Detailed Description

+ +

+ +

+Definition at line 16 of file reac_thread.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:40 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classReactiveThread.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classReactiveThread.png new file mode 100644 index 000000000..46b2d6d40 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classReactiveThread.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classRingTopology-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classRingTopology-members.html new file mode 100644 index 000000000..b86c53f2b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classRingTopology-members.html @@ -0,0 +1,41 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

RingTopology Member List

This is the complete list of members for RingTopology, including all inherited members.

+ + + + +
add(Cooperative &__mig)Topology
migTopology [protected]
setNeighbors(Cooperative *__mig, std::vector< Cooperative * > &__from, std::vector< Cooperative * > &__to)RingTopology [virtual]
~Topology()Topology [virtual]


Generated on Tue Jan 9 15:47:40 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classRingTopology.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classRingTopology.html new file mode 100644 index 000000000..b60891f37 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classRingTopology.html @@ -0,0 +1,55 @@ + + +ParadisEO-PEO: RingTopology Class Reference + + + + +
+
+ +

RingTopology Class Reference

Inheritance diagram for RingTopology: +

+ +Topology + +List of all members. + + + + +

Public Member Functions

+void setNeighbors (Cooperative *__mig, std::vector< Cooperative * > &__from, std::vector< Cooperative * > &__to)
+

Detailed Description

+ +

+ +

+Definition at line 14 of file ring_topo.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:40 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classRingTopology.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classRingTopology.png new file mode 100644 index 000000000..79e86b847 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classRingTopology.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classRunner-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classRunner-members.html new file mode 100644 index 000000000..aaef80837 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classRunner-members.html @@ -0,0 +1,62 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

Runner Member List

This is the complete list of members for Runner, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
getID()Runner
getKey()Communicable
idRunner [private]
isLocal()Runner
keyCommunicable [protected]
lock()Communicable
notifySendingTermination()Runner
num_commCommunicable [protected, static]
packTermination()Runner
resume()Communicable
Runner()Runner
sem_lockCommunicable [protected]
sem_startRunner [private]
sem_stopCommunicable [protected]
setActive()Thread
setPassive()Thread
start()Runner [virtual]
stop()Communicable
terminate()Runner
Thread()Thread
unlock()Communicable
waitStarting()Runner
~Communicable()Communicable [virtual]
~Thread()Thread [virtual]


Generated on Tue Jan 9 15:47:40 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classRunner.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classRunner.html new file mode 100644 index 000000000..da5d1ec4e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classRunner.html @@ -0,0 +1,85 @@ + + +ParadisEO-PEO: Runner Class Reference + + + + +
+
+ +

Runner Class Reference

Inheritance diagram for Runner: +

+ +Communicable +Thread +peoEA< EOT > + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Runner ()
+void start ()
+void waitStarting ()
+bool isLocal ()
+void terminate ()
+RUNNER_ID getID ()
+void packTermination ()
+void notifySendingTermination ()

Private Attributes

+sem_t sem_start
+unsigned id
+

Detailed Description

+ +

+ +

+Definition at line 19 of file runner.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:40 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classRunner.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classRunner.png new file mode 100644 index 000000000..bd6d66557 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classRunner.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classService-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classService-members.html new file mode 100644 index 000000000..0a960cf0f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classService-members.html @@ -0,0 +1,62 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

Service Member List

This is the complete list of members for Service, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
execute()Service [virtual]
getKey()Communicable
getOwner()Service
keyCommunicable [protected]
lock()Communicable
notifySendingAllResourceRequests()Service [virtual]
notifySendingData()Service [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
num_sent_rrService [private]
ownerService [private]
packData()Service [virtual]
packResourceRequest()Service
packResult()Service [virtual]
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
stop()Communicable
unlock()Communicable
unpackData()Service [virtual]
unpackResult()Service [virtual]
~Communicable()Communicable [virtual]


Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classService.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classService.html new file mode 100644 index 000000000..878d33e6b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classService.html @@ -0,0 +1,102 @@ + + +ParadisEO-PEO: Service Class Reference + + + + +
+
+ +

Service Class Reference

Inheritance diagram for Service: +

+ +Communicable +peoPopEval< EOT > +peoSyncMultiStart< EOT > +peoTransform< EOT > +peoParaPopEval< EOT > +peoSeqPopEval< EOT > +peoParaSGATransform< EOT > +peoSeqTransform< EOT > + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

+void setOwner (Thread &__owner)
+ThreadgetOwner ()
+void requestResourceRequest (unsigned __how_many=1)
+void packResourceRequest ()
+virtual void packData ()
+virtual void unpackData ()
+virtual void execute ()
+virtual void packResult ()
+virtual void unpackResult ()
+virtual void notifySendingData ()
+virtual void notifySendingResourceRequest ()
+virtual void notifySendingAllResourceRequests ()

Private Attributes

+Threadowner
+unsigned num_sent_rr
+

Detailed Description

+ +

+ +

+Definition at line 17 of file service.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classService.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classService.png new file mode 100644 index 000000000..cf6f68a54 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classService.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classThread-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classThread-members.html new file mode 100644 index 000000000..24d907c1e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classThread-members.html @@ -0,0 +1,42 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

Thread Member List

This is the complete list of members for Thread, including all inherited members.

+ + + + + +
actThread [private]
setActive()Thread
setPassive()Thread
Thread()Thread
~Thread()Thread [virtual]


Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classThread.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classThread.html new file mode 100644 index 000000000..83c87c3ae --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classThread.html @@ -0,0 +1,72 @@ + + +ParadisEO-PEO: Thread Class Reference + + + + +
+
+ +

Thread Class Reference

Inheritance diagram for Thread: +

+ +ReactiveThread +Runner +Communicator +Worker +peoEA< EOT > + +List of all members. + + + + + + + + + + + + + +

Public Member Functions

Thread ()
+virtual ~Thread ()
+void setActive ()
+void setPassive ()

Private Attributes

+bool act
+

Detailed Description

+ +

+ +

+Definition at line 16 of file thread.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classThread.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classThread.png new file mode 100644 index 000000000..bac19c424 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classThread.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classTopology-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classTopology-members.html new file mode 100644 index 000000000..7438bf7e3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classTopology-members.html @@ -0,0 +1,40 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

Topology Member List

This is the complete list of members for Topology, including all inherited members.

+ + + +
add(Cooperative &__mig)Topology
migTopology [protected]
~Topology()Topology [virtual]


Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classTopology.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classTopology.html new file mode 100644 index 000000000..55d34a68b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classTopology.html @@ -0,0 +1,62 @@ + + +ParadisEO-PEO: Topology Class Reference + + + + +
+
+ +

Topology Class Reference

Inheritance diagram for Topology: +

+ +RingTopology + +List of all members. + + + + + + + + + +

Public Member Functions

+virtual ~Topology ()
+void add (Cooperative &__mig)

Protected Attributes

+std::vector< Cooperative * > mig
+

Detailed Description

+ +

+ +

+Definition at line 16 of file topology.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classTopology.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classTopology.png new file mode 100644 index 000000000..bc09751e5 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classTopology.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classWorker-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classWorker-members.html new file mode 100644 index 000000000..154aabfcf --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classWorker-members.html @@ -0,0 +1,68 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

Worker Member List

This is the complete list of members for Worker, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
getKey()Communicable
idWorker [private]
keyCommunicable [protected]
lock()Communicable
notifySendingResult()Worker
notifySendingTaskDone()Worker
num_commCommunicable [protected, static]
packResult()Worker
packTaskDone()Worker
ReactiveThread()ReactiveThread
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
servWorker [private]
serv_idWorker [private]
setActive()Thread
setPassive()Thread
setSource(int __rank)Worker
sleep()ReactiveThread
srcWorker [private]
start()Worker [virtual]
stop()Communicable
Thread()Thread
totoWorker [private]
unlock()Communicable
unpackData()Worker
wakeUp()ReactiveThread
Worker()Worker
~Communicable()Communicable [virtual]
~Thread()Thread [virtual]


Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classWorker.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classWorker.html new file mode 100644 index 000000000..8abc1a656 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classWorker.html @@ -0,0 +1,94 @@ + + +ParadisEO-PEO: Worker Class Reference + + + + +
+
+ +

Worker Class Reference

Inheritance diagram for Worker: +

+ +Communicable +ReactiveThread +Thread + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Worker ()
+void start ()
+void packResult ()
+void unpackData ()
+void packTaskDone ()
+void notifySendingResult ()
+void notifySendingTaskDone ()
+void setSource (int __rank)

Private Attributes

+WORKER_ID id
+SERVICE_ID serv_id
+Serviceserv
+int src
+bool toto
+

Detailed Description

+ +

+ +

+Definition at line 18 of file worker.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classWorker.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classWorker.png new file mode 100644 index 000000000..0ea239005 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classWorker.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classes.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classes.html new file mode 100644 index 000000000..488d3bad8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classes.html @@ -0,0 +1,48 @@ + + +ParadisEO-PEO: Alphabetical List + + + + +
+
+ +

ParadisEO-PEO Class Index

A | C | E | N | P | R | S | T | W

+ +
  A  
+
Node   peoSeqPopEval   
peoAggEvalFunc   
  P  
+
peoSeqTransform   
peoAsyncIslandMig   peoParaPopEval   Service   
  C  
+
peoParaSGATransform   peoSyncIslandMig   
Communicable   peoPopEval   peoSyncMultiStart   
Communicator   
  R  
+
  T  
+
Cooperative   ReactiveThread   Thread   
  E  
+
RingTopology   Topology   
peoEA   Runner   peoTransform   
  N  
+
  S  
+
  W  
+
peoNoAggEvalFunc   SEND_REQUEST   Worker   

A | C | E | N | P | R | S | T | W

+


Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoAggEvalFunc.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoAggEvalFunc.html new file mode 100644 index 000000000..d1d607319 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoAggEvalFunc.html @@ -0,0 +1,67 @@ + + +ParadisEO-PEO: peoAggEvalFunc< EOT > Class Template Reference + + + + +
+
+ +

peoAggEvalFunc< EOT > Class Template Reference

The peoAggEvalFunc class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided. +More... +

+#include <peoAggEvalFunc.h> +

+

Inheritance diagram for peoAggEvalFunc< EOT >: +

+ +peoNoAggEvalFunc< EOT > + + + +
+

Detailed Description

+

template<class EOT>
+ class peoAggEvalFunc< EOT >

+ +The peoAggEvalFunc class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided. +

+The class inherits public eoBF< EOT&, const typename EOT :: Fitness&, void > thus requiring, for the derived classes, the creation of a function having the following signature:

+ + + +
void operator()( EOT& __eot, const typename EOT :: Fitness& __partial_fittness );    
+

+The aggregation object is called in an iterative manner for each of the results obtained by applying partial evaluation functions. +

+ +

+Definition at line 25 of file peoAggEvalFunc.h.


The documentation for this class was generated from the following file: +
Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoAggEvalFunc.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoAggEvalFunc.png new file mode 100644 index 000000000..782e65274 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoAggEvalFunc.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoAsyncIslandMig-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoAsyncIslandMig-members.html new file mode 100644 index 000000000..66b9e91d4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoAsyncIslandMig-members.html @@ -0,0 +1,67 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

peoAsyncIslandMig< EOT > Member List

This is the complete list of members for peoAsyncIslandMig< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
contpeoAsyncIslandMig< EOT > [private]
coop_empeoAsyncIslandMig< EOT > [private]
destinationpeoAsyncIslandMig< EOT > [private]
empeoAsyncIslandMig< EOT > [private]
emigrate()peoAsyncIslandMig< EOT > [private]
getKey()Communicable
getOwner()Cooperative
immpeoAsyncIslandMig< EOT > [private]
immigrate()peoAsyncIslandMig< EOT > [private]
keyCommunicable [protected]
lock()Communicable
notifySending()Cooperative [virtual]
num_commCommunicable [protected, static]
operator()()peoAsyncIslandMig< EOT >
pack()peoAsyncIslandMig< EOT > [virtual]
peoAsyncIslandMig(eoContinue< EOT > &__cont, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, Topology &__topology, eoPop< EOT > &__source, eoPop< EOT > &__destination)peoAsyncIslandMig< EOT >
replacepeoAsyncIslandMig< EOT > [private]
resume()Communicable
selectpeoAsyncIslandMig< EOT > [private]
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
send(Cooperative *__coop)Cooperative
setOwner(Runner &__runner)Cooperative
sourcepeoAsyncIslandMig< EOT > [private]
stop()Communicable
topologypeoAsyncIslandMig< EOT > [private]
unlock()Communicable
unpack()peoAsyncIslandMig< EOT > [virtual]
~Communicable()Communicable [virtual]


Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoAsyncIslandMig.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoAsyncIslandMig.html new file mode 100644 index 000000000..71756b7b1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoAsyncIslandMig.html @@ -0,0 +1,300 @@ + + +ParadisEO-PEO: peoAsyncIslandMig< EOT > Class Template Reference + + + + +
+
+ +

peoAsyncIslandMig< EOT > Class Template Reference

The peoAsyncIslandMig class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e. +More... +

+#include <peoAsyncIslandMig.h> +

+

Inheritance diagram for peoAsyncIslandMig< EOT >: +

+ +Cooperative +Communicable + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 peoAsyncIslandMig (eoContinue< EOT > &__cont, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, Topology &__topology, eoPop< EOT > &__source, eoPop< EOT > &__destination)
 Constructor for the peoAsyncIslandMig class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters.
void operator() ()
 Function operator to be called as checkpoint for performing the migration step.
+void pack ()
 Auxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function.
+void unpack ()
 Auxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function.

Private Member Functions

+void emigrate ()
+void immigrate ()

Private Attributes

+eoContinue< EOT > & cont
+eoSelect< EOT > & select
+eoReplacement< EOT > & replace
+Topologytopology
+eoPop< EOT > & source
+eoPop< EOT > & destination
+std::queue< eoPop< EOT > > imm
+std::queue< eoPop< EOT > > em
+std::queue< Cooperative * > coop_em
+

Detailed Description

+

template<class EOT>
+ class peoAsyncIslandMig< EOT >

+ +The peoAsyncIslandMig class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e. +

+continuation criterion, selection and replacement strategies, a topological model and the source and destination population for the migrating individuals. As opposed to the synchronous migration model, in the asynchronous migration approach, there is no synchronization step between islands after performing the emigration phase.

+The migration operator is called at the end of each generation of an evolutionary algorithms as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm:

+ + + + + + + + + + + + + +
do {    
         select( population, offsprings );   // select the offsprings from the current population
         transform( offsprings );   // crossover and mutation operators are applied on the selected offsprings
         evaluate( offsprings );   // evaluation step of the resulting offsprings
         replace( population, offsprings );   // replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy
} while ( eaCheckpointContinue( population ) );   // checkpoint operators are applied on the current population, including the migration operator, if any specified
+

+Constructing an asynchronous island migration model requires having defined (1) a topological migration model, (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, and (4) an owner object must be set. The owner object must be derived from the Runner class (for example a peoEA object represents a possible owner). A simple example is offered bellow:

+

    +
  1. +topological model to be followed when performing migrations:
    +
    + + + +
    RingTopology migTopology;   // a simple ring topological model - each island communicates with two other islands
    +

    +

  2. +
  3. +the continuation criterion, selection and replacement strategy etc. are defined:
    +
    + + + + + + + + + + + + + + + + + +
    eoPop< EOT > population( POP_SIZE, popInitializer );   // population of individuals to be used for the evolutionary algorithm
       
    eoPeriodicContinue< EOT > migCont( MIG_FREQ );   // migrations occur periodically at MIG_FREQ iterations
    eoRandomSelect< EOT > migSelectStrategy;   // selection strategy - in this case a random selection is applied
    eoSelectNumber< EOT > migSelect( migSelectStrategy, MIG_SIZE );   // number of individuals to be selected using the specified strategy
    eoPlusReplacement< EOT > migReplace;   // immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals
       
    peoAsyncIslandMig< EOT > asyncMigration(
    +          migCont, migSelect, migReplace, migTopology,
    +          population, population
    + );  
    // asynchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated
    +

    +

  4. +
  5. +creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope):
    +
    + + + + + + + + + + + + + +
    ...    
    eoGenContinue< EOT > eaCont( NUM_GEN );   // the evolutionary algorithm will stop after NUM_GEN generations
    eoCheckPoint< EOT > eaCheckpointContinue( eaCont );   // number of individuals to be selected using the specified strategy
    ...    
    eaCheckpointContinue.add( asyncMigration );   // adding the migration operator as checkpoint element
    ...    
    +

    +

  6. +
  7. +definition of an owner evolutionary algorithm (an object inheriting the Runner class):
    +
    + + + + + + + +
    peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace);   // evolutionary algorithm having as checkpoint the eaCheckpointContinue object defined above
    asyncMigration.setOwner( eaAlg );   // setting the evolutionary algorithm as owner of the migration object
    eaAlg( population );   // applying the evolutionary algorithm on a given population
    +
  8. +
+

+The source and the destination population for the migration object were specified as being the same, in step no. 2, as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations as source and destination for the emigrant and immigrant individuals respectively.

+The above steps only create an asynchronous migration object associated to an evolutionary algorithm. The creation of several islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 (the same C++ migTopology object has to be passed as parameter for all the migration objects, in order to interconnect them). +

+ +

+Definition at line 112 of file peoAsyncIslandMig.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
peoAsyncIslandMig< EOT >::peoAsyncIslandMig (eoContinue< EOT > &  __cont,
eoSelect< EOT > &  __select,
eoReplacement< EOT > &  __replace,
Topology __topology,
eoPop< EOT > &  __source,
eoPop< EOT > &  __destination 
)
+
+
+ +

+Constructor for the peoAsyncIslandMig class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. +

+

Parameters:
+ + + + + + + +
eoContinue< EOT >& __cont - continuation criterion specifying whether the migration is performed or not;
eoSelect< EOT >& __select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population;
eoReplacement< EOT >& __replace - replacement strategy used for integrating the immigrant individuals in the destination population;
Topology& __topology - topological model to be followed when performing migrations;
eoPop< EOT >& __source - source population from which the emigrant individuals are selected;
eoPop< EOT >& __destination - destination population in which the immigrant population are integrated.
+
+ +

+Definition at line 171 of file peoAsyncIslandMig.h. +

+References Topology::add(). +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + +
void peoAsyncIslandMig< EOT >::operator() (  ) 
+
+
+ +

+Function operator to be called as checkpoint for performing the migration step. +

+The emigrant individuals are selected from the source population and sent to the next island (defined by the topology object) while the immigrant individuals are integrated in the destination population. There is no need to explicitly call the function - the wrapper checkpoint object (please refer to the above example) will perform the call when required. +

+Definition at line 248 of file peoAsyncIslandMig.h. +

+References peoAsyncIslandMig< EOT >::cont, peoAsyncIslandMig< EOT >::emigrate(), peoAsyncIslandMig< EOT >::immigrate(), and peoAsyncIslandMig< EOT >::source. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoAsyncIslandMig.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoAsyncIslandMig.png new file mode 100644 index 000000000..d6b2d9f65 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoAsyncIslandMig.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoEA-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoEA-members.html new file mode 100644 index 000000000..cd0b5371c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoEA-members.html @@ -0,0 +1,69 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

peoEA< EOT > Member List

This is the complete list of members for peoEA< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
contpeoEA< EOT > [private]
getID()Runner
getKey()Communicable
isLocal()Runner
keyCommunicable [protected]
lock()Communicable
notifySendingTermination()Runner
num_commCommunicable [protected, static]
operator()(eoPop< EOT > &__pop)peoEA< EOT >
packTermination()Runner
peoEA(eoContinue< EOT > &__cont, peoPopEval< EOT > &__pop_eval, eoSelect< EOT > &__select, peoTransform< EOT > &__trans, eoReplacement< EOT > &__replace)peoEA< EOT >
poppeoEA< EOT > [private]
pop_evalpeoEA< EOT > [private]
replacepeoEA< EOT > [private]
resume()Communicable
run()peoEA< EOT > [virtual]
Runner()Runner
selectpeoEA< EOT > [private]
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setActive()Thread
setPassive()Thread
start()Runner [virtual]
stop()Communicable
terminate()Runner
Thread()Thread
transpeoEA< EOT > [private]
unlock()Communicable
waitStarting()Runner
~Communicable()Communicable [virtual]
~Thread()Thread [virtual]


Generated on Tue Jan 9 15:47:39 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoEA.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoEA.html new file mode 100644 index 000000000..5cd453628 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoEA.html @@ -0,0 +1,236 @@ + + +ParadisEO-PEO: peoEA< EOT > Class Template Reference + + + + +
+
+ +

peoEA< EOT > Class Template Reference

The peoEA class offers an elementary evolutionary algorithm implementation. +More... +

+#include <peoEA.h> +

+

Inheritance diagram for peoEA< EOT >: +

+ +Runner +Communicable +Thread + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 peoEA (eoContinue< EOT > &__cont, peoPopEval< EOT > &__pop_eval, eoSelect< EOT > &__select, peoTransform< EOT > &__trans, eoReplacement< EOT > &__replace)
 Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism.
+void run ()
 Evolutionary algorithm function - a side effect of the fact that the class is derived from the Runner class, thus requiring the existence of a run function, the algorithm being executed on a distinct thread.
void operator() (eoPop< EOT > &__pop)
 Function operator for specifying the population to be associated with the algorithm.

Private Attributes

+eoContinue< EOT > & cont
+peoPopEval< EOT > & pop_eval
+eoSelect< EOT > & select
+peoTransform< EOT > & trans
+eoReplacement< EOT > & replace
+eoPop< EOT > * pop
+

Detailed Description

+

template<class EOT>
+ class peoEA< EOT >

+ +The peoEA class offers an elementary evolutionary algorithm implementation. +

+In addition, as compared with the algorithms provided by the EO framework, the peoEA class has the underlying necessary structure for including, for example, parallel evaluation and parallel transformation operators, migration operators etc. Although there is no restriction on using the algorithms provided by the EO framework, the drawback resides in the fact that the EO implementation is exclusively sequential and, in consequence, no parallelism is provided. A simple example for constructing a peoEA object:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
...    
eoPop< EOT > population( POP_SIZE, popInitializer );   // creation of a population with POP_SIZE individuals - the popInitializer is a functor to be called for each individual
   
eoGenContinue< EOT > eaCont( NUM_GEN );   // number of generations for the evolutionary algorithm
eoCheckPoint< EOT > eaCheckpointContinue( eaCont );   // checkpoint incorporating the continuation criterion - startpoint for adding other checkpoint objects
   
peoSeqPopEval< EOT > eaPopEval( evalFunction );   // sequential evaluation functor wrapper - evalFunction represents the actual evaluation functor
   
eoRankingSelect< EOT > selectionStrategy;   // selection strategy for creating the offspring population - a simple ranking selection in this case
eoSelectNumber< EOT > eaSelect( selectionStrategy, POP_SIZE );   // the number of individuals to be selected for creating the offspring population
eoRankingSelect< EOT > selectionStrategy;   // selection strategy for creating the offspring population - a simple ranking selection in this case
   
eoSGATransform< EOT > transform( crossover, CROSS_RATE, mutation, MUT_RATE );   // transformation operator - crossover and mutation operators with their associated probabilities
peoSeqTransform< EOT > eaTransform( transform );   // ParadisEO specific sequential operator - a parallel version may be specified in the same manner
   
eoPlusReplacement< EOT > eaReplace;   // replacement strategy - for integrating the offspring resulting individuals in the initial population
   
peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace );   // ParadisEO evolutionary algorithm integrating the above defined objects
eaAlg( population );   // specifying the initial population for the algorithm
...    
+ +

+ +

+Definition at line 54 of file peoEA.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
peoEA< EOT >::peoEA (eoContinue< EOT > &  __cont,
peoPopEval< EOT > &  __pop_eval,
eoSelect< EOT > &  __select,
peoTransform< EOT > &  __trans,
eoReplacement< EOT > &  __replace 
)
+
+
+ +

+Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. +

+Depending on the requirements, a sequential or a parallel evaluation operator may be specified or, in the same manner, a sequential or a parallel transformation operator may be given as parameter. Out of the box objects may be provided, from the EO package, for example, or custom defined ones may be specified, provided that they are derived from the correct base classes.

+

Parameters:
+ + + + + + +
eoContinue< EOT >& __cont - continuation criterion specifying whether the algorithm should continue or not;
peoPopEval< EOT >& __pop_eval - evaluation operator; it allows the specification of parallel evaluation operators, aggregate evaluation functions, etc.;
eoSelect< EOT >& __select - selection strategy to be applied for constructing a list of offspring individuals;
peoTransform< EOT >& __trans - transformation operator, i.e. crossover and mutation; allows for sequential or parallel transform;
eoReplacement< EOT >& __replace - replacement strategy for integrating the offspring individuals in the initial population;
+
+ +

+Definition at line 98 of file peoEA.h. +

+References peoEA< EOT >::pop_eval, and peoEA< EOT >::trans. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
void peoEA< EOT >::operator() (eoPop< EOT > &  __pop  ) 
+
+
+ +

+Function operator for specifying the population to be associated with the algorithm. +

+

Parameters:
+ + +
eoPop< EOT >& __pop - initial population of the algorithm, to be iteratively evolved;
+
+ +

+Definition at line 114 of file peoEA.h. +

+References peoEA< EOT >::pop. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Jan 9 15:47:39 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoEA.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoEA.png new file mode 100644 index 000000000..e3384cb44 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoEA.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoNoAggEvalFunc-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoNoAggEvalFunc-members.html new file mode 100644 index 000000000..5a959d627 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoNoAggEvalFunc-members.html @@ -0,0 +1,38 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

peoNoAggEvalFunc< EOT > Member List

This is the complete list of members for peoNoAggEvalFunc< EOT >, including all inherited members.

+ +
operator()(EOT &__sol, const typename EOT::Fitness &__fit)peoNoAggEvalFunc< EOT >


Generated on Tue Jan 9 15:47:39 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoNoAggEvalFunc.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoNoAggEvalFunc.html new file mode 100644 index 000000000..78934efb4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoNoAggEvalFunc.html @@ -0,0 +1,66 @@ + + +ParadisEO-PEO: peoNoAggEvalFunc< EOT > Class Template Reference + + + + +
+
+ +

peoNoAggEvalFunc< EOT > Class Template Reference

The peoNoAggEvalFunc class does nothing more than an association between a fitness value and a specified individual. +More... +

+#include <peoNoAggEvalFunc.h> +

+

Inheritance diagram for peoNoAggEvalFunc< EOT >: +

+ +peoAggEvalFunc< EOT > + +List of all members. + + + + + +

Public Member Functions

+void operator() (EOT &__sol, const typename EOT::Fitness &__fit)
 Operator which sets as fitness the __fit value for the __sol individual.
+

Detailed Description

+

template<class EOT>
+ class peoNoAggEvalFunc< EOT >

+ +The peoNoAggEvalFunc class does nothing more than an association between a fitness value and a specified individual. +

+The class is provided as a mean of declaring that no aggregation is required for the evaluation function - the fitness value is explicitly specified. +

+ +

+Definition at line 19 of file peoNoAggEvalFunc.h.


The documentation for this class was generated from the following file: +
Generated on Tue Jan 9 15:47:39 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoNoAggEvalFunc.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoNoAggEvalFunc.png new file mode 100644 index 000000000..0db69caaa Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoNoAggEvalFunc.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoParaPopEval-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoParaPopEval-members.html new file mode 100644 index 000000000..ebb6092b6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoParaPopEval-members.html @@ -0,0 +1,73 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

peoParaPopEval< EOT > Member List

This is the complete list of members for peoParaPopEval< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ad_solpeoParaPopEval< EOT > [private]
Communicable()Communicable
execute()peoParaPopEval< EOT > [virtual]
funcspeoParaPopEval< EOT > [private]
getKey()Communicable
getOwner()Service
keyCommunicable [protected]
lock()Communicable
merge_evalpeoParaPopEval< EOT > [private]
no_merge_evalpeoParaPopEval< EOT > [private]
notifySendingAllResourceRequests()peoParaPopEval< EOT > [virtual]
notifySendingData()peoParaPopEval< EOT > [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
num_funcpeoParaPopEval< EOT > [private]
one_funcpeoParaPopEval< EOT > [private]
operator()(eoPop< EOT > &__pop)peoParaPopEval< EOT > [virtual]
packData()peoParaPopEval< EOT > [virtual]
packResourceRequest()Service
packResult()peoParaPopEval< EOT > [virtual]
peoParaPopEval(eoEvalFunc< EOT > &__eval_func)peoParaPopEval< EOT >
peoParaPopEval(const std::vector< eoEvalFunc< EOT > * > &__funcs, peoAggEvalFunc< EOT > &__merge_eval)peoParaPopEval< EOT >
progressionpeoParaPopEval< EOT > [private]
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
solpeoParaPopEval< EOT > [private]
stop()Communicable
taskspeoParaPopEval< EOT > [private]
totalpeoParaPopEval< EOT > [private]
unlock()Communicable
unpackData()peoParaPopEval< EOT > [virtual]
unpackResult()peoParaPopEval< EOT > [virtual]
~Communicable()Communicable [virtual]


Generated on Tue Jan 9 15:47:39 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoParaPopEval.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoParaPopEval.html new file mode 100644 index 000000000..b6f82001b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoParaPopEval.html @@ -0,0 +1,411 @@ + + +ParadisEO-PEO: peoParaPopEval< EOT > Class Template Reference + + + + +
+
+ +

peoParaPopEval< EOT > Class Template Reference

The peoParaPopEval represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor. +More... +

+#include <peoParaPopEval.h> +

+

Inheritance diagram for peoParaPopEval< EOT >: +

+ +peoPopEval< EOT > +Service +Communicable + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 peoParaPopEval (eoEvalFunc< EOT > &__eval_func)
 Constructor function - an EO-derived evaluation functor has to be specified; an internal reference is set towards the specified evaluation functor.
 peoParaPopEval (const std::vector< eoEvalFunc< EOT > * > &__funcs, peoAggEvalFunc< EOT > &__merge_eval)
 Constructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function.
void operator() (eoPop< EOT > &__pop)
 Operator for applying the evaluation functor (direct or aggregate) for each individual of the specified population.
void packData ()
 Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase.
void unpackData ()
 Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase.
+void execute ()
 Auxiliary function - it calls the specified evaluation functor(s). There is no need to explicitly call the function.
void packResult ()
 Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase.
void unpackResult ()
 Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase.
void notifySendingData ()
 Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase.
void notifySendingAllResourceRequests ()
 Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase.

Private Attributes

+const std::vector< eoEvalFunc<
+ EOT > * > & 
funcs
+std::vector< eoEvalFunc< EOT > * > one_func
+peoAggEvalFunc< EOT > & merge_eval
+peoNoAggEvalFunc< EOT > no_merge_eval
+std::queue< EOT * > tasks
+std::map< EOT *, std::pair<
+ unsigned, unsigned > > 
progression
+unsigned num_func
+EOT sol
+EOT * ad_sol
+unsigned total
+

Detailed Description

+

template<class EOT>
+ class peoParaPopEval< EOT >

+ +The peoParaPopEval represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor. +

+The class offers the possibility of chosing between a single-function evaluation and an aggregate evaluation function, including several sub-evalution functions. +

+ +

+Definition at line 26 of file peoParaPopEval.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
peoParaPopEval< EOT >::peoParaPopEval (eoEvalFunc< EOT > &  __eval_func  ) 
+
+
+ +

+Constructor function - an EO-derived evaluation functor has to be specified; an internal reference is set towards the specified evaluation functor. +

+

Parameters:
+ + +
eoEvalFunc< EOT >& __eval_func - EO-derived evaluation functor to be applied in parallel on each individual of a specified population
+
+ +

+Definition at line 102 of file peoParaPopEval.h. +

+References peoParaPopEval< EOT >::one_func. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + +
peoParaPopEval< EOT >::peoParaPopEval (const std::vector< eoEvalFunc< EOT > * > &  __funcs,
peoAggEvalFunc< EOT > &  __merge_eval 
)
+
+
+ +

+Constructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function. +

+

Parameters:
+ + + +
const std :: vector< eoEvalFunc < EOT >* >& __funcs - vector of EO-derived partial evaluation functors;
peoAggEvalFunc< EOT >& __merge_eval - aggregation functor for creating a fitness value out of the partial fitness values.
+
+ +

+Definition at line 111 of file peoParaPopEval.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
void peoParaPopEval< EOT >::operator() (eoPop< EOT > &  __pop  )  [virtual]
+
+
+ +

+Operator for applying the evaluation functor (direct or aggregate) for each individual of the specified population. +

+

Parameters:
+ + +
eoPop< EOT >& __pop - population to be evaluated by applying the evaluation functor specified in the constructor.
+
+ +

+Implements peoPopEval< EOT >. +

+Definition at line 122 of file peoParaPopEval.h. +

+References peoParaPopEval< EOT >::funcs, peoParaPopEval< EOT >::progression, Service::requestResourceRequest(), Communicable::stop(), peoParaPopEval< EOT >::tasks, and peoParaPopEval< EOT >::total. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoParaPopEval< EOT >::packData (  )  [virtual]
+
+
+ +

+Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 143 of file peoParaPopEval.h. +

+References peoParaPopEval< EOT >::progression, and peoParaPopEval< EOT >::tasks. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoParaPopEval< EOT >::unpackData (  )  [virtual]
+
+
+ +

+Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 157 of file peoParaPopEval.h. +

+References peoParaPopEval< EOT >::ad_sol, peoParaPopEval< EOT >::num_func, and peoParaPopEval< EOT >::sol. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoParaPopEval< EOT >::packResult (  )  [virtual]
+
+
+ +

+Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 174 of file peoParaPopEval.h. +

+References peoParaPopEval< EOT >::ad_sol, and peoParaPopEval< EOT >::sol. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoParaPopEval< EOT >::unpackResult (  )  [virtual]
+
+
+ +

+Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 183 of file peoParaPopEval.h. +

+References peoParaPopEval< EOT >::ad_sol, Service::getOwner(), peoParaPopEval< EOT >::merge_eval, peoParaPopEval< EOT >::progression, Communicable::resume(), Thread::setActive(), and peoParaPopEval< EOT >::total. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoParaPopEval< EOT >::notifySendingData (  )  [virtual]
+
+
+ +

+Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 214 of file peoParaPopEval.h. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoParaPopEval< EOT >::notifySendingAllResourceRequests (  )  [virtual]
+
+
+ +

+Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 219 of file peoParaPopEval.h. +

+References Service::getOwner(), and Thread::setPassive(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Jan 9 15:47:39 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoParaPopEval.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoParaPopEval.png new file mode 100644 index 000000000..3ddb39223 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoParaPopEval.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoParaSGATransform-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoParaSGATransform-members.html new file mode 100644 index 000000000..0370db665 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoParaSGATransform-members.html @@ -0,0 +1,71 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

peoParaSGATransform< EOT > Member List

This is the complete list of members for peoParaSGATransform< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
crosspeoParaSGATransform< EOT > [private]
cross_ratepeoParaSGATransform< EOT > [private]
execute()peoParaSGATransform< EOT > [virtual]
fatherpeoParaSGATransform< EOT > [private]
getKey()Communicable
getOwner()Service
idxpeoParaSGATransform< EOT > [private]
keyCommunicable [protected]
lock()Communicable
motherpeoParaSGATransform< EOT > [private]
mutpeoParaSGATransform< EOT > [private]
mut_ratepeoParaSGATransform< EOT > [private]
notifySendingAllResourceRequests()peoParaSGATransform< EOT > [virtual]
notifySendingData()peoParaSGATransform< EOT > [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
num_termpeoParaSGATransform< EOT > [private]
operator()(eoPop< EOT > &__pop)peoParaSGATransform< EOT >
packData()peoParaSGATransform< EOT > [virtual]
packResourceRequest()Service
packResult()peoParaSGATransform< EOT > [virtual]
peoParaSGATransform(eoQuadOp< EOT > &__cross, double __cross_rate, eoMonOp< EOT > &__mut, double __mut_rate)peoParaSGATransform< EOT >
poppeoParaSGATransform< EOT > [private]
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
stop()Communicable
unlock()Communicable
unpackData()peoParaSGATransform< EOT > [virtual]
unpackResult()peoParaSGATransform< EOT > [virtual]
~Communicable()Communicable [virtual]


Generated on Tue Jan 9 15:47:39 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoParaSGATransform.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoParaSGATransform.html new file mode 100644 index 000000000..80bc08424 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoParaSGATransform.html @@ -0,0 +1,112 @@ + + +ParadisEO-PEO: peoParaSGATransform< EOT > Class Template Reference + + + + +
+
+ +

peoParaSGATransform< EOT > Class Template Reference

Inheritance diagram for peoParaSGATransform< EOT >: +

+ +peoTransform< EOT > +Service +Communicable + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

peoParaSGATransform (eoQuadOp< EOT > &__cross, double __cross_rate, eoMonOp< EOT > &__mut, double __mut_rate)
+void operator() (eoPop< EOT > &__pop)
+void packData ()
+void unpackData ()
+void execute ()
+void packResult ()
+void unpackResult ()
+void notifySendingData ()
+void notifySendingAllResourceRequests ()

Private Attributes

+eoQuadOp< EOT > & cross
+double cross_rate
+eoMonOp< EOT > & mut
+double mut_rate
+unsigned idx
+eoPop< EOT > * pop
+EOT father
+EOT mother
+unsigned num_term
+

Detailed Description

+

template<class EOT>
+ class peoParaSGATransform< EOT >

+ + +

+ +

+Definition at line 21 of file peoParaSGATransform.h.


The documentation for this class was generated from the following file: +
Generated on Tue Jan 9 15:47:39 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoParaSGATransform.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoParaSGATransform.png new file mode 100644 index 000000000..95dfd1232 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoParaSGATransform.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoPopEval-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoPopEval-members.html new file mode 100644 index 000000000..5d1cb41a1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoPopEval-members.html @@ -0,0 +1,61 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

peoPopEval< EOT > Member List

This is the complete list of members for peoPopEval< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
execute()Service [virtual]
getKey()Communicable
getOwner()Service
keyCommunicable [protected]
lock()Communicable
notifySendingAllResourceRequests()Service [virtual]
notifySendingData()Service [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
operator()(eoPop< EOT > &__pop)=0peoPopEval< EOT > [pure virtual]
packData()Service [virtual]
packResourceRequest()Service
packResult()Service [virtual]
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
stop()Communicable
unlock()Communicable
unpackData()Service [virtual]
unpackResult()Service [virtual]
~Communicable()Communicable [virtual]


Generated on Tue Jan 9 15:47:39 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoPopEval.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoPopEval.html new file mode 100644 index 000000000..d325bea6e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoPopEval.html @@ -0,0 +1,69 @@ + + +ParadisEO-PEO: peoPopEval< EOT > Class Template Reference + + + + +
+
+ +

peoPopEval< EOT > Class Template Reference

The peoPopEval class provides the interface for constructing ParadisEO specific evaluation functors. +More... +

+#include <peoPopEval.h> +

+

Inheritance diagram for peoPopEval< EOT >: +

+ +Service +Communicable +peoParaPopEval< EOT > +peoSeqPopEval< EOT > + +List of all members. + + + + + +

Public Member Functions

+virtual void operator() (eoPop< EOT > &__pop)=0
 Interface function providing the signature for constructing an evaluation functor.
+

Detailed Description

+

template<class EOT>
+ class peoPopEval< EOT >

+ +The peoPopEval class provides the interface for constructing ParadisEO specific evaluation functors. +

+The derived classes may be used as wrappers for EO-derived evaluation functors. In order to have an example, please refer to the implementation of the peoSeqPopEval and peoParaPopEval classes. +

+ +

+Definition at line 19 of file peoPopEval.h.


The documentation for this class was generated from the following file: +
Generated on Tue Jan 9 15:47:39 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoPopEval.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoPopEval.png new file mode 100644 index 000000000..100bbb770 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoPopEval.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSeqPopEval-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSeqPopEval-members.html new file mode 100644 index 000000000..6c3e7fccc --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSeqPopEval-members.html @@ -0,0 +1,63 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

peoSeqPopEval< EOT > Member List

This is the complete list of members for peoSeqPopEval< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
evalpeoSeqPopEval< EOT > [private]
execute()Service [virtual]
getKey()Communicable
getOwner()Service
keyCommunicable [protected]
lock()Communicable
notifySendingAllResourceRequests()Service [virtual]
notifySendingData()Service [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
operator()(eoPop< EOT > &__pop)peoSeqPopEval< EOT > [virtual]
packData()Service [virtual]
packResourceRequest()Service
packResult()Service [virtual]
peoSeqPopEval(eoEvalFunc< EOT > &__eval)peoSeqPopEval< EOT >
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
stop()Communicable
unlock()Communicable
unpackData()Service [virtual]
unpackResult()Service [virtual]
~Communicable()Communicable [virtual]


Generated on Tue Jan 9 15:47:39 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSeqPopEval.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSeqPopEval.html new file mode 100644 index 000000000..cdc468141 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSeqPopEval.html @@ -0,0 +1,142 @@ + + +ParadisEO-PEO: peoSeqPopEval< EOT > Class Template Reference + + + + +
+
+ +

peoSeqPopEval< EOT > Class Template Reference

The peoSeqPopEval class acts only as a ParadisEO specific sequential evaluation functor - a wrapper for incorporating an eoEvalFunc< EOT >-derived class as evaluation functor. +More... +

+#include <peoSeqPopEval.h> +

+

Inheritance diagram for peoSeqPopEval< EOT >: +

+ +peoPopEval< EOT > +Service +Communicable + +List of all members. + + + + + + + + + + + +

Public Member Functions

 peoSeqPopEval (eoEvalFunc< EOT > &__eval)
 Constructor function - it only sets an internal reference to point to the specified evaluation object.
void operator() (eoPop< EOT > &__pop)
 Operator for evaluating all the individuals of a given population - in a sequential iterative manner.

Private Attributes

+eoEvalFunc< EOT > & eval
+

Detailed Description

+

template<class EOT>
+ class peoSeqPopEval< EOT >

+ +The peoSeqPopEval class acts only as a ParadisEO specific sequential evaluation functor - a wrapper for incorporating an eoEvalFunc< EOT >-derived class as evaluation functor. +

+The specified EO evaluation object is applyied in an iterative manner to each individual of a specified population. +

+ +

+Definition at line 21 of file peoSeqPopEval.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
peoSeqPopEval< EOT >::peoSeqPopEval (eoEvalFunc< EOT > &  __eval  ) 
+
+
+ +

+Constructor function - it only sets an internal reference to point to the specified evaluation object. +

+

Parameters:
+ + +
eoEvalFunc< EOT >& __eval - evaluation object to be applied for each individual of a specified population
+
+ +

+Definition at line 41 of file peoSeqPopEval.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
void peoSeqPopEval< EOT >::operator() (eoPop< EOT > &  __pop  )  [virtual]
+
+
+ +

+Operator for evaluating all the individuals of a given population - in a sequential iterative manner. +

+

Parameters:
+ + +
eoPop< EOT >& __pop - population to be evaluated.
+
+ +

+Implements peoPopEval< EOT >. +

+Definition at line 46 of file peoSeqPopEval.h. +

+References peoSeqPopEval< EOT >::eval. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Jan 9 15:47:39 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSeqPopEval.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSeqPopEval.png new file mode 100644 index 000000000..df2001515 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSeqPopEval.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSeqTransform-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSeqTransform-members.html new file mode 100644 index 000000000..97f070502 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSeqTransform-members.html @@ -0,0 +1,63 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

peoSeqTransform< EOT > Member List

This is the complete list of members for peoSeqTransform< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
execute()peoSeqTransform< EOT > [inline, virtual]
getKey()Communicable
getOwner()Service
keyCommunicable [protected]
lock()Communicable
notifySendingAllResourceRequests()Service [virtual]
notifySendingData()Service [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
operator()(eoPop< EOT > &__pop)peoSeqTransform< EOT >
packData()peoSeqTransform< EOT > [inline, virtual]
packResourceRequest()Service
packResult()peoSeqTransform< EOT > [inline, virtual]
peoSeqTransform(eoTransform< EOT > &__trans)peoSeqTransform< EOT >
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
stop()Communicable
transpeoSeqTransform< EOT > [private]
unlock()Communicable
unpackData()peoSeqTransform< EOT > [inline, virtual]
unpackResult()peoSeqTransform< EOT > [inline, virtual]
~Communicable()Communicable [virtual]


Generated on Tue Jan 9 15:47:40 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSeqTransform.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSeqTransform.html new file mode 100644 index 000000000..722a611af --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSeqTransform.html @@ -0,0 +1,160 @@ + + +ParadisEO-PEO: peoSeqTransform< EOT > Class Template Reference + + + + +
+
+ +

peoSeqTransform< EOT > Class Template Reference

The peoSeqTransform represent a wrapper for offering the possibility of using EO derived transform operators along with the ParadisEO evolutionary algorithms. +More... +

+#include <peoSeqTransform.h> +

+

Inheritance diagram for peoSeqTransform< EOT >: +

+ +peoTransform< EOT > +Service +Communicable + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 peoSeqTransform (eoTransform< EOT > &__trans)
 Constructor function - sets an internal reference towards the specified EO-derived transform object.
void operator() (eoPop< EOT > &__pop)
 Operator for applying the specified transform operators on each individual of the given population.
+virtual void packData ()
 Interface function for providing a link with the parallel architecture of the ParadisEO framework.
+virtual void unpackData ()
 Interface function for providing a link with the parallel architecture of the ParadisEO framework.
+virtual void execute ()
 Interface function for providing a link with the parallel architecture of the ParadisEO framework.
+virtual void packResult ()
 Interface function for providing a link with the parallel architecture of the ParadisEO framework.
+virtual void unpackResult ()
 Interface function for providing a link with the parallel architecture of the ParadisEO framework.

Private Attributes

+eoTransform< EOT > & trans
+

Detailed Description

+

template<class EOT>
+ class peoSeqTransform< EOT >

+ +The peoSeqTransform represent a wrapper for offering the possibility of using EO derived transform operators along with the ParadisEO evolutionary algorithms. +

+A minimal set of interface functions is also provided for creating the link with the parallel architecture of the ParadisEO framework. +

+ +

+Definition at line 20 of file peoSeqTransform.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
peoSeqTransform< EOT >::peoSeqTransform (eoTransform< EOT > &  __trans  ) 
+
+
+ +

+Constructor function - sets an internal reference towards the specified EO-derived transform object. +

+

Parameters:
+ + +
eoTransform< EOT >& __trans - EO-derived transform object including crossover and mutation operators.
+
+ +

+Definition at line 55 of file peoSeqTransform.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
void peoSeqTransform< EOT >::operator() (eoPop< EOT > &  __pop  ) 
+
+
+ +

+Operator for applying the specified transform operators on each individual of the given population. +

+

Parameters:
+ + +
eoPop< EOT >& __pop - population to be transformed by applying the crossover and mutation operators.
+
+ +

+Definition at line 60 of file peoSeqTransform.h. +

+References peoSeqTransform< EOT >::trans. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Jan 9 15:47:40 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSeqTransform.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSeqTransform.png new file mode 100644 index 000000000..b2a4c4196 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSeqTransform.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSyncIslandMig-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSyncIslandMig-members.html new file mode 100644 index 000000000..212eb6c01 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSyncIslandMig-members.html @@ -0,0 +1,68 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

peoSyncIslandMig< EOT > Member List

This is the complete list of members for peoSyncIslandMig< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
contpeoSyncIslandMig< EOT > [private]
coop_empeoSyncIslandMig< EOT > [private]
destinationpeoSyncIslandMig< EOT > [private]
empeoSyncIslandMig< EOT > [private]
emigrate()peoSyncIslandMig< EOT > [private]
getKey()Communicable
getOwner()Cooperative
immpeoSyncIslandMig< EOT > [private]
immigrate()peoSyncIslandMig< EOT > [private]
keyCommunicable [protected]
lock()Communicable
notifySending()peoSyncIslandMig< EOT > [virtual]
num_commCommunicable [protected, static]
operator()()peoSyncIslandMig< EOT >
pack()peoSyncIslandMig< EOT > [virtual]
peoSyncIslandMig(unsigned __frequency, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, Topology &__topology, eoPop< EOT > &__source, eoPop< EOT > &__destination)peoSyncIslandMig< EOT >
replacepeoSyncIslandMig< EOT > [private]
resume()Communicable
selectpeoSyncIslandMig< EOT > [private]
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
send(Cooperative *__coop)Cooperative
setOwner(Runner &__runner)Cooperative
sourcepeoSyncIslandMig< EOT > [private]
stop()Communicable
syncpeoSyncIslandMig< EOT > [private]
topologypeoSyncIslandMig< EOT > [private]
unlock()Communicable
unpack()peoSyncIslandMig< EOT > [virtual]
~Communicable()Communicable [virtual]


Generated on Tue Jan 9 15:47:40 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSyncIslandMig.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSyncIslandMig.html new file mode 100644 index 000000000..d08a5df24 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSyncIslandMig.html @@ -0,0 +1,305 @@ + + +ParadisEO-PEO: peoSyncIslandMig< EOT > Class Template Reference + + + + +
+
+ +

peoSyncIslandMig< EOT > Class Template Reference

The peoSyncIslandMig class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e. +More... +

+#include <peoSyncIslandMig.h> +

+

Inheritance diagram for peoSyncIslandMig< EOT >: +

+ +Cooperative +Communicable + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 peoSyncIslandMig (unsigned __frequency, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, Topology &__topology, eoPop< EOT > &__source, eoPop< EOT > &__destination)
 Constructor for the peoSyncIslandMig class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters.
void operator() ()
 Function operator to be called as checkpoint for performing the migration step.
+void pack ()
 Auxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function.
+void unpack ()
 Auxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function.
+void notifySending ()
 Auxiliary function dealing with migration notifications. There is no need to explicitly call the function.

Private Member Functions

+void emigrate ()
+void immigrate ()

Private Attributes

+eoPeriodicContinue< EOT > cont
+eoSelect< EOT > & select
+eoReplacement< EOT > & replace
+Topologytopology
+eoPop< EOT > & source
+eoPop< EOT > & destination
+std::queue< eoPop< EOT > > imm
+std::queue< eoPop< EOT > > em
+std::queue< Cooperative * > coop_em
+sem_t sync
+

Detailed Description

+

template<class EOT>
+ class peoSyncIslandMig< EOT >

+ +The peoSyncIslandMig class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e. +

+frequency of the migrations, selection and replacement strategies, a topological model and the source and destination population for the migrating individuals. The main difference as opposed to the asynchronous migration model is the synchronization step performed after selecting and sending the emigrant individuals.

+The migration operator is called at the end of each generation of an evolutionary algorithms as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm:

+ + + + + + + + + + + + + +
do {    
         select( population, offsprings );   // select the offsprings from the current population
         transform( offsprings );   // crossover and mutation operators are applied on the selected offsprings
         evaluate( offsprings );   // evaluation step of the resulting offspring
         replace( population, offsprings );   // replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy
} while ( eaCheckpointContinue( population ) );   // checkpoint operators are applied on the current population, including the migration operator, if any specified
+

+Constructing a synchronous island migration model requires having defined (1) a topological migration model, (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, and (4) an owner object must be set. The owner object must be derived from the Runner class (for example a peoEA object represents a possible owner). A simple example is offered bellow:

+

    +
  1. +topological model to be followed when performing migrations:
    +
    + + + +
    RingTopology migTopology;   // a simple ring topological model - each island communicates with two other islands
    +

    +

  2. +
  3. +the continuation criterion, selection and replacement strategy etc. are defined:
    +
    + + + + + + + + + + + + + + + +
    eoPop< EOT > population( POP_SIZE, popInitializer );   // population of individuals to be used for the evolutionary algorithm
       
    eoRandomSelect< EOT > migSelectStrategy;   // selection strategy - in this case a random selection is applied
    eoSelectNumber< EOT > migSelect( migSelectStrategy, MIG_SIZE );   // number of individuals to be selected using the specified strategy
    eoPlusReplacement< EOT > migReplace;   // immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals
       
    peoSyncIslandMig< EOT > syncMigration(
    +          MIG_FREQ, migSelect, migReplace, migTopology,
    +          population, population
    + );  
    // synchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated
    +

    +

  4. +
  5. +creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope):
    +
    + + + + + + + + + + + + + +
    ...    
    eoGenContinue< EOT > eaCont( NUM_GEN );   // the evolutionary algorithm will stop after NUM_GEN generations
    eoCheckPoint< EOT > eaCheckpointContinue( eaCont );   // number of individuals to be selected using the specified strategy
    ...    
    eaCheckpointContinue.add( syncMigration );   // adding the migration operator as checkpoint element
    ...    
    +

    +

  6. +
  7. +definition of an owner evolutionary algorithm (an object inheriting the Runner class):
    +
    + + + + + + + +
    peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace);   // evolutionary algorithm having as checkpoint the eaCheckpointContinue object defined above
    syncMigration.setOwner( eaAlg );   // setting the evolutionary algorithm as owner of the migration object
    eaAlg( population );   // applying the evolutionary algorithm on a given population
    +
  8. +
+

+The source and the destination population for the migration object were specified as being the same, in step no. 2, as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations as source and destination for the emigrant and immigrant individuals respectively.

+The above steps only create a synchronous migration object associated to an evolutionary algorithm. The creation of several islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 (the same C++ migTopology object has to be passed as parameter for all the migration objects, in order to interconnect them). +

+ +

+Definition at line 114 of file peoSyncIslandMig.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
peoSyncIslandMig< EOT >::peoSyncIslandMig (unsigned  __frequency,
eoSelect< EOT > &  __select,
eoReplacement< EOT > &  __replace,
Topology __topology,
eoPop< EOT > &  __source,
eoPop< EOT > &  __destination 
)
+
+
+ +

+Constructor for the peoSyncIslandMig class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. +

+

Parameters:
+ + + + + + + +
unsigned __frequency - frequency of the migrations - the migrations occur periodically;
eoSelect< EOT >& __select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population;
eoReplacement< EOT >& __replace - replacement strategy used for integrating the immigrant individuals in the destination population;
Topology& __topology - topological model to be followed when performing migrations;
eoPop< EOT >& __source - source population from which the emigrant individuals are selected;
eoPop< EOT >& __destination - destination population in which the immigrant population are integrated.
+
+ +

+Definition at line 178 of file peoSyncIslandMig.h. +

+References Topology::add(), and peoSyncIslandMig< EOT >::sync. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + +
void peoSyncIslandMig< EOT >::operator() (  ) 
+
+
+ +

+Function operator to be called as checkpoint for performing the migration step. +

+The emigrant individuals are selected from the source population and sent to the next island (defined by the topology object) while the immigrant individuals are integrated in the destination population. There is no need to explicitly call the function - the wrapper checkpoint object (please refer to the above example) will perform the call when required. +

+Definition at line 252 of file peoSyncIslandMig.h. +

+References peoSyncIslandMig< EOT >::cont, peoSyncIslandMig< EOT >::emigrate(), Cooperative::getOwner(), peoSyncIslandMig< EOT >::immigrate(), Thread::setActive(), peoSyncIslandMig< EOT >::source, Communicable::stop(), and peoSyncIslandMig< EOT >::sync. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Jan 9 15:47:40 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSyncIslandMig.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSyncIslandMig.png new file mode 100644 index 000000000..429ef28d3 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSyncIslandMig.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSyncMultiStart-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSyncMultiStart-members.html new file mode 100644 index 000000000..6821609f8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSyncMultiStart-members.html @@ -0,0 +1,72 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

peoSyncMultiStart< EOT > Member List

This is the complete list of members for peoSyncMultiStart< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
contpeoSyncMultiStart< EOT > [private]
execute()peoSyncMultiStart< EOT > [virtual]
getKey()Communicable
getOwner()Service
idxpeoSyncMultiStart< EOT > [private]
impr_selpeoSyncMultiStart< EOT > [private]
keyCommunicable [protected]
lock()Communicable
lspeoSyncMultiStart< EOT > [private]
notifySendingAllResourceRequests()peoSyncMultiStart< EOT > [virtual]
notifySendingData()peoSyncMultiStart< EOT > [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
num_termpeoSyncMultiStart< EOT > [private]
operator()()peoSyncMultiStart< EOT >
packData()peoSyncMultiStart< EOT > [virtual]
packResourceRequest()Service
packResult()peoSyncMultiStart< EOT > [virtual]
peoSyncMultiStart(eoContinue< EOT > &__cont, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, moAlgo< EOT > &__ls, eoPop< EOT > &__pop)peoSyncMultiStart< EOT >
poppeoSyncMultiStart< EOT > [private]
replacepeoSyncMultiStart< EOT > [private]
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
selpeoSyncMultiStart< EOT > [private]
selectpeoSyncMultiStart< EOT > [private]
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
solpeoSyncMultiStart< EOT > [private]
stop()Communicable
unlock()Communicable
unpackData()peoSyncMultiStart< EOT > [virtual]
unpackResult()peoSyncMultiStart< EOT > [virtual]
~Communicable()Communicable [virtual]


Generated on Tue Jan 9 15:47:40 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSyncMultiStart.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSyncMultiStart.html new file mode 100644 index 000000000..52f2cec14 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSyncMultiStart.html @@ -0,0 +1,413 @@ + + +ParadisEO-PEO: peoSyncMultiStart< EOT > Class Template Reference + + + + +
+
+ +

peoSyncMultiStart< EOT > Class Template Reference

The peoSyncMultiStart class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population. +More... +

+#include <peoSyncMultiStart.h> +

+

Inheritance diagram for peoSyncMultiStart< EOT >: +

+ +Service +Communicable + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 peoSyncMultiStart (eoContinue< EOT > &__cont, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, moAlgo< EOT > &__ls, eoPop< EOT > &__pop)
 Constructor function - several simple parameters are required for defining the characteristics of the multi-start model.
void operator() ()
 Operator which synchronously executes the specified algorithm on the individuals selected from the initial population.
void packData ()
 Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm.
void unpackData ()
 Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm.
void execute ()
 Auxiliary function for actually executing the specified algorithm on one assigned individual.
void packResult ()
 Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm.
void unpackResult ()
 Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm.
void notifySendingData ()
 Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase.
void notifySendingAllResourceRequests ()
 Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase.

Private Attributes

+eoContinue< EOT > & cont
+eoSelect< EOT > & select
+eoReplacement< EOT > & replace
+moAlgo< EOT > & ls
+eoPop< EOT > & pop
+eoPop< EOT > sel
+eoPop< EOT > impr_sel
+EOT sol
+unsigned idx
+unsigned num_term
+

Detailed Description

+

template<class EOT>
+ class peoSyncMultiStart< EOT >

+ +The peoSyncMultiStart class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population. +

+As a simple example, several hill climbing algorithms may be synchronously launched on the specified population, each algorithm acting upon one individual only, the final result being integrated back in the population. A peoSyncMultiStart object can be specified as checkpoint object for a classic ParadisEO evolutionary algorithm thus allowing for simple hybridization schemes which combine the evolutionary approach with a local search approach, for example, executed at the end of each generation. +

+ +

+Definition at line 36 of file peoSyncMultiStart.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
peoSyncMultiStart< EOT >::peoSyncMultiStart (eoContinue< EOT > &  __cont,
eoSelect< EOT > &  __select,
eoReplacement< EOT > &  __replace,
moAlgo< EOT > &  __ls,
eoPop< EOT > &  __pop 
)
+
+
+ +

+Constructor function - several simple parameters are required for defining the characteristics of the multi-start model. +

+

Parameters:
+ + + + + + +
eoContinue< EOT >& __cont - defined for including further functionality - no semantics associated at this time;
eoSelect< EOT >& __select - selection strategy for obtaining a subset of the initial population on which to apply the specified algorithm;
eoReplacement< EOT >& __replace - replacement strategy for integrating the resulting individuals in the initial population;
moAlgo< EOT >& __ls - algorithm to be applied on each of the selected individuals - a moAlgo< EOT >-derived object must be specified;
eoPop< EOT >& __pop - the initial population from which the individuals are selected for applying the specified algorithm.
+
+ +

+Definition at line 106 of file peoSyncMultiStart.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + +
void peoSyncMultiStart< EOT >::operator() (  ) 
+
+
+ +

+Operator which synchronously executes the specified algorithm on the individuals selected from the initial population. +

+There is no need to explicitly call the operator - automatically called as checkpoint operator. +

+Definition at line 161 of file peoSyncMultiStart.h. +

+References peoSyncMultiStart< EOT >::idx, peoSyncMultiStart< EOT >::impr_sel, peoSyncMultiStart< EOT >::num_term, peoSyncMultiStart< EOT >::pop, Service::requestResourceRequest(), peoSyncMultiStart< EOT >::sel, peoSyncMultiStart< EOT >::select, and Communicable::stop(). +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoSyncMultiStart< EOT >::packData (  )  [virtual]
+
+
+ +

+Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 120 of file peoSyncMultiStart.h. +

+References peoSyncMultiStart< EOT >::idx, and peoSyncMultiStart< EOT >::sel. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoSyncMultiStart< EOT >::unpackData (  )  [virtual]
+
+
+ +

+Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 126 of file peoSyncMultiStart.h. +

+References peoSyncMultiStart< EOT >::sol. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoSyncMultiStart< EOT >::execute (  )  [virtual]
+
+
+ +

+Auxiliary function for actually executing the specified algorithm on one assigned individual. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 132 of file peoSyncMultiStart.h. +

+References peoSyncMultiStart< EOT >::ls, and peoSyncMultiStart< EOT >::sol. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoSyncMultiStart< EOT >::packResult (  )  [virtual]
+
+
+ +

+Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 138 of file peoSyncMultiStart.h. +

+References peoSyncMultiStart< EOT >::sol. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoSyncMultiStart< EOT >::unpackResult (  )  [virtual]
+
+
+ +

+Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 144 of file peoSyncMultiStart.h. +

+References Service::getOwner(), peoSyncMultiStart< EOT >::impr_sel, peoSyncMultiStart< EOT >::num_term, peoSyncMultiStart< EOT >::pop, peoSyncMultiStart< EOT >::replace, Communicable::resume(), peoSyncMultiStart< EOT >::sel, Thread::setActive(), and peoSyncMultiStart< EOT >::sol. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoSyncMultiStart< EOT >::notifySendingData (  )  [virtual]
+
+
+ +

+Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 172 of file peoSyncMultiStart.h. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoSyncMultiStart< EOT >::notifySendingAllResourceRequests (  )  [virtual]
+
+
+ +

+Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 177 of file peoSyncMultiStart.h. +

+References Service::getOwner(), and Thread::setPassive(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Jan 9 15:47:40 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSyncMultiStart.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSyncMultiStart.png new file mode 100644 index 000000000..0818b68a6 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoSyncMultiStart.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoTransform-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoTransform-members.html new file mode 100644 index 000000000..4ff7e8a92 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoTransform-members.html @@ -0,0 +1,60 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

peoTransform< EOT > Member List

This is the complete list of members for peoTransform< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
execute()Service [virtual]
getKey()Communicable
getOwner()Service
keyCommunicable [protected]
lock()Communicable
notifySendingAllResourceRequests()Service [virtual]
notifySendingData()Service [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
packData()Service [virtual]
packResourceRequest()Service
packResult()Service [virtual]
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
stop()Communicable
unlock()Communicable
unpackData()Service [virtual]
unpackResult()Service [virtual]
~Communicable()Communicable [virtual]


Generated on Tue Jan 9 15:47:40 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoTransform.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoTransform.html new file mode 100644 index 000000000..146730597 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoTransform.html @@ -0,0 +1,62 @@ + + +ParadisEO-PEO: peoTransform< EOT > Class Template Reference + + + + +
+
+ +

peoTransform< EOT > Class Template Reference

The peoTransform class acts only as an interface for creating transform operators - for an example please refer to the peoSeqTransform and the peoParaSGATransform classes. +More... +

+#include <peoTransform.h> +

+

Inheritance diagram for peoTransform< EOT >: +

+ +Service +Communicable +peoParaSGATransform< EOT > +peoSeqTransform< EOT > + +List of all members. + +
+

Detailed Description

+

template<class EOT>
+ class peoTransform< EOT >

+ +The peoTransform class acts only as an interface for creating transform operators - for an example please refer to the peoSeqTransform and the peoParaSGATransform classes. +

+ +

+Definition at line 20 of file peoTransform.h.


The documentation for this class was generated from the following file: +
Generated on Tue Jan 9 15:47:40 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoTransform.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoTransform.png new file mode 100644 index 000000000..72482d929 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/classpeoTransform.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/comm_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/comm_8cpp-source.html new file mode 100644 index 000000000..28ded43a8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/comm_8cpp-source.html @@ -0,0 +1,96 @@ + + +ParadisEO-PEO: comm.cpp Source File + + + + +
+
+

comm.cpp

00001 // "comm.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 
+00010 #include <mpi.h>
+00011 
+00012 #include "comm.h"
+00013 #include "mess.h"
+00014 #include "node.h"
+00015 #include "param.h"
+00016 #include "../../core/peo_debug.h"
+00017 #include "../../core/runner.h"
+00018 #include "send.h"
+00019 #include "recv.h"
+00020 #include "scheduler.h"
+00021 
+00022 static sem_t sem_comm_init;
+00023 
+00024 static Communicator * the_thread;
+00025 
+00026 Communicator :: Communicator (int * __argc, char * * * __argv) {
+00027 
+00028   the_thread = this;  
+00029   initNode  (__argc, __argv);
+00030   loadRMCParameters (* __argc, * __argv);  
+00031   sem_post (& sem_comm_init);
+00032 }
+00033 
+00034 void Communicator :: start () {
+00035 
+00036   while (true) {
+00037     
+00038     /* Zzz Zzz Zzz :-))) */
+00039     sleep ();
+00040     sendMessages ();
+00041 
+00042     if (! atLeastOneActiveRunner ())     
+00043       break;
+00044     receiveMessages ();    
+00045   }
+00046   waitBuffers ();  
+00047   printDebugMessage ("finalizing");
+00048   MPI_Finalize ();  
+00049 }
+00050 
+00051 void initCommunication () {
+00052 
+00053   sem_init (& sem_comm_init, 0, 0);
+00054 }
+00055 
+00056 void waitNodeInitialization () {
+00057 
+00058   sem_wait (& sem_comm_init);
+00059 }
+00060 
+00061 void wakeUpCommunicator () {
+00062 
+00063   the_thread -> wakeUp ();
+00064 }
+00065 
+00066 
+00067 
+

Generated on Tue Jan 9 15:47:37 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/comm_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/comm_8h-source.html new file mode 100644 index 000000000..080ab9fbc --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/comm_8h-source.html @@ -0,0 +1,60 @@ + + +ParadisEO-PEO: comm.h Source File + + + + +
+
+

comm.h

00001 // "comm.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __comm_mpi_h
+00010 #define __comm_mpi_h
+00011 
+00012 #include "../../core/communicable.h"
+00013 #include "../../core/reac_thread.h"
+00014 
+00015 class Communicator : public ReactiveThread {
+00016 
+00017 public :
+00018   
+00019   /* Ctor */
+00020   Communicator (int * __argc, char * * * __argv);
+00021 
+00022   void start ();
+00023 };
+00024 
+00025 extern void initCommunication ();
+00026 
+00027 extern void waitNodeInitialization ();
+00028 
+00029 extern void wakeUpCommunicator ();
+00030 
+00031 #endif
+

Generated on Tue Jan 9 15:47:37 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/communicable_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/communicable_8cpp-source.html new file mode 100644 index 000000000..375e9a1fa --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/communicable_8cpp-source.html @@ -0,0 +1,99 @@ + + +ParadisEO-PEO: communicable.cpp Source File + + + + +
+
+

communicable.cpp

00001 // "comm.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <vector>
+00010 #include <map>
+00011 #include <cassert>
+00012 
+00013 #include "communicable.h"
+00014 
+00015 static std :: vector <Communicable *> key_to_comm (1); /* Vector of registered cooperators */
+00016 
+00017 static std :: map <const Communicable *, unsigned> comm_to_key; /* Map of registered cooperators */
+00018 
+00019 unsigned Communicable :: num_comm = 0;
+00020 
+00021 Communicable :: Communicable () {
+00022 
+00023   comm_to_key [this] = key = ++ num_comm;
+00024   key_to_comm.push_back (this);
+00025   sem_init (& sem_lock, 0, 1);
+00026   sem_init (& sem_stop, 0, 0);
+00027 }
+00028 
+00029 Communicable :: ~ Communicable () {
+00030 
+00031 }
+00032 
+00033 COMM_ID Communicable :: getKey () {
+00034 
+00035   return key;
+00036 }
+00037 
+00038 Communicable * getCommunicable (COMM_ID __key) {
+00039 
+00040   assert (__key < key_to_comm.size ());
+00041   return key_to_comm [__key];  
+00042 }
+00043 
+00044 COMM_ID getKey (const Communicable * __comm) {
+00045   
+00046   return comm_to_key [__comm];
+00047 }
+00048 
+00049 void Communicable :: lock () {
+00050 
+00051   sem_wait (& sem_lock);
+00052 }
+00053 
+00054 void Communicable :: unlock () {
+00055 
+00056   sem_post (& sem_lock);
+00057 }
+00058 
+00059 void Communicable :: stop () {
+00060 
+00061   sem_wait (& sem_stop);
+00062 }
+00063 
+00064 void Communicable :: resume () {
+00065 
+00066   sem_post (& sem_stop);
+00067 }
+00068 
+00069 
+00070 
+

Generated on Tue Jan 9 15:47:37 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/communicable_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/communicable_8h-source.html new file mode 100644 index 000000000..d20ad45dd --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/communicable_8h-source.html @@ -0,0 +1,76 @@ + + +ParadisEO-PEO: communicable.h Source File + + + + +
+
+

communicable.h

00001 // "communicable.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __communicable_h
+00010 #define __communicable_h
+00011 
+00012 #include <semaphore.h>
+00013 
+00014 typedef unsigned COMM_ID;
+00015 
+00016 class Communicable {
+00017 
+00018 public :
+00019 
+00020   Communicable ();
+00021   
+00022   virtual ~ Communicable ();
+00023 
+00024   COMM_ID getKey ();  
+00025 
+00026   void lock (); /* It suspends the current process if the semaphore is locked */
+00027   void unlock (); /* It unlocks the shared semaphore */
+00028 
+00029   void stop (); /* It suspends the current process */
+00030   void resume (); /* It resumes ___________ */
+00031   
+00032 protected :
+00033 
+00034   COMM_ID key;
+00035 
+00036   sem_t sem_lock;
+00037   
+00038   sem_t sem_stop;
+00039 
+00040   static unsigned num_comm;
+00041 };
+00042 
+00043 extern Communicable * getCommunicable (COMM_ID __key); 
+00044 
+00045 //extern COMM_ID getKey (const Communicable * __comm);
+00046 
+00047 #endif
+

Generated on Tue Jan 9 15:47:37 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/coop_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/coop_8cpp-source.html new file mode 100644 index 000000000..86589e4ba --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/coop_8cpp-source.html @@ -0,0 +1,71 @@ + + +ParadisEO-PEO: coop.cpp Source File + + + + +
+
+

coop.cpp

00001 // "coop.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "../../core/cooperative.h"
+00010 #include "send.h"
+00011 #include "tags.h"
+00012 #include "schema.h"
+00013 #include "mess.h"
+00014 #include "../../core/peo_debug.h"
+00015 
+00016 Runner * Cooperative :: getOwner () {
+00017 
+00018   return owner;
+00019 }
+00020 
+00021 void Cooperative :: setOwner (Runner & __runner) {
+00022 
+00023   owner = & __runner;
+00024 }
+00025 
+00026 void Cooperative :: send (Cooperative * __coop) {
+00027 
+00028   :: send (this, getRankOfRunner (__coop -> getOwner () -> getID ()), COOP_TAG);   
+00029   //  stop ();
+00030 }
+00031 
+00032 Cooperative * getCooperative (COOP_ID __key) {
+00033 
+00034   return dynamic_cast <Cooperative *> (getCommunicable (__key));
+00035 }
+00036 
+00037 void Cooperative :: notifySending () {
+00038 
+00039   //getOwner -> setPassive ();
+00040   //  resume ();
+00041   //  printDebugMessage (b);
+00042 }
+

Generated on Tue Jan 9 15:47:37 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/cooperative_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/cooperative_8h-source.html new file mode 100644 index 000000000..3474ec998 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/cooperative_8h-source.html @@ -0,0 +1,70 @@ + + +ParadisEO-PEO: cooperative.h Source File + + + + +
+
+

cooperative.h

00001 // "cooperative.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __cooperative_h
+00010 #define __cooperative_h
+00011 
+00012 #include "communicable.h"
+00013 #include "runner.h"
+00014 
+00015 typedef unsigned COOP_ID;
+00016 
+00017 class Cooperative : public Communicable {
+00018 
+00019 public :
+00020 
+00021   Runner * getOwner ();
+00022 
+00023   void setOwner (Runner & __runner);
+00024 
+00025   virtual void pack () = 0;
+00026   
+00027   virtual void unpack () = 0;
+00028 
+00029   void send (Cooperative * __coop); 
+00030 
+00031   virtual void notifySending ();
+00032 
+00033 private :
+00034 
+00035   Runner * owner;
+00036 
+00037 };
+00038 
+00039 extern Cooperative * getCooperative (COOP_ID __key); 
+00040 
+00041 #endif
+

Generated on Tue Jan 9 15:47:37 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/core_2runner_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/core_2runner_8cpp-source.html new file mode 100644 index 000000000..ea9cb3af7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/core_2runner_8cpp-source.html @@ -0,0 +1,133 @@ + + +ParadisEO-PEO: runner.cpp Source File + + + + +
+
+

runner.cpp

00001 // "runner.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <vector>
+00010 
+00011 #include "runner.h"
+00012 #include "reac_thread.h"
+00013 #include "peo_debug.h"
+00014 #include "messaging.h"
+00015 
+00016 static unsigned num_act = 0; /* Number of active runners */
+00017 
+00018 static std :: vector <pthread_t *> ll_threads; /* Low-level runner threads */ 
+00019 
+00020 static std :: vector <Runner *> the_runners;
+00021 
+00022 static unsigned num_runners = 0;
+00023 
+00024 Runner :: Runner () {
+00025 
+00026   id = ++ num_runners;
+00027   the_runners.push_back (this);
+00028   sem_init (& sem_start, 0, 0);
+00029   num_act ++;  
+00030 }
+00031 
+00032 extern int getNodeRank ();
+00033 
+00034 extern int getNumberOfNodes ();
+00035 
+00036 void unpackTerminationOfRunner () {
+00037   
+00038   RUNNER_ID id;
+00039   unpack (id);    
+00040   num_act --;
+00041   printDebugMessage ("I'm noticed of the termination of a runner");
+00042   if (! num_act) {
+00043     printDebugMessage ("all the runners have terminated. Now stopping the reactive threads.");
+00044     stopReactiveThreads ();
+00045   }
+00046 }
+00047 
+00048 bool atLeastOneActiveRunner () {
+00049 
+00050   return num_act;
+00051 }
+00052 
+00053 RUNNER_ID Runner :: getID () {
+00054 
+00055   return id;
+00056 }
+00057 
+00058 void Runner :: start () {
+00059 
+00060   setActive ();
+00061   sem_post (& sem_start);
+00062   run ();
+00063   terminate ();
+00064 }
+00065 
+00066 void Runner :: notifySendingTermination () {
+00067 
+00068   /*
+00069   char b [1000];
+00070   sprintf (b, "Il reste encore %d !!!!!!!!!!!!", n);
+00071   printDebugMessage (b);
+00072   */
+00073   printDebugMessage ("je suis informe que tout le monde a recu ma terminaison");
+00074   setPassive ();
+00075   
+00076 }
+00077 
+00078 void Runner :: waitStarting () {
+00079 
+00080   sem_wait (& sem_start);
+00081 }
+00082 
+00083 Runner * getRunner (RUNNER_ID __key) {
+00084 
+00085   return dynamic_cast <Runner *> (getCommunicable (__key));
+00086 }
+00087 
+00088 void startRunners () {
+00089   
+00090   /* Runners */
+00091   for (unsigned i = 0; i < the_runners.size (); i ++)
+00092     if (the_runners [i] -> isLocal ()) {
+00093       addThread (the_runners [i], ll_threads);
+00094       the_runners [i] -> waitStarting ();
+00095     }
+00096   printDebugMessage ("launched the parallel runners");
+00097 }
+00098 
+00099 
+00100 void joinRunners () {
+00101 
+00102 
+00103   joinThreads (ll_threads);
+00104 }
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/core_2service_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/core_2service_8cpp-source.html new file mode 100644 index 000000000..35d2e1dd4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/core_2service_8cpp-source.html @@ -0,0 +1,87 @@ + + +ParadisEO-PEO: service.cpp Source File + + + + +
+
+

service.cpp

00001 // "service.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "service.h"
+00010 
+00011 void Service :: setOwner (Thread & __owner) {
+00012 
+00013   owner = & __owner;
+00014 }
+00015   
+00016 Thread * Service :: getOwner () {
+00017 
+00018   return owner;
+00019 }
+00020 
+00021 Service * getService (SERVICE_ID __key) {
+00022 
+00023   return dynamic_cast <Service *> (getCommunicable (__key));
+00024 }
+00025 
+00026 void Service :: notifySendingData () {
+00027 
+00028 }
+00029 void Service :: notifySendingResourceRequest () {
+00030 
+00031   num_sent_rr --;
+00032   if (! num_sent_rr)
+00033     notifySendingAllResourceRequests ();
+00034 }
+00035 
+00036 void Service :: notifySendingAllResourceRequests () {
+00037 
+00038 }
+00039 
+00040 void Service :: packData () {
+00041 
+00042 }
+00043 
+00044 void Service :: unpackData () {
+00045 
+00046 }
+00047 
+00048 void Service :: execute () {
+00049 
+00050 }
+00051   
+00052 void Service :: packResult () {
+00053 
+00054 }
+00055 
+00056 void Service :: unpackResult () {
+00057 
+00058 }
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/doxygen.css b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/doxygen.css new file mode 100644 index 000000000..5d583694e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/doxygen.css @@ -0,0 +1,358 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: monospace, fixed; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } + +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + +/* Style for detailed member documentation */ +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; +} +.memnav { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +.memitem { + padding: 4px; + background-color: #eef3f5; + border-width: 1px; + border-style: solid; + border-color: #dedeee; + -moz-border-radius: 8px 8px 8px 8px; +} +.memname { + white-space: nowrap; + font-weight: bold; +} +.memdoc{ + padding-left: 10px; +} +.memproto { + background-color: #d5e1e8; + width: 100%; + border-width: 1px; + border-style: solid; + border-color: #84b0c7; + font-weight: bold; + -moz-border-radius: 8px 8px 8px 8px; +} +.paramkey { + text-align: right; +} +.paramtype { + white-space: nowrap; +} +.paramname { + color: #602020; + font-style: italic; +} +/* End Styling for detailed member documentation */ + +/* for the tree view */ +.ftvtree { + font-family: sans-serif; + margin:0.5em; +} +.directory { font-size: 9pt; font-weight: bold; } +.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } +.directory > h3 { margin-top: 0; } +.directory p { margin: 0px; white-space: nowrap; } +.directory div { display: none; margin: 0px; } +.directory img { vertical-align: -30%; } + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/doxygen.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/doxygen.png new file mode 100644 index 000000000..f0a274bba Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/doxygen.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/eoPop__comm_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/eoPop__comm_8h-source.html new file mode 100644 index 000000000..c53c7076b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/eoPop__comm_8h-source.html @@ -0,0 +1,61 @@ + + +ParadisEO-PEO: eoPop_comm.h Source File + + + + +
+
+

eoPop_comm.h

00001 // "eoPop_comm.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __eoPop_comm_h
+00010 #define __eoPop_comm_h
+00011 
+00012 #include <eoPop.h>
+00013 
+00014 #include "messaging.h"
+00015 
+00016 template <class EOT> void pack (const eoPop <EOT> & __pop) {
+00017 
+00018   pack ((unsigned) __pop.size ());
+00019   for (unsigned i = 0; i < __pop.size (); i ++)
+00020     pack (__pop [i]);
+00021 }
+00022 
+00023 template <class EOT> void unpack (eoPop <EOT> & __pop) {
+00024 
+00025   unsigned n;
+00026   
+00027   unpack (n);
+00028   __pop.resize (n);
+00029   for (unsigned i = 0; i < n; i ++)
+00030     unpack (__pop [i]);
+00031 }
+00032 #endif
+

Generated on Tue Jan 9 15:47:37 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/eoVector__comm_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/eoVector__comm_8h-source.html new file mode 100644 index 000000000..81e050fa8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/eoVector__comm_8h-source.html @@ -0,0 +1,67 @@ + + +ParadisEO-PEO: eoVector_comm.h Source File + + + + +
+
+

eoVector_comm.h

00001 // "eoVector_comm.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __eoVector_comm_h
+00010 #define __eoVector_comm_h
+00011 
+00012 #include <eoVector.h>
+00013 
+00014 #include "messaging.h"
+00015 
+00016 template <class F, class T> void pack (const eoVector <F, T> & __v) {
+00017 
+00018   pack (__v.fitness ()) ;
+00019   unsigned len = __v.size ();
+00020   pack (len);
+00021   for (unsigned i = 0 ; i < len; i ++)
+00022     pack (__v [i]);  
+00023 }
+00024 
+00025 template <class F, class T> void unpack (eoVector <F, T> & __v) {
+00026 
+00027   F fit; 
+00028   unpack (fit);
+00029   __v.fitness (fit);
+00030 
+00031   unsigned len;
+00032   unpack (len);
+00033   __v.resize (len);
+00034   for (unsigned i = 0 ; i < len; i ++)
+00035     unpack (__v [i]);
+00036 }
+00037 
+00038 #endif
+

Generated on Tue Jan 9 15:47:37 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/files.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/files.html new file mode 100644 index 000000000..c7e40df96 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/files.html @@ -0,0 +1,98 @@ + + +ParadisEO-PEO: File Index + + + + +
+
+

ParadisEO-PEO File List

Here is a list of all documented files with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
comm.cpp [code]
comm.h [code]
communicable.cpp [code]
communicable.h [code]
coop.cpp [code]
cooperative.h [code]
eoPop_comm.h [code]
eoVector_comm.h [code]
mess.cpp [code]
mess.h [code]
messaging.h [code]
node.cpp [code]
node.h [code]
paradiseo.h [code]
param.cpp [code]
param.h [code]
peo_debug.cpp [code]
peo_debug.h [code]
peo_fin.cpp [code]
peo_fin.h [code]
peo_init.cpp [code]
peo_init.h [code]
peo_param.cpp [code]
peo_param.h [code]
peo_run.cpp [code]
peo_run.h [code]
peoAggEvalFunc.h [code]
peoAsyncIslandMig.h [code]
peoEA.h [code]
peoNoAggEvalFunc.h [code]
peoParaPopEval.h [code]
peoParaSGATransform.h [code]
peoPopEval.h [code]
peoSeqPopEval.h [code]
peoSeqTransform.h [code]
peoSyncIslandMig.h [code]
peoSyncMultiStart.h [code]
peoTransform.h [code]
reac_thread.cpp [code]
reac_thread.h [code]
recv.cpp [code]
recv.h [code]
ring_topo.cpp [code]
ring_topo.h [code]
rmc.cpp [code]
rmc.h [code]
core/runner.cpp [code]
rmc/mpi/runner.cpp [code]
runner.h [code]
scheduler.cpp [code]
scheduler.h [code]
schema.cpp [code]
schema.h [code]
send.cpp [code]
send.h [code]
core/service.cpp [code]
rmc/mpi/service.cpp [code]
service.h [code]
tags.h [code]
thread.cpp [code]
thread.h [code]
topology.cpp [code]
topology.h [code]
worker.cpp [code]
worker.h [code]
xml_parser.cpp [code]
xml_parser.h [code]
+
Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2blank.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2blank.png new file mode 100644 index 000000000..493c3c0b6 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2blank.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2doc.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2doc.png new file mode 100644 index 000000000..f72999f92 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2doc.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2folderclosed.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2folderclosed.png new file mode 100644 index 000000000..d6d063440 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2folderclosed.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2folderopen.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2folderopen.png new file mode 100644 index 000000000..bbe2c913c Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2folderopen.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2lastnode.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2lastnode.png new file mode 100644 index 000000000..e7b9ba90c Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2lastnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2link.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2link.png new file mode 100644 index 000000000..14f3fed00 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2link.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2mlastnode.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2mlastnode.png new file mode 100644 index 000000000..09ceb6adb Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2mlastnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2mnode.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2mnode.png new file mode 100644 index 000000000..3254c0511 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2mnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2node.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2node.png new file mode 100644 index 000000000..c9f06a57f Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2node.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2plastnode.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2plastnode.png new file mode 100644 index 000000000..0b07e0091 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2plastnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2pnode.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2pnode.png new file mode 100644 index 000000000..2001b797b Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2pnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2vertline.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2vertline.png new file mode 100644 index 000000000..b330f3a33 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ftv2vertline.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/functions.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/functions.html new file mode 100644 index 000000000..5f3732cd3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/functions.html @@ -0,0 +1,225 @@ + + +ParadisEO-PEO: Class Members + + + + +
+
+ +
+ +
+
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- a -

+

- c -

+

- d -

+

- e -

+

- f -

+

- g -

+

- i -

+

- k -

+

- l -

+

- m -

+

- n -

+

- o -

+

- p -

+

- r -

+

- s -

+

- t -

+

- u -

+

- w -

+

- ~ -

+
Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/functions_func.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/functions_func.html new file mode 100644 index 000000000..fd48f2def --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/functions_func.html @@ -0,0 +1,155 @@ + + +ParadisEO-PEO: Class Members - Functions + + + + +
+
+ +
+ +
+
+ +
+ +

+  +

+

- a -

+

- c -

+

- e -

+

- g -

+

- i -

+

- l -

+

- n -

+

- o -

+

- p -

+

- r -

+

- s -

+

- t -

+

- u -

+

- w -

+

- ~ -

+
Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/functions_vars.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/functions_vars.html new file mode 100644 index 000000000..1030b5377 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/functions_vars.html @@ -0,0 +1,154 @@ + + +ParadisEO-PEO: Class Members - Variables + + + + +
+
+ +
+ +
+
+ +
+ +

+  +

+

- a -

+

- c -

+

- d -

+

- e -

+

- f -

+

- i -

+

- k -

+

- l -

+

- m -

+

- n -

+

- o -

+

- p -

+

- r -

+

- s -

+

- t -

+
Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/hierarchy.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/hierarchy.html new file mode 100644 index 000000000..9527f1cc2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/hierarchy.html @@ -0,0 +1,84 @@ + + +ParadisEO-PEO: Hierarchical Index + + + + +
+
+ +

ParadisEO-PEO Class Hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically: +
Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/index.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/index.html new file mode 100644 index 000000000..1d73e16b0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/index.html @@ -0,0 +1,8 @@ + + +ParadisEO-PEO + + + + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/installdox b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/installdox new file mode 100755 index 000000000..294677f26 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/installdox @@ -0,0 +1,117 @@ +#!/usr/bin/perl + +%subst = ( "eo.doxytag", "", "mo.doxytag", ""); +$quiet = 0; + +if (open(F,"search.cfg")) +{ + $_= ; s/[ \t\n]*$//g ; $subst{"_doc"} = $_; + $_= ; s/[ \t\n]*$//g ; $subst{"_cgi"} = $_; +} + +while ( @ARGV ) { + $_ = shift @ARGV; + if ( s/^-// ) { + if ( /^l(.*)/ ) { + $v = ($1 eq "") ? shift @ARGV : $1; + ($v =~ /\/$/) || ($v .= "/"); + $_ = $v; + if ( /(.+)\@(.+)/ ) { + if ( exists $subst{$1} ) { + $subst{$1} = $2; + } else { + print STDERR "Unknown tag file $1 given with option -l\n"; + &usage(); + } + } else { + print STDERR "Argument $_ is invalid for option -l\n"; + &usage(); + } + } + elsif ( /^q/ ) { + $quiet = 1; + } + elsif ( /^\?|^h/ ) { + &usage(); + } + else { + print STDERR "Illegal option -$_\n"; + &usage(); + } + } + else { + push (@files, $_ ); + } +} + +foreach $sub (keys %subst) +{ + if ( $subst{$sub} eq "" ) + { + print STDERR "No substitute given for tag file `$sub'\n"; + &usage(); + } + elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) + { + print "Substituting $subst{$sub} for each occurence of tag file $sub\n"; + } +} + +if ( ! @files ) { + if (opendir(D,".")) { + foreach $file ( readdir(D) ) { + $match = ".html"; + next if ( $file =~ /^\.\.?$/ ); + ($file =~ /$match/) && (push @files, $file); + ($file =~ "tree.js") && (push @files, $file); + } + closedir(D); + } +} + +if ( ! @files ) { + print STDERR "Warning: No input files given and none found!\n"; +} + +foreach $f (@files) +{ + if ( ! $quiet ) { + print "Editing: $f...\n"; + } + $oldf = $f; + $f .= ".bak"; + unless (rename $oldf,$f) { + print STDERR "Error: cannot rename file $oldf\n"; + exit 1; + } + if (open(F,"<$f")) { + unless (open(G,">$oldf")) { + print STDERR "Error: opening file $oldf for writing\n"; + exit 1; + } + if ($oldf ne "tree.js") { + while () { + s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; + print G "$_"; + } + } + else { + while () { + s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; + print G "$_"; + } + } + } + else { + print STDERR "Warning file $f does not exist\n"; + } + unlink $f; +} + +sub usage { + print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; + print STDERR "Options:\n"; + print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; + print STDERR " -q Quiet mode\n\n"; + exit 1; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/doclsn_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/doclsn_8h-source.html new file mode 100644 index 000000000..26c9d8dac --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/doclsn_8h-source.html @@ -0,0 +1,525 @@ + + +ParadisEO-PEO Lesson1: doclsn.h Source File + + + + +
+
+

doclsn.h

00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 
+00040 
+00041 
+00042 
+00043 
+00044 
+00045 
+00046 
+00047 
+00048 
+00049 
+00050 
+00051 
+00052 
+00053 
+00054 
+00055 
+00056 
+00057 
+00058 
+00059 
+00060 
+00061 
+00062 
+00063 
+00064 
+00065 
+00066 
+00067 
+00068 
+00069 
+00070 
+00071 
+00072 
+00073 
+00074 
+00075 
+00076 
+00077 
+00078 
+00079 
+00080 
+00081 
+00082 
+00083 
+00084 
+00085 
+00086 
+00087 
+00088 
+00089 
+00090 
+00091 
+00092 
+00093 
+00094 
+00095 
+00096 
+00097 
+00098 
+00099 
+00100 
+00101 
+00102 
+00103 
+00104 
+00105 
+00106 
+00107 
+00108 
+00109 
+00110 
+00111 
+00112 
+00113 
+00114 
+00115 
+00116 
+00117 
+00118 
+00119 
+00120 
+00121 
+00122 
+00123 
+00124 
+00125 
+00126 
+00127 
+00128 
+00129 
+00130 
+00131 
+00132 
+00133 
+00134 
+00135 
+00136 
+00137 
+00138 
+00139 
+00140 
+00141 
+00142 
+00143 
+00144 
+00145 
+00146 
+00147 
+00148 
+00149 
+00150 
+00151 
+00152 
+00153 
+00154 
+00155 
+00156 
+00157 
+00158 
+00159 
+00160 
+00161 
+00162 
+00163 
+00164 
+00165 
+00166 
+00167 
+00168 
+00169 
+00170 
+00171 
+00172 
+00173 
+00174 
+00175 
+00176 
+00177 
+00178 
+00179 
+00180 
+00181 
+00182 
+00183 
+00184 
+00185 
+00186 
+00187 
+00188 
+00189 
+00190 
+00191 
+00192 
+00193 
+00194 
+00195 
+00196 
+00197 
+00198 
+00199 
+00200 
+00201 
+00202 
+00203 
+00204 
+00205 
+00206 
+00207 
+00208 
+00209 
+00210 
+00211 
+00212 
+00213 
+00214 
+00215 
+00216 
+00217 
+00218 
+00219 
+00220 
+00221 
+00222 
+00223 
+00224 
+00225 
+00226 
+00227 
+00228 
+00229 
+00230 
+00231 
+00232 
+00233 
+00234 
+00235 
+00236 
+00237 
+00238 
+00239 
+00240 
+00241 
+00242 
+00243 
+00244 
+00245 
+00246 
+00247 
+00248 
+00249 
+00250 
+00251 
+00252 
+00253 
+00254 
+00255 
+00256 
+00257 
+00258 
+00259 
+00260 
+00261 
+00262 
+00263 
+00264 
+00265 
+00266 
+00267 
+00268 
+00269 
+00270 
+00271 
+00272 
+00273 
+00274 
+00275 
+00276 
+00277 
+00278 
+00279 
+00280 
+00281 
+00282 
+00283 
+00284 
+00285 
+00286 
+00287 
+00288 
+00289 
+00290 
+00291 
+00292 
+00293 
+00294 
+00295 
+00296 
+00297 
+00298 
+00299 
+00300 
+00301 
+00302 
+00303 
+00304 
+00305 
+00306 
+00307 
+00308 
+00309 
+00310 
+00311 
+00312 
+00313 
+00314 
+00315 
+00316 
+00317 
+00318 
+00319 
+00320 
+00321 
+00322 
+00323 
+00324 
+00325 
+00326 
+00327 
+00328 
+00329 
+00330 
+00331 
+00332 
+00333 
+00334 
+00335 
+00336 
+00337 
+00338 
+00339 
+00340 
+00341 
+00342 
+00343 
+00344 
+00345 
+00346 
+00347 
+00348 
+00349 
+00350 
+00351 
+00352 
+00353 
+00354 
+00355 
+00356 
+00357 
+00358 
+00359 
+00360 
+00361 
+00362 
+00363 
+00364 
+00365 
+00366 
+00367 
+00368 
+00369 
+00370 
+00371 
+00372 
+00373 
+00374 
+00375 
+00376 
+00377 
+00378 
+00379 
+00380 
+00381 
+00382 
+00383 
+00384 
+00385 
+00386 
+00387 
+00388 
+00389 
+00390 
+00391 
+00392 
+00393 
+00394 
+00395 
+00396 
+00397 
+00398 
+00399 
+00400 
+00401 
+00402 
+00403 
+00404 
+00405 
+00406 
+00407 
+00408 
+00409 
+00410 
+00411 
+00412 
+00413 
+00414 
+00415 
+00416 
+00417 
+00418 
+00419 
+00420 
+00421 
+00422 
+00423 
+00424 
+00425 
+00426 
+00427 
+00428 
+00429 
+00430 
+00431 
+00432 
+00433 
+00434 
+00435 
+00436 
+00437 
+00438 
+00439 
+00440 
+00441 
+00442 
+00443 
+00444 
+00445 
+00446 
+00447 
+00448 
+00449 
+00450 
+00451 
+00452 
+00453 
+00454 
+00455 
+00456 
+00457 
+00458 
+00459 
+00460 
+00461 
+00462 
+00463 
+00464 
+00465 
+00466 
+00467 
+00468 
+00469 
+00470 
+00471 
+00472 
+00473 
+00474 
+00475 
+00476 
+00477 
+00478 
+00479 
+00480 
+00481 
+00482 
+00483 
+00484 
+00485 
+00486 
+00487 
+00488 
+00489 
+00490 
+00491 
+00492 
+00493 
+00494 
+00495 
+00496 
+00497 
+00498 
+

Generated on Tue Jan 9 15:47:43 2007 for ParadisEO-PEO Lesson1 by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/doxygen.css b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/doxygen.css new file mode 100644 index 000000000..5d583694e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/doxygen.css @@ -0,0 +1,358 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: monospace, fixed; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } + +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + +/* Style for detailed member documentation */ +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; +} +.memnav { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +.memitem { + padding: 4px; + background-color: #eef3f5; + border-width: 1px; + border-style: solid; + border-color: #dedeee; + -moz-border-radius: 8px 8px 8px 8px; +} +.memname { + white-space: nowrap; + font-weight: bold; +} +.memdoc{ + padding-left: 10px; +} +.memproto { + background-color: #d5e1e8; + width: 100%; + border-width: 1px; + border-style: solid; + border-color: #84b0c7; + font-weight: bold; + -moz-border-radius: 8px 8px 8px 8px; +} +.paramkey { + text-align: right; +} +.paramtype { + white-space: nowrap; +} +.paramname { + color: #602020; + font-style: italic; +} +/* End Styling for detailed member documentation */ + +/* for the tree view */ +.ftvtree { + font-family: sans-serif; + margin:0.5em; +} +.directory { font-size: 9pt; font-weight: bold; } +.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } +.directory > h3 { margin-top: 0; } +.directory p { margin: 0px; white-space: nowrap; } +.directory div { display: none; margin: 0px; } +.directory img { vertical-align: -30%; } + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/doxygen.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/doxygen.png new file mode 100644 index 000000000..f0a274bba Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/doxygen.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/files.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/files.html new file mode 100644 index 000000000..414ec02e7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/files.html @@ -0,0 +1,31 @@ + + +ParadisEO-PEO Lesson1: File Index + + + + +
+
+

ParadisEO-PEO Lesson1 File List

Here is a list of all documented files with brief descriptions: + + +
doclsn.h [code]
main.cpp [code]
+
Generated on Tue Jan 9 15:47:43 2007 for ParadisEO-PEO Lesson1 by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2blank.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2blank.png new file mode 100644 index 000000000..493c3c0b6 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2blank.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2doc.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2doc.png new file mode 100644 index 000000000..f72999f92 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2doc.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2folderclosed.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2folderclosed.png new file mode 100644 index 000000000..d6d063440 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2folderclosed.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2folderopen.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2folderopen.png new file mode 100644 index 000000000..bbe2c913c Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2folderopen.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2lastnode.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2lastnode.png new file mode 100644 index 000000000..e7b9ba90c Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2lastnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2link.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2link.png new file mode 100644 index 000000000..14f3fed00 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2link.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2mlastnode.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2mlastnode.png new file mode 100644 index 000000000..09ceb6adb Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2mlastnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2mnode.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2mnode.png new file mode 100644 index 000000000..3254c0511 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2mnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2node.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2node.png new file mode 100644 index 000000000..c9f06a57f Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2node.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2plastnode.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2plastnode.png new file mode 100644 index 000000000..0b07e0091 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2plastnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2pnode.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2pnode.png new file mode 100644 index 000000000..2001b797b Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2pnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2vertline.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2vertline.png new file mode 100644 index 000000000..b330f3a33 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/ftv2vertline.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/index.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/index.html new file mode 100644 index 000000000..1b8f28786 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/index.html @@ -0,0 +1,8 @@ + + +ParadisEO-PEO Lesson1 + + + + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/installdox b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/installdox new file mode 100755 index 000000000..772efebb2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/installdox @@ -0,0 +1,117 @@ +#!/usr/bin/perl + +%subst = ( "eo.doxytag", "", "mo.doxytag", "", "paradiseo-peo.doxytag", "", "paradiseo-peo-lsn-shared.doxytag", ""); +$quiet = 0; + +if (open(F,"search.cfg")) +{ + $_= ; s/[ \t\n]*$//g ; $subst{"_doc"} = $_; + $_= ; s/[ \t\n]*$//g ; $subst{"_cgi"} = $_; +} + +while ( @ARGV ) { + $_ = shift @ARGV; + if ( s/^-// ) { + if ( /^l(.*)/ ) { + $v = ($1 eq "") ? shift @ARGV : $1; + ($v =~ /\/$/) || ($v .= "/"); + $_ = $v; + if ( /(.+)\@(.+)/ ) { + if ( exists $subst{$1} ) { + $subst{$1} = $2; + } else { + print STDERR "Unknown tag file $1 given with option -l\n"; + &usage(); + } + } else { + print STDERR "Argument $_ is invalid for option -l\n"; + &usage(); + } + } + elsif ( /^q/ ) { + $quiet = 1; + } + elsif ( /^\?|^h/ ) { + &usage(); + } + else { + print STDERR "Illegal option -$_\n"; + &usage(); + } + } + else { + push (@files, $_ ); + } +} + +foreach $sub (keys %subst) +{ + if ( $subst{$sub} eq "" ) + { + print STDERR "No substitute given for tag file `$sub'\n"; + &usage(); + } + elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) + { + print "Substituting $subst{$sub} for each occurence of tag file $sub\n"; + } +} + +if ( ! @files ) { + if (opendir(D,".")) { + foreach $file ( readdir(D) ) { + $match = ".html"; + next if ( $file =~ /^\.\.?$/ ); + ($file =~ /$match/) && (push @files, $file); + ($file =~ "tree.js") && (push @files, $file); + } + closedir(D); + } +} + +if ( ! @files ) { + print STDERR "Warning: No input files given and none found!\n"; +} + +foreach $f (@files) +{ + if ( ! $quiet ) { + print "Editing: $f...\n"; + } + $oldf = $f; + $f .= ".bak"; + unless (rename $oldf,$f) { + print STDERR "Error: cannot rename file $oldf\n"; + exit 1; + } + if (open(F,"<$f")) { + unless (open(G,">$oldf")) { + print STDERR "Error: opening file $oldf for writing\n"; + exit 1; + } + if ($oldf ne "tree.js") { + while () { + s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; + print G "$_"; + } + } + else { + while () { + s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; + print G "$_"; + } + } + } + else { + print STDERR "Warning file $f does not exist\n"; + } + unlink $f; +} + +sub usage { + print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; + print STDERR "Options:\n"; + print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; + print STDERR " -q Quiet mode\n\n"; + exit 1; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/main.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/main.html new file mode 100644 index 000000000..cd21e3ec8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/main.html @@ -0,0 +1,344 @@ + + +ParadisEO-PEO Lesson1: Creating a simple ParadisEO-PEO Evolutionary Algorithm + + + + +
+
+

Creating a simple ParadisEO-PEO Evolutionary Algorithm

+

+

0.1

+Introduction

+One of the first steps in designing an evolutionary algorithm using the ParadisEO-PEO framework consists in having a clear overview of the implemented algorithm. A brief pseudo-code description is offered bellow - the entire source code for the ParadisEO-PEO evolutionary algorithm is defined in the peoEA.h header file. The main elements to be considered when building an evolutionary algorithm are the transformation operators, i.e. crossover and mutation, the evaluation function, the continuation criterion and the selection and replacement strategy.

+ + + + + + + + + + + + + +
do {    
         select( population, offsprings );   // select the offsprings from the current population
         transform( offsprings );   // crossover and mutation operators are applied on the selected offsprings
         evaluate( offsprings );   // evaluation step of the resulting offsprings
         replace( population, offsprings );   // replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy
} while ( eaCheckpointContinue( population ) );   // checkpoint operators are applied on the current population
+

+The peoEA class offers an elementary evolutionary algorithm implementation. The peoEA class has the underlying structure for including parallel evaluation and parallel transformation operators, migration operators etc. Although there is no restriction on using the algorithms provided by the EO framework, no parallelism is provided - the EO implementation is exclusively sequential.
+

+Requirements

+You should have already installed the ParadisEO-PEO package - this requires several additional packages which should be already included in the provided archive. The installation script has to be launched in order to configure and compile all the required components. At the end of the installation phase you should end up having a directory tree resembling the following:
+     ...
+     paradiseo-mo
+     paradiseo-moeo
+     paradiseo-peo
+            docs
+            examples
+                   lesson1
+                   lesson2
+                   ...
+                   shared
+                   ...
+            src
+            ...
+     ...

+

+The source-code for this tutorial may be found in the paradiseo-peo/examples/lesson1 directory, in the main.cpp file. We strongly encourage creating a backup copy of the file if you consider modifying the source code. For a complete reference on the TSP-related classes and definitions please refer to the files under the paradiseo-peo/examples/shared. After the installation phase you should end up having an tspExample executable file in the paradiseo-peo/examples/lesson1 directory. We will discuss testing and launching aspects later in the tutorial.

+You are supposed to be familiar with working in C/C++ (with an extensive use of templates) and you should have at least an introductory background in working with the EO framework.

+


+ NOTE: All the presented examples have as case study the Traveling Salesman Problem (TSP). All the presented tutorials rely on a common shared source code defining transformation operators, evaluation functions, etc. for the TSP problem. For a complete understanding of the presented tutorials please take your time for consulting and for studying the additional underlying defined classes.
+
+

+Problem Definition and Representation

+As we are not directly concerned with the Traveling Salesman Problem, and to some extent out of scope, no in depth details are offered for the TSP. The problem requires finding the shortest path connecting a given set of cities, while visiting each of the specified cities only once and returning to the startpoint city. The problem is known to be NP-complete, i.e. no polynomial time algorithm exists for solving the problem in exact manner.

+The construction of a ParadisEO-PEO evolutionary algorithm requires following a few simple steps - please take your time to study the signature of the peoEA constructor:

+ + + +
     peoEA(
+            eoContinue< EOT >& __cont,
+            peoPopEval< EOT >& __pop_eval,
+            eoSelect< EOT >& __select,
+            peoTransform< EOT >& __trans,
+            eoReplacement< EOT >& __replace
+     );
+peoEA.png +
+
+

+A few remarks have to be made: while most of the parameters are passed as EO-specific types, the evaluation and the transformation objects have to be derived from the ParadisEO-PEO peoPopEval and peoTransform classes. Derived classes like the peoParaPopEval and peoParaSGATransform classes allow for parallel evaluation of the population and parallel transformation operators, respectively. Wrappers are provided thus allowing to make use of the EO classes.

+In the followings, the main required elements for building an evolutionary algorithm are enumerated. For complete details regarding the implementation aspects of each of the components, please refer to the common shared source code. Each of the bellow referred header files may be found in the pardiseo-peo/examples/shared directory.

+

    +
  1. +representation - the first decision to be taken concerns the representation of the individuals. You may create your own representation or you may use/derive one of the predefined classes of the EO framework.
    +

    +For our case study, the TSP, each city is defined as a Node in the node.h header file - in fact an unsigned value defined as typedef unsigned Node. Moreover, each individual (of the evolutionary algorithm) is represented as a Route object, a vector of Node objects, in the route.h header file - typedef eoVector< int, Node > Route. The definition of the Route object implies two elements: (1) a route is a vector of nodes, and (2) the fitness is an integer value (please refer to the eoVector definition in the EO framework).

    +In addition you should also take a look in the route_init.h header file which includes the RouteInit class, defined for initializing in random manner Route objects.

  2. +
  3. +evaluation function - having a representation model, an evaluation object has to be defined, implementing a specific fitness function. The designed class has to be derived (directly or indirectly) from the peoPopEval class - you have the choice of using peoSeqPopEval or peoParaPopEval for sequential and parallel evaluation, respectively. These classes act as wrappers requiring the specification of an EO evaluation object derived from the eoEvalFunc class - please refer to their respective documentation.
    +

    +The fitness function for our TSP case study is implemented in the route_eval.h header file. The class is derived from the eoEvalFunc EO class, being defined as class RouteEval : public eoEvalFunc< Route >.

  4. +
  5. +transformation operators - in order to assure the evolution of the initial population, transformation operators have to be defined. Depending on your problem, you may specify quadruple operators (two input individuals, two output resulting individuals), i.e. crossover operators, binary operators (one input individual and one output resulting individual), i.e. mutation operators, or combination of both types. As for the evaluation function, the signature of the peoEA constructor requires specifying a peoTransform derived object as transformation operator.

    +The transform operators, crossover and mutation, for the herein presented example are defined in the order_xover.h and the city_swap.h header files, respectively.

  6. +
  7. +continuation criterion - the evolutionary algorithm evolves in an iterative manner; a continuation criterion has to be specified. One of the most common and simplest options considers a maximum number of generations. It is your choice whether to use a predefined EO class for specifying the continuation criterion or using a custom defined class. In the later case you have to make sure that your class derives the eoContinue class.
    +
  8. +
  9. +selection strategy - at each iteration a set of individuals are selected for applying the transform operators, in order to obtain the offspring population. As the specified parameter has to be derived from the eoSelect it is your option of whether using the EO provided selection strategies or implementing your own, as long as it inherits the eoSelect class.

    +For our example we chose to use the eoRankingSelect strategy, provided in the EO framework.

  10. +
  11. +replacement strategy - once the offspring population is obtained, the offsprings have to be integrated back into the initial population, according to a given strategy. For custom defined strategies you have to inherit the eoReplacement EO class. We chose to use an eoPlusReplacement as strategy (please review the EO documentation for details on the different strategies available).
  12. +
+
+

+A simple example for constructing a peoEA object

+The source code for this example may be found in the main.cpp file, under the paradiseo-peo/examples/lesson1 directory. Please make sure you At this point you have two options: (a) you can just follow the example without touching the main.cpp or, (b) you can start from scratch, following the presented steps, in which case you are required make a backup copy of the main.cpp file and replace the original file with an empty one.

+

    +
  1. +include the necessary header files - as we will be using Route objects, we have to include the files which define the Route type, the initializing functor and the evaluation functions. Furthermore, in order to make use of transform operators, we require having the headers which define the crossover and the mutation operators. All these files may be found in the shared directory that we mentioned in the beginning. At this point you should have something like the following:
    +

    +

    +   		#include "route.h"
    +   		#include "route_init.h"
    +   		#include "route_eval.h"

    +

       		#include "order_xover.h"
    +   		#include "city_swap.h"
    +   		
    In addition we require having the paradiseo header file, in order to use the ParadisEO-PEO features, and a header specific for our problem, dealing with processing command-line parameters - the param.h header file. The complete picture at this point with all the required header files is as follows:
    +

    +

    +   		#include "route.h"
    +   		#include "route_init.h"
    +   		#include "route_eval.h"

    +

       		#include "order_xover.h"
    +   		#include "city_swap.h"

    +

       		#include "param.h"

    +

       		#include <paradiseo>
    +   		
    NOTE: the paradiseo header file is in fact a "super-header" - it includes all the esential ParadisEO-PEO header files. It is at at your choice if you want use the paradiseo header file or to explicitly include different header files, like the peoEA.h header file, for example.

    +

  2. +
  3. +define problem specific parameters - in our case we have to specify how many individuals we want to have in our population, the number of generations for the evolutionary algorithm to iterate and the probabilities associated with the crossover and mutation operators.
    +

    +

    +   		#include "route.h"
    +   		#include "route_init.h"
    +   		#include "route_eval.h"

    +

       		#include "order_xover.h"
    +   		#include "city_swap.h"

    +

       		#include "param.h"

    +

       		#include <paradiseo>

    +

       		#define POP_SIZE 10
    +   		#define NUM_GEN 100
    +   		#define CROSS_RATE 1.0
    +   		#define MUT_RATE 0.01
    +   		
  4. +
  5. +construct the skeleton of a simple ParadisEO-PEO program - the main function including the code for initializing the ParadisEO-PEO environment, for loading problem data and for shutting down the ParadisEO-PEO environment. From this point on we will make abstraction of the previous part referring only to the main function.
    +

    +

    +   		...

    +

       		int main( int __argc, char** __argv ) {

    +

       			// initializing the ParadisEO-PEO environment
    +   			peo :: init( __argc, __argv );

    +

       			// processing the command line specified parameters
    +   			loadParameters( __argc, __argv );

    +

       			// EVOLUTIONARY ALGORITHM TO BE DEFINED

    +

       			peo :: run( );
    +   			peo :: finalize( );
    +   			// shutting down the ParadisEO-PEO environment

    +

       			return 0;
    +   		}
    +   		
  6. +
  7. +initialization functors, evaluation function and transform operators - basically we only need to create instances for each of the enumerated objects, to be passed later as parameters for higher-level components of the evolutionary algorithm.
    +

    +

    +   		RouteInit route_init;	// random init object - creates random Route objects
    +   		RouteEval full_eval;	// evaluator object - offers a fitness value for a specified Route object

    +

       		OrderXover crossover;	// crossover operator - creates two offsprings out of two specified parents
    +   		CitySwap mutation;	// mutation operator - randomly mutates one gene for a specified individual
    +   		
  8. +
  9. +construct the components of the evolutionary algorithm - each of the components that has to be passed as parameter to the peoEA constructor has to be defined along with the associated parameters. Except for the requirement to provide the appropriate objects (for example, a peoPopEval derived object must be specified for the evaluation functor), there is no strict path to follow. It is your option what elements to mix, depending on your problem - we aimed for simplicity in our example.

    +

      +
    • +an initial population has to be specified; the constructor accepts the specification of an initializing object. Further, an evaluation object is required - the peoEA constructor requires a peoPopEval derived class.
    • +
    +
    +   		eoPop< Route > population( POP_SIZE, route_init );	// initial population for the algorithm having POP_SIZE individuals
    +   		peoSeqPopEval< Route > eaPopEval( full_eval );		// evaluator object - to be applied at each iteration on the entire population
    +   		
      +
    • +the evolutionary algorithm continues to iterate till a continuation criterion is not met. For our case we consider a fixed number of generations. The continuation criterion has to be specified as a checkpoint object, thus requiring the creation of an eoCheckPoint object in addition.
    • +
    +
    +   		eoGenContinue< Route > eaCont( NUM_GEN );		// continuation criterion - the algorithm will iterate for NUM_GEN generations
    +   		eoCheckPoint< Route > eaCheckpointContinue( eaCont );	// checkpoint object - verify at each iteration if the continuation criterion is met
    +   		
      +
    • +selection strategy - we are required to specify a selection strategy for extracting individuals out of the parent population; in addition the number of individuals to be selected has to be specified.
    • +
    +
    +   		eoRankingSelect< Route > selectionStrategy;		// selection strategy - applied at each iteration for selecting parent individuals
    +   		eoSelectNumber< Route > eaSelect( selectionStrategy, POP_SIZE ); // selection object - POP_SIZE individuals are selected at each iteration
    +   		
      +
    • +transformation operators - we have to integrate the crossover and the mutation functors into an object which may be passed as a parameter when creating the peoEA object. The constructor of peoEA requires a peoTransform derived object. Associated probabilities have to be specified also.
    • +
    +
    +   		// transform operator - includes the crossover and the mutation operators with a specified associated rate
    +   		eoSGATransform< Route > transform( crossover, CROSS_RATE, mutation, MUT_RATE );
    +   		peoSeqTransform< Route > eaTransform( transform );	// ParadisEO transform operator (please remark the peo prefix) - wraps an e EO transform object
    +   		
      +
    • +replacement strategy - required for defining the way for integrating the resulting offsprings into the initial population. At your option whether you would like to chose one of the predefined replacement strategies that come with the EO framework or if you want to define your own.
    • +
    +
    +   		eoPlusReplacement< Route > eaReplace;			// replacement strategy - for replacing the initial population with offspring individuals
    +   		
  10. +
  11. +evolutionary algorithm - having defined all the previous components, we are ready for instanciating an evolutionary algorithm. In the end we have to associate a population with the algorithm, which will serve as the initial population, to be iteratively evolved.

    +

    +   		peoEA< Route > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace );

    +

       		eaAlg( population );	// specifying the initial population for the algorithm, to be iteratively evolved
    +   		
  12. +
+

+If you have not missed any of the enumerated points, your program should be like the following:

+

+    #include "route.h"
+    #include "route_init.h"
+    #include "route_eval.h"

+

    #include "order_xover.h"
+    #include "city_swap.h"

+

    #include "param.h"

+

    #include <paradiseo>

+

    #define POP_SIZE 10
+    #define NUM_GEN 100
+    #define CROSS_RATE 1.0
+    #define MUT_RATE 0.01

+

    int main( int __argc, char** __argv ) {

+

    	// initializing the ParadisEO-PEO environment
+    	peo :: init( __argc, __argv );

+

    	// processing the command line specified parameters
+    	loadParameters( __argc, __argv );

+

    	// init, eval operators, EA operators -------------------------------------------------------------------------------------------------------------

+

    	RouteInit route_init;	// random init object - creates random Route objects
+    	RouteEval full_eval;	// evaluator object - offers a fitness value for a specified Route object

+

    	OrderXover crossover;	// crossover operator - creates two offsprings out of two specified parents
+    	CitySwap mutation;	// mutation operator - randomly mutates one gene for a specified individual
+    	// ------------------------------------------------------------------------------------------------------------------------------------------------

+

    	// evolutionary algorithm components --------------------------------------------------------------------------------------------------------------

+

    	eoPop< Route > population( POP_SIZE, route_init );	// initial population for the algorithm having POP_SIZE individuals
+    	peoSeqPopEval< Route > eaPopEval( full_eval );		// evaluator object - to be applied at each iteration on the entire population

+

    	eoGenContinue< Route > eaCont( NUM_GEN );		// continuation criterion - the algorithm will iterate for NUM_GEN generations
+    	eoCheckPoint< Route > eaCheckpointContinue( eaCont );	// checkpoint object - verify at each iteration if the continuation criterion is met

+

    	eoRankingSelect< Route > selectionStrategy;		// selection strategy - applied at each iteration for selecting parent individuals
+    	eoSelectNumber< Route > eaSelect( selectionStrategy, POP_SIZE ); // selection object - POP_SIZE individuals are selected at each iteration

+

    	// transform operator - includes the crossover and the mutation operators with a specified associated rate
+    	eoSGATransform< Route > transform( crossover, CROSS_RATE, mutation, MUT_RATE );
+    	peoSeqTransform< Route > eaTransform( transform );	// ParadisEO transform operator (please remark the peo prefix) - wraps an e EO transform object

+

    	eoPlusReplacement< Route > eaReplace;			// replacement strategy - for replacing the initial population with offspring individuals
+    	// ------------------------------------------------------------------------------------------------------------------------------------------------

+

    	// ParadisEO-PEO evolutionary algorithm -----------------------------------------------------------------------------------------------------------

+

    	peoEA< Route > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace );

+

    	eaAlg( population );	// specifying the initial population for the algorithm, to be iteratively evolved
+    	// ------------------------------------------------------------------------------------------------------------------------------------------------

+

    	peo :: run( );
+    	peo :: finalize( );
+    	// shutting down the ParadisEO-PEO environment

+

    	return 0;
+    }
+    

+Compilation and Execution

+First, please make sure that you followed all the previous steps in defining the evolutionary algorithm. Your file should be called main.cpp - please make sure you do not rename the file (we will be using a pre-built makefile, thus you are required not to change the file names). Please make sure you are in the paradiseo-peo/examples/lesson1 directory - you should open a console and you should change your current directory to the one of Lesson1.

+Compilation: being in the paradiseo-peo/examples/lesson1 directory, you have to type make. As a result the main.cpp file will be compiled and you should obtain an executable file called tspExample. If you have errors, please verify any of the followings:

+

    +
  • +you are under the right directory - you can verify by typing the pwd command - you should have something like .../paradiseo-peo/examples/lesson1
  • +
  • +you saved your modifications in a file called main.cpp, in the paradiseo-peo/examples/lesson1 directory
  • +
  • +there are no differences between the example presented above and your file
  • +
+

+NOTE: in order to successfully compile your program you should already have installed an MPI distribution in your system.

+Execution: the execution of a ParadisEO-PEO program requires having already created an environment for launching MPI programs. For MPICH-2, for example, this requires starting a ring of daemons. The implementation that we provided as an example is sequential and includes no parallelism - we will see in the end how to include also parallelism. Executing a parallel program requires specifying a mapping of resources, in order to assing different algorithms to different machines, define worker machines etc. This mapping is defined by an XML file called schema.xml, which, for our case, has the following structure:

+

+   	<?xml version="1.0"?>

+

   	<schema>
+   		<group scheduler="0">
+   			<node name="0" num_workers="0">
+   			</node>

+

   			<node name="1" num_workers="0">
+   			<runner>1</runner>
+   			</node>

+

   			<node name="2" num_workers="1">
+   			</node>
+   			<node name="3" num_workers="1">
+   			</node>
+   		</group>
+   	</schema>
+    

+Not going into details, the XML file presented above describes a mapping which includes four nodes, the first one having the role of scheduler, the second one being the node on which the evolutionary algorithm is actually executed and the third and the fourth ones being slave nodes. Overall the mapping says that we will be launching four processes, out of which only one will be executing the evolutionary algorithm. The other node entries in the XML file have no real functionality as we have no parallelism in our program - the entries were created for you convenience, in order to provide a smooth transition to creating a parallel program.

+Launching the program may be different, depending on your MPI distribution - for MPICH-2, in a console, in the paradiseo-peo/examples/lesson1 directory you have to type the following command:

+mpiexec -n 4 ./tspExample .param

+NOTE: the "-n 4" indicates the number of processes to be launched. The last argument, "@lesson.param", indicates a file which specifies different application specific parameters (the mapping file to be used, for example, whether to use logging or not, etc).

+The result of your execution should be similar to the following:

+    	Loading '../data/eil101.tsp'.
+    	NAME: eil101.
+    	COMMENT: 101-city problem (Christofides/Eilon).
+    	TYPE: TSP.
+    	DIMENSION: 101.
+    	EDGE_WEIGHT_TYPE: EUC_2D.
+    	Loading '../data/eil101.tsp'.
+    	NAME: eil101.
+    	COMMENT: 101-city problem (Christofides/Eilon).
+    	EOF.
+    	TYPE: TSP.
+    	DIMENSION: 101.
+    	EDGE_WEIGHT_TYPE: EUC_2D.
+    	EOF.
+    	Loading '../data/eil101.tsp'.
+    	NAME: eil101.
+    	COMMENT: 101-city problem (Christofides/Eilon).
+    	TYPE: TSP.
+    	DIMENSION: 101.
+    	EDGE_WEIGHT_TYPE: EUC_2D.
+    	EOF.
+    	Loading '../data/eil101.tsp'.
+    	NAME: eil101.
+    	COMMENT: 101-city problem (Christofides/Eilon).
+    	TYPE: TSP.
+    	DIMENSION: 101.
+    	EDGE_WEIGHT_TYPE: EUC_2D.
+    	EOF.
+    	STOP in eoGenContinue: Reached maximum number of generations [100/100]
+   	

+Introducing parallelism

+Creating parallel programs with ParadisEO-PEO represents an easy task once you have the basic structure for your program. For experimentation, in the main.cpp file, replace the line
+   	peoSeqPopEval< Route > eaPopEval( full_eval );
+    
with
+   	peoParaPopEval< Route > eaPopEval( full_eval );
+    
The second line only tells that we would like to evaluate individuals in parallel - this is very interesting if you have a time consuming fitness evaluation function. If you take another look on the schema.xml XML file you will see the last two nodes being marked as slaves (the "num_workers" attribute - these nodes will be used for computing the fitness of the individuals.

+At this point you only have to recompile your program and to launch it again - as we are not using a time consuming fitness fitness function, the effects might not be visible - you may increase the number of individuals to experiment.


Generated on Tue Jan 9 15:47:43 2007 for ParadisEO-PEO Lesson1 by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/main_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/main_8cpp-source.html new file mode 100644 index 000000000..59d2fae61 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/main_8cpp-source.html @@ -0,0 +1,106 @@ + + +ParadisEO-PEO Lesson1: main.cpp Source File + + + + +
+
+

main.cpp

00001 // "main.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "route.h"
+00010 #include "route_init.h"
+00011 #include "route_eval.h"
+00012 
+00013 #include "order_xover.h"
+00014 #include "city_swap.h"
+00015 
+00016 #include "param.h"
+00017 
+00018 #include <paradiseo>
+00019 
+00020 
+00021 #define POP_SIZE 10
+00022 #define NUM_GEN 100
+00023 #define CROSS_RATE 1.0
+00024 #define MUT_RATE 0.01
+00025 
+00026 
+00027 int main( int __argc, char** __argv ) {
+00028 
+00029         // initializing the ParadisEO-PEO environment
+00030         peo :: init( __argc, __argv );
+00031 
+00032 
+00033         // processing the command line specified parameters
+00034         loadParameters( __argc, __argv );
+00035 
+00036 
+00037         // init, eval operators, EA operators -------------------------------------------------------------------------------------------------------------
+00038 
+00039         RouteInit route_init;   // random init object - creates random Route objects
+00040         RouteEval full_eval;    // evaluator object - offers a fitness value for a specified Route object
+00041 
+00042         OrderXover crossover;   // crossover operator - creates two offsprings out of two specified parents
+00043         CitySwap mutation;      // mutation operator - randomly mutates one gene for a specified individual
+00044         // ------------------------------------------------------------------------------------------------------------------------------------------------
+00045 
+00046 
+00047         // evolutionary algorithm components --------------------------------------------------------------------------------------------------------------
+00048 
+00049         eoPop< Route > population( POP_SIZE, route_init );      // initial population for the algorithm having POP_SIZE individuals
+00050         peoSeqPopEval< Route > eaPopEval( full_eval );          // evaluator object - to be applied at each iteration on the entire population
+00051 
+00052         eoGenContinue< Route > eaCont( NUM_GEN );               // continuation criterion - the algorithm will iterate for NUM_GEN generations
+00053         eoCheckPoint< Route > eaCheckpointContinue( eaCont );   // checkpoint object - verify at each iteration if the continuation criterion is met
+00054 
+00055         eoRankingSelect< Route > selectionStrategy;             // selection strategy - applied at each iteration for selecting parent individuals
+00056         eoSelectNumber< Route > eaSelect( selectionStrategy, POP_SIZE ); // selection object - POP_SIZE individuals are selected at each iteration
+00057 
+00058         // transform operator - includes the crossover and the mutation operators with a specified associated rate
+00059         eoSGATransform< Route > transform( crossover, CROSS_RATE, mutation, MUT_RATE );
+00060         peoSeqTransform< Route > eaTransform( transform );      // ParadisEO transform operator (please remark the peo prefix) - wraps an e EO transform object
+00061 
+00062         eoPlusReplacement< Route > eaReplace;                   // replacement strategy - for replacing the initial population with offspring individuals
+00063         // ------------------------------------------------------------------------------------------------------------------------------------------------
+00064 
+00065 
+00066         // ParadisEO-PEO evolutionary algorithm -----------------------------------------------------------------------------------------------------------
+00067 
+00068         peoEA< Route > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace );
+00069         
+00070         eaAlg( population );    // specifying the initial population for the algorithm, to be iteratively evolved
+00071         // ------------------------------------------------------------------------------------------------------------------------------------------------
+00072 
+00073 
+00074         peo :: run( );
+00075         peo :: finalize( );
+00076         // shutting down the ParadisEO-PEO environment
+00077 
+00078         return 0;
+00079 }
+

Generated on Tue Jan 9 15:47:43 2007 for ParadisEO-PEO Lesson1 by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/peoEA.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/peoEA.png new file mode 100644 index 000000000..01a237838 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/peoEA.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/search.idx b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/search.idx new file mode 100644 index 000000000..686a30614 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/search.idx differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/search.php b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/search.php new file mode 100644 index 000000000..7ee3c397a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/search.php @@ -0,0 +1,380 @@ + + +Search + + + + +
+
    +
  • Main Page
  • +
  • Files
  • +
  • +
    + + + + +1 document matching your query."; + } + else // $num>1 + { + return "Found $num documents matching your query. Showing best matches first."; + } +} + +function report_matches() +{ + return "Matches: "; +} +function end_form($value) +{ + echo " \n \n
    \n
    \n
  • \n
\n
\n"; +} + +function readInt($file) +{ + $b1 = ord(fgetc($file)); $b2 = ord(fgetc($file)); + $b3 = ord(fgetc($file)); $b4 = ord(fgetc($file)); + return ($b1<<24)|($b2<<16)|($b3<<8)|$b4; +} + +function readString($file) +{ + $result=""; + while (ord($c=fgetc($file))) $result.=$c; + return $result; +} + +function readHeader($file) +{ + $header =fgetc($file); $header.=fgetc($file); + $header.=fgetc($file); $header.=fgetc($file); + return $header; +} + +function computeIndex($word) +{ + // Fast string hashing + //$lword = strtolower($word); + //$l = strlen($lword); + //for ($i=0;$i<$l;$i++) + //{ + // $c = ord($lword{$i}); + // $v = (($v & 0xfc00) ^ ($v << 6) ^ $c) & 0xffff; + //} + //return $v; + + // Simple hashing that allows for substring search + if (strlen($word)<2) return -1; + // high char of the index + $hi = ord($word{0}); + if ($hi==0) return -1; + // low char of the index + $lo = ord($word{1}); + if ($lo==0) return -1; + // return index + return $hi*256+$lo; +} + +function search($file,$word,&$statsList) +{ + $index = computeIndex($word); + if ($index!=-1) // found a valid index + { + fseek($file,$index*4+4); // 4 bytes per entry, skip header + $index = readInt($file); + if ($index) // found words matching the hash key + { + $start=sizeof($statsList); + $count=$start; + fseek($file,$index); + $w = readString($file); + while ($w) + { + $statIdx = readInt($file); + if ($word==substr($w,0,strlen($word))) + { // found word that matches (as substring) + $statsList[$count++]=array( + "word"=>$word, + "match"=>$w, + "index"=>$statIdx, + "full"=>strlen($w)==strlen($word), + "docs"=>array() + ); + } + $w = readString($file); + } + $totalHi=0; + $totalFreqHi=0; + $totalFreqLo=0; + for ($count=$start;$count $idx, + "freq" => $freq>>1, + "rank" => 0.0, + "hi" => $freq&1 + ); + if ($freq&1) // word occurs in high priority doc + { + $totalHi++; + $totalFreqHi+=$freq*$multiplier; + } + else // word occurs in low priority doc + { + $totalFreqLo+=$freq*$multiplier; + } + } + // read name and url info for the doc + for ($i=0;$i<$numDocs;$i++) + { + fseek($file,$docInfo[$i]["idx"]); + $docInfo[$i]["name"]=readString($file); + $docInfo[$i]["url"]=readString($file); + } + $statInfo["docs"]=$docInfo; + } + $totalFreq=($totalHi+1)*$totalFreqLo + $totalFreqHi; + for ($count=$start;$count$key, + "name"=>$di["name"], + "rank"=>$rank + ); + } + $docs[$key]["words"][] = array( + "word"=>$wordInfo["word"], + "match"=>$wordInfo["match"], + "freq"=>$di["freq"] + ); + } + } + return $docs; +} + +function filter_results($docs,&$requiredWords,&$forbiddenWords) +{ + $filteredDocs=array(); + while (list ($key, $val) = each ($docs)) + { + $words = &$docs[$key]["words"]; + $copy=1; // copy entry by default + if (sizeof($requiredWords)>0) + { + foreach ($requiredWords as $reqWord) + { + $found=0; + foreach ($words as $wordInfo) + { + $found = $wordInfo["word"]==$reqWord; + if ($found) break; + } + if (!$found) + { + $copy=0; // document contains none of the required words + break; + } + } + } + if (sizeof($forbiddenWords)>0) + { + foreach ($words as $wordInfo) + { + if (in_array($wordInfo["word"],$forbiddenWords)) + { + $copy=0; // document contains a forbidden word + break; + } + } + } + if ($copy) $filteredDocs[$key]=$docs[$key]; + } + return $filteredDocs; +} + +function compare_rank($a,$b) +{ + if ($a["rank"] == $b["rank"]) + { + return 0; + } + return ($a["rank"]>$b["rank"]) ? -1 : 1; +} + +function sort_results($docs,&$sorted) +{ + $sorted = $docs; + usort($sorted,"compare_rank"); + return $sorted; +} + +function report_results(&$docs) +{ + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $numDocs = sizeof($docs); + if ($numDocs==0) + { + echo " \n"; + echo " \n"; + echo " \n"; + } + else + { + echo " \n"; + echo " \n"; + echo " \n"; + $num=1; + foreach ($docs as $doc) + { + echo " \n"; + echo " "; + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $num++; + } + } + echo "

".search_results()."

".matches_text(0)."
".matches_text($numDocs); + echo "\n"; + echo "
$num.".$doc["name"]."
".report_matches()." "; + foreach ($doc["words"] as $wordInfo) + { + $word = $wordInfo["word"]; + $matchRight = substr($wordInfo["match"],strlen($word)); + echo "$word$matchRight(".$wordInfo["freq"].") "; + } + echo "
\n"; +} + +function main() +{ + if(strcmp('4.1.0', phpversion()) > 0) + { + die("Error: PHP version 4.1.0 or above required!"); + } + if (!($file=fopen("search.idx","rb"))) + { + die("Error: Search index file could NOT be opened!"); + } + if (readHeader($file)!="DOXS") + { + die("Error: Header of index file is invalid!"); + } + $query=""; + if (array_key_exists("query", $_GET)) + { + $query=$_GET["query"]; + } + end_form($query); + echo " \n
\n"; + $results = array(); + $requiredWords = array(); + $forbiddenWords = array(); + $foundWords = array(); + $word=strtok($query," "); + while ($word) // for each word in the search query + { + if (($word{0}=='+')) { $word=substr($word,1); $requiredWords[]=$word; } + if (($word{0}=='-')) { $word=substr($word,1); $forbiddenWords[]=$word; } + if (!in_array($word,$foundWords)) + { + $foundWords[]=$word; + search($file,strtolower($word),$results); + } + $word=strtok(" "); + } + $docs = array(); + combine_results($results,$docs); + // filter out documents with forbidden word or that do not contain + // required words + $filteredDocs = filter_results($docs,$requiredWords,$forbiddenWords); + // sort the results based on rank + $sorted = array(); + sort_results($filteredDocs,$sorted); + // report results to the user + report_results($sorted); + echo "
\n"; + fclose($file); +} + +main(); + + +?> +
Generated on Tue Jan 9 15:47:43 2007 for ParadisEO-PEO Lesson1 by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/tab_b.gif b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/tab_b.gif new file mode 100644 index 000000000..0d623483f Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/tab_b.gif differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/tab_l.gif b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/tab_l.gif new file mode 100644 index 000000000..9b1e6337c Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/tab_l.gif differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/tab_r.gif b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/tab_r.gif new file mode 100644 index 000000000..ce9dd9f53 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/tab_r.gif differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/tabs.css b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/tabs.css new file mode 100644 index 000000000..a61552a67 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI#current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI#current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/tree.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/tree.html new file mode 100644 index 000000000..61d1b8ddb --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/html/tree.html @@ -0,0 +1,75 @@ + + + + + + + TreeView + + + + +
+

ParadisEO-PEO Lesson1

+ +
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/latex/FreeSans.ttf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/latex/FreeSans.ttf new file mode 100644 index 000000000..b550b90ba Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/latex/FreeSans.ttf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/latex/Makefile b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/latex/Makefile new file mode 100644 index 000000000..a67f1b7f6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/latex/Makefile @@ -0,0 +1,17 @@ +all: clean refman.pdf + +refman.pdf: refman.tex + pdflatex refman.tex + makeindex refman.idx + pdflatex refman.tex + latex_count=5 ; \ + while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + pdflatex refman.tex ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/latex/doxygen.sty b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/latex/doxygen.sty new file mode 100644 index 000000000..910cf5f10 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/latex/doxygen.sty @@ -0,0 +1,78 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} +\RequirePackage{calc} +\RequirePackage{array} +\pagestyle{fancyplain} +\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}} +\renewcommand{\chaptermark}[1]{\markboth{#1}{}} +\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} +\lhead[\fancyplain{}{\bfseries\thepage}] + {\fancyplain{}{\bfseries\rightmark}} +\rhead[\fancyplain{}{\bfseries\leftmark}] + {\fancyplain{}{\bfseries\thepage}} +\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Tue Jan 9 15:47:43 2007 for Paradis\-EO-PEO Lesson1 by Doxygen }]{} +\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Tue Jan 9 15:47:43 2007 for Paradis\-EO-PEO Lesson1 by Doxygen }} +\cfoot{} +\newenvironment{Code} +{\footnotesize} +{\normalsize} +\newcommand{\doxyref}[3]{\textbf{#1} (\textnormal{#2}\,\pageref{#3})} +\newenvironment{DocInclude} +{\footnotesize} +{\normalsize} +\newenvironment{VerbInclude} +{\footnotesize} +{\normalsize} +\newenvironment{Image} +{\begin{figure}[H]} +{\end{figure}} +\newenvironment{ImageNoCaption}{}{} +\newenvironment{CompactList} +{\begin{list}{}{ + \setlength{\leftmargin}{0.5cm} + \setlength{\itemsep}{0pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \renewcommand{\makelabel}{\hfill}}} +{\end{list}} +\newenvironment{CompactItemize} +{ + \begin{itemize} + \setlength{\itemsep}{-3pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \setlength{\partopsep}{0pt} +} +{\end{itemize}} +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp} +\newlength{\tmplength} +\newenvironment{TabularC}[1] +{ +\setlength{\tmplength} + {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)} + \par\begin{tabular*}{\linewidth} + {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|} +} +{\end{tabular*}\par} +\newcommand{\entrylabel}[1]{ + {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\vspace{1.5\baselineskip}}}} +\newenvironment{Desc} +{\begin{list}{} + { + \settowidth{\labelwidth}{40pt} + \setlength{\leftmargin}{\labelwidth} + \setlength{\parsep}{0pt} + \setlength{\itemsep}{-4pt} + \renewcommand{\makelabel}{\entrylabel} + } +} +{\end{list}} +\newenvironment{Indent} + {\begin{list}{}{\setlength{\leftmargin}{0.5cm}} + \item[]\ignorespaces} + {\unskip\end{list}} +\setlength{\parindent}{0cm} +\setlength{\parskip}{0.2cm} +\addtocounter{secnumdepth}{1} +\sloppy +\usepackage[T1]{fontenc} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/latex/main.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/latex/main.tex new file mode 100644 index 000000000..7505ea455 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/latex/main.tex @@ -0,0 +1,397 @@ +\hypertarget{main_structure}{}\section{Introduction}\label{main_structure} +One of the first steps in designing an evolutionary algorithm using the Paradis\-EO-PEO framework consists in having a clear overview of the implemented algorithm. A brief pseudo-code description is offered bellow - the entire source code for the Paradis\-EO-PEO evolutionary algorithm is defined in the {\bf peo\-EA.h} header file. The main elements to be considered when building an evolutionary algorithm are the transformation operators, i.e. crossover and mutation, the evaluation function, the continuation criterion and the selection and replacement strategy. + +\begin{TabularC}{2} +\hline +{\bf do} \{ ~ &~ \\\hline +~~~~~~~~ select( population, offsprings ); ~ &// select the offsprings from the current population \\\hline +~~~~~~~~ transform( offsprings ); ~ &// crossover and mutation operators are applied on the selected offsprings \\\hline +~~~~~~~~ evaluate( offsprings ); ~ &// evaluation step of the resulting offsprings \\\hline +~~~~~~~~ replace( population, offsprings ); ~ &// replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy \\\hline +\} {\bf while} ( ea\-Checkpoint\-Continue( population ) ); ~ &// checkpoint operators are applied on the current population \\\hline +\end{TabularC} + + +The \doxyref{peo\-EA} class offers an elementary evolutionary algorithm implementation. The \doxyref{peo\-EA} class has the underlying structure for including parallel evaluation and parallel transformation operators, migration operators etc. Although there is no restriction on using the algorithms provided by the EO framework, no parallelism is provided - the EO implementation is exclusively sequential. \par +\hypertarget{main_requirements}{}\section{Requirements}\label{main_requirements} +You should have already installed the Paradis\-EO-PEO package - this requires several additional packages which should be already included in the provided archive. The installation script has to be launched in order to configure and compile all the required components. At the end of the installation phase you should end up having a directory tree resembling the following: {\bf \par +~~~~ ... \par +~~~~ paradiseo-mo \par +~~~~ paradiseo-moeo \par +~~~~ paradiseo-peo \par +~~~~ ~~~~~~ docs \par +~~~~ ~~~~~~ examples \par +~~~~ ~~~~~~ ~~~~~~ lesson1 \par +~~~~ ~~~~~~ ~~~~~~ lesson2 \par +~~~~ ~~~~~~ ~~~~~~ ... \par +~~~~ ~~~~~~ ~~~~~~ shared \par +~~~~ ~~~~~~ ~~~~~~ ... \par +~~~~ ~~~~~~ src \par +~~~~ ~~~~~~ ... \par +~~~~ ... } \par + + +The source-code for this tutorial may be found in the {\bf paradiseo-peo/examples/lesson1} directory, in the {\bf \hyperlink{main_8cpp-source}{main.cpp}} file. We strongly encourage creating a backup copy of the file if you consider modifying the source code. For a complete reference on the TSP-related classes and definitions please refer to the files under the {\bf paradiseo-peo/examples/shared}. After the installation phase you should end up having an {\bf tsp\-Example} executable file in the {\bf paradiseo-peo/examples/lesson1} directory. We will discuss testing and launching aspects later in the tutorial. + +You are supposed to be familiar with working in C/C++ (with an extensive use of templates) and you should have at least an introductory background in working with the EO framework. + + + + {\bf NOTE}: All the presented examples have as case study the {\em Traveling Salesman Problem (TSP)\/}. All the presented tutorials rely on a \href{../../lsnshared/html/index.html}{\tt common shared source code} defining transformation operators, evaluation functions, etc. for the TSP problem. For a complete understanding of the presented tutorials please take your time for consulting and for studying the additional underlying defined classes. + +\par +\hypertarget{main_problemDef}{}\section{Problem Definition and Representation}\label{main_problemDef} +As we are not directly concerned with the {\em Traveling Salesman Problem\/}, and to some extent out of scope, no in depth details are offered for the TSP. The problem requires finding the shortest path connecting a given set of cities, while visiting each of the specified cities only once and returning to the startpoint city. The problem is known to be NP-complete, i.e. no polynomial time algorithm exists for solving the problem in exact manner. + +The construction of a Paradis\-EO-PEO evolutionary algorithm requires following a few simple steps - please take your time to study the signature of the \doxyref{peo\-EA} constructor: + +\begin{TabularC}{2} +\hline +~~~~ \doxyref{peo\-EA}( \par +~~~~ ~~~~~~ eo\-Continue$<$ EOT $>$\& \_\-\_\-cont, \par +~~~~ ~~~~~~ peo\-Pop\-Eval$<$ EOT $>$\& \_\-\_\-pop\_\-eval, \par +~~~~ ~~~~~~ eo\-Select$<$ EOT $>$\& \_\-\_\-select, \par +~~~~ ~~~~~~ peo\-Transform$<$ EOT $>$\& \_\-\_\-trans, \par +~~~~ ~~~~~~ eo\-Replacement$<$ EOT $>$\& \_\-\_\-replace \par +~~~~ ); & \\\hline +\end{TabularC} + + +A few remarks have to be made: while most of the parameters are passed as EO-specific types, the evaluation and the transformation objects have to be derived from the Paradis\-EO-PEO \doxyref{peo\-Pop\-Eval} and \doxyref{peo\-Transform} classes. Derived classes like the \doxyref{peo\-Para\-Pop\-Eval} and \doxyref{peo\-Para\-SGATransform} classes allow for parallel evaluation of the population and parallel transformation operators, respectively. Wrappers are provided thus allowing to make use of the EO classes. + +In the followings, the main required elements for building an evolutionary algorithm are enumerated. For complete details regarding the implementation aspects of each of the components, please refer to the \href{../../lsnshared/html/index.html}{\tt common shared source code}. Each of the bellow referred header files may be found in the {\bf pardiseo-peo/examples/shared} directory. + +\begin{enumerate} +\item {\em {\bf representation}\/} - the first decision to be taken concerns the representation of the individuals. You may create your own representation or you may use/derive one of the predefined classes of the EO framework. \par + + +For our case study, the TSP, each city is defined as a \doxyref{Node} in the {\bf node.h} header file - in fact an unsigned value defined as {\bf typedef unsigned \doxyref{Node}}. Moreover, each individual (of the evolutionary algorithm) is represented as a Route object, a vector of \doxyref{Node} objects, in the {\bf route.h} header file - {\bf typedef eo\-Vector$<$ int, Node $>$ Route}. The definition of the Route object implies two elements: (1) a route is a vector of nodes, and (2) the fitness is an integer value (please refer to the eo\-Vector definition in the EO framework). + +In addition you should also take a look in the {\bf route\_\-init.h} header file which includes the Route\-Init class, defined for initializing in random manner Route objects. \item {\em {\bf evaluation function}\/} - having a representation model, an evaluation object has to be defined, implementing a specific fitness function. The designed class has to be derived (directly or indirectly) from the \doxyref{peo\-Pop\-Eval} class - you have the choice of using \doxyref{peo\-Seq\-Pop\-Eval} or \doxyref{peo\-Para\-Pop\-Eval} for sequential and parallel evaluation, respectively. These classes act as wrappers requiring the specification of an EO evaluation object derived from the eo\-Eval\-Func class - please refer to their respective documentation. \par + + +The fitness function for our TSP case study is implemented in the {\bf route\_\-eval.h} header file. The class is derived from the eo\-Eval\-Func EO class, being defined as {\bf class Route\-Eval : public eo\-Eval\-Func$<$ Route $>$}. \item {\em {\bf transformation operators}\/} - in order to assure the evolution of the initial population, transformation operators have to be defined. Depending on your problem, you may specify quadruple operators (two input individuals, two output resulting individuals), i.e. crossover operators, binary operators (one input individual and one output resulting individual), i.e. mutation operators, or combination of both types. As for the evaluation function, the signature of the \doxyref{peo\-EA} constructor requires specifying a \doxyref{peo\-Transform} derived object as transformation operator. + +The transform operators, crossover and mutation, for the herein presented example are defined in the {\bf order\_\-xover.h} and the {\bf city\_\-swap.h} header files, respectively. \item {\em {\bf continuation criterion}\/} - the evolutionary algorithm evolves in an iterative manner; a continuation criterion has to be specified. One of the most common and simplest options considers a maximum number of generations. It is your choice whether to use a predefined EO class for specifying the continuation criterion or using a custom defined class. In the later case you have to make sure that your class derives the eo\-Continue class.\par + \item {\em {\bf selection strategy}\/} - at each iteration a set of individuals are selected for applying the transform operators, in order to obtain the offspring population. As the specified parameter has to be derived from the eo\-Select it is your option of whether using the EO provided selection strategies or implementing your own, as long as it inherits the eo\-Select class. + +For our example we chose to use the eo\-Ranking\-Select strategy, provided in the EO framework. \item {\em {\bf replacement strategy}\/} - once the offspring population is obtained, the offsprings have to be integrated back into the initial population, according to a given strategy. For custom defined strategies you have to inherit the eo\-Replacement EO class. We chose to use an eo\-Plus\-Replacement as strategy (please review the EO documentation for details on the different strategies available). \end{enumerate} +\par +\hypertarget{main_example}{}\section{A simple example for constructing a peo\-EA object}\label{main_example} +The source code for this example may be found in the {\bf \hyperlink{main_8cpp-source}{main.cpp}} file, under the {\bf paradiseo-peo/examples/lesson1} directory. Please make sure you At this point you have two options: (a) you can just follow the example without touching the {\bf \hyperlink{main_8cpp-source}{main.cpp}} or, (b) you can start from scratch, following the presented steps, in which case you are required make a backup copy of the {\bf \hyperlink{main_8cpp-source}{main.cpp}} file and replace the original file with an empty one. + +\begin{enumerate} +\item {\bf include the necessary header files} - as we will be using Route objects, we have to include the files which define the Route type, the initializing functor and the evaluation functions. Furthermore, in order to make use of transform operators, we require having the headers which define the crossover and the mutation operators. All these files may be found in the shared directory that we mentioned in the beginning. At this point you should have something like the following:\par + + +\small\begin{alltt} + \#include "route.h" + \#include "route\_init.h" + \#include "route\_eval.h"\end{alltt}\normalsize + + +\small\begin{alltt} \#include "order\_xover.h" + \#include "city\_swap.h" + \end{alltt}\normalsize + In addition we require having the {\em paradiseo\/} header file, in order to use the Paradis\-EO-PEO features, and a header specific for our problem, dealing with processing command-line parameters - the {\bf param.h} header file. The complete picture at this point with all the required header files is as follows:\par + + +\small\begin{alltt} + \#include "route.h" + \#include "route\_init.h" + \#include "route\_eval.h"\end{alltt}\normalsize + + +\small\begin{alltt} \#include "order\_xover.h" + \#include "city\_swap.h"\end{alltt}\normalsize + + +\small\begin{alltt} \#include "param.h"\end{alltt}\normalsize + + +\small\begin{alltt} \#include + \end{alltt}\normalsize + {\bf NOTE}: the {\bf {\em paradiseo\/}} header file is in fact a \char`\"{}super-header\char`\"{} - it includes all the esential Paradis\-EO-PEO header files. It is at at your choice if you want use the {\bf {\em paradiseo\/}} header file or to explicitly include different header files, like the {\bf peo\-EA.h} header file, for example. + +\item {\bf define problem specific parameters} - in our case we have to specify how many individuals we want to have in our population, the number of generations for the evolutionary algorithm to iterate and the probabilities associated with the crossover and mutation operators.\par + + +\small\begin{alltt} + \#include "route.h" + \#include "route\_init.h" + \#include "route\_eval.h"\end{alltt}\normalsize + + +\small\begin{alltt} \#include "order\_xover.h" + \#include "city\_swap.h"\end{alltt}\normalsize + + +\small\begin{alltt} \#include "param.h"\end{alltt}\normalsize + + +\small\begin{alltt} \#include \end{alltt}\normalsize + + +\small\begin{alltt} \#define POP\_SIZE 10 + \#define NUM\_GEN 100 + \#define CROSS\_RATE 1.0 + \#define MUT\_RATE 0.01 + \end{alltt}\normalsize + \item {\bf construct the skeleton of a simple Paradis\-EO-PEO program} - the main function including the code for initializing the Paradis\-EO-PEO environment, for loading problem data and for shutting down the Paradis\-EO-PEO environment. From this point on we will make abstraction of the previous part referring only to the main function.\par + + +\small\begin{alltt} + ...\end{alltt}\normalsize + + +\small\begin{alltt} int main( int \_\_argc, char** \_\_argv ) \{\end{alltt}\normalsize + + +\small\begin{alltt} {\em //\/} initializing the ParadisEO-PEO environment + peo :: init( \_\_argc, \_\_argv );\end{alltt}\normalsize + + +\small\begin{alltt} {\em //\/} processing the command line specified parameters + loadParameters( \_\_argc, \_\_argv );\end{alltt}\normalsize + + +\small\begin{alltt} {\em //\/} EVOLUTIONARY ALGORITHM TO BE DEFINED\end{alltt}\normalsize + + +\small\begin{alltt} peo :: run( ); + peo :: finalize( ); + {\em //\/} shutting down the ParadisEO-PEO environment\end{alltt}\normalsize + + +\small\begin{alltt} return 0; + \} + \end{alltt}\normalsize + \item {\bf initialization functors, evaluation function and transform operators} - basically we only need to create instances for each of the enumerated objects, to be passed later as parameters for higher-level components of the evolutionary algorithm.\par + + +\small\begin{alltt} + RouteInit route\_init; {\em //\/} random init object - creates random Route objects + RouteEval full\_eval; {\em //\/} evaluator object - offers a fitness value for a specified Route object\end{alltt}\normalsize + + +\small\begin{alltt} OrderXover crossover; {\em //\/} crossover operator - creates two offsprings out of two specified parents + CitySwap mutation; {\em //\/} mutation operator - randomly mutates one gene for a specified individual + \end{alltt}\normalsize + \item {\bf construct the components of the evolutionary algorithm} - each of the components that has to be passed as parameter to the {\bf \doxyref{peo\-EA}} constructor has to be defined along with the associated parameters. Except for the requirement to provide the appropriate objects (for example, a \doxyref{peo\-Pop\-Eval} derived object must be specified for the evaluation functor), there is no strict path to follow. It is your option what elements to mix, depending on your problem - we aimed for simplicity in our example. + +\begin{itemize} +\item an initial population has to be specified; the constructor accepts the specification of an initializing object. Further, an evaluation object is required - the {\bf \doxyref{peo\-EA}} constructor requires a {\bf \doxyref{peo\-Pop\-Eval}} derived class. \end{itemize} +\small\begin{alltt} + eoPop< Route > population( POP\_SIZE, route\_init ); {\em //\/} initial population for the algorithm having POP\_SIZE individuals + peoSeqPopEval< Route > eaPopEval( full\_eval ); // evaluator object - to be applied at each iteration on the entire population + \end{alltt}\normalsize + \begin{itemize} +\item the evolutionary algorithm continues to iterate till a continuation criterion is not met. For our case we consider a fixed number of generations. The continuation criterion has to be specified as a checkpoint object, thus requiring the creation of an {\em eo\-Check\-Point\/} object in addition. \end{itemize} +\small\begin{alltt} + eoGenContinue< Route > eaCont( NUM\_GEN ); {\em //\/} continuation criterion - the algorithm will iterate for NUM\_GEN generations + eoCheckPoint< Route > eaCheckpointContinue( eaCont ); {\em //\/} checkpoint object - verify at each iteration if the continuation criterion is met + \end{alltt}\normalsize + \begin{itemize} +\item selection strategy - we are required to specify a selection strategy for extracting individuals out of the parent population; in addition the number of individuals to be selected has to be specified. \end{itemize} +\small\begin{alltt} + eoRankingSelect< Route > selectionStrategy; {\em //\/} selection strategy - applied at each iteration for selecting parent individuals + eoSelectNumber< Route > eaSelect( selectionStrategy, POP\_SIZE ); {\em //\/} selection object - POP\_SIZE individuals are selected at each iteration + \end{alltt}\normalsize + \begin{itemize} +\item transformation operators - we have to integrate the crossover and the mutation functors into an object which may be passed as a parameter when creating the {\bf \doxyref{peo\-EA}} object. The constructor of {\bf \doxyref{peo\-EA}} requires a {\bf \doxyref{peo\-Transform}} derived object. Associated probabilities have to be specified also. \end{itemize} +\small\begin{alltt} + {\em //\/} transform operator - includes the crossover and the mutation operators with a specified associated rate + eoSGATransform< Route > transform( crossover, CROSS\_RATE, mutation, MUT\_RATE ); + peoSeqTransform< Route > eaTransform( transform ); {\em //\/} ParadisEO transform operator (please remark the peo prefix) - wraps an e EO transform object + \end{alltt}\normalsize + \begin{itemize} +\item replacement strategy - required for defining the way for integrating the resulting offsprings into the initial population. At your option whether you would like to chose one of the predefined replacement strategies that come with the EO framework or if you want to define your own. \end{itemize} +\small\begin{alltt} + eoPlusReplacement< Route > eaReplace; {\em //\/} replacement strategy - for replacing the initial population with offspring individuals + \end{alltt}\normalsize + \item {\bf evolutionary algorithm} - having defined all the previous components, we are ready for instanciating an evolutionary algorithm. In the end we have to associate a population with the algorithm, which will serve as the initial population, to be iteratively evolved. + +\small\begin{alltt} + peoEA< Route > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace );\end{alltt}\normalsize + + +\small\begin{alltt} eaAlg( population ); // specifying the initial population for the algorithm, to be iteratively evolved + \end{alltt}\normalsize + \end{enumerate} + + +If you have not missed any of the enumerated points, your program should be like the following: + +\small\begin{alltt} + \#include "route.h" + \#include "route\_init.h" + \#include "route\_eval.h"\end{alltt}\normalsize + + +\small\begin{alltt} \#include "order\_xover.h" + \#include "city\_swap.h"\end{alltt}\normalsize + + +\small\begin{alltt} \#include "param.h"\end{alltt}\normalsize + + +\small\begin{alltt} \#include \end{alltt}\normalsize + + +\small\begin{alltt} \#define POP\_SIZE 10 + \#define NUM\_GEN 100 + \#define CROSS\_RATE 1.0 + \#define MUT\_RATE 0.01\end{alltt}\normalsize + + +\small\begin{alltt} int main( int \_\_argc, char** \_\_argv ) \{\end{alltt}\normalsize + + +\small\begin{alltt} {\em //\/} initializing the ParadisEO-PEO environment + peo :: init( \_\_argc, \_\_argv );\end{alltt}\normalsize + + +\small\begin{alltt} {\em //\/} processing the command line specified parameters + loadParameters( \_\_argc, \_\_argv );\end{alltt}\normalsize + + +\small\begin{alltt} {\em //\/} init, eval operators, EA operators -------------------------------------------------------------------------------------------------------------\end{alltt}\normalsize + + +\small\begin{alltt} RouteInit route\_init; {\em //\/} random init object - creates random Route objects + RouteEval full\_eval; {\em //\/} evaluator object - offers a fitness value for a specified Route object\end{alltt}\normalsize + + +\small\begin{alltt} OrderXover crossover; {\em //\/} crossover operator - creates two offsprings out of two specified parents + CitySwap mutation; {\em //\/} mutation operator - randomly mutates one gene for a specified individual + {\em //\/} ------------------------------------------------------------------------------------------------------------------------------------------------\end{alltt}\normalsize + + +\small\begin{alltt} {\em //\/} evolutionary algorithm components --------------------------------------------------------------------------------------------------------------\end{alltt}\normalsize + + +\small\begin{alltt} eoPop< Route > population( POP\_SIZE, route\_init ); {\em //\/} initial population for the algorithm having POP\_SIZE individuals + peoSeqPopEval< Route > eaPopEval( full\_eval ); {\em //\/} evaluator object - to be applied at each iteration on the entire population\end{alltt}\normalsize + + +\small\begin{alltt} eoGenContinue< Route > eaCont( NUM\_GEN ); {\em //\/} continuation criterion - the algorithm will iterate for NUM\_GEN generations + eoCheckPoint< Route > eaCheckpointContinue( eaCont ); {\em //\/} checkpoint object - verify at each iteration if the continuation criterion is met\end{alltt}\normalsize + + +\small\begin{alltt} eoRankingSelect< Route > selectionStrategy; {\em //\/} selection strategy - applied at each iteration for selecting parent individuals + eoSelectNumber< Route > eaSelect( selectionStrategy, POP\_SIZE ); {\em //\/} selection object - POP\_SIZE individuals are selected at each iteration\end{alltt}\normalsize + + +\small\begin{alltt} {\em //\/} transform operator - includes the crossover and the mutation operators with a specified associated rate + eoSGATransform< Route > transform( crossover, CROSS\_RATE, mutation, MUT\_RATE ); + peoSeqTransform< Route > eaTransform( transform ); {\em //\/} ParadisEO transform operator (please remark the peo prefix) - wraps an e EO transform object\end{alltt}\normalsize + + +\small\begin{alltt} eoPlusReplacement< Route > eaReplace; {\em //\/} replacement strategy - for replacing the initial population with offspring individuals + {\em //\/} ------------------------------------------------------------------------------------------------------------------------------------------------\end{alltt}\normalsize + + +\small\begin{alltt} {\em //\/} ParadisEO-PEO evolutionary algorithm -----------------------------------------------------------------------------------------------------------\end{alltt}\normalsize + + +\small\begin{alltt} peoEA< Route > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace );\end{alltt}\normalsize + + +\small\begin{alltt} eaAlg( population ); {\em //\/} specifying the initial population for the algorithm, to be iteratively evolved + {\em //\/} ------------------------------------------------------------------------------------------------------------------------------------------------\end{alltt}\normalsize + + +\small\begin{alltt} peo :: run( ); + peo :: finalize( ); + {\em //\/} shutting down the ParadisEO-PEO environment\end{alltt}\normalsize + + +\small\begin{alltt} return 0; + \} + \end{alltt}\normalsize +\hypertarget{main_testing}{}\section{Compilation and Execution}\label{main_testing} +First, please make sure that you followed all the previous steps in defining the evolutionary algorithm. Your file should be called {\bf \hyperlink{main_8cpp-source}{main.cpp}} - please make sure you do not rename the file (we will be using a pre-built makefile, thus you are required not to change the file names). Please make sure you are in the {\bf paradiseo-peo/examples/lesson1} directory - you should open a console and you should change your current directory to the one of Lesson1. + +{\bf Compilation}: being in the {\bf paradiseo-peo/examples/lesson1} directory, you have to type {\em make\/}. As a result the {\bf \hyperlink{main_8cpp-source}{main.cpp}} file will be compiled and you should obtain an executable file called {\bf tsp\-Example}. If you have errors, please verify any of the followings: + +\begin{itemize} +\item you are under the right directory - you can verify by typing the {\em pwd\/} command - you should have something like {\bf .../paradiseo-peo/examples/lesson1} \item you saved your modifications in a file called {\bf \hyperlink{main_8cpp-source}{main.cpp}}, in the {\bf paradiseo-peo/examples/lesson1} directory \item there are no differences between the example presented above and your file \end{itemize} + + +{\bf NOTE}: in order to successfully compile your program you should already have installed an MPI distribution in your system. + +{\bf Execution}: the execution of a Paradis\-EO-PEO program requires having already created an environment for launching MPI programs. For {\em MPICH-2\/}, for example, this requires starting a ring of daemons. The implementation that we provided as an example is sequential and includes no parallelism - we will see in the end how to include also parallelism. Executing a parallel program requires specifying a mapping of resources, in order to assing different algorithms to different machines, define worker machines etc. This mapping is defined by an XML file called {\bf schema.xml}, which, for our case, has the following structure: + +\small\begin{alltt} + \end{alltt}\normalsize + + +\small\begin{alltt} + + + \end{alltt}\normalsize + + +\small\begin{alltt} + 1 + \end{alltt}\normalsize + + +\small\begin{alltt} + + + + + + \end{alltt}\normalsize + + +Not going into details, the XML file presented above describes a mapping which includes four nodes, the first one having the role of scheduler, the second one being the node on which the evolutionary algorithm is actually executed and the third and the fourth ones being slave nodes. Overall the mapping says that we will be launching four processes, out of which only one will be executing the evolutionary algorithm. The other node entries in the XML file have no real functionality as we have no parallelism in our program - the entries were created for you convenience, in order to provide a smooth transition to creating a parallel program. + +Launching the program may be different, depending on your MPI distribution - for MPICH-2, in a console, in the {\bf paradiseo-peo/examples/lesson1} directory you have to type the following command: + +{\bf mpiexec -n 4 ./tsp\-Example .param} + +{\bf NOTE}: the \char`\"{}-n 4\char`\"{} indicates the number of processes to be launched. The last argument, \char`\"{}@lesson.param\char`\"{}, indicates a file which specifies different application specific parameters (the mapping file to be used, for example, whether to use logging or not, etc). + +The result of your execution should be similar to the following: \small\begin{alltt} + Loading '../data/eil101.tsp'. + NAME: eil101. + COMMENT: 101-city problem (Christofides/Eilon). + TYPE: TSP. + DIMENSION: 101. + EDGE\_WEIGHT\_TYPE: EUC\_2D. + Loading '../data/eil101.tsp'. + NAME: eil101. + COMMENT: 101-city problem (Christofides/Eilon). + EOF. + TYPE: TSP. + DIMENSION: 101. + EDGE\_WEIGHT\_TYPE: EUC\_2D. + EOF. + Loading '../data/eil101.tsp'. + NAME: eil101. + COMMENT: 101-city problem (Christofides/Eilon). + TYPE: TSP. + DIMENSION: 101. + EDGE\_WEIGHT\_TYPE: EUC\_2D. + EOF. + Loading '../data/eil101.tsp'. + NAME: eil101. + COMMENT: 101-city problem (Christofides/Eilon). + TYPE: TSP. + DIMENSION: 101. + EDGE\_WEIGHT\_TYPE: EUC\_2D. + EOF. + STOP in eoGenContinue: Reached maximum number of generations [100/100] + \end{alltt}\normalsize +\hypertarget{main_paraIntro}{}\section{Introducing parallelism}\label{main_paraIntro} +Creating parallel programs with Paradis\-EO-PEO represents an easy task once you have the basic structure for your program. For experimentation, in the {\bf \hyperlink{main_8cpp-source}{main.cpp}} file, replace the line \small\begin{alltt} + peo{\bf Seq}PopEval< Route > eaPopEval( full\_eval ); + \end{alltt}\normalsize + with \small\begin{alltt} + peo{\bf Para}PopEval< Route > eaPopEval( full\_eval ); + \end{alltt}\normalsize + The second line only tells that we would like to evaluate individuals in parallel - this is very interesting if you have a time consuming fitness evaluation function. If you take another look on the {\bf schema.xml} XML file you will see the last two nodes being marked as slaves (the \char`\"{}num\_\-workers\char`\"{} attribute - these nodes will be used for computing the fitness of the individuals. + +At this point you only have to recompile your program and to launch it again - as we are not using a time consuming fitness fitness function, the effects might not be visible - you may increase the number of individuals to experiment. \ No newline at end of file diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/latex/refman.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/latex/refman.tex new file mode 100644 index 000000000..b2a9868b8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson1/latex/refman.tex @@ -0,0 +1,49 @@ +\documentclass[a4paper]{book} +\usepackage{a4wide} +\usepackage{makeidx} +\usepackage{fancyhdr} +\usepackage{graphicx} +\usepackage{multicol} +\usepackage{float} +\usepackage{textcomp} +\usepackage{alltt} +\usepackage{times} +\usepackage{ifpdf} +\ifpdf +\usepackage[pdftex, + pagebackref=true, + colorlinks=true, + linkcolor=blue + ]{hyperref} +\else +\usepackage[ps2pdf, + pagebackref=true, + colorlinks=true, + linkcolor=blue + ]{hyperref} +\usepackage{pspicture} +\fi +\usepackage{doxygen} +\makeindex +\setcounter{tocdepth}{1} +\renewcommand{\footrulewidth}{0.4pt} +\begin{document} +\begin{titlepage} +\vspace*{7cm} +\begin{center} +{\Large Paradis\-EO-PEO Lesson1 Reference Manual\\[1ex]\large 0.1 }\\ +\vspace*{1cm} +{\large Generated by Doxygen 1.4.7}\\ +\vspace*{0.5cm} +{\small Tue Jan 9 15:47:43 2007}\\ +\end{center} +\end{titlepage} +\clearemptydoublepage +\pagenumbering{roman} +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} +\chapter{Creating a simple Paradis\-EO-PEO Evolutionary Algorithm } +\label{index}\hypertarget{index}{}\input{main} +\printindex +\end{document} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/doxygen.css b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/doxygen.css new file mode 100644 index 000000000..5d583694e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/doxygen.css @@ -0,0 +1,358 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: monospace, fixed; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } + +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + +/* Style for detailed member documentation */ +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; +} +.memnav { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +.memitem { + padding: 4px; + background-color: #eef3f5; + border-width: 1px; + border-style: solid; + border-color: #dedeee; + -moz-border-radius: 8px 8px 8px 8px; +} +.memname { + white-space: nowrap; + font-weight: bold; +} +.memdoc{ + padding-left: 10px; +} +.memproto { + background-color: #d5e1e8; + width: 100%; + border-width: 1px; + border-style: solid; + border-color: #84b0c7; + font-weight: bold; + -moz-border-radius: 8px 8px 8px 8px; +} +.paramkey { + text-align: right; +} +.paramtype { + white-space: nowrap; +} +.paramname { + color: #602020; + font-style: italic; +} +/* End Styling for detailed member documentation */ + +/* for the tree view */ +.ftvtree { + font-family: sans-serif; + margin:0.5em; +} +.directory { font-size: 9pt; font-weight: bold; } +.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } +.directory > h3 { margin-top: 0; } +.directory p { margin: 0px; white-space: nowrap; } +.directory div { display: none; margin: 0px; } +.directory img { vertical-align: -30%; } + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/doxygen.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/doxygen.png new file mode 100644 index 000000000..f0a274bba Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/doxygen.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/files.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/files.html new file mode 100644 index 000000000..3b6177276 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/files.html @@ -0,0 +1,30 @@ + + +ParadisEO-PEO Lesson2: File Index + + + + +
+
+

ParadisEO-PEO Lesson2 File List

Here is a list of all documented files with brief descriptions: + +
main.cpp [code]
+
Generated on Tue Jan 9 15:47:44 2007 for ParadisEO-PEO Lesson2 by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2blank.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2blank.png new file mode 100644 index 000000000..493c3c0b6 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2blank.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2doc.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2doc.png new file mode 100644 index 000000000..f72999f92 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2doc.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2folderclosed.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2folderclosed.png new file mode 100644 index 000000000..d6d063440 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2folderclosed.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2folderopen.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2folderopen.png new file mode 100644 index 000000000..bbe2c913c Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2folderopen.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2lastnode.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2lastnode.png new file mode 100644 index 000000000..e7b9ba90c Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2lastnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2link.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2link.png new file mode 100644 index 000000000..14f3fed00 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2link.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2mlastnode.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2mlastnode.png new file mode 100644 index 000000000..09ceb6adb Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2mlastnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2mnode.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2mnode.png new file mode 100644 index 000000000..3254c0511 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2mnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2node.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2node.png new file mode 100644 index 000000000..c9f06a57f Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2node.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2plastnode.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2plastnode.png new file mode 100644 index 000000000..0b07e0091 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2plastnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2pnode.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2pnode.png new file mode 100644 index 000000000..2001b797b Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2pnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2vertline.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2vertline.png new file mode 100644 index 000000000..b330f3a33 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/ftv2vertline.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/index.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/index.html new file mode 100644 index 000000000..772d0834e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/index.html @@ -0,0 +1,8 @@ + + +ParadisEO-PEO Lesson2 + + + + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/installdox b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/installdox new file mode 100755 index 000000000..772efebb2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/installdox @@ -0,0 +1,117 @@ +#!/usr/bin/perl + +%subst = ( "eo.doxytag", "", "mo.doxytag", "", "paradiseo-peo.doxytag", "", "paradiseo-peo-lsn-shared.doxytag", ""); +$quiet = 0; + +if (open(F,"search.cfg")) +{ + $_= ; s/[ \t\n]*$//g ; $subst{"_doc"} = $_; + $_= ; s/[ \t\n]*$//g ; $subst{"_cgi"} = $_; +} + +while ( @ARGV ) { + $_ = shift @ARGV; + if ( s/^-// ) { + if ( /^l(.*)/ ) { + $v = ($1 eq "") ? shift @ARGV : $1; + ($v =~ /\/$/) || ($v .= "/"); + $_ = $v; + if ( /(.+)\@(.+)/ ) { + if ( exists $subst{$1} ) { + $subst{$1} = $2; + } else { + print STDERR "Unknown tag file $1 given with option -l\n"; + &usage(); + } + } else { + print STDERR "Argument $_ is invalid for option -l\n"; + &usage(); + } + } + elsif ( /^q/ ) { + $quiet = 1; + } + elsif ( /^\?|^h/ ) { + &usage(); + } + else { + print STDERR "Illegal option -$_\n"; + &usage(); + } + } + else { + push (@files, $_ ); + } +} + +foreach $sub (keys %subst) +{ + if ( $subst{$sub} eq "" ) + { + print STDERR "No substitute given for tag file `$sub'\n"; + &usage(); + } + elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) + { + print "Substituting $subst{$sub} for each occurence of tag file $sub\n"; + } +} + +if ( ! @files ) { + if (opendir(D,".")) { + foreach $file ( readdir(D) ) { + $match = ".html"; + next if ( $file =~ /^\.\.?$/ ); + ($file =~ /$match/) && (push @files, $file); + ($file =~ "tree.js") && (push @files, $file); + } + closedir(D); + } +} + +if ( ! @files ) { + print STDERR "Warning: No input files given and none found!\n"; +} + +foreach $f (@files) +{ + if ( ! $quiet ) { + print "Editing: $f...\n"; + } + $oldf = $f; + $f .= ".bak"; + unless (rename $oldf,$f) { + print STDERR "Error: cannot rename file $oldf\n"; + exit 1; + } + if (open(F,"<$f")) { + unless (open(G,">$oldf")) { + print STDERR "Error: opening file $oldf for writing\n"; + exit 1; + } + if ($oldf ne "tree.js") { + while () { + s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; + print G "$_"; + } + } + else { + while () { + s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; + print G "$_"; + } + } + } + else { + print STDERR "Warning file $f does not exist\n"; + } + unlink $f; +} + +sub usage { + print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; + print STDERR "Options:\n"; + print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; + print STDERR " -q Quiet mode\n\n"; + exit 1; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/main.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/main.html new file mode 100644 index 000000000..ddb24542a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/main.html @@ -0,0 +1,29 @@ + + +ParadisEO-PEO Lesson2: Main Page + + + + +
+
+

ParadisEO-PEO Lesson2 Documentation

+

+

0.1


Generated on Tue Jan 9 15:47:44 2007 for ParadisEO-PEO Lesson2 by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/main_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/main_8cpp-source.html new file mode 100644 index 000000000..8bd65699d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/main_8cpp-source.html @@ -0,0 +1,183 @@ + + +ParadisEO-PEO Lesson2: main.cpp Source File + + + + +
+
+

main.cpp

00001 // "main_ga.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "param.h"
+00010 #include "route_init.h"
+00011 #include "route_eval.h"
+00012 
+00013 #include "order_xover.h"
+00014 #include "edge_xover.h"
+00015 #include "partial_mapped_xover.h"
+00016 #include "city_swap.h"
+00017 #include "part_route_eval.h"
+00018 #include "merge_route_eval.h"
+00019 #include "two_opt_init.h"
+00020 #include "two_opt_next.h"
+00021 #include "two_opt_incr_eval.h"
+00022 
+00023 #include <paradiseo>
+00024 
+00025 #define POP_SIZE 10
+00026 #define NUM_GEN 100
+00027 #define CROSS_RATE 1.0
+00028 #define MUT_RATE 0.01
+00029 #define NUM_PART_EVALS 2
+00030 
+00031 #define MIG_FREQ 10
+00032 #define MIG_SIZE 10
+00033 #define HYBRID_SIZE 3
+00034 
+00035 int main (int __argc, char * * __argv) {
+00036 
+00037   peo :: init (__argc, __argv);
+00038 
+00039   loadParameters (__argc, __argv); /* Processing some parameters relative to the tackled
+00040                                       problem (TSP) */
+00041 
+00042   RouteInit route_init; /* Its builds random routes */  
+00043   RouteEval full_eval; /* Full route evaluator */
+00044 
+00045   MergeRouteEval merge_eval; 
+00046   
+00047   std :: vector <eoEvalFunc <Route> *> part_eval;
+00048   for (unsigned i = 1 ; i <= NUM_PART_EVALS ; i ++)
+00049     part_eval.push_back (new PartRouteEval ((float) (i - 1) / NUM_PART_EVALS, (float) i / NUM_PART_EVALS));
+00050   
+00051   OrderXover order_cross; /* Recombination */
+00052   PartialMappedXover pm_cross;
+00053   EdgeXover edge_cross;
+00054   CitySwap city_swap_mut;  /* Mutation */
+00055 
+00056   RingTopology topo;
+00057  
+00060   eoPop <Route> ox_pop (POP_SIZE, route_init);  /* Population */
+00061   
+00062   eoGenContinue <Route> ox_cont (NUM_GEN); /* A fixed number of iterations */  
+00063   eoCheckPoint <Route> ox_checkpoint (ox_cont); /* Checkpoint */
+00064   peoParaPopEval <Route> ox_pop_eval (part_eval, merge_eval);  
+00065   eoStochTournamentSelect <Route> ox_select_one;
+00066   eoSelectNumber <Route> ox_select (ox_select_one, POP_SIZE);
+00067   eoSGATransform <Route> ox_transform (order_cross, CROSS_RATE, city_swap_mut, MUT_RATE);
+00068   peoSeqTransform <Route> ox_para_transform (ox_transform);    
+00069   eoEPReplacement <Route> ox_replace (2);
+00070   
+00071   /* The migration policy */
+00072   eoPeriodicContinue <Route> ox_mig_cont (MIG_FREQ); /* Migration occurs periodically */
+00073   eoRandomSelect <Route> ox_mig_select_one; /* Emigrants are randomly selected */
+00074   eoSelectNumber <Route> ox_mig_select (ox_mig_select_one, MIG_SIZE);
+00075   eoPlusReplacement <Route> ox_mig_replace; /* Immigrants replace the worse individuals */
+00076   
+00077   peoAsyncIslandMig <Route> ox_mig (ox_mig_cont, ox_mig_select, ox_mig_replace, topo, ox_pop, ox_pop);
+00078   //peoSyncIslandMig <Route> ox_mig (MIG_FREQ, ox_mig_select, ox_mig_replace, topo, ox_pop, ox_pop);
+00079   
+00080   ox_checkpoint.add (ox_mig);
+00081   
+00082   peoEA <Route> ox_ea (ox_checkpoint, ox_pop_eval, ox_select, ox_para_transform, ox_replace);
+00083   ox_mig.setOwner (ox_ea);
+00084   
+00085   ox_ea (ox_pop);   /* Application to the given population */    
+00086 
+00089   eoPop <Route> pmx_pop (POP_SIZE, route_init);  /* Population */
+00090 
+00091   eoGenContinue <Route> pmx_cont (NUM_GEN); /* A fixed number of iterations */  
+00092   eoCheckPoint <Route> pmx_checkpoint (pmx_cont); /* Checkpoint */
+00093   peoSeqPopEval <Route> pmx_pop_eval (full_eval);  
+00094   eoRankingSelect <Route> pmx_select_one;
+00095   eoSelectNumber <Route> pmx_select (pmx_select_one, POP_SIZE);
+00096   eoSGATransform <Route> pmx_transform (pm_cross, CROSS_RATE, city_swap_mut, MUT_RATE);
+00097   peoSeqTransform <Route> pmx_para_transform (pmx_transform);    
+00098   eoPlusReplacement <Route> pmx_replace;
+00099 
+00100   /* The migration policy */
+00101   eoPeriodicContinue <Route> pmx_mig_cont (MIG_FREQ); /* Migration occurs periodically */
+00102   eoRandomSelect <Route> pmx_mig_select_one; /* Emigrants are randomly selected */
+00103   eoSelectNumber <Route> pmx_mig_select (pmx_mig_select_one, MIG_SIZE);
+00104   eoPlusReplacement <Route> pmx_mig_replace; /* Immigrants replace the worse individuals */
+00105   peoAsyncIslandMig <Route> pmx_mig (pmx_mig_cont, pmx_mig_select, pmx_mig_replace, topo, pmx_pop, pmx_pop);
+00106   //peoSyncIslandMig <Route> pmx_mig (MIG_FREQ, pmx_mig_select, pmx_mig_replace, topo, pmx_pop, pmx_pop);
+00107   pmx_checkpoint.add (pmx_mig);
+00108   
+00109   /* Hybridization with a Local Search */
+00110   TwoOptInit pmx_two_opt_init;
+00111   TwoOptNext pmx_two_opt_next;
+00112   TwoOptIncrEval pmx_two_opt_incr_eval;
+00113   moBestImprSelect <TwoOpt> pmx_two_opt_move_select;
+00114   moHC <TwoOpt> hc (pmx_two_opt_init, pmx_two_opt_next, pmx_two_opt_incr_eval, pmx_two_opt_move_select, full_eval);
+00115 
+00116   eoPeriodicContinue <Route> pmx_ls_cont (MIG_FREQ); /* Hybridization occurs periodically */
+00117   eoRandomSelect <Route> pmx_ls_select_one; /* ? */
+00118   eoSelectNumber <Route> pmx_ls_select (pmx_ls_select_one, HYBRID_SIZE); 
+00119   eoPlusReplacement <Route> pmx_ls_replace;
+00120 
+00121   peoSyncMultiStart <Route> pmx_ls (pmx_ls_cont, pmx_ls_select, pmx_ls_replace, hc, pmx_pop);
+00122   pmx_checkpoint.add (pmx_ls);
+00123 
+00124   peoEA <Route> pmx_ea (pmx_checkpoint, pmx_pop_eval, pmx_select, pmx_para_transform, pmx_replace);
+00125   pmx_mig.setOwner (pmx_ea);
+00126   pmx_ls.setOwner (pmx_ea);
+00127 
+00128   pmx_ea (pmx_pop);   /* Application to the given population */    
+00129 
+00132   eoPop <Route> edge_pop (POP_SIZE, route_init);  /* Population */
+00133 
+00134   eoGenContinue <Route> edge_cont (NUM_GEN); /* A fixed number of iterations */  
+00135   eoCheckPoint <Route> edge_checkpoint (edge_cont); /* Checkpoint */
+00136   peoSeqPopEval <Route> edge_pop_eval (full_eval);  
+00137   eoRankingSelect <Route> edge_select_one;
+00138   eoSelectNumber <Route> edge_select (edge_select_one, POP_SIZE);        
+00139   peoParaSGATransform <Route> edge_para_transform (edge_cross, CROSS_RATE, city_swap_mut, MUT_RATE);
+00140   eoPlusReplacement <Route> edge_replace;
+00141 
+00142   /* The migration policy */
+00143   eoPeriodicContinue <Route> edge_mig_cont (MIG_FREQ); /* Migration occurs periodically */
+00144   eoRandomSelect <Route> edge_mig_select_one; /* Emigrants are randomly selected */
+00145   eoSelectNumber <Route> edge_mig_select (edge_mig_select_one, MIG_SIZE);
+00146   eoPlusReplacement <Route> edge_mig_replace; /* Immigrants replace the worse individuals */
+00147   peoAsyncIslandMig <Route> edge_mig (edge_mig_cont, edge_mig_select, edge_mig_replace, topo, edge_pop, edge_pop);
+00148   //peoSyncIslandMig <Route> edge_mig (MIG_FREQ, edge_mig_select, edge_mig_replace, topo, edge_pop, edge_pop);
+00149   edge_checkpoint.add (edge_mig);
+00150 
+00151   peoEA <Route> edge_ea (edge_checkpoint, edge_pop_eval, edge_select, edge_para_transform, edge_replace);
+00152 
+00153   edge_mig.setOwner (edge_ea);
+00154 
+00155   edge_ea (edge_pop);   /* Application to the given population */    
+00156   
+00157   peo :: run ();
+00158 
+00159   peo :: finalize (); /* Termination */
+00160 
+00161   return 0;
+00162 }
+

Generated on Tue Jan 9 15:47:44 2007 for ParadisEO-PEO Lesson2 by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/search.idx b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/search.idx new file mode 100644 index 000000000..290d02717 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/search.idx differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/search.php b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/search.php new file mode 100644 index 000000000..22c0d72b6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/search.php @@ -0,0 +1,380 @@ + + +Search + + + + +
+
    +
  • Main Page
  • +
  • Files
  • +
  • +
    + + + + +1 document matching your query."; + } + else // $num>1 + { + return "Found $num documents matching your query. Showing best matches first."; + } +} + +function report_matches() +{ + return "Matches: "; +} +function end_form($value) +{ + echo " \n \n
    \n
    \n
  • \n
\n
\n"; +} + +function readInt($file) +{ + $b1 = ord(fgetc($file)); $b2 = ord(fgetc($file)); + $b3 = ord(fgetc($file)); $b4 = ord(fgetc($file)); + return ($b1<<24)|($b2<<16)|($b3<<8)|$b4; +} + +function readString($file) +{ + $result=""; + while (ord($c=fgetc($file))) $result.=$c; + return $result; +} + +function readHeader($file) +{ + $header =fgetc($file); $header.=fgetc($file); + $header.=fgetc($file); $header.=fgetc($file); + return $header; +} + +function computeIndex($word) +{ + // Fast string hashing + //$lword = strtolower($word); + //$l = strlen($lword); + //for ($i=0;$i<$l;$i++) + //{ + // $c = ord($lword{$i}); + // $v = (($v & 0xfc00) ^ ($v << 6) ^ $c) & 0xffff; + //} + //return $v; + + // Simple hashing that allows for substring search + if (strlen($word)<2) return -1; + // high char of the index + $hi = ord($word{0}); + if ($hi==0) return -1; + // low char of the index + $lo = ord($word{1}); + if ($lo==0) return -1; + // return index + return $hi*256+$lo; +} + +function search($file,$word,&$statsList) +{ + $index = computeIndex($word); + if ($index!=-1) // found a valid index + { + fseek($file,$index*4+4); // 4 bytes per entry, skip header + $index = readInt($file); + if ($index) // found words matching the hash key + { + $start=sizeof($statsList); + $count=$start; + fseek($file,$index); + $w = readString($file); + while ($w) + { + $statIdx = readInt($file); + if ($word==substr($w,0,strlen($word))) + { // found word that matches (as substring) + $statsList[$count++]=array( + "word"=>$word, + "match"=>$w, + "index"=>$statIdx, + "full"=>strlen($w)==strlen($word), + "docs"=>array() + ); + } + $w = readString($file); + } + $totalHi=0; + $totalFreqHi=0; + $totalFreqLo=0; + for ($count=$start;$count $idx, + "freq" => $freq>>1, + "rank" => 0.0, + "hi" => $freq&1 + ); + if ($freq&1) // word occurs in high priority doc + { + $totalHi++; + $totalFreqHi+=$freq*$multiplier; + } + else // word occurs in low priority doc + { + $totalFreqLo+=$freq*$multiplier; + } + } + // read name and url info for the doc + for ($i=0;$i<$numDocs;$i++) + { + fseek($file,$docInfo[$i]["idx"]); + $docInfo[$i]["name"]=readString($file); + $docInfo[$i]["url"]=readString($file); + } + $statInfo["docs"]=$docInfo; + } + $totalFreq=($totalHi+1)*$totalFreqLo + $totalFreqHi; + for ($count=$start;$count$key, + "name"=>$di["name"], + "rank"=>$rank + ); + } + $docs[$key]["words"][] = array( + "word"=>$wordInfo["word"], + "match"=>$wordInfo["match"], + "freq"=>$di["freq"] + ); + } + } + return $docs; +} + +function filter_results($docs,&$requiredWords,&$forbiddenWords) +{ + $filteredDocs=array(); + while (list ($key, $val) = each ($docs)) + { + $words = &$docs[$key]["words"]; + $copy=1; // copy entry by default + if (sizeof($requiredWords)>0) + { + foreach ($requiredWords as $reqWord) + { + $found=0; + foreach ($words as $wordInfo) + { + $found = $wordInfo["word"]==$reqWord; + if ($found) break; + } + if (!$found) + { + $copy=0; // document contains none of the required words + break; + } + } + } + if (sizeof($forbiddenWords)>0) + { + foreach ($words as $wordInfo) + { + if (in_array($wordInfo["word"],$forbiddenWords)) + { + $copy=0; // document contains a forbidden word + break; + } + } + } + if ($copy) $filteredDocs[$key]=$docs[$key]; + } + return $filteredDocs; +} + +function compare_rank($a,$b) +{ + if ($a["rank"] == $b["rank"]) + { + return 0; + } + return ($a["rank"]>$b["rank"]) ? -1 : 1; +} + +function sort_results($docs,&$sorted) +{ + $sorted = $docs; + usort($sorted,"compare_rank"); + return $sorted; +} + +function report_results(&$docs) +{ + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $numDocs = sizeof($docs); + if ($numDocs==0) + { + echo " \n"; + echo " \n"; + echo " \n"; + } + else + { + echo " \n"; + echo " \n"; + echo " \n"; + $num=1; + foreach ($docs as $doc) + { + echo " \n"; + echo " "; + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $num++; + } + } + echo "

".search_results()."

".matches_text(0)."
".matches_text($numDocs); + echo "\n"; + echo "
$num.".$doc["name"]."
".report_matches()." "; + foreach ($doc["words"] as $wordInfo) + { + $word = $wordInfo["word"]; + $matchRight = substr($wordInfo["match"],strlen($word)); + echo "$word$matchRight(".$wordInfo["freq"].") "; + } + echo "
\n"; +} + +function main() +{ + if(strcmp('4.1.0', phpversion()) > 0) + { + die("Error: PHP version 4.1.0 or above required!"); + } + if (!($file=fopen("search.idx","rb"))) + { + die("Error: Search index file could NOT be opened!"); + } + if (readHeader($file)!="DOXS") + { + die("Error: Header of index file is invalid!"); + } + $query=""; + if (array_key_exists("query", $_GET)) + { + $query=$_GET["query"]; + } + end_form($query); + echo " \n
\n"; + $results = array(); + $requiredWords = array(); + $forbiddenWords = array(); + $foundWords = array(); + $word=strtok($query," "); + while ($word) // for each word in the search query + { + if (($word{0}=='+')) { $word=substr($word,1); $requiredWords[]=$word; } + if (($word{0}=='-')) { $word=substr($word,1); $forbiddenWords[]=$word; } + if (!in_array($word,$foundWords)) + { + $foundWords[]=$word; + search($file,strtolower($word),$results); + } + $word=strtok(" "); + } + $docs = array(); + combine_results($results,$docs); + // filter out documents with forbidden word or that do not contain + // required words + $filteredDocs = filter_results($docs,$requiredWords,$forbiddenWords); + // sort the results based on rank + $sorted = array(); + sort_results($filteredDocs,$sorted); + // report results to the user + report_results($sorted); + echo "
\n"; + fclose($file); +} + +main(); + + +?> +
Generated on Tue Jan 9 15:47:44 2007 for ParadisEO-PEO Lesson2 by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/tab_b.gif b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/tab_b.gif new file mode 100644 index 000000000..0d623483f Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/tab_b.gif differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/tab_l.gif b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/tab_l.gif new file mode 100644 index 000000000..9b1e6337c Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/tab_l.gif differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/tab_r.gif b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/tab_r.gif new file mode 100644 index 000000000..ce9dd9f53 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/tab_r.gif differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/tabs.css b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/tabs.css new file mode 100644 index 000000000..a61552a67 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI#current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI#current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/tree.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/tree.html new file mode 100644 index 000000000..b5d9f9757 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/html/tree.html @@ -0,0 +1,73 @@ + + + + + + + TreeView + + + + +
+

ParadisEO-PEO Lesson2

+
+

\+File List

+
+

 \*main.cpp

+
+
+
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/latex/FreeSans.ttf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/latex/FreeSans.ttf new file mode 100644 index 000000000..b550b90ba Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/latex/FreeSans.ttf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/latex/Makefile b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/latex/Makefile new file mode 100644 index 000000000..a67f1b7f6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/latex/Makefile @@ -0,0 +1,17 @@ +all: clean refman.pdf + +refman.pdf: refman.tex + pdflatex refman.tex + makeindex refman.idx + pdflatex refman.tex + latex_count=5 ; \ + while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + pdflatex refman.tex ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/latex/doxygen.sty b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/latex/doxygen.sty new file mode 100644 index 000000000..1329f72a6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/latex/doxygen.sty @@ -0,0 +1,78 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} +\RequirePackage{calc} +\RequirePackage{array} +\pagestyle{fancyplain} +\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}} +\renewcommand{\chaptermark}[1]{\markboth{#1}{}} +\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} +\lhead[\fancyplain{}{\bfseries\thepage}] + {\fancyplain{}{\bfseries\rightmark}} +\rhead[\fancyplain{}{\bfseries\leftmark}] + {\fancyplain{}{\bfseries\thepage}} +\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Tue Jan 9 15:47:44 2007 for Paradis\-EO-PEO Lesson2 by Doxygen }]{} +\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Tue Jan 9 15:47:44 2007 for Paradis\-EO-PEO Lesson2 by Doxygen }} +\cfoot{} +\newenvironment{Code} +{\footnotesize} +{\normalsize} +\newcommand{\doxyref}[3]{\textbf{#1} (\textnormal{#2}\,\pageref{#3})} +\newenvironment{DocInclude} +{\footnotesize} +{\normalsize} +\newenvironment{VerbInclude} +{\footnotesize} +{\normalsize} +\newenvironment{Image} +{\begin{figure}[H]} +{\end{figure}} +\newenvironment{ImageNoCaption}{}{} +\newenvironment{CompactList} +{\begin{list}{}{ + \setlength{\leftmargin}{0.5cm} + \setlength{\itemsep}{0pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \renewcommand{\makelabel}{\hfill}}} +{\end{list}} +\newenvironment{CompactItemize} +{ + \begin{itemize} + \setlength{\itemsep}{-3pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \setlength{\partopsep}{0pt} +} +{\end{itemize}} +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp} +\newlength{\tmplength} +\newenvironment{TabularC}[1] +{ +\setlength{\tmplength} + {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)} + \par\begin{tabular*}{\linewidth} + {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|} +} +{\end{tabular*}\par} +\newcommand{\entrylabel}[1]{ + {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\vspace{1.5\baselineskip}}}} +\newenvironment{Desc} +{\begin{list}{} + { + \settowidth{\labelwidth}{40pt} + \setlength{\leftmargin}{\labelwidth} + \setlength{\parsep}{0pt} + \setlength{\itemsep}{-4pt} + \renewcommand{\makelabel}{\entrylabel} + } +} +{\end{list}} +\newenvironment{Indent} + {\begin{list}{}{\setlength{\leftmargin}{0.5cm}} + \item[]\ignorespaces} + {\unskip\end{list}} +\setlength{\parindent}{0cm} +\setlength{\parskip}{0.2cm} +\addtocounter{secnumdepth}{1} +\sloppy +\usepackage[T1]{fontenc} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/latex/refman.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/latex/refman.tex new file mode 100644 index 000000000..309a0bc68 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lesson2/latex/refman.tex @@ -0,0 +1,47 @@ +\documentclass[a4paper]{book} +\usepackage{a4wide} +\usepackage{makeidx} +\usepackage{fancyhdr} +\usepackage{graphicx} +\usepackage{multicol} +\usepackage{float} +\usepackage{textcomp} +\usepackage{alltt} +\usepackage{times} +\usepackage{ifpdf} +\ifpdf +\usepackage[pdftex, + pagebackref=true, + colorlinks=true, + linkcolor=blue + ]{hyperref} +\else +\usepackage[ps2pdf, + pagebackref=true, + colorlinks=true, + linkcolor=blue + ]{hyperref} +\usepackage{pspicture} +\fi +\usepackage{doxygen} +\makeindex +\setcounter{tocdepth}{1} +\renewcommand{\footrulewidth}{0.4pt} +\begin{document} +\begin{titlepage} +\vspace*{7cm} +\begin{center} +{\Large Paradis\-EO-PEO Lesson2 Reference Manual\\[1ex]\large 0.1 }\\ +\vspace*{1cm} +{\large Generated by Doxygen 1.4.7}\\ +\vspace*{0.5cm} +{\small Tue Jan 9 15:47:44 2007}\\ +\end{center} +\end{titlepage} +\clearemptydoublepage +\pagenumbering{roman} +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} +\printindex +\end{document} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/annotated.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/annotated.html new file mode 100644 index 000000000..247d11b79 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/annotated.html @@ -0,0 +1,51 @@ + + +ParadisEO-PEO - Lessons: Class List + + + + +
+
+ +

ParadisEO-PEO - Lessons Class List

Here are the classes, structs, unions and interfaces with brief descriptions: + + + + + + + + + + + + + + +
CitySwapIts swaps two vertices randomly choosen
DisplayBestRoute
EdgeXoverEdge Crossover
MergeRouteEval
OrderXoverOrder Crossover
PartialMappedXoverPartial Mapped Crossover
PartRouteEvalRoute Evaluator
RouteEval
RouteInit
TwoOpt
TwoOptIncrEval
TwoOptInit
TwoOptNext
TwoOptRand
+
Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/city__swap_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/city__swap_8cpp-source.html new file mode 100644 index 000000000..7977fae06 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/city__swap_8cpp-source.html @@ -0,0 +1,49 @@ + + +ParadisEO-PEO - Lessons: city_swap.cpp Source File + + + + +
+
+

city_swap.cpp

00001 // "city_swap.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, 2002
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <utils/eoRNG.h>
+00010 
+00011 #include "city_swap.h"
+00012 
+00013 bool CitySwap :: operator () (Route & __route) {
+00014   
+00015   std :: swap (__route [rng.random (__route.size ())],
+00016                __route [rng.random (__route.size ())]) ;
+00017     
+00018   __route.invalidate () ;
+00019   
+00020   return true ;
+00021 }
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/city__swap_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/city__swap_8h-source.html new file mode 100644 index 000000000..4d19d8ee2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/city__swap_8h-source.html @@ -0,0 +1,52 @@ + + +ParadisEO-PEO - Lessons: city_swap.h Source File + + + + +
+
+

city_swap.h

00001 // "city_swap.h"
+00002 
+00003 // (c) OPAC Team, LIFL, 2002
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef city_swap_h
+00010 #define city_swap_h
+00011 
+00012 #include <eoOp.h>
+00013 
+00014 #include "route.h"
+00015 
+00018 class CitySwap : public eoMonOp <Route> {
+00019   
+00020 public :
+00021   
+00022   bool operator () (Route & __route) ;
+00023     
+00024 } ;
+00025 
+00026 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classCitySwap-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classCitySwap-members.html new file mode 100644 index 000000000..df5a48747 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classCitySwap-members.html @@ -0,0 +1,37 @@ + + +ParadisEO-PEO - Lessons: Member List + + + + +
+
+ +

CitySwap Member List

This is the complete list of members for CitySwap, including all inherited members.

+ +
operator()(Route &__route)CitySwap


Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classCitySwap.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classCitySwap.html new file mode 100644 index 000000000..df90d755e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classCitySwap.html @@ -0,0 +1,54 @@ + + +ParadisEO-PEO - Lessons: CitySwap Class Reference + + + + +
+
+ +

CitySwap Class Reference

Its swaps two vertices randomly choosen. +More... +

+#include <city_swap.h> +

+List of all members. + + + + +

Public Member Functions

+bool operator() (Route &__route)
+


Detailed Description

+Its swaps two vertices randomly choosen. +

+ +

+Definition at line 18 of file city_swap.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classDisplayBestRoute-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classDisplayBestRoute-members.html new file mode 100644 index 000000000..dff1553a3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classDisplayBestRoute-members.html @@ -0,0 +1,39 @@ + + +ParadisEO-PEO - Lessons: Member List + + + + +
+
+ +

DisplayBestRoute Member List

This is the complete list of members for DisplayBestRoute, including all inherited members.

+ + + +
DisplayBestRoute(eoPop< Route > &__pop)DisplayBestRoute
operator()()DisplayBestRoute
popDisplayBestRoute [private]


Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classDisplayBestRoute.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classDisplayBestRoute.html new file mode 100644 index 000000000..7b40ba7d6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classDisplayBestRoute.html @@ -0,0 +1,56 @@ + + +ParadisEO-PEO - Lessons: DisplayBestRoute Class Reference + + + + +
+
+ +

DisplayBestRoute Class Reference

List of all members. + + + + + + + + + +

Public Member Functions

DisplayBestRoute (eoPop< Route > &__pop)
+void operator() ()

Private Attributes

+eoPop< Route > & pop
+

Detailed Description

+ +

+ +

+Definition at line 18 of file display_best_route.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classEdgeXover-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classEdgeXover-members.html new file mode 100644 index 000000000..650c819e5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classEdgeXover-members.html @@ -0,0 +1,43 @@ + + +ParadisEO-PEO - Lessons: Member List + + + + +
+
+ +

EdgeXover Member List

This is the complete list of members for EdgeXover, including all inherited members.

+ + + + + + + +
_mapEdgeXover [private]
add_vertex(unsigned __vertex, Route &__child)EdgeXover [private]
build_map(const Route &__par1, const Route &__par2)EdgeXover [private]
cross(const Route &__par1, const Route &__par2, Route &__child)EdgeXover [private]
operator()(Route &__route1, Route &__route2)EdgeXover
remove_entry(unsigned __vertex, std::vector< std::set< unsigned > > &__map)EdgeXover [private]
visitedEdgeXover [private]


Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classEdgeXover.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classEdgeXover.html new file mode 100644 index 000000000..027b927f2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classEdgeXover.html @@ -0,0 +1,74 @@ + + +ParadisEO-PEO - Lessons: EdgeXover Class Reference + + + + +
+
+ +

EdgeXover Class Reference

Edge Crossover. +More... +

+#include <edge_xover.h> +

+List of all members. + + + + + + + + + + + + + + + + + + +

Public Member Functions

+bool operator() (Route &__route1, Route &__route2)

Private Member Functions

+void cross (const Route &__par1, const Route &__par2, Route &__child)
+void remove_entry (unsigned __vertex, std::vector< std::set< unsigned > > &__map)
+void build_map (const Route &__par1, const Route &__par2)
+void add_vertex (unsigned __vertex, Route &__child)

Private Attributes

+std::vector< std::set< unsigned > > _map
+std::vector< bool > visited
+


Detailed Description

+Edge Crossover. +

+ +

+Definition at line 20 of file edge_xover.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classMergeRouteEval-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classMergeRouteEval-members.html new file mode 100644 index 000000000..f8604c129 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classMergeRouteEval-members.html @@ -0,0 +1,37 @@ + + +ParadisEO-PEO - Lessons: Member List + + + + +
+
+ +

MergeRouteEval Member List

This is the complete list of members for MergeRouteEval, including all inherited members.

+ +
operator()(Route &__route, const int &__part_fit)MergeRouteEval


Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classMergeRouteEval.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classMergeRouteEval.html new file mode 100644 index 000000000..8f3c26f32 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classMergeRouteEval.html @@ -0,0 +1,54 @@ + + +ParadisEO-PEO - Lessons: MergeRouteEval Class Reference + + + + +
+
+ +

MergeRouteEval Class Reference

Inheritance diagram for MergeRouteEval: +

+ +peoAggEvalFunc< EOT > + +List of all members. + + + + +

Public Member Functions

+void operator() (Route &__route, const int &__part_fit)
+

Detailed Description

+ +

+ +

+Definition at line 16 of file merge_route_eval.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classMergeRouteEval.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classMergeRouteEval.png new file mode 100644 index 000000000..7e4737d67 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classMergeRouteEval.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classOrderXover-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classOrderXover-members.html new file mode 100644 index 000000000..644b38be8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classOrderXover-members.html @@ -0,0 +1,38 @@ + + +ParadisEO-PEO - Lessons: Member List + + + + +
+
+ +

OrderXover Member List

This is the complete list of members for OrderXover, including all inherited members.

+ + +
cross(const Route &__par1, const Route &__par2, Route &__child)OrderXover [private]
operator()(Route &__route1, Route &__route2)OrderXover


Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classOrderXover.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classOrderXover.html new file mode 100644 index 000000000..e7367b9ef --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classOrderXover.html @@ -0,0 +1,58 @@ + + +ParadisEO-PEO - Lessons: OrderXover Class Reference + + + + +
+
+ +

OrderXover Class Reference

Order Crossover. +More... +

+#include <order_xover.h> +

+List of all members. + + + + + + + +

Public Member Functions

+bool operator() (Route &__route1, Route &__route2)

Private Member Functions

+void cross (const Route &__par1, const Route &__par2, Route &__child)
+


Detailed Description

+Order Crossover. +

+ +

+Definition at line 17 of file order_xover.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classPartRouteEval-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classPartRouteEval-members.html new file mode 100644 index 000000000..70cb3fca7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classPartRouteEval-members.html @@ -0,0 +1,40 @@ + + +ParadisEO-PEO - Lessons: Member List + + + + +
+
+ +

PartRouteEval Member List

This is the complete list of members for PartRouteEval, including all inherited members.

+ + + + +
fromPartRouteEval [private]
operator()(Route &__route)PartRouteEval
PartRouteEval(float __from, float __to)PartRouteEval
toPartRouteEval [private]


Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classPartRouteEval.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classPartRouteEval.html new file mode 100644 index 000000000..0e04bcb37 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classPartRouteEval.html @@ -0,0 +1,65 @@ + + +ParadisEO-PEO - Lessons: PartRouteEval Class Reference + + + + +
+
+ +

PartRouteEval Class Reference

Route Evaluator. +More... +

+#include <part_route_eval.h> +

+List of all members. + + + + + + + + + + + + +

Public Member Functions

PartRouteEval (float __from, float __to)
 Constructor.
+void operator() (Route &__route)

Private Attributes

+float from
+float to
+


Detailed Description

+Route Evaluator. +

+ +

+Definition at line 17 of file part_route_eval.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classPartialMappedXover-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classPartialMappedXover-members.html new file mode 100644 index 000000000..dc5392092 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classPartialMappedXover-members.html @@ -0,0 +1,38 @@ + + +ParadisEO-PEO - Lessons: Member List + + + + +
+
+ +

PartialMappedXover Member List

This is the complete list of members for PartialMappedXover, including all inherited members.

+ + +
operator()(Route &__route1, Route &__route2)PartialMappedXover
repair(Route &__route, unsigned __cut1, unsigned __cut2)PartialMappedXover [private]


Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classPartialMappedXover.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classPartialMappedXover.html new file mode 100644 index 000000000..efeeee2d5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classPartialMappedXover.html @@ -0,0 +1,58 @@ + + +ParadisEO-PEO - Lessons: PartialMappedXover Class Reference + + + + +
+
+ +

PartialMappedXover Class Reference

Partial Mapped Crossover. +More... +

+#include <partial_mapped_xover.h> +

+List of all members. + + + + + + + +

Public Member Functions

+bool operator() (Route &__route1, Route &__route2)

Private Member Functions

+void repair (Route &__route, unsigned __cut1, unsigned __cut2)
+


Detailed Description

+Partial Mapped Crossover. +

+ +

+Definition at line 17 of file partial_mapped_xover.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classRouteEval-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classRouteEval-members.html new file mode 100644 index 000000000..fe7e885fe --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classRouteEval-members.html @@ -0,0 +1,37 @@ + + +ParadisEO-PEO - Lessons: Member List + + + + +
+
+ +

RouteEval Member List

This is the complete list of members for RouteEval, including all inherited members.

+ +
operator()(Route &__route)RouteEval


Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classRouteEval.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classRouteEval.html new file mode 100644 index 000000000..c0217d968 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classRouteEval.html @@ -0,0 +1,49 @@ + + +ParadisEO-PEO - Lessons: RouteEval Class Reference + + + + +
+
+ +

RouteEval Class Reference

List of all members. + + + + +

Public Member Functions

+void operator() (Route &__route)
+

Detailed Description

+ +

+ +

+Definition at line 16 of file route_eval.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classRouteInit-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classRouteInit-members.html new file mode 100644 index 000000000..5e208ddf7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classRouteInit-members.html @@ -0,0 +1,37 @@ + + +ParadisEO-PEO - Lessons: Member List + + + + +
+
+ +

RouteInit Member List

This is the complete list of members for RouteInit, including all inherited members.

+ +
operator()(Route &__route)RouteInit


Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classRouteInit.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classRouteInit.html new file mode 100644 index 000000000..2d8d7a2c1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classRouteInit.html @@ -0,0 +1,49 @@ + + +ParadisEO-PEO - Lessons: RouteInit Class Reference + + + + +
+
+ +

RouteInit Class Reference

List of all members. + + + + +

Public Member Functions

+void operator() (Route &__route)
+

Detailed Description

+ +

+ +

+Definition at line 16 of file route_init.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOpt-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOpt-members.html new file mode 100644 index 000000000..00ec456b5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOpt-members.html @@ -0,0 +1,38 @@ + + +ParadisEO-PEO - Lessons: Member List + + + + +
+
+ +

TwoOpt Member List

This is the complete list of members for TwoOpt, including all inherited members.

+ + +
EOType typedefmoMove< EOT >
operator()(Route &__route)TwoOpt


Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOpt.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOpt.html new file mode 100644 index 000000000..a92890c92 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOpt.html @@ -0,0 +1,54 @@ + + +ParadisEO-PEO - Lessons: TwoOpt Class Reference + + + + +
+
+ +

TwoOpt Class Reference

Inheritance diagram for TwoOpt: +

+ +moMove< EOT > + +List of all members. + + + + +

Public Member Functions

+void operator() (Route &__route)
+

Detailed Description

+ +

+ +

+Definition at line 17 of file two_opt.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOpt.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOpt.png new file mode 100644 index 000000000..ef2a2cd71 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOpt.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptIncrEval-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptIncrEval-members.html new file mode 100644 index 000000000..4166e13e1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptIncrEval-members.html @@ -0,0 +1,37 @@ + + +ParadisEO-PEO - Lessons: Member List + + + + +
+
+ +

TwoOptIncrEval Member List

This is the complete list of members for TwoOptIncrEval, including all inherited members.

+ +
operator()(const TwoOpt &__move, const Route &__route)TwoOptIncrEval


Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptIncrEval.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptIncrEval.html new file mode 100644 index 000000000..83cf72a2c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptIncrEval.html @@ -0,0 +1,54 @@ + + +ParadisEO-PEO - Lessons: TwoOptIncrEval Class Reference + + + + +
+
+ +

TwoOptIncrEval Class Reference

Inheritance diagram for TwoOptIncrEval: +

+ +moMoveIncrEval< TwoOpt > + +List of all members. + + + + +

Public Member Functions

+int operator() (const TwoOpt &__move, const Route &__route)
+

Detailed Description

+ +

+ +

+Definition at line 15 of file two_opt_incr_eval.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptIncrEval.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptIncrEval.png new file mode 100644 index 000000000..dbf7f2d42 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptIncrEval.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptInit-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptInit-members.html new file mode 100644 index 000000000..6377d52f2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptInit-members.html @@ -0,0 +1,37 @@ + + +ParadisEO-PEO - Lessons: Member List + + + + +
+
+ +

TwoOptInit Member List

This is the complete list of members for TwoOptInit, including all inherited members.

+ +
operator()(TwoOpt &__move, const Route &__route)TwoOptInit


Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptInit.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptInit.html new file mode 100644 index 000000000..472e7f3d9 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptInit.html @@ -0,0 +1,54 @@ + + +ParadisEO-PEO - Lessons: TwoOptInit Class Reference + + + + +
+
+ +

TwoOptInit Class Reference

Inheritance diagram for TwoOptInit: +

+ +moMoveInit< TwoOpt > + +List of all members. + + + + +

Public Member Functions

+void operator() (TwoOpt &__move, const Route &__route)
+

Detailed Description

+ +

+ +

+Definition at line 16 of file two_opt_init.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptInit.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptInit.png new file mode 100644 index 000000000..1abb4f3f8 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptInit.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptNext-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptNext-members.html new file mode 100644 index 000000000..e10f6b91d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptNext-members.html @@ -0,0 +1,37 @@ + + +ParadisEO-PEO - Lessons: Member List + + + + +
+
+ +

TwoOptNext Member List

This is the complete list of members for TwoOptNext, including all inherited members.

+ +
operator()(TwoOpt &__move, const Route &__route)TwoOptNext


Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptNext.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptNext.html new file mode 100644 index 000000000..41936e4cf --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptNext.html @@ -0,0 +1,54 @@ + + +ParadisEO-PEO - Lessons: TwoOptNext Class Reference + + + + +
+
+ +

TwoOptNext Class Reference

Inheritance diagram for TwoOptNext: +

+ +moNextMove< TwoOpt > + +List of all members. + + + + +

Public Member Functions

+bool operator() (TwoOpt &__move, const Route &__route)
+

Detailed Description

+ +

+ +

+Definition at line 16 of file two_opt_next.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptNext.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptNext.png new file mode 100644 index 000000000..5add18d1b Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptNext.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptRand-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptRand-members.html new file mode 100644 index 000000000..986f2120a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptRand-members.html @@ -0,0 +1,37 @@ + + +ParadisEO-PEO - Lessons: Member List + + + + +
+
+ +

TwoOptRand Member List

This is the complete list of members for TwoOptRand, including all inherited members.

+ +
operator()(TwoOpt &__move, const Route &__route)TwoOptRand


Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptRand.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptRand.html new file mode 100644 index 000000000..e7e014a8b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classTwoOptRand.html @@ -0,0 +1,49 @@ + + +ParadisEO-PEO - Lessons: TwoOptRand Class Reference + + + + +
+
+ +

TwoOptRand Class Reference

List of all members. + + + + +

Public Member Functions

+void operator() (TwoOpt &__move, const Route &__route)
+

Detailed Description

+ +

+ +

+Definition at line 16 of file two_opt_rand.h.


The documentation for this class was generated from the following files: +
Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classes.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classes.html new file mode 100644 index 000000000..28d9eb8f2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/classes.html @@ -0,0 +1,46 @@ + + +ParadisEO-PEO - Lessons: Alphabetical List + + + + +
+
+ +

ParadisEO-PEO - Lessons Class Index

C | D | E | M | O | P | R | T

+ +
  C  
+
  O  
+
RouteInit   
CitySwap   OrderXover   
  T  
+
  D  
+
  P  
+
TwoOpt   
DisplayBestRoute   PartialMappedXover   TwoOptIncrEval   
  E  
+
PartRouteEval   TwoOptInit   
EdgeXover   
  R  
+
TwoOptNext   
  M  
+
RouteEval   TwoOptRand   
MergeRouteEval   

C | D | E | M | O | P | R | T

+


Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/data_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/data_8cpp-source.html new file mode 100644 index 000000000..6aad4f283 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/data_8cpp-source.html @@ -0,0 +1,126 @@ + + +ParadisEO-PEO - Lessons: data.cpp Source File + + + + +
+
+

data.cpp

00001 // "data.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <stdio.h>
+00010 #include <assert.h>
+00011 #include <string.h>
+00012 #include <stdlib.h>
+00013 
+00014 #include <utils/eoParser.h>
+00015 
+00016 #include "data.h"
+00017 #include "node.h"
+00018 
+00019 #define MAX_TRASH_LENGTH 1000
+00020 #define MAX_FIELD_LENGTH 1000
+00021 #define MAX_LINE_LENGTH 1000
+00022 
+00023 static void getNextField (FILE * __f, char * __buff) {
+00024   
+00025   char trash [MAX_TRASH_LENGTH];  
+00026 
+00027   fscanf (__f, "%[ \t:\n]", trash); /* Discarding sep. */ 
+00028   fscanf (__f, "%[^:\n]", __buff); /* Reading the field */
+00029   fgetc (__f);
+00030 }
+00031 
+00032 static void getLine (FILE * __f, char * __buff) {
+00033 
+00034   char trash [MAX_TRASH_LENGTH];  
+00035 
+00036   fscanf (__f, "%[ \t:\n]", trash); /* Discarding sep. */ 
+00037   fscanf (__f, "%[^\n]", __buff); /* Reading the line */
+00038 }
+00039 
+00040 void loadData (const char * __filename) {
+00041 
+00042   FILE * f = fopen (__filename, "r");
+00043 
+00044    if (f) {
+00045 
+00046      printf ("Loading '%s'.\n", __filename);
+00047      
+00048      char field [MAX_FIELD_LENGTH];
+00049      
+00050      getNextField (f, field); /* Name */
+00051      assert (strstr (field, "NAME"));
+00052      getNextField (f, field); 
+00053      printf ("NAME: %s.\n", field);
+00054      
+00055      getNextField (f, field); /* Comment */
+00056      assert (strstr (field, "COMMENT"));
+00057      getLine (f, field);
+00058      printf ("COMMENT: %s.\n", field);
+00059      
+00060      getNextField (f, field); /* Type */
+00061      assert (strstr (field, "TYPE"));
+00062      getNextField (f, field); 
+00063      printf ("TYPE: %s.\n", field);
+00064 
+00065      getNextField (f, field); /* Dimension */
+00066      assert (strstr (field, "DIMENSION"));
+00067      getNextField (f, field); 
+00068      printf ("DIMENSION: %s.\n", field);
+00069      numNodes = atoi (field);
+00070 
+00071      getNextField (f, field); /* Edge weight type */
+00072      assert (strstr (field, "EDGE_WEIGHT_TYPE"));
+00073      getNextField (f, field); 
+00074      printf ("EDGE_WEIGHT_TYPE: %s.\n", field);
+00075      
+00076      getNextField (f, field); /* Node coord section */
+00077      assert (strstr (field, "NODE_COORD_SECTION"));
+00078      loadNodes (f);
+00079      
+00080      getNextField (f, field); /* End of file */
+00081      assert (strstr (field, "EOF"));
+00082      printf ("EOF.\n");
+00083    }
+00084    else {
+00085      
+00086      fprintf (stderr, "Can't open '%s'.\n", __filename); 
+00087      exit (1);
+00088    }
+00089 }
+00090 
+00091 void loadData (eoParser & __parser) {
+00092   
+00093   /* Getting the path of the instance */
+00094   
+00095   eoValueParam <std :: string> param ("", "inst", "Path of the instance") ;
+00096   __parser.processParam (param) ;
+00097   loadData (param.value ().c_str ());
+00098 }
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/data_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/data_8h-source.html new file mode 100644 index 000000000..90ece4119 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/data_8h-source.html @@ -0,0 +1,46 @@ + + +ParadisEO-PEO - Lessons: data.h Source File + + + + +
+
+

data.h

00001 // "data.h"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __data_h
+00010 #define __data_h
+00011 
+00012 #include <utils/eoParser.h>
+00013 
+00014 extern void loadData (const char * __filename);
+00015 
+00016 extern void loadData (eoParser & __parser);
+00017 
+00018 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/display_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/display_8cpp-source.html new file mode 100644 index 000000000..049f5dfd8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/display_8cpp-source.html @@ -0,0 +1,145 @@ + + +ParadisEO-PEO - Lessons: display.cpp Source File + + + + +
+
+

display.cpp

00001 // "display.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <iostream>
+00010 #include <fstream>
+00011 
+00012 #include <X11/Xlib.h>
+00013 
+00014 #include "display.h"
+00015 #include "node.h"
+00016 #include "opt_route.h"
+00017 
+00018 #define BORDER 20
+00019 #define RATIO 0.5
+00020 
+00021 #define screen_width 1024
+00022 #define screen_height 768
+00023 
+00024 static const char * filename;
+00025 
+00026 /* Computed coordinates */
+00027 static unsigned * X_new_coord, * Y_new_coord ;
+00028 
+00029 /* this variable will contain the handle to the returned graphics context. */
+00030 static GC gc;
+00031   
+00032 /* this variable will contain the pointer to the Display structure */
+00033 static Display* disp;
+00034 
+00035 /* this variable will store the ID of the newly created window. */
+00036 static Window win;
+00037 
+00038 static int screen;
+00039 
+00040 /* Create a new backing pixmap of the appropriate size */
+00041 
+00042   /* Best tour */
+00043   /*
+00044   gdk_gc_set_line_attributes (gc, 2,  GDK_LINE_ON_OFF_DASH, GDK_CAP_NOT_LAST, GDK_JOIN_MITER) ;
+00045 
+00046   gdk_gc_set_foreground  (gc, & color_green) ;      
+00047 
+00048   for (int i = 0 ; i < (int) numNodes ; i ++) {
+00049 
+00050     gdk_draw_line (pixmap, gc,
+00051                    X_new_coord [opt_route [i]],
+00052                    Y_new_coord [opt_route [i]],
+00053                    X_new_coord [opt_route [(i + 1) % numNodes]],
+00054                    Y_new_coord [opt_route [(i + 1) % numNodes]]);
+00055     
+00056                    }*/
+00057 
+00058 void openMainWindow (const char * __filename) {
+00059 
+00060   filename = __filename;
+00061 
+00062   /* Map */
+00063   int map_width = (int) (X_max - X_min);
+00064   int map_height = (int) (Y_max - Y_min);
+00065   int map_side = std :: max (map_width, map_height);
+00066   
+00067   /* Calculate the window's width and height. */
+00068   int win_width = (int) (screen_width * RATIO * map_width / map_side);
+00069   int win_height = (int) (screen_height * RATIO * map_height / map_side);
+00070 
+00071   /* Computing the coordinates */
+00072   X_new_coord = new unsigned [numNodes];
+00073   Y_new_coord = new unsigned [numNodes];
+00074 
+00075   for (unsigned i = 0; i < numNodes; i ++) {
+00076     X_new_coord [i] = (unsigned) (win_width * (1.0 - (X_coord [i] - X_min) / map_width) + BORDER);
+00077     Y_new_coord [i] = (unsigned) (win_height * (1.0 - (Y_coord [i] - Y_min) / map_height) + BORDER);
+00078   }
+00079   
+00080   /* Initialisation */
+00081   XGCValues val ;
+00082   
+00083   disp = XOpenDisplay (NULL) ;
+00084   screen = DefaultScreen (disp) ;
+00085   win = XCreateSimpleWindow (disp, RootWindow (disp, screen), 0, 0, win_width + 2 * BORDER, win_height + 2 * BORDER, 2, BlackPixel (disp, screen), WhitePixel (disp, screen)) ;
+00086   val.foreground = BlackPixel(disp, screen) ;
+00087   val.background = WhitePixel(disp, screen) ;
+00088   gc = XCreateGC (disp, win, GCForeground | GCBackground, & val) ; 
+00089 
+00090   XMapWindow (disp, win) ;
+00091   XFlush (disp) ;
+00092 
+00093   while (true) {
+00094     XClearWindow (disp, win) ;
+00095 
+00096     /* Vertices as circles */
+00097     for (unsigned i = 1 ; i < numNodes ; i ++)
+00098       XDrawArc (disp, win, gc, X_new_coord [i] - 1, Y_new_coord [i] - 1, 3, 3, 0, 364 * 64) ;
+00099     
+00100     /* New tour */
+00101     std :: ifstream f (filename);
+00102     if (f) {
+00103       Route route;
+00104       f >> route;
+00105       f.close ();
+00106       
+00107       for (int i = 0; i < (int) numNodes; i ++) 
+00108         XDrawLine (disp, win, gc,     
+00109                    X_new_coord [route [i]],
+00110                  Y_new_coord [route [i]],
+00111                    X_new_coord [route [(i + 1) % numNodes]],
+00112                    Y_new_coord [route [(i + 1) % numNodes]]);  
+00113     }
+00114     XFlush (disp) ;    
+00115     sleep (1) ;
+00116   }
+00117 }
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/display_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/display_8h-source.html new file mode 100644 index 000000000..0af2c718c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/display_8h-source.html @@ -0,0 +1,44 @@ + + +ParadisEO-PEO - Lessons: display.h Source File + + + + +
+
+

display.h

00001 // "display.h"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __display_h
+00010 #define __display_h
+00011 
+00012 #include "route.h"
+00013 
+00014 extern void openMainWindow (const char * __filename);
+00015 
+00016 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/display__best__route_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/display__best__route_8cpp-source.html new file mode 100644 index 000000000..9af6729ba --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/display__best__route_8cpp-source.html @@ -0,0 +1,50 @@ + + +ParadisEO-PEO - Lessons: display_best_route.cpp Source File + + + + +
+
+

display_best_route.cpp

00001 // "display_best_route.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "display_best_route.h"
+00010 #include "display.h"
+00011 
+00012 DisplayBestRoute :: DisplayBestRoute (eoPop <Route> & __pop
+00013                                       ) : pop (__pop) {
+00014   
+00015   
+00016 }
+00017   
+00018 void DisplayBestRoute :: operator () () {
+00019   
+00020   displayRoute (pop.best_element ());
+00021 }
+00022 
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/display__best__route_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/display__best__route_8h-source.html new file mode 100644 index 000000000..2849e64f6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/display__best__route_8h-source.html @@ -0,0 +1,60 @@ + + +ParadisEO-PEO - Lessons: display_best_route.h Source File + + + + +
+
+

display_best_route.h

00001 // "display_best_route.h"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __display_best_route_h
+00010 #define __display_best_route_h
+00011 
+00012 #include <utils/eoUpdater.h>
+00013 
+00014 #include <eoPop.h>
+00015 
+00016 #include "route.h"
+00017 
+00018 class DisplayBestRoute : public eoUpdater {
+00019   
+00020 public :
+00021 
+00022   DisplayBestRoute (eoPop <Route> & __pop);
+00023   
+00024   void operator () ();
+00025 
+00026 private :
+00027   
+00028   eoPop <Route> & pop;
+00029 
+00030 };
+00031 
+00032 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/doxygen.css b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/doxygen.css new file mode 100644 index 000000000..5d583694e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/doxygen.css @@ -0,0 +1,358 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: monospace, fixed; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } + +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + +/* Style for detailed member documentation */ +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; +} +.memnav { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +.memitem { + padding: 4px; + background-color: #eef3f5; + border-width: 1px; + border-style: solid; + border-color: #dedeee; + -moz-border-radius: 8px 8px 8px 8px; +} +.memname { + white-space: nowrap; + font-weight: bold; +} +.memdoc{ + padding-left: 10px; +} +.memproto { + background-color: #d5e1e8; + width: 100%; + border-width: 1px; + border-style: solid; + border-color: #84b0c7; + font-weight: bold; + -moz-border-radius: 8px 8px 8px 8px; +} +.paramkey { + text-align: right; +} +.paramtype { + white-space: nowrap; +} +.paramname { + color: #602020; + font-style: italic; +} +/* End Styling for detailed member documentation */ + +/* for the tree view */ +.ftvtree { + font-family: sans-serif; + margin:0.5em; +} +.directory { font-size: 9pt; font-weight: bold; } +.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } +.directory > h3 { margin-top: 0; } +.directory p { margin: 0px; white-space: nowrap; } +.directory div { display: none; margin: 0px; } +.directory img { vertical-align: -30%; } + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/doxygen.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/doxygen.png new file mode 100644 index 000000000..f0a274bba Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/doxygen.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/edge__xover_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/edge__xover_8cpp-source.html new file mode 100644 index 000000000..5f7581a8c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/edge__xover_8cpp-source.html @@ -0,0 +1,146 @@ + + +ParadisEO-PEO - Lessons: edge_xover.cpp Source File + + + + +
+
+

edge_xover.cpp

00001 // "edge_xover.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, 2003
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <assert.h>
+00010 #include <values.h>
+00011 
+00012 #include <utils/eoRNG.h>
+00013 
+00014 #include "edge_xover.h"
+00015 
+00016 void EdgeXover :: build_map (const Route & __par1, const Route & __par2) {
+00017   
+00018   unsigned len = __par1.size () ;
+00019   
+00020   /* Initialization */
+00021   _map.clear () ;
+00022   _map.resize (len) ;
+00023   
+00024   for (unsigned i = 0 ; i < len ; i ++) {
+00025     _map [__par1 [i]].insert (__par1 [(i + 1) % len]) ;
+00026     _map [__par2 [i]].insert (__par2 [(i + 1) % len]) ;
+00027     _map [__par1 [i]].insert (__par1 [(i - 1 + len) % len]) ;
+00028     _map [__par2 [i]].insert (__par2 [(i - 1 + len) % len]) ;
+00029   }
+00030   
+00031   visited.clear () ;
+00032   visited.resize (len, false) ;
+00033 }
+00034 
+00035 void EdgeXover :: remove_entry (unsigned __vertex, std :: vector <std :: set <unsigned> > & __map) {
+00036   
+00037   std :: set <unsigned> & neigh = __map [__vertex] ;
+00038 
+00039   for (std :: set <unsigned> :: iterator it = neigh.begin () ;
+00040        it != neigh.end () ;
+00041        it ++)
+00042     __map [* it].erase (__vertex) ; 
+00043       
+00044 }
+00045 
+00046 void EdgeXover :: add_vertex (unsigned __vertex, Route & __child) {
+00047   
+00048   visited [__vertex] = true ;
+00049   __child.push_back (__vertex) ;    
+00050   remove_entry (__vertex, _map) ; /* Removing entries */    
+00051 }
+00052 
+00053 void EdgeXover :: cross (const Route & __par1, const Route & __par2, Route & __child) {
+00054   
+00055   build_map (__par1, __par2) ;
+00056   
+00057   unsigned len = __par1.size () ;
+00058  
+00059   /* Go ! */
+00060   __child.clear () ;
+00061   
+00062   unsigned cur_vertex = rng.random (len) ;
+00063   
+00064   add_vertex (cur_vertex, __child) ;
+00065 
+00066   for (unsigned i = 1 ; i < len ; i ++) {
+00067     
+00068     unsigned len_min_entry = MAXINT ;
+00069     
+00070     std :: set <unsigned> & neigh = _map [cur_vertex] ;
+00071     
+00072     for (std :: set <unsigned> :: iterator it = neigh.begin () ;
+00073          it != neigh.end () ;
+00074          it ++) {      
+00075       unsigned l = _map [* it].size () ;
+00076       if (len_min_entry > l)
+00077         len_min_entry = l ;
+00078     }
+00079     
+00080     std :: vector <unsigned> cand ; /* Candidates */
+00081     
+00082     for (std :: set <unsigned> :: iterator it = neigh.begin () ;
+00083          it != neigh.end () ;
+00084          it ++) {      
+00085       unsigned l = _map [* it].size () ;
+00086       if (len_min_entry == l)
+00087         cand.push_back (* it) ;
+00088     }
+00089        
+00090     if (! cand.size ()) {
+00091       
+00092       /* Oh no ! Implicit mutation */      
+00093       for (unsigned j = 0 ; j < len ; j ++)
+00094         if (! visited [j])
+00095           cand.push_back (j) ;
+00096     }
+00097 
+00098     cur_vertex = cand [rng.random (cand.size ())] ;
+00099     
+00100     add_vertex (cur_vertex, __child) ;
+00101   } 
+00102 }
+00103 
+00104 bool EdgeXover :: operator () (Route & __route1, Route & __route2) {
+00105   
+00106   // Init. copy
+00107   Route par [2] ;
+00108   par [0] = __route1 ;
+00109   par [1] = __route2 ;
+00110   
+00111   cross (par [0], par [1], __route1) ;
+00112   cross (par [1], par [0], __route2) ;
+00113   
+00114   __route1.invalidate () ;
+00115   __route2.invalidate () ;
+00116 
+00117   return true ;
+00118 }
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/edge__xover_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/edge__xover_8h-source.html new file mode 100644 index 000000000..45cfe29a1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/edge__xover_8h-source.html @@ -0,0 +1,70 @@ + + +ParadisEO-PEO - Lessons: edge_xover.h Source File + + + + +
+
+

edge_xover.h

00001 // "edge_xover.h"
+00002 
+00003 // (c) OPAC Team, LIFL, 2003
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef edge_xover_h
+00010 #define edge_xover_h
+00011 
+00012 #include <vector>
+00013 #include <set>
+00014 
+00015 #include <eoOp.h>
+00016 
+00017 #include "route.h"
+00018 
+00020 class EdgeXover : public eoQuadOp <Route> {
+00021   
+00022 public :
+00023   
+00024   bool operator () (Route & __route1, Route & __route2) ;
+00025 
+00026 private :
+00027   
+00028   void cross (const Route & __par1, const Route & __par2, Route & __child) ; /* Binary */
+00029 
+00030   void remove_entry (unsigned __vertex, std :: vector <std :: set <unsigned> > & __map) ;
+00031   /* Updating the map of entries */
+00032 
+00033   void build_map (const Route & __par1, const Route & __par2) ;
+00034 
+00035   void add_vertex (unsigned __vertex, Route & __child) ;
+00036 
+00037   std :: vector <std :: set <unsigned> > _map ; /* The handled map */
+00038 
+00039   std :: vector <bool> visited ; /* Vertices that are already visited */
+00040 
+00041 } ;
+00042 
+00043 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/files.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/files.html new file mode 100644 index 000000000..c13dfe365 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/files.html @@ -0,0 +1,71 @@ + + +ParadisEO-PEO - Lessons: File Index + + + + +
+
+

ParadisEO-PEO - Lessons File List

Here is a list of all documented files with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
city_swap.cpp [code]
city_swap.h [code]
data.cpp [code]
data.h [code]
display.cpp [code]
display.h [code]
display_best_route.cpp [code]
display_best_route.h [code]
edge_xover.cpp [code]
edge_xover.h [code]
merge_route_eval.cpp [code]
merge_route_eval.h [code]
mix.h [code]
node.cpp [code]
node.h [code]
opt_route.cpp [code]
opt_route.h [code]
order_xover.cpp [code]
order_xover.h [code]
param.cpp [code]
param.h [code]
part_route_eval.cpp [code]
part_route_eval.h [code]
partial_mapped_xover.cpp [code]
partial_mapped_xover.h [code]
route.cpp [code]
route.h [code]
route_eval.cpp [code]
route_eval.h [code]
route_init.cpp [code]
route_init.h [code]
two_opt.cpp [code]
two_opt.h [code]
two_opt_incr_eval.cpp [code]
two_opt_incr_eval.h [code]
two_opt_init.cpp [code]
two_opt_init.h [code]
two_opt_next.cpp [code]
two_opt_next.h [code]
two_opt_rand.cpp [code]
two_opt_rand.h [code]
+
Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2blank.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2blank.png new file mode 100644 index 000000000..493c3c0b6 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2blank.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2doc.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2doc.png new file mode 100644 index 000000000..f72999f92 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2doc.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2folderclosed.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2folderclosed.png new file mode 100644 index 000000000..d6d063440 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2folderclosed.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2folderopen.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2folderopen.png new file mode 100644 index 000000000..bbe2c913c Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2folderopen.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2lastnode.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2lastnode.png new file mode 100644 index 000000000..e7b9ba90c Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2lastnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2link.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2link.png new file mode 100644 index 000000000..14f3fed00 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2link.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2mlastnode.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2mlastnode.png new file mode 100644 index 000000000..09ceb6adb Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2mlastnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2mnode.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2mnode.png new file mode 100644 index 000000000..3254c0511 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2mnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2node.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2node.png new file mode 100644 index 000000000..c9f06a57f Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2node.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2plastnode.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2plastnode.png new file mode 100644 index 000000000..0b07e0091 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2plastnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2pnode.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2pnode.png new file mode 100644 index 000000000..2001b797b Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2pnode.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2vertline.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2vertline.png new file mode 100644 index 000000000..b330f3a33 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/ftv2vertline.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/functions.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/functions.html new file mode 100644 index 000000000..4524bd656 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/functions.html @@ -0,0 +1,59 @@ + + +ParadisEO-PEO - Lessons: Class Members + + + + +
+
+ +
+ +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

+
Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/functions_func.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/functions_func.html new file mode 100644 index 000000000..c64a503aa --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/functions_func.html @@ -0,0 +1,54 @@ + + +ParadisEO-PEO - Lessons: Class Members - Functions + + + + +
+
+ +
+ +
+  +

+

+
Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/functions_vars.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/functions_vars.html new file mode 100644 index 000000000..b96d13983 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/functions_vars.html @@ -0,0 +1,51 @@ + + +ParadisEO-PEO - Lessons: Class Members - Variables + + + + +
+
+ +
+ +
+  +

+

+
Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/hierarchy.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/hierarchy.html new file mode 100644 index 000000000..d36e6e817 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/hierarchy.html @@ -0,0 +1,66 @@ + + +ParadisEO-PEO - Lessons: Hierarchical Index + + + + +
+
+ +

ParadisEO-PEO - Lessons Class Hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically: +
Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/index.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/index.html new file mode 100644 index 000000000..b314cec43 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/index.html @@ -0,0 +1,8 @@ + + +ParadisEO-PEO - Lessons + + + + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/installdox b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/installdox new file mode 100755 index 000000000..f3d953616 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/installdox @@ -0,0 +1,117 @@ +#!/usr/bin/perl + +%subst = ( "eo.doxytag", "", "mo.doxytag", "", "paradiseo-peo.doxytag", ""); +$quiet = 0; + +if (open(F,"search.cfg")) +{ + $_= ; s/[ \t\n]*$//g ; $subst{"_doc"} = $_; + $_= ; s/[ \t\n]*$//g ; $subst{"_cgi"} = $_; +} + +while ( @ARGV ) { + $_ = shift @ARGV; + if ( s/^-// ) { + if ( /^l(.*)/ ) { + $v = ($1 eq "") ? shift @ARGV : $1; + ($v =~ /\/$/) || ($v .= "/"); + $_ = $v; + if ( /(.+)\@(.+)/ ) { + if ( exists $subst{$1} ) { + $subst{$1} = $2; + } else { + print STDERR "Unknown tag file $1 given with option -l\n"; + &usage(); + } + } else { + print STDERR "Argument $_ is invalid for option -l\n"; + &usage(); + } + } + elsif ( /^q/ ) { + $quiet = 1; + } + elsif ( /^\?|^h/ ) { + &usage(); + } + else { + print STDERR "Illegal option -$_\n"; + &usage(); + } + } + else { + push (@files, $_ ); + } +} + +foreach $sub (keys %subst) +{ + if ( $subst{$sub} eq "" ) + { + print STDERR "No substitute given for tag file `$sub'\n"; + &usage(); + } + elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) + { + print "Substituting $subst{$sub} for each occurence of tag file $sub\n"; + } +} + +if ( ! @files ) { + if (opendir(D,".")) { + foreach $file ( readdir(D) ) { + $match = ".html"; + next if ( $file =~ /^\.\.?$/ ); + ($file =~ /$match/) && (push @files, $file); + ($file =~ "tree.js") && (push @files, $file); + } + closedir(D); + } +} + +if ( ! @files ) { + print STDERR "Warning: No input files given and none found!\n"; +} + +foreach $f (@files) +{ + if ( ! $quiet ) { + print "Editing: $f...\n"; + } + $oldf = $f; + $f .= ".bak"; + unless (rename $oldf,$f) { + print STDERR "Error: cannot rename file $oldf\n"; + exit 1; + } + if (open(F,"<$f")) { + unless (open(G,">$oldf")) { + print STDERR "Error: opening file $oldf for writing\n"; + exit 1; + } + if ($oldf ne "tree.js") { + while () { + s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; + print G "$_"; + } + } + else { + while () { + s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; + print G "$_"; + } + } + } + else { + print STDERR "Warning file $f does not exist\n"; + } + unlink $f; +} + +sub usage { + print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; + print STDERR "Options:\n"; + print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; + print STDERR " -q Quiet mode\n\n"; + exit 1; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/main.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/main.html new file mode 100644 index 000000000..14fd6d330 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/main.html @@ -0,0 +1,30 @@ + + +ParadisEO-PEO - Lessons: Main Page + + + + +
+
+

ParadisEO-PEO - Lessons Documentation

+

+

0.1


Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/merge__route__eval_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/merge__route__eval_8cpp-source.html new file mode 100644 index 000000000..3ef7b9d4e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/merge__route__eval_8cpp-source.html @@ -0,0 +1,45 @@ + + +ParadisEO-PEO - Lessons: merge_route_eval.cpp Source File + + + + +
+
+

merge_route_eval.cpp

00001 // "merge_route_eval.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "merge_route_eval.h"
+00010 
+00011 void MergeRouteEval :: operator () (Route & __route, const int & __part_fit) {
+00012 
+00013   int len = __route.fitness ();
+00014   len += __part_fit;
+00015   __route.fitness (len);
+00016 }
+00017   
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/merge__route__eval_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/merge__route__eval_8h-source.html new file mode 100644 index 000000000..2c01e6b65 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/merge__route__eval_8h-source.html @@ -0,0 +1,52 @@ + + +ParadisEO-PEO - Lessons: merge_route_eval.h Source File + + + + +
+
+

merge_route_eval.h

00001 // "merge_route_eval.h"
+00002 
+00003 // (c) OPAC Team, LIFL, 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __merge_route_eval_h
+00010 #define __merge_route_eval_h
+00011 
+00012 #include <peoAggEvalFunc.h>
+00013 
+00014 #include "route.h"
+00015 
+00016 class MergeRouteEval : public peoAggEvalFunc <Route> {
+00017   
+00018 public :
+00019 
+00020   void operator () (Route & __route, const int & __part_fit) ;
+00021   
+00022 };
+00023 
+00024 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/mix_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/mix_8h-source.html new file mode 100644 index 000000000..8095de0ef --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/mix_8h-source.html @@ -0,0 +1,53 @@ + + +ParadisEO-PEO - Lessons: mix.h Source File + + + + +
+
+

mix.h

00001  
+00002 
+00003 /* 
+00004    file: 'mix.h'      
+00005    author: S. CAHON
+00006    mail: paradiseo-help@lists.gforge.inria.fr
+00007    date: dec. 2005    
+00008 */
+00009 
+00010 #ifndef __mix_h
+00011 #define __mix_h
+00012 
+00013 #include <vector>
+00014 
+00015 #include <utils/eoRNG.h>
+00016 
+00017 template <class T> void mix (std :: vector <T> & __v) {
+00018   
+00019   unsigned len = __v.size () ;
+00020 
+00021   for (unsigned i = 0 ; i < len ; i ++)
+00022     std :: swap (__v [i], __v [rng.random (len)]) ;
+00023 }
+00024 
+00025 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/node_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/node_8cpp-source.html new file mode 100644 index 000000000..9b983e42d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/node_8cpp-source.html @@ -0,0 +1,105 @@ + + +ParadisEO-PEO - Lessons: node.cpp Source File + + + + +
+
+

node.cpp

00001 // "node.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <math.h>
+00010 #include <values.h>
+00011 
+00012 #include "node.h"
+00013 
+00014 unsigned numNodes; /* Number of nodes */
+00015 
+00016 //static unsigned * * dist; /* Square matrix of distances */
+00017 
+00018 double * X_coord, * Y_coord;
+00019 
+00020 double X_min = MAXDOUBLE, X_max = MINDOUBLE, Y_min = MAXDOUBLE, Y_max = MINDOUBLE;
+00021 
+00022 void loadNodes (FILE * __f) {
+00023 
+00024   /* Coord */
+00025   
+00026   X_coord = new double [numNodes];
+00027   
+00028   Y_coord = new double [numNodes];
+00029  
+00030   unsigned num;
+00031 
+00032   for (unsigned i = 0; i < numNodes; i ++) {
+00033     
+00034     fscanf (__f, "%u%lf%lf", & num, X_coord + i, Y_coord + i);
+00035     
+00036     if (X_coord [i] < X_min)
+00037       X_min = X_coord [i];
+00038     if (X_coord [i] > X_max)
+00039       X_max = X_coord [i];
+00040     if (Y_coord [i] < Y_min)
+00041       Y_min = Y_coord [i];
+00042     if (Y_coord [i] > Y_max)
+00043       Y_max = Y_coord [i];    
+00044   }
+00045   
+00046   /* Allocation */
+00047   /*
+00048   dist = new unsigned * [numNodes];
+00049   
+00050   for (unsigned i = 0; i < numNodes; i ++)
+00051     dist [i] = new unsigned [numNodes];
+00052   */
+00053   /* Computation of the distances */
+00054   
+00055   /*
+00056   for (unsigned i = 0; i < numNodes; i ++) {
+00057 
+00058     dist [i] [i] = 0;
+00059 
+00060     for (unsigned j = 0; j < numNodes; j ++) {
+00061       
+00062       double dx = X_coord [i] - X_coord [j], dy = Y_coord [i] - Y_coord [j];
+00063       
+00064       dist [i] [j] = dist [j] [i] = (unsigned) (sqrt (dx * dx + dy * dy) + 0.5) ;
+00065     }
+00066     }*/
+00067 }
+00068 
+00069 unsigned distance (Node __from, Node __to) {
+00070 
+00071   //  return dist [__from] [__to];
+00072 
+00073   double dx = X_coord [__from] - X_coord [__to], dy = Y_coord [__from] - Y_coord [__to];
+00074   
+00075   return (unsigned) (sqrt (dx * dx + dy * dy) + 0.5) ;
+00076 }
+00077 
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/node_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/node_8h-source.html new file mode 100644 index 000000000..ba8a94122 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/node_8h-source.html @@ -0,0 +1,54 @@ + + +ParadisEO-PEO - Lessons: node.h Source File + + + + +
+
+

node.h

00001 // "node.h"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __node_h
+00010 #define __node_h
+00011 
+00012 #include <stdio.h>
+00013 
+00014 typedef unsigned Node; 
+00015 
+00016 extern double X_min, X_max, Y_min, Y_max;
+00017 
+00018 extern double * X_coord, * Y_coord;
+00019 
+00020 extern unsigned numNodes; /* Number of nodes */
+00021 
+00022 extern void loadNodes (FILE * __f);
+00023 
+00024 extern unsigned distance (Node __from, Node __to);
+00025 
+00026 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/opt__route_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/opt__route_8cpp-source.html new file mode 100644 index 000000000..f4961472e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/opt__route_8cpp-source.html @@ -0,0 +1,135 @@ + + +ParadisEO-PEO - Lessons: opt_route.cpp Source File + + + + +
+
+

opt_route.cpp

00001 // "opt_route.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "opt_route.h"
+00010 
+00011 #define MAX_TRASH_LENGTH 1000
+00012 #define MAX_FIELD_LENGTH 1000
+00013 #define MAX_LINE_LENGTH 1000
+00014 
+00015 static void getNextField (FILE * __f, char * __buff) {
+00016   
+00017   char trash [MAX_TRASH_LENGTH];  
+00018 
+00019   fscanf (__f, "%[ \t:\n]", trash); /* Discarding sep. */ 
+00020   fscanf (__f, "%[^:\n]", __buff); /* Reading the field */
+00021   fgetc (__f);
+00022 }
+00023 
+00024 static void getLine (FILE * __f, char * __buff) {
+00025 
+00026   char trash [MAX_TRASH_LENGTH];  
+00027 
+00028   fscanf (__f, "%[ \t:\n]", trash); /* Discarding sep. */ 
+00029   fscanf (__f, "%[^\n]", __buff); /* Reading the line */
+00030 }
+00031 
+00032 static void loadBestRoute (FILE * __f) {
+00033 
+00034   opt_route.clear ();
+00035   
+00036   for (unsigned i = 0; i < numNodes; i ++) {
+00037     Node node;
+00038     fscanf (__f, "%u", & node);
+00039     opt_route.push_back (node - 1);
+00040   }
+00041   int d; /* -1 ! */
+00042   fscanf (__f, "%d", & d);
+00043 }
+00044 
+00045 void loadOptimumRoute (const char * __filename) {
+00046 
+00047   FILE * f = fopen (__filename, "r");
+00048 
+00049   if (f) {
+00050      
+00051      printf ("Loading '%s'.\n", __filename);
+00052      
+00053      char field [MAX_FIELD_LENGTH];
+00054      
+00055      getNextField (f, field); /* Name */
+00056      assert (strstr (field, "NAME"));
+00057      getNextField (f, field); 
+00058      //printf ("NAME: %s.\n", field);
+00059 
+00060           getNextField (f, field); /* Comment */
+00061      assert (strstr (field, "COMMENT"));
+00062      getLine (f, field);
+00063      //     printf ("COMMENT: %s.\n", field);
+00064      
+00065      getNextField (f, field); /* Type */
+00066      assert (strstr (field, "TYPE"));
+00067      getNextField (f, field); 
+00068      //printf ("TYPE: %s.\n", field);
+00069 
+00070      getNextField (f, field); /* Dimension */
+00071      assert (strstr (field, "DIMENSION"));
+00072      getNextField (f, field); 
+00073      //     printf ("DIMENSION: %s.\n", field);
+00074      numNodes = atoi (field);
+00075 
+00076      getNextField (f, field); /* Tour section */
+00077      assert (strstr (field, "TOUR_SECTION"));
+00078      loadBestRoute (f);
+00079      
+00080      getNextField (f, field); /* End of file */
+00081      assert (strstr (field, "EOF"));
+00082      //printf ("EOF.\n");
+00083      
+00084      printf ("The length of the best route is %u.\n", length (opt_route));
+00085   }
+00086    else {
+00087      
+00088      fprintf (stderr, "Can't open '%s'.\n", __filename); 
+00089      exit (1);
+00090    }
+00091 }
+00092 
+00093 void loadOptimumRoute (eoParser & __parser) {
+00094   
+00095   /* Getting the path of the instance */
+00096   
+00097   eoValueParam <std :: string> param ("", "optimumTour", "Optimum tour") ;
+00098   __parser.processParam (param) ;
+00099   if (strlen (param.value ().c_str ()))
+00100     loadOptimumRoute (param.value ().c_str ());
+00101   else
+00102     opt_route.fitness (0);
+00103 }
+00104 
+00105 Route opt_route; /* Optimum route */
+00106 
+00107 
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/opt__route_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/opt__route_8h-source.html new file mode 100644 index 000000000..ca96642e2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/opt__route_8h-source.html @@ -0,0 +1,51 @@ + + +ParadisEO-PEO - Lessons: opt_route.h Source File + + + + +
+
+

opt_route.h

00001 // "opt_route.h"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __opt_route_h
+00010 #define __opt_route_h
+00011 
+00012 #include <cassert>
+00013 #include <utils/eoParser.h>
+00014 
+00015 #include "route.h"
+00016 
+00017 extern void loadOptimumRoute (const char * __filename);
+00018 
+00019 extern void loadOptimumRoute (eoParser & __parser);
+00020 
+00021 extern Route opt_route; /* Optimum route */
+00022 
+00023 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/order__xover_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/order__xover_8cpp-source.html new file mode 100644 index 000000000..31afadfd2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/order__xover_8cpp-source.html @@ -0,0 +1,92 @@ + + +ParadisEO-PEO - Lessons: order_xover.cpp Source File + + + + +
+
+

order_xover.cpp

00001 // "order_xover.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, 2002
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <assert.h>
+00010 
+00011 #include <utils/eoRNG.h>
+00012 
+00013 #include "order_xover.h"
+00014 
+00015 void OrderXover :: cross (const Route & __par1, const Route & __par2, Route & __child) {
+00016 
+00017   unsigned cut2 = 1 + rng.random (numNodes) ;    
+00018   unsigned cut1 = rng.random (cut2);
+00019   unsigned l = 0;
+00020 
+00021   /* To store vertices that have already been crossed */
+00022   std :: vector <bool> v (numNodes, false);
+00023 
+00024   /* Copy of the left partial route of the first parent */ 
+00025   for (unsigned i = cut1 ; i < cut2 ; i ++) {
+00026     __child [l ++] = __par1 [i] ; 
+00027     v [__par1 [i]] = true ;
+00028   }
+00029    
+00030   /* Searching the vertex of the second path, that ended the previous first one */
+00031   unsigned from = 0 ;
+00032   for (unsigned i = 0; i < numNodes; i ++)
+00033     if (__par2 [i] == __child [cut2 - 1]) { 
+00034       from = i ;
+00035       break ;
+00036     }
+00037   
+00038   /* Selecting a direction (Left or Right) */
+00039   char direct = rng.flip () ? 1 : -1 ;
+00040       
+00041   for (unsigned i = 0; i < numNodes + 1; i ++) {
+00042     unsigned bidule = (direct * i + from + numNodes) % numNodes;
+00043     if (! v [__par2 [bidule]]) {
+00044       __child [l ++] = __par2 [bidule] ;
+00045       v [__par2 [bidule]] = true ;
+00046     }
+00047   }
+00048 } 
+00049 
+00050 bool OrderXover :: operator () (Route & __route1, Route & __route2) {
+00051   
+00052   // Init. copy
+00053   Route par [2] ;
+00054   par [0] = __route1 ;
+00055   par [1] = __route2 ;
+00056   
+00057   cross (par [0], par [1], __route1) ;
+00058   cross (par [1], par [0], __route2) ;
+00059   
+00060   __route1.invalidate () ;
+00061   __route2.invalidate () ;
+00062 
+00063   return true ;
+00064 }
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/order__xover_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/order__xover_8h-source.html new file mode 100644 index 000000000..f2e085f7b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/order__xover_8h-source.html @@ -0,0 +1,55 @@ + + +ParadisEO-PEO - Lessons: order_xover.h Source File + + + + +
+
+

order_xover.h

00001 // "order_xover.h"
+00002 
+00003 // (c) OPAC Team, LIFL, 2003
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef order_xover_h
+00010 #define order_xover_h
+00011 
+00012 #include <eoOp.h>
+00013 
+00014 #include "route.h"
+00015 
+00017 class OrderXover : public eoQuadOp <Route> {
+00018   
+00019 public :
+00020   
+00021   bool operator () (Route & __route1, Route & __route2) ;
+00022 
+00023 private :
+00024   
+00025   void cross (const Route & __par1, const Route & __par2, Route & __child) ;
+00026 } ;
+00027 
+00028 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/param_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/param_8cpp-source.html new file mode 100644 index 000000000..f69ff8695 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/param_8cpp-source.html @@ -0,0 +1,51 @@ + + +ParadisEO-PEO - Lessons: param.cpp Source File + + + + +
+
+

param.cpp

00001 // "param.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <utils/eoParser.h>
+00010 
+00011 #include "data.h"
+00012 #include "opt_route.h"
+00013 
+00014 void loadParameters (int __argc, char * * __argv) {
+00015 
+00016   eoParser parser (__argc, __argv);
+00017   
+00018   loadData (parser);
+00019 
+00020   loadOptimumRoute (parser);
+00021 }
+00022 
+00023 
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/param_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/param_8h-source.html new file mode 100644 index 000000000..cb768df91 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/param_8h-source.html @@ -0,0 +1,42 @@ + + +ParadisEO-PEO - Lessons: param.h Source File + + + + +
+
+

param.h

00001 // "param.h"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __param_h
+00010 #define __param_h
+00011 
+00012 extern void loadParameters (int __argc, char * * __argv);
+00013 
+00014 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/part__route__eval_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/part__route__eval_8cpp-source.html new file mode 100644 index 000000000..a8fe961ed --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/part__route__eval_8cpp-source.html @@ -0,0 +1,58 @@ + + +ParadisEO-PEO - Lessons: part_route_eval.cpp Source File + + + + +
+
+

part_route_eval.cpp

00001 // "part_route_eval.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, 2003
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "part_route_eval.h"
+00010 #include "node.h"
+00011 
+00012 PartRouteEval :: PartRouteEval (float __from,
+00013                                 float __to
+00014                                 ) : from (__from),
+00015                                     to (__to) {
+00016   
+00017 }
+00018 
+00019 void PartRouteEval :: operator () (Route & __route) {
+00020   
+00021   
+00022   unsigned len = 0 ;
+00023   
+00024   for (unsigned i = (unsigned) (__route.size () * from) ;
+00025        i < (unsigned) (__route.size () * to) ;
+00026        i ++)
+00027     len += distance (__route [i], __route [(i + 1) % numNodes]) ;
+00028   
+00029   __route.fitness (- (int) len) ;
+00030 }
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/part__route__eval_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/part__route__eval_8h-source.html new file mode 100644 index 000000000..019d9c6d0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/part__route__eval_8h-source.html @@ -0,0 +1,59 @@ + + +ParadisEO-PEO - Lessons: part_route_eval.h Source File + + + + +
+
+

part_route_eval.h

00001 // "part_route_eval.h"
+00002 
+00003 // (c) OPAC Team, LIFL, 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __part_route_eval_h
+00010 #define __part_route_eval_h
+00011 
+00012 #include <eoEvalFunc.h>
+00013 
+00014 #include "route.h"
+00015 
+00017 class PartRouteEval : public eoEvalFunc <Route> {
+00018   
+00019 public :
+00020 
+00022   PartRouteEval (float __from, float __to) ;
+00023     
+00024   void operator () (Route & __route) ;
+00025   
+00026 private :
+00027 
+00028   float from, to ;
+00029 
+00030 } ;
+00031 
+00032 
+00033 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/partial__mapped__xover_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/partial__mapped__xover_8cpp-source.html new file mode 100644 index 000000000..a107f54ef --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/partial__mapped__xover_8cpp-source.html @@ -0,0 +1,89 @@ + + +ParadisEO-PEO - Lessons: partial_mapped_xover.cpp Source File + + + + +
+
+

partial_mapped_xover.cpp

00001 // "partial_mapped_xover.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, 2003
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <assert.h>
+00010 
+00011 #include <utils/eoRNG.h>
+00012 
+00013 #include "partial_mapped_xover.h"
+00014 #include "mix.h"
+00015 
+00016 void PartialMappedXover :: repair (Route & __route, unsigned __cut1, unsigned __cut2) {
+00017   
+00018   unsigned v [__route.size ()] ; // Number of times a cities are visited ...
+00019   
+00020   for (unsigned i = 0 ; i < __route.size () ; i ++)
+00021     v [i] = 0 ;
+00022   
+00023   for (unsigned i = 0 ; i < __route.size () ; i ++)
+00024     v [__route [i]] ++ ;
+00025   
+00026   std :: vector <unsigned> vert ;
+00027 
+00028   for (unsigned i = 0 ; i < __route.size () ; i ++)
+00029     if (! v [i])
+00030       vert.push_back (i) ;
+00031   
+00032   mix (vert) ;
+00033 
+00034   for (unsigned i = 0 ; i < __route.size () ; i ++)
+00035     if (i < __cut1 || i >= __cut2)
+00036       if (v [__route [i]] > 1) {
+00037         __route [i] = vert.back () ;
+00038         vert.pop_back () ;
+00039       }
+00040 }
+00041 
+00042 bool PartialMappedXover :: operator () (Route & __route1, Route & __route2) {
+00043     
+00044   unsigned cut1 = rng.random (__route1.size ()), cut2 = rng.random (__route2.size ()) ;
+00045   
+00046   if (cut2 < cut1)
+00047     std :: swap (cut1, cut2) ;
+00048   
+00049   // Between the cuts
+00050   for (unsigned i = cut1 ; i < cut2 ; i ++)
+00051     std :: swap (__route1 [i], __route2 [i]) ;
+00052   
+00053   // Outside the cuts
+00054   repair (__route1, cut1, cut2) ;
+00055   repair (__route2, cut1, cut2) ;
+00056   
+00057   __route1.invalidate () ;
+00058   __route2.invalidate () ;
+00059 
+00060   return true ;
+00061 }
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/partial__mapped__xover_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/partial__mapped__xover_8h-source.html new file mode 100644 index 000000000..744667ab8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/partial__mapped__xover_8h-source.html @@ -0,0 +1,55 @@ + + +ParadisEO-PEO - Lessons: partial_mapped_xover.h Source File + + + + +
+
+

partial_mapped_xover.h

00001 // "partial_mapped_xover.h"
+00002 
+00003 // (c) OPAC Team, LIFL, 2003
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef partial_mapped_xover_h
+00010 #define partial_mapped_xover_h
+00011 
+00012 #include <eoOp.h>
+00013 
+00014 #include "route.h"
+00015 
+00017 class PartialMappedXover : public eoQuadOp <Route> {
+00018   
+00019 public :
+00020   
+00021   bool operator () (Route & __route1, Route & __route2) ;
+00022 
+00023 private :
+00024   
+00025   void repair (Route & __route, unsigned __cut1, unsigned __cut2) ;
+00026 } ;
+00027 
+00028 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/route_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/route_8cpp-source.html new file mode 100644 index 000000000..f58dce80d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/route_8cpp-source.html @@ -0,0 +1,49 @@ + + +ParadisEO-PEO - Lessons: route.cpp Source File + + + + +
+
+

route.cpp

00001 // "route.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "route.h"
+00010 
+00011 unsigned length (const Route & __route) {
+00012 
+00013   unsigned len = 0 ;
+00014   
+00015   for (unsigned i = 0; i < numNodes; i ++)
+00016     len += distance (__route [i], __route [(i + 1) % numNodes]) ; 
+00017   
+00018   return len;
+00019 }
+00020 
+00021 
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/route_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/route_8h-source.html new file mode 100644 index 000000000..f13fb82d3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/route_8h-source.html @@ -0,0 +1,48 @@ + + +ParadisEO-PEO - Lessons: route.h Source File + + + + +
+
+

route.h

00001 // "route.h"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __route_h
+00010 #define __route_h
+00011 
+00012 #include <eoVector.h>
+00013 
+00014 #include "node.h"
+00015 
+00016 typedef eoVector <int, Node> Route; 
+00017 
+00018 unsigned length (const Route & __route); 
+00019 
+00020 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/route__eval_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/route__eval_8cpp-source.html new file mode 100644 index 000000000..24019d9d3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/route__eval_8cpp-source.html @@ -0,0 +1,42 @@ + + +ParadisEO-PEO - Lessons: route_eval.cpp Source File + + + + +
+
+

route_eval.cpp

00001 // "route_eval.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "route_eval.h"
+00010 
+00011 void RouteEval :: operator () (Route & __route) {
+00012     
+00013   __route.fitness (- (int) length (__route)); 
+00014 }
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/route__eval_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/route__eval_8h-source.html new file mode 100644 index 000000000..61e772948 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/route__eval_8h-source.html @@ -0,0 +1,51 @@ + + +ParadisEO-PEO - Lessons: route_eval.h Source File + + + + +
+
+

route_eval.h

00001 // "route_eval.h"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __route_eval_h
+00010 #define __route_eval_h
+00011 
+00012 #include <eoEvalFunc.h>
+00013 
+00014 #include "route.h"
+00015 
+00016 class RouteEval : public eoEvalFunc <Route> {
+00017   
+00018 public :
+00019     
+00020   void operator () (Route & __route) ;  
+00021 } ;
+00022 
+00023 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/route__init_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/route__init_8cpp-source.html new file mode 100644 index 000000000..1b24a9fde --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/route__init_8cpp-source.html @@ -0,0 +1,51 @@ + + +ParadisEO-PEO - Lessons: route_init.cpp Source File + + + + +
+
+

route_init.cpp

00001 // "route_init.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <utils/eoRNG.h>
+00010 
+00011 #include "route_init.h"
+00012 #include "node.h"
+00013 
+00014 void RouteInit :: operator () (Route & __route) {
+00015 
+00016   __route.clear ();
+00017   
+00018   for (unsigned i = 0 ; i < numNodes ; i ++)
+00019     __route.push_back (i);
+00020   
+00021   for (unsigned i = 0 ; i < numNodes ; i ++)    
+00022     std :: swap (__route [i], __route [rng.random (numNodes)]);
+00023 }
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/route__init_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/route__init_8h-source.html new file mode 100644 index 000000000..03d1e6658 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/route__init_8h-source.html @@ -0,0 +1,51 @@ + + +ParadisEO-PEO - Lessons: route_init.h Source File + + + + +
+
+

route_init.h

00001 // "route_init.h"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __route_init_h
+00010 #define __route_init_h
+00011 
+00012 #include <eoInit.h>
+00013 
+00014 #include "route.h"
+00015 
+00016 class RouteInit : public eoInit <Route> {
+00017   
+00018 public :
+00019   
+00020   void operator () (Route & __route);  
+00021 } ;
+00022 
+00023 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/search.idx b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/search.idx new file mode 100644 index 000000000..ca3164948 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/search.idx differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/search.php b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/search.php new file mode 100644 index 000000000..1b4f92b3c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/search.php @@ -0,0 +1,381 @@ + + +Search + + + + +
+
    +
  • Main Page
  • +
  • Classes
  • +
  • Files
  • +
  • +
    + + + + +1 document matching your query."; + } + else // $num>1 + { + return "Found $num documents matching your query. Showing best matches first."; + } +} + +function report_matches() +{ + return "Matches: "; +} +function end_form($value) +{ + echo " \n \n
    \n
    \n
  • \n
\n
\n"; +} + +function readInt($file) +{ + $b1 = ord(fgetc($file)); $b2 = ord(fgetc($file)); + $b3 = ord(fgetc($file)); $b4 = ord(fgetc($file)); + return ($b1<<24)|($b2<<16)|($b3<<8)|$b4; +} + +function readString($file) +{ + $result=""; + while (ord($c=fgetc($file))) $result.=$c; + return $result; +} + +function readHeader($file) +{ + $header =fgetc($file); $header.=fgetc($file); + $header.=fgetc($file); $header.=fgetc($file); + return $header; +} + +function computeIndex($word) +{ + // Fast string hashing + //$lword = strtolower($word); + //$l = strlen($lword); + //for ($i=0;$i<$l;$i++) + //{ + // $c = ord($lword{$i}); + // $v = (($v & 0xfc00) ^ ($v << 6) ^ $c) & 0xffff; + //} + //return $v; + + // Simple hashing that allows for substring search + if (strlen($word)<2) return -1; + // high char of the index + $hi = ord($word{0}); + if ($hi==0) return -1; + // low char of the index + $lo = ord($word{1}); + if ($lo==0) return -1; + // return index + return $hi*256+$lo; +} + +function search($file,$word,&$statsList) +{ + $index = computeIndex($word); + if ($index!=-1) // found a valid index + { + fseek($file,$index*4+4); // 4 bytes per entry, skip header + $index = readInt($file); + if ($index) // found words matching the hash key + { + $start=sizeof($statsList); + $count=$start; + fseek($file,$index); + $w = readString($file); + while ($w) + { + $statIdx = readInt($file); + if ($word==substr($w,0,strlen($word))) + { // found word that matches (as substring) + $statsList[$count++]=array( + "word"=>$word, + "match"=>$w, + "index"=>$statIdx, + "full"=>strlen($w)==strlen($word), + "docs"=>array() + ); + } + $w = readString($file); + } + $totalHi=0; + $totalFreqHi=0; + $totalFreqLo=0; + for ($count=$start;$count $idx, + "freq" => $freq>>1, + "rank" => 0.0, + "hi" => $freq&1 + ); + if ($freq&1) // word occurs in high priority doc + { + $totalHi++; + $totalFreqHi+=$freq*$multiplier; + } + else // word occurs in low priority doc + { + $totalFreqLo+=$freq*$multiplier; + } + } + // read name and url info for the doc + for ($i=0;$i<$numDocs;$i++) + { + fseek($file,$docInfo[$i]["idx"]); + $docInfo[$i]["name"]=readString($file); + $docInfo[$i]["url"]=readString($file); + } + $statInfo["docs"]=$docInfo; + } + $totalFreq=($totalHi+1)*$totalFreqLo + $totalFreqHi; + for ($count=$start;$count$key, + "name"=>$di["name"], + "rank"=>$rank + ); + } + $docs[$key]["words"][] = array( + "word"=>$wordInfo["word"], + "match"=>$wordInfo["match"], + "freq"=>$di["freq"] + ); + } + } + return $docs; +} + +function filter_results($docs,&$requiredWords,&$forbiddenWords) +{ + $filteredDocs=array(); + while (list ($key, $val) = each ($docs)) + { + $words = &$docs[$key]["words"]; + $copy=1; // copy entry by default + if (sizeof($requiredWords)>0) + { + foreach ($requiredWords as $reqWord) + { + $found=0; + foreach ($words as $wordInfo) + { + $found = $wordInfo["word"]==$reqWord; + if ($found) break; + } + if (!$found) + { + $copy=0; // document contains none of the required words + break; + } + } + } + if (sizeof($forbiddenWords)>0) + { + foreach ($words as $wordInfo) + { + if (in_array($wordInfo["word"],$forbiddenWords)) + { + $copy=0; // document contains a forbidden word + break; + } + } + } + if ($copy) $filteredDocs[$key]=$docs[$key]; + } + return $filteredDocs; +} + +function compare_rank($a,$b) +{ + if ($a["rank"] == $b["rank"]) + { + return 0; + } + return ($a["rank"]>$b["rank"]) ? -1 : 1; +} + +function sort_results($docs,&$sorted) +{ + $sorted = $docs; + usort($sorted,"compare_rank"); + return $sorted; +} + +function report_results(&$docs) +{ + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $numDocs = sizeof($docs); + if ($numDocs==0) + { + echo " \n"; + echo " \n"; + echo " \n"; + } + else + { + echo " \n"; + echo " \n"; + echo " \n"; + $num=1; + foreach ($docs as $doc) + { + echo " \n"; + echo " "; + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $num++; + } + } + echo "

".search_results()."

".matches_text(0)."
".matches_text($numDocs); + echo "\n"; + echo "
$num.".$doc["name"]."
".report_matches()." "; + foreach ($doc["words"] as $wordInfo) + { + $word = $wordInfo["word"]; + $matchRight = substr($wordInfo["match"],strlen($word)); + echo "$word$matchRight(".$wordInfo["freq"].") "; + } + echo "
\n"; +} + +function main() +{ + if(strcmp('4.1.0', phpversion()) > 0) + { + die("Error: PHP version 4.1.0 or above required!"); + } + if (!($file=fopen("search.idx","rb"))) + { + die("Error: Search index file could NOT be opened!"); + } + if (readHeader($file)!="DOXS") + { + die("Error: Header of index file is invalid!"); + } + $query=""; + if (array_key_exists("query", $_GET)) + { + $query=$_GET["query"]; + } + end_form($query); + echo " \n
\n"; + $results = array(); + $requiredWords = array(); + $forbiddenWords = array(); + $foundWords = array(); + $word=strtok($query," "); + while ($word) // for each word in the search query + { + if (($word{0}=='+')) { $word=substr($word,1); $requiredWords[]=$word; } + if (($word{0}=='-')) { $word=substr($word,1); $forbiddenWords[]=$word; } + if (!in_array($word,$foundWords)) + { + $foundWords[]=$word; + search($file,strtolower($word),$results); + } + $word=strtok(" "); + } + $docs = array(); + combine_results($results,$docs); + // filter out documents with forbidden word or that do not contain + // required words + $filteredDocs = filter_results($docs,$requiredWords,$forbiddenWords); + // sort the results based on rank + $sorted = array(); + sort_results($filteredDocs,$sorted); + // report results to the user + report_results($sorted); + echo "
\n"; + fclose($file); +} + +main(); + + +?> +
Generated on Tue Jan 9 15:47:42 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/tab_b.gif b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/tab_b.gif new file mode 100644 index 000000000..0d623483f Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/tab_b.gif differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/tab_l.gif b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/tab_l.gif new file mode 100644 index 000000000..9b1e6337c Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/tab_l.gif differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/tab_r.gif b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/tab_r.gif new file mode 100644 index 000000000..ce9dd9f53 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/tab_r.gif differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/tabs.css b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/tabs.css new file mode 100644 index 000000000..a61552a67 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI#current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI#current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/tree.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/tree.html new file mode 100644 index 000000000..11b2aad1f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/tree.html @@ -0,0 +1,163 @@ + + + + + + + TreeView + + + + +
+

ParadisEO-PEO - Lessons

+
+

o+Class List

+ +

o+Class Hierarchy

+ +

o*Class Members

+

\+File List

+
+

 o*city_swap.cpp

+

 o*city_swap.h

+

 o*data.cpp

+

 o*data.h

+

 o*display.cpp

+

 o*display.h

+

 o*display_best_route.cpp

+

 o*display_best_route.h

+

 o*edge_xover.cpp

+

 o*edge_xover.h

+

 o*merge_route_eval.cpp

+

 o*merge_route_eval.h

+

 o*mix.h

+

 o*node.cpp

+

 o*node.h

+

 o*opt_route.cpp

+

 o*opt_route.h

+

 o*order_xover.cpp

+

 o*order_xover.h

+

 o*param.cpp

+

 o*param.h

+

 o*part_route_eval.cpp

+

 o*part_route_eval.h

+

 o*partial_mapped_xover.cpp

+

 o*partial_mapped_xover.h

+

 o*route.cpp

+

 o*route.h

+

 o*route_eval.cpp

+

 o*route_eval.h

+

 o*route_init.cpp

+

 o*route_init.h

+

 o*two_opt.cpp

+

 o*two_opt.h

+

 o*two_opt_incr_eval.cpp

+

 o*two_opt_incr_eval.h

+

 o*two_opt_init.cpp

+

 o*two_opt_init.h

+

 o*two_opt_next.cpp

+

 o*two_opt_next.h

+

 o*two_opt_rand.cpp

+

 \*two_opt_rand.h

+
+
+
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt_8cpp-source.html new file mode 100644 index 000000000..8b984efe0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt_8cpp-source.html @@ -0,0 +1,48 @@ + + +ParadisEO-PEO - Lessons: two_opt.cpp Source File + + + + +
+
+

two_opt.cpp

00001 // "two_opt.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "two_opt.h"
+00010 
+00011 void TwoOpt :: operator () (Route & __route) {
+00012   
+00013   unsigned i = 0; 
+00014 
+00015   while ((2 * i) < (second - first)) {
+00016     
+00017     std :: swap (__route [first + i], __route [second - i]);
+00018     i ++;
+00019   }
+00020 }
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt_8h-source.html new file mode 100644 index 000000000..6e96702ab --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt_8h-source.html @@ -0,0 +1,53 @@ + + +ParadisEO-PEO - Lessons: two_opt.h Source File + + + + +
+
+

two_opt.h

00001 // "two_opt.h"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __two_opt_h
+00010 #define __two_opt_h
+00011 
+00012 #include <utility>
+00013 #include <moMove.h>
+00014 
+00015 #include "route.h"
+00016 
+00017 class TwoOpt : public moMove <Route>, public std :: pair <unsigned, unsigned> {
+00018   
+00019 public :
+00020   
+00021   void operator () (Route & __route);
+00022 
+00023 } ;
+00024 
+00025 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__incr__eval_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__incr__eval_8cpp-source.html new file mode 100644 index 000000000..d289f2926 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__incr__eval_8cpp-source.html @@ -0,0 +1,52 @@ + + +ParadisEO-PEO - Lessons: two_opt_incr_eval.cpp Source File + + + + +
+
+

two_opt_incr_eval.cpp

00001 // "TwoOptIncrEval.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "two_opt_incr_eval.h"
+00010 #include "node.h"
+00011 
+00012 int TwoOptIncrEval :: operator () (const TwoOpt & __move, const Route & __route) {
+00013   
+00014   /* From */
+00015   Node v1 = __route [__move.first], v1_left = __route [(__move.first - 1 + numNodes) % numNodes];
+00016   
+00017   /* To */
+00018   Node v2 = __route [__move.second], v2_right = __route [(__move.second + 1) % numNodes];
+00019  
+00020   if (v1 == v2 || v2_right == v1)
+00021     return __route.fitness ();
+00022   else 
+00023     return __route.fitness () - distance (v1_left, v2) - distance (v1, v2_right) + distance (v1_left, v1) + distance (v2, v2_right);
+00024 }
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__incr__eval_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__incr__eval_8h-source.html new file mode 100644 index 000000000..310b7385a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__incr__eval_8h-source.html @@ -0,0 +1,51 @@ + + +ParadisEO-PEO - Lessons: two_opt_incr_eval.h Source File + + + + +
+
+

two_opt_incr_eval.h

00001 // "TwoOptIncrEval.h"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __two_opt_incr_eval_h
+00010 #define __two_opt_incr_eval_h
+00011 
+00012 #include <moMoveIncrEval.h>
+00013 #include "two_opt.h"
+00014 
+00015 class TwoOptIncrEval : public moMoveIncrEval <TwoOpt> {
+00016 
+00017 public :
+00018   
+00019   int operator () (const TwoOpt & __move, const Route & __route) ; 
+00020 
+00021 } ;
+00022 
+00023 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__init_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__init_8cpp-source.html new file mode 100644 index 000000000..8bd6fd102 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__init_8cpp-source.html @@ -0,0 +1,42 @@ + + +ParadisEO-PEO - Lessons: two_opt_init.cpp Source File + + + + +
+
+

two_opt_init.cpp

00001 // "two_opt_init.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, 2003
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "two_opt_init.h"
+00010 
+00011 void TwoOptInit :: operator () (TwoOpt & __move, const Route & __route) {
+00012   
+00013   __move.first = __move.second = 0;
+00014 }
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__init_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__init_8h-source.html new file mode 100644 index 000000000..13797c707 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__init_8h-source.html @@ -0,0 +1,52 @@ + + +ParadisEO-PEO - Lessons: two_opt_init.h Source File + + + + +
+
+

two_opt_init.h

00001 // "two_opt_init.h"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __two_opt_init_h
+00010 #define __two_opt_init_h
+00011 
+00012 #include <moMoveInit.h>
+00013 
+00014 #include "two_opt.h"
+00015 
+00016 class TwoOptInit : public moMoveInit <TwoOpt> {
+00017   
+00018 public :
+00019   
+00020   void operator () (TwoOpt & __move, const Route & __route) ;
+00021   
+00022 } ;
+00023 
+00024 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__next_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__next_8cpp-source.html new file mode 100644 index 000000000..734bf32ea --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__next_8cpp-source.html @@ -0,0 +1,55 @@ + + +ParadisEO-PEO - Lessons: two_opt_next.cpp Source File + + + + +
+
+

two_opt_next.cpp

00001 // "two_opt_next.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "two_opt_next.h"
+00010 #include "node.h"
+00011 
+00012 bool TwoOptNext :: operator () (TwoOpt & __move, const Route & __route) {
+00013 
+00014   if (__move.first == numNodes - 1 && __move.second == numNodes - 1)
+00015     return false;
+00016   
+00017   else {
+00018     
+00019     __move.second ++;
+00020     if (__move.second == numNodes) {
+00021       
+00022       __move.first ++;
+00023       __move.second = __move.first;
+00024     }
+00025     return true ;
+00026   }
+00027 }
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__next_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__next_8h-source.html new file mode 100644 index 000000000..90b867d51 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__next_8h-source.html @@ -0,0 +1,52 @@ + + +ParadisEO-PEO - Lessons: two_opt_next.h Source File + + + + +
+
+

two_opt_next.h

00001 // "two_opt_next.h"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __two_opt_next_h
+00010 #define __two_opt_next_h
+00011 
+00012 #include <moNextMove.h>
+00013 
+00014 #include "two_opt.h"
+00015 
+00016 class TwoOptNext : public moNextMove <TwoOpt> {
+00017 
+00018 public :
+00019   
+00020   bool operator () (TwoOpt & __move, const Route & __route);
+00021   
+00022 };
+00023 
+00024 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__rand_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__rand_8cpp-source.html new file mode 100644 index 000000000..1bf3a815e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__rand_8cpp-source.html @@ -0,0 +1,49 @@ + + +ParadisEO-PEO - Lessons: two_opt_rand.cpp Source File + + + + +
+
+

two_opt_rand.cpp

00001 // "two_opt_rand.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <utils/eoRNG.h>
+00010 
+00011 #include "two_opt_rand.h"
+00012 #include "node.h"  
+00013 
+00014 void TwoOptRand :: operator () (TwoOpt & __move, const Route & __route) {
+00015 
+00016   __move.second = rng.random (numNodes);
+00017 
+00018   __move.first = rng.random (__move.second);
+00019 }
+00020   
+00021 
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__rand_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__rand_8h-source.html new file mode 100644 index 000000000..bf209cb0b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/html/two__opt__rand_8h-source.html @@ -0,0 +1,52 @@ + + +ParadisEO-PEO - Lessons: two_opt_rand.h Source File + + + + +
+
+

two_opt_rand.h

00001 // "two_opt_rand.h"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __two_opt_rand_h
+00010 #define __two_opt_rand_h
+00011 
+00012 #include <eoMoveRand.h>
+00013 
+00014 #include "two_opt.h"
+00015 
+00016 class TwoOptRand : public eoMoveRand <TwoOpt> {
+00017   
+00018 public :
+00019   
+00020   void operator () (TwoOpt & __move, const Route & __route) ;
+00021   
+00022 } ;
+00023 
+00024 #endif
+

Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO - Lessons by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/FreeSans.ttf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/FreeSans.ttf new file mode 100644 index 000000000..b550b90ba Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/FreeSans.ttf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/Makefile b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/Makefile new file mode 100644 index 000000000..a67f1b7f6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/Makefile @@ -0,0 +1,17 @@ +all: clean refman.pdf + +refman.pdf: refman.tex + pdflatex refman.tex + makeindex refman.idx + pdflatex refman.tex + latex_count=5 ; \ + while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + pdflatex refman.tex ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/annotated.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/annotated.tex new file mode 100644 index 000000000..83e41358f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/annotated.tex @@ -0,0 +1,17 @@ +\section{Paradis\-EO-PEO - Lessons Class List} +Here are the classes, structs, unions and interfaces with brief descriptions:\begin{CompactList} +\item\contentsline{section}{\hyperlink{classCitySwap}{City\-Swap} (Its swaps two vertices randomly choosen )}{\pageref{classCitySwap}}{} +\item\contentsline{section}{\hyperlink{classDisplayBestRoute}{Display\-Best\-Route} }{\pageref{classDisplayBestRoute}}{} +\item\contentsline{section}{\hyperlink{classEdgeXover}{Edge\-Xover} (Edge Crossover )}{\pageref{classEdgeXover}}{} +\item\contentsline{section}{\hyperlink{classMergeRouteEval}{Merge\-Route\-Eval} }{\pageref{classMergeRouteEval}}{} +\item\contentsline{section}{\hyperlink{classOrderXover}{Order\-Xover} (Order Crossover )}{\pageref{classOrderXover}}{} +\item\contentsline{section}{\hyperlink{classPartialMappedXover}{Partial\-Mapped\-Xover} (Partial Mapped Crossover )}{\pageref{classPartialMappedXover}}{} +\item\contentsline{section}{\hyperlink{classPartRouteEval}{Part\-Route\-Eval} (Route Evaluator )}{\pageref{classPartRouteEval}}{} +\item\contentsline{section}{\hyperlink{classRouteEval}{Route\-Eval} }{\pageref{classRouteEval}}{} +\item\contentsline{section}{\hyperlink{classRouteInit}{Route\-Init} }{\pageref{classRouteInit}}{} +\item\contentsline{section}{\hyperlink{classTwoOpt}{Two\-Opt} }{\pageref{classTwoOpt}}{} +\item\contentsline{section}{\hyperlink{classTwoOptIncrEval}{Two\-Opt\-Incr\-Eval} }{\pageref{classTwoOptIncrEval}}{} +\item\contentsline{section}{\hyperlink{classTwoOptInit}{Two\-Opt\-Init} }{\pageref{classTwoOptInit}}{} +\item\contentsline{section}{\hyperlink{classTwoOptNext}{Two\-Opt\-Next} }{\pageref{classTwoOptNext}}{} +\item\contentsline{section}{\hyperlink{classTwoOptRand}{Two\-Opt\-Rand} }{\pageref{classTwoOptRand}}{} +\end{CompactList} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classCitySwap.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classCitySwap.tex new file mode 100644 index 000000000..ae1ebad59 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classCitySwap.tex @@ -0,0 +1,30 @@ +\hypertarget{classCitySwap}{ +\section{City\-Swap Class Reference} +\label{classCitySwap}\index{CitySwap@{CitySwap}} +} +Its swaps two vertices randomly choosen. + + +{\tt \#include $<$city\_\-swap.h$>$} + +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classCitySwap_7e6958b62048c89604cbf046b86bdf2d}{ +bool \hyperlink{classCitySwap_7e6958b62048c89604cbf046b86bdf2d}{operator()} (Route \&\_\-\_\-route)} +\label{classCitySwap_7e6958b62048c89604cbf046b86bdf2d} + +\end{CompactItemize} + + +\subsection{Detailed Description} +Its swaps two vertices randomly choosen. + + + +Definition at line 18 of file city\_\-swap.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +city\_\-swap.h\item +city\_\-swap.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classDisplayBestRoute.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classDisplayBestRoute.tex new file mode 100644 index 000000000..e9fb126f7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classDisplayBestRoute.tex @@ -0,0 +1,38 @@ +\hypertarget{classDisplayBestRoute}{ +\section{Display\-Best\-Route Class Reference} +\label{classDisplayBestRoute}\index{DisplayBestRoute@{DisplayBestRoute}} +} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classDisplayBestRoute_db263e38f1e82174f811bf62f323f87f}{ +\hyperlink{classDisplayBestRoute_db263e38f1e82174f811bf62f323f87f}{Display\-Best\-Route} (eo\-Pop$<$ Route $>$ \&\_\-\_\-pop)} +\label{classDisplayBestRoute_db263e38f1e82174f811bf62f323f87f} + +\item +\hypertarget{classDisplayBestRoute_ee879344a6d8b81a04d4eabbed2c7a04}{ +void \hyperlink{classDisplayBestRoute_ee879344a6d8b81a04d4eabbed2c7a04}{operator()} ()} +\label{classDisplayBestRoute_ee879344a6d8b81a04d4eabbed2c7a04} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classDisplayBestRoute_5270aabbf294d2deca9878934216eb89}{ +eo\-Pop$<$ Route $>$ \& \hyperlink{classDisplayBestRoute_5270aabbf294d2deca9878934216eb89}{pop}} +\label{classDisplayBestRoute_5270aabbf294d2deca9878934216eb89} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 18 of file display\_\-best\_\-route.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +display\_\-best\_\-route.h\item +display\_\-best\_\-route.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classEdgeXover.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classEdgeXover.tex new file mode 100644 index 000000000..eb6d6a5d5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classEdgeXover.tex @@ -0,0 +1,66 @@ +\hypertarget{classEdgeXover}{ +\section{Edge\-Xover Class Reference} +\label{classEdgeXover}\index{EdgeXover@{EdgeXover}} +} +Edge Crossover. + + +{\tt \#include $<$edge\_\-xover.h$>$} + +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classEdgeXover_cb1c0a103106a4d3319540cb23163a79}{ +bool \hyperlink{classEdgeXover_cb1c0a103106a4d3319540cb23163a79}{operator()} (Route \&\_\-\_\-route1, Route \&\_\-\_\-route2)} +\label{classEdgeXover_cb1c0a103106a4d3319540cb23163a79} + +\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classEdgeXover_88c2d4c9a878454a32d56010f3dddc27}{ +void \hyperlink{classEdgeXover_88c2d4c9a878454a32d56010f3dddc27}{cross} (const Route \&\_\-\_\-par1, const Route \&\_\-\_\-par2, Route \&\_\-\_\-child)} +\label{classEdgeXover_88c2d4c9a878454a32d56010f3dddc27} + +\item +\hypertarget{classEdgeXover_1b3a4c75dd9a034c81af6d89d85d30f5}{ +void \hyperlink{classEdgeXover_1b3a4c75dd9a034c81af6d89d85d30f5}{remove\_\-entry} (unsigned \_\-\_\-vertex, std::vector$<$ std::set$<$ unsigned $>$ $>$ \&\_\-\_\-map)} +\label{classEdgeXover_1b3a4c75dd9a034c81af6d89d85d30f5} + +\item +\hypertarget{classEdgeXover_04de96aa1016836e0ba5f4b952a5fa16}{ +void \hyperlink{classEdgeXover_04de96aa1016836e0ba5f4b952a5fa16}{build\_\-map} (const Route \&\_\-\_\-par1, const Route \&\_\-\_\-par2)} +\label{classEdgeXover_04de96aa1016836e0ba5f4b952a5fa16} + +\item +\hypertarget{classEdgeXover_2d3045ef503d8b16a27e11fdc23ca11c}{ +void \hyperlink{classEdgeXover_2d3045ef503d8b16a27e11fdc23ca11c}{add\_\-vertex} (unsigned \_\-\_\-vertex, Route \&\_\-\_\-child)} +\label{classEdgeXover_2d3045ef503d8b16a27e11fdc23ca11c} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classEdgeXover_d41399c6effb54ee48c722f1e19cb3c3}{ +std::vector$<$ std::set$<$ unsigned $>$ $>$ \hyperlink{classEdgeXover_d41399c6effb54ee48c722f1e19cb3c3}{\_\-map}} +\label{classEdgeXover_d41399c6effb54ee48c722f1e19cb3c3} + +\item +\hypertarget{classEdgeXover_46d4d4724cf6d660b1a7ab4a346573d4}{ +std::vector$<$ bool $>$ \hyperlink{classEdgeXover_46d4d4724cf6d660b1a7ab4a346573d4}{visited}} +\label{classEdgeXover_46d4d4724cf6d660b1a7ab4a346573d4} + +\end{CompactItemize} + + +\subsection{Detailed Description} +Edge Crossover. + + + +Definition at line 20 of file edge\_\-xover.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +edge\_\-xover.h\item +edge\_\-xover.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classMergeRouteEval.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classMergeRouteEval.eps new file mode 100644 index 000000000..042e549fd --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classMergeRouteEval.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 239.521 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.0875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(MergeRouteEval) cw +(peoAggEvalFunc< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (MergeRouteEval) 0 0 box + (peoAggEvalFunc< EOT >) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classMergeRouteEval.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classMergeRouteEval.pdf new file mode 100644 index 000000000..2bf85fb2a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classMergeRouteEval.pdf @@ -0,0 +1,74 @@ +%PDF-1.3 +%Çì¢ +5 0 obj +<> +stream +xœ•NÍJ1¾ÏSÌQ=Œ3ùˆ °z±ædIƒ²kmµúú&Ûµ¬àEBf¾ß-2 r{óìG8_y,ïÀx[-ÈDÀyô#^§J +h4£ ¦5ÄR9LJ+T–¬·˜F8¹Ë»’W›ýGî>Ÿ†Óô]‚ÐŽ¬v‚_Uû Mm™½fòJã.Ãã?£)犗ê0E¿åÍU)-öfÿÚ_`wŸðòØ ŠŒ2öäÉ,´vÊ.°ñ° +GGp¨Ì_‡|ò5 |j¸5P´XÒ• Œ±$qyˆ‘b> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000543 00000 n +0000000757 00000 n +0000000484 00000 n +0000000331 00000 n +0000000015 00000 n +0000000312 00000 n +0000000591 00000 n +0000000691 00000 n +0000000632 00000 n +0000000661 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [([èÆ8Ç4d‹ÓÕDtßî)([èÆ8Ç4d‹ÓÕDtßî)] +>> +startxref +914 +%%EOF diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classMergeRouteEval.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classMergeRouteEval.tex new file mode 100644 index 000000000..a4b5a7584 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classMergeRouteEval.tex @@ -0,0 +1,31 @@ +\hypertarget{classMergeRouteEval}{ +\section{Merge\-Route\-Eval Class Reference} +\label{classMergeRouteEval}\index{MergeRouteEval@{MergeRouteEval}} +} +Inheritance diagram for Merge\-Route\-Eval::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classMergeRouteEval} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classMergeRouteEval_29cb0028ac0df4b2cee3a809c8f35dea}{ +void \hyperlink{classMergeRouteEval_29cb0028ac0df4b2cee3a809c8f35dea}{operator()} (Route \&\_\-\_\-route, const int \&\_\-\_\-part\_\-fit)} +\label{classMergeRouteEval_29cb0028ac0df4b2cee3a809c8f35dea} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 16 of file merge\_\-route\_\-eval.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +merge\_\-route\_\-eval.h\item +merge\_\-route\_\-eval.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classOrderXover.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classOrderXover.tex new file mode 100644 index 000000000..b2be110b2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classOrderXover.tex @@ -0,0 +1,38 @@ +\hypertarget{classOrderXover}{ +\section{Order\-Xover Class Reference} +\label{classOrderXover}\index{OrderXover@{OrderXover}} +} +Order Crossover. + + +{\tt \#include $<$order\_\-xover.h$>$} + +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classOrderXover_0ff6aada669eb8173322ed68cda1ac61}{ +bool \hyperlink{classOrderXover_0ff6aada669eb8173322ed68cda1ac61}{operator()} (Route \&\_\-\_\-route1, Route \&\_\-\_\-route2)} +\label{classOrderXover_0ff6aada669eb8173322ed68cda1ac61} + +\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classOrderXover_d2bf90b5f46ac4a344777e17bc5f364d}{ +void \hyperlink{classOrderXover_d2bf90b5f46ac4a344777e17bc5f364d}{cross} (const Route \&\_\-\_\-par1, const Route \&\_\-\_\-par2, Route \&\_\-\_\-child)} +\label{classOrderXover_d2bf90b5f46ac4a344777e17bc5f364d} + +\end{CompactItemize} + + +\subsection{Detailed Description} +Order Crossover. + + + +Definition at line 17 of file order\_\-xover.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +order\_\-xover.h\item +order\_\-xover.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classPartRouteEval.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classPartRouteEval.tex new file mode 100644 index 000000000..bb47a8078 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classPartRouteEval.tex @@ -0,0 +1,48 @@ +\hypertarget{classPartRouteEval}{ +\section{Part\-Route\-Eval Class Reference} +\label{classPartRouteEval}\index{PartRouteEval@{PartRouteEval}} +} +Route Evaluator. + + +{\tt \#include $<$part\_\-route\_\-eval.h$>$} + +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classPartRouteEval_a331566b29bc3227f377004232f05491}{ +\hyperlink{classPartRouteEval_a331566b29bc3227f377004232f05491}{Part\-Route\-Eval} (float \_\-\_\-from, float \_\-\_\-to)} +\label{classPartRouteEval_a331566b29bc3227f377004232f05491} + +\begin{CompactList}\small\item\em Constructor. \item\end{CompactList}\item +\hypertarget{classPartRouteEval_965fab875fb601f17934a6ece761beae}{ +void \hyperlink{classPartRouteEval_965fab875fb601f17934a6ece761beae}{operator()} (Route \&\_\-\_\-route)} +\label{classPartRouteEval_965fab875fb601f17934a6ece761beae} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classPartRouteEval_5bde722e66378b2570ae6c4b4f8df58e}{ +float \hyperlink{classPartRouteEval_5bde722e66378b2570ae6c4b4f8df58e}{from}} +\label{classPartRouteEval_5bde722e66378b2570ae6c4b4f8df58e} + +\item +\hypertarget{classPartRouteEval_de53cc919faa498663f327b72c357da3}{ +float \hyperlink{classPartRouteEval_de53cc919faa498663f327b72c357da3}{to}} +\label{classPartRouteEval_de53cc919faa498663f327b72c357da3} + +\end{CompactItemize} + + +\subsection{Detailed Description} +Route Evaluator. + + + +Definition at line 17 of file part\_\-route\_\-eval.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +part\_\-route\_\-eval.h\item +part\_\-route\_\-eval.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classPartialMappedXover.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classPartialMappedXover.tex new file mode 100644 index 000000000..7a3a82139 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classPartialMappedXover.tex @@ -0,0 +1,38 @@ +\hypertarget{classPartialMappedXover}{ +\section{Partial\-Mapped\-Xover Class Reference} +\label{classPartialMappedXover}\index{PartialMappedXover@{PartialMappedXover}} +} +Partial Mapped Crossover. + + +{\tt \#include $<$partial\_\-mapped\_\-xover.h$>$} + +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classPartialMappedXover_1cda6ea86ca36e5de0125f4ba5cfc695}{ +bool \hyperlink{classPartialMappedXover_1cda6ea86ca36e5de0125f4ba5cfc695}{operator()} (Route \&\_\-\_\-route1, Route \&\_\-\_\-route2)} +\label{classPartialMappedXover_1cda6ea86ca36e5de0125f4ba5cfc695} + +\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classPartialMappedXover_b6d4035544aff3b2b3fe4b0eeea185a2}{ +void \hyperlink{classPartialMappedXover_b6d4035544aff3b2b3fe4b0eeea185a2}{repair} (Route \&\_\-\_\-route, unsigned \_\-\_\-cut1, unsigned \_\-\_\-cut2)} +\label{classPartialMappedXover_b6d4035544aff3b2b3fe4b0eeea185a2} + +\end{CompactItemize} + + +\subsection{Detailed Description} +Partial Mapped Crossover. + + + +Definition at line 17 of file partial\_\-mapped\_\-xover.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +partial\_\-mapped\_\-xover.h\item +partial\_\-mapped\_\-xover.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classRouteEval.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classRouteEval.tex new file mode 100644 index 000000000..ecb4bfa60 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classRouteEval.tex @@ -0,0 +1,25 @@ +\hypertarget{classRouteEval}{ +\section{Route\-Eval Class Reference} +\label{classRouteEval}\index{RouteEval@{RouteEval}} +} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classRouteEval_e10bbe6f792e6f44405953de4f703901}{ +void \hyperlink{classRouteEval_e10bbe6f792e6f44405953de4f703901}{operator()} (Route \&\_\-\_\-route)} +\label{classRouteEval_e10bbe6f792e6f44405953de4f703901} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 16 of file route\_\-eval.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +route\_\-eval.h\item +route\_\-eval.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classRouteInit.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classRouteInit.tex new file mode 100644 index 000000000..4fcb05d82 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classRouteInit.tex @@ -0,0 +1,25 @@ +\hypertarget{classRouteInit}{ +\section{Route\-Init Class Reference} +\label{classRouteInit}\index{RouteInit@{RouteInit}} +} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classRouteInit_b65a7137e114458faadb6a5510c001f7}{ +void \hyperlink{classRouteInit_b65a7137e114458faadb6a5510c001f7}{operator()} (Route \&\_\-\_\-route)} +\label{classRouteInit_b65a7137e114458faadb6a5510c001f7} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 16 of file route\_\-init.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +route\_\-init.h\item +route\_\-init.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOpt.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOpt.eps new file mode 100644 index 000000000..bf59b5b63 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOpt.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 341.88 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.4625 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(TwoOpt) cw +(moMove< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (TwoOpt) 0 0 box + (moMove< EOT >) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOpt.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOpt.pdf new file mode 100644 index 000000000..15496414c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOpt.pdf @@ -0,0 +1,72 @@ +%PDF-1.3 +%Çì¢ +5 0 obj +<> +stream +xœ•OËJCA Ýç+ÎR»ˆ™ÌÄ…Pº*E?(mQ®U±¿ß¹½C¹âJ†’óÊ!l ãë}[éî9âðE‚U«É\èm[ñX)!(Ûh Êž&±qÅ{ØÀ69”J7å4l>¾oË- =‘7œc 85Í+*/2šÛÌMø¹£—ÿEªçœ’…:Çš§Ì:¬‡ŸÝ=–›‚‡k´@%æöÑ¿‰“IjW©ŸaµÞg¶Š÷ s¶èx·½Â}Ñ9˜ ›ÜêTYÜ|óËa¿h‡ž=R¯endstream +endobj +6 0 obj +211 +endobj +4 0 obj +<> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000527 00000 n +0000000741 00000 n +0000000468 00000 n +0000000315 00000 n +0000000015 00000 n +0000000296 00000 n +0000000575 00000 n +0000000675 00000 n +0000000616 00000 n +0000000645 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [(W†ĮֲÂÌôðw›ÅÎ)(W†ĮֲÂÌôðw›ÅÎ)] +>> +startxref +898 +%%EOF diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOpt.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOpt.tex new file mode 100644 index 000000000..f0a2ef474 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOpt.tex @@ -0,0 +1,31 @@ +\hypertarget{classTwoOpt}{ +\section{Two\-Opt Class Reference} +\label{classTwoOpt}\index{TwoOpt@{TwoOpt}} +} +Inheritance diagram for Two\-Opt::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classTwoOpt} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classTwoOpt_ff87d1649a33d42a6d64e8d314ed1af0}{ +void \hyperlink{classTwoOpt_ff87d1649a33d42a6d64e8d314ed1af0}{operator()} (Route \&\_\-\_\-route)} +\label{classTwoOpt_ff87d1649a33d42a6d64e8d314ed1af0} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 17 of file two\_\-opt.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +two\_\-opt.h\item +two\_\-opt.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptIncrEval.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptIncrEval.eps new file mode 100644 index 000000000..bf3b9428f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptIncrEval.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 219.78 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.275 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(TwoOptIncrEval) cw +(moMoveIncrEval< TwoOpt >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (TwoOptIncrEval) 0 0 box + (moMoveIncrEval< TwoOpt >) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptIncrEval.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptIncrEval.pdf new file mode 100644 index 000000000..5258d291d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptIncrEval.pdf @@ -0,0 +1,73 @@ +%PDF-1.3 +%Çì¢ +5 0 obj +<> +stream +xœ•PÍJÄ0¾ÏSÌQ=Œ™i¦É€xñ ¢æ¤ì.JcÝUv_ߤ­ZÁ‹„0d¾_²CGŒ®žyvÎnßÁáu¹[ØœG—ñ*RÄ&’±¦ LbFæH¬E(81e8IÇáîíãæµÛ¯OýizU‚{h„¼˜á±ˆŸ¡ÊÕ9‡­¤q¿†Çf·$ìY«ó‡Ûá°þоÀ© +^~—(:±@òGödWû‰.°<=-ESì ó×bÆG[¶|Ωpqj}ùª6…!^™]nŠ6g¥é'ðZÎendstream +endobj +6 0 obj +224 +endobj +4 0 obj +<> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000540 00000 n +0000000754 00000 n +0000000481 00000 n +0000000328 00000 n +0000000015 00000 n +0000000309 00000 n +0000000588 00000 n +0000000688 00000 n +0000000629 00000 n +0000000658 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [(¢kfH‘\r^‘Ë,âÑ[ˆÊ)(¢kfH‘\r^‘Ë,âÑ[ˆÊ)] +>> +startxref +911 +%%EOF diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptIncrEval.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptIncrEval.tex new file mode 100644 index 000000000..1f7217ba0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptIncrEval.tex @@ -0,0 +1,31 @@ +\hypertarget{classTwoOptIncrEval}{ +\section{Two\-Opt\-Incr\-Eval Class Reference} +\label{classTwoOptIncrEval}\index{TwoOptIncrEval@{TwoOptIncrEval}} +} +Inheritance diagram for Two\-Opt\-Incr\-Eval::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classTwoOptIncrEval} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classTwoOptIncrEval_48500077e651c4c6152daef8a396be39}{ +int \hyperlink{classTwoOptIncrEval_48500077e651c4c6152daef8a396be39}{operator()} (const \hyperlink{classTwoOpt}{Two\-Opt} \&\_\-\_\-move, const Route \&\_\-\_\-route)} +\label{classTwoOptIncrEval_48500077e651c4c6152daef8a396be39} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 15 of file two\_\-opt\_\-incr\_\-eval.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +two\_\-opt\_\-incr\_\-eval.h\item +two\_\-opt\_\-incr\_\-eval.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptInit.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptInit.eps new file mode 100644 index 000000000..29f75025b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptInit.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 264.901 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.8875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(TwoOptInit) cw +(moMoveInit< TwoOpt >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (TwoOptInit) 0 0 box + (moMoveInit< TwoOpt >) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptInit.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptInit.pdf new file mode 100644 index 000000000..6cac2da2d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptInit.pdf @@ -0,0 +1,73 @@ +%PDF-1.3 +%Çì¢ +5 0 obj +<> +stream +xœ•PËN1 ¼û+æŒÇ&+¡â€?¨ÚªéR¨èïã% ´â„¢ÈŠgÆ3ñ +ÏTç•.ŸVï$¸µ»¢éS™W\#e„޽“eIM¬Ð Üù—Xœx”Jgå0<¼îï¶ëýyÙÐM¡Gò™;‘Œƒ ×4J£ˆ %Ç¢ÞôüOßžý8P³rpÍ·÷ÃÇbô½BË€ÙOÅØ"þunÂ¥sñ«í©³}/Æ> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000536 00000 n +0000000750 00000 n +0000000477 00000 n +0000000325 00000 n +0000000015 00000 n +0000000306 00000 n +0000000584 00000 n +0000000684 00000 n +0000000625 00000 n +0000000654 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [(×§ŸL¿W=¾3·Ð6škq)(×§ŸL¿W=¾3·Ð6škq)] +>> +startxref +907 +%%EOF diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptInit.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptInit.tex new file mode 100644 index 000000000..0172ebb3b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptInit.tex @@ -0,0 +1,31 @@ +\hypertarget{classTwoOptInit}{ +\section{Two\-Opt\-Init Class Reference} +\label{classTwoOptInit}\index{TwoOptInit@{TwoOptInit}} +} +Inheritance diagram for Two\-Opt\-Init::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classTwoOptInit} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classTwoOptInit_5bf6af064d37ebd955ffb5a623e78e1b}{ +void \hyperlink{classTwoOptInit_5bf6af064d37ebd955ffb5a623e78e1b}{operator()} (\hyperlink{classTwoOpt}{Two\-Opt} \&\_\-\_\-move, const Route \&\_\-\_\-route)} +\label{classTwoOptInit_5bf6af064d37ebd955ffb5a623e78e1b} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 16 of file two\_\-opt\_\-init.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +two\_\-opt\_\-init.h\item +two\_\-opt\_\-init.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptNext.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptNext.eps new file mode 100644 index 000000000..f9ec94747 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptNext.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 250 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(TwoOptNext) cw +(moNextMove< TwoOpt >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (TwoOptNext) 0 0 box + (moNextMove< TwoOpt >) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptNext.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptNext.pdf new file mode 100644 index 000000000..c39b65653 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptNext.pdf @@ -0,0 +1,73 @@ +%PDF-1.3 +%Çì¢ +5 0 obj +<> +stream +xœ•OÍJ1¾ÏSÌQ=Œ™L&?P<âIEÍ”mQÖjq}|g»[mÁ‹„0d¾ßlÑ£Ï<— .Ÿ®?Àá­Ý5l÷œÇ²áu5RÆÈ©f¬+˜ÄŒ,BI z¥X²A ÎêÐ?¼íÝy}…› + ‘ ã`Â¥êœÃ$|ôøÞÁó?s3‰Æˆœ<©ò>·õcæ]ÿÙ-pê€W? Lb&õ$Ìðz„µéÉì˜¤àÆ˜'‹>ûþâóbÄUÉYKñL1ÅûL‘“M)TÊ‘ÍêÂú~1TY endstream +endobj +6 0 obj +221 +endobj +4 0 obj +<> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000534 00000 n +0000000748 00000 n +0000000475 00000 n +0000000325 00000 n +0000000015 00000 n +0000000306 00000 n +0000000582 00000 n +0000000682 00000 n +0000000623 00000 n +0000000652 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [(•{\n¢™MS\rš¸`]Ò> +startxref +905 +%%EOF diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptNext.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptNext.tex new file mode 100644 index 000000000..39722ee75 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptNext.tex @@ -0,0 +1,31 @@ +\hypertarget{classTwoOptNext}{ +\section{Two\-Opt\-Next Class Reference} +\label{classTwoOptNext}\index{TwoOptNext@{TwoOptNext}} +} +Inheritance diagram for Two\-Opt\-Next::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classTwoOptNext} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classTwoOptNext_baf229b2e056f39ab971cf2ac66a833e}{ +bool \hyperlink{classTwoOptNext_baf229b2e056f39ab971cf2ac66a833e}{operator()} (\hyperlink{classTwoOpt}{Two\-Opt} \&\_\-\_\-move, const Route \&\_\-\_\-route)} +\label{classTwoOptNext_baf229b2e056f39ab971cf2ac66a833e} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 16 of file two\_\-opt\_\-next.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +two\_\-opt\_\-next.h\item +two\_\-opt\_\-next.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptRand.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptRand.tex new file mode 100644 index 000000000..63f0eb039 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/classTwoOptRand.tex @@ -0,0 +1,25 @@ +\hypertarget{classTwoOptRand}{ +\section{Two\-Opt\-Rand Class Reference} +\label{classTwoOptRand}\index{TwoOptRand@{TwoOptRand}} +} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classTwoOptRand_e2f362f359517c027f6f22fba0aab375}{ +void \hyperlink{classTwoOptRand_e2f362f359517c027f6f22fba0aab375}{operator()} (\hyperlink{classTwoOpt}{Two\-Opt} \&\_\-\_\-move, const Route \&\_\-\_\-route)} +\label{classTwoOptRand_e2f362f359517c027f6f22fba0aab375} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 16 of file two\_\-opt\_\-rand.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +two\_\-opt\_\-rand.h\item +two\_\-opt\_\-rand.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/doxygen.sty b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/doxygen.sty new file mode 100644 index 000000000..02a379217 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/doxygen.sty @@ -0,0 +1,78 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} +\RequirePackage{calc} +\RequirePackage{array} +\pagestyle{fancyplain} +\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}} +\renewcommand{\chaptermark}[1]{\markboth{#1}{}} +\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} +\lhead[\fancyplain{}{\bfseries\thepage}] + {\fancyplain{}{\bfseries\rightmark}} +\rhead[\fancyplain{}{\bfseries\leftmark}] + {\fancyplain{}{\bfseries\thepage}} +\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Tue Jan 9 15:47:41 2007 for Paradis\-EO-PEO - Lessons by Doxygen }]{} +\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Tue Jan 9 15:47:41 2007 for Paradis\-EO-PEO - Lessons by Doxygen }} +\cfoot{} +\newenvironment{Code} +{\footnotesize} +{\normalsize} +\newcommand{\doxyref}[3]{\textbf{#1} (\textnormal{#2}\,\pageref{#3})} +\newenvironment{DocInclude} +{\footnotesize} +{\normalsize} +\newenvironment{VerbInclude} +{\footnotesize} +{\normalsize} +\newenvironment{Image} +{\begin{figure}[H]} +{\end{figure}} +\newenvironment{ImageNoCaption}{}{} +\newenvironment{CompactList} +{\begin{list}{}{ + \setlength{\leftmargin}{0.5cm} + \setlength{\itemsep}{0pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \renewcommand{\makelabel}{\hfill}}} +{\end{list}} +\newenvironment{CompactItemize} +{ + \begin{itemize} + \setlength{\itemsep}{-3pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \setlength{\partopsep}{0pt} +} +{\end{itemize}} +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp} +\newlength{\tmplength} +\newenvironment{TabularC}[1] +{ +\setlength{\tmplength} + {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)} + \par\begin{tabular*}{\linewidth} + {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|} +} +{\end{tabular*}\par} +\newcommand{\entrylabel}[1]{ + {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\vspace{1.5\baselineskip}}}} +\newenvironment{Desc} +{\begin{list}{} + { + \settowidth{\labelwidth}{40pt} + \setlength{\leftmargin}{\labelwidth} + \setlength{\parsep}{0pt} + \setlength{\itemsep}{-4pt} + \renewcommand{\makelabel}{\entrylabel} + } +} +{\end{list}} +\newenvironment{Indent} + {\begin{list}{}{\setlength{\leftmargin}{0.5cm}} + \item[]\ignorespaces} + {\unskip\end{list}} +\setlength{\parindent}{0cm} +\setlength{\parskip}{0.2cm} +\addtocounter{secnumdepth}{1} +\sloppy +\usepackage[T1]{fontenc} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/hierarchy.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/hierarchy.tex new file mode 100644 index 000000000..8d0211ad2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/hierarchy.tex @@ -0,0 +1,27 @@ +\section{Paradis\-EO-PEO - Lessons Class Hierarchy} +This inheritance list is sorted roughly, but not completely, alphabetically:\begin{CompactList} +\item \contentsline{section}{City\-Swap}{\pageref{classCitySwap}}{} +\item \contentsline{section}{Display\-Best\-Route}{\pageref{classDisplayBestRoute}}{} +\item \contentsline{section}{Edge\-Xover}{\pageref{classEdgeXover}}{} +\item mo\-Move$<$ EOT $>${\tt \mbox{[}external\mbox{]}}\begin{CompactList} +\item \contentsline{section}{Two\-Opt}{\pageref{classTwoOpt}}{} +\end{CompactList} +\item mo\-Move\-Incr\-Eval$<$ Two\-Opt $>${\tt \mbox{[}external\mbox{]}}\begin{CompactList} +\item \contentsline{section}{Two\-Opt\-Incr\-Eval}{\pageref{classTwoOptIncrEval}}{} +\end{CompactList} +\item mo\-Move\-Init$<$ Two\-Opt $>${\tt \mbox{[}external\mbox{]}}\begin{CompactList} +\item \contentsline{section}{Two\-Opt\-Init}{\pageref{classTwoOptInit}}{} +\end{CompactList} +\item mo\-Next\-Move$<$ Two\-Opt $>${\tt \mbox{[}external\mbox{]}}\begin{CompactList} +\item \contentsline{section}{Two\-Opt\-Next}{\pageref{classTwoOptNext}}{} +\end{CompactList} +\item \contentsline{section}{Order\-Xover}{\pageref{classOrderXover}}{} +\item \contentsline{section}{Partial\-Mapped\-Xover}{\pageref{classPartialMappedXover}}{} +\item \contentsline{section}{Part\-Route\-Eval}{\pageref{classPartRouteEval}}{} +\item peo\-Agg\-Eval\-Func$<$ EOT $>${\tt \mbox{[}external\mbox{]}}\begin{CompactList} +\item \contentsline{section}{Merge\-Route\-Eval}{\pageref{classMergeRouteEval}}{} +\end{CompactList} +\item \contentsline{section}{Route\-Eval}{\pageref{classRouteEval}}{} +\item \contentsline{section}{Route\-Init}{\pageref{classRouteInit}}{} +\item \contentsline{section}{Two\-Opt\-Rand}{\pageref{classTwoOptRand}}{} +\end{CompactList} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/refman.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/refman.tex new file mode 100644 index 000000000..67753cbde --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/latex/refman.tex @@ -0,0 +1,66 @@ +\documentclass[a4paper]{book} +\usepackage{a4wide} +\usepackage{makeidx} +\usepackage{fancyhdr} +\usepackage{graphicx} +\usepackage{multicol} +\usepackage{float} +\usepackage{textcomp} +\usepackage{alltt} +\usepackage{times} +\usepackage{ifpdf} +\ifpdf +\usepackage[pdftex, + pagebackref=true, + colorlinks=true, + linkcolor=blue + ]{hyperref} +\else +\usepackage[ps2pdf, + pagebackref=true, + colorlinks=true, + linkcolor=blue + ]{hyperref} +\usepackage{pspicture} +\fi +\usepackage{doxygen} +\makeindex +\setcounter{tocdepth}{1} +\renewcommand{\footrulewidth}{0.4pt} +\begin{document} +\begin{titlepage} +\vspace*{7cm} +\begin{center} +{\Large Paradis\-EO-PEO - Lessons Reference Manual\\[1ex]\large 0.1 }\\ +\vspace*{1cm} +{\large Generated by Doxygen 1.4.7}\\ +\vspace*{0.5cm} +{\small Tue Jan 9 15:47:41 2007}\\ +\end{center} +\end{titlepage} +\clearemptydoublepage +\pagenumbering{roman} +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} +\chapter{Paradis\-EO-PEO - Lessons Hierarchical Index} +\input{hierarchy} +\chapter{Paradis\-EO-PEO - Lessons Class Index} +\input{annotated} +\chapter{Paradis\-EO-PEO - Lessons Class Documentation} +\input{classCitySwap} +\include{classDisplayBestRoute} +\include{classEdgeXover} +\include{classMergeRouteEval} +\include{classOrderXover} +\include{classPartialMappedXover} +\include{classPartRouteEval} +\include{classRouteEval} +\include{classRouteInit} +\include{classTwoOpt} +\include{classTwoOptIncrEval} +\include{classTwoOptInit} +\include{classTwoOptNext} +\include{classTwoOptRand} +\printindex +\end{document} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/CitySwap.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/CitySwap.3 new file mode 100644 index 000000000..52e2545bc --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/CitySwap.3 @@ -0,0 +1,28 @@ +.TH "CitySwap" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO - Lessons" \" -*- nroff -*- +.ad l +.nh +.SH NAME +CitySwap \- Its swaps two vertices randomly choosen. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "bool \fBoperator()\fP (Route &__route)" +.br +.in -1c +.SH "Detailed Description" +.PP +Its swaps two vertices randomly choosen. +.PP +Definition at line 18 of file city_swap.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO - Lessons from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/DisplayBestRoute.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/DisplayBestRoute.3 new file mode 100644 index 000000000..706c71f46 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/DisplayBestRoute.3 @@ -0,0 +1,32 @@ +.TH "DisplayBestRoute" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO - Lessons" \" -*- nroff -*- +.ad l +.nh +.SH NAME +DisplayBestRoute \- +.SH SYNOPSIS +.br +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBDisplayBestRoute\fP (eoPop< Route > &__pop)" +.br +.ti -1c +.RI "void \fBoperator()\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "eoPop< Route > & \fBpop\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 18 of file display_best_route.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO - Lessons from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/EdgeXover.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/EdgeXover.3 new file mode 100644 index 000000000..461078638 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/EdgeXover.3 @@ -0,0 +1,54 @@ +.TH "EdgeXover" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO - Lessons" \" -*- nroff -*- +.ad l +.nh +.SH NAME +EdgeXover \- Edge Crossover. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "bool \fBoperator()\fP (Route &__route1, Route &__route2)" +.br +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBcross\fP (const Route &__par1, const Route &__par2, Route &__child)" +.br +.ti -1c +.RI "void \fBremove_entry\fP (unsigned __vertex, std::vector< std::set< unsigned > > &__map)" +.br +.ti -1c +.RI "void \fBbuild_map\fP (const Route &__par1, const Route &__par2)" +.br +.ti -1c +.RI "void \fBadd_vertex\fP (unsigned __vertex, Route &__child)" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "std::vector< std::set< unsigned > > \fB_map\fP" +.br +.ti -1c +.RI "std::vector< bool > \fBvisited\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Edge Crossover. +.PP +Definition at line 20 of file edge_xover.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO - Lessons from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/MergeRouteEval.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/MergeRouteEval.3 new file mode 100644 index 000000000..8b17e149e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/MergeRouteEval.3 @@ -0,0 +1,24 @@ +.TH "MergeRouteEval" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO - Lessons" \" -*- nroff -*- +.ad l +.nh +.SH NAME +MergeRouteEval \- +.SH SYNOPSIS +.br +.PP +Inherits \fBpeoAggEvalFunc< EOT >< eoVector< int, Node > >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBoperator()\fP (Route &__route, const int &__part_fit)" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 16 of file merge_route_eval.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO - Lessons from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/OrderXover.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/OrderXover.3 new file mode 100644 index 000000000..ac506af14 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/OrderXover.3 @@ -0,0 +1,35 @@ +.TH "OrderXover" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO - Lessons" \" -*- nroff -*- +.ad l +.nh +.SH NAME +OrderXover \- Order Crossover. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "bool \fBoperator()\fP (Route &__route1, Route &__route2)" +.br +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBcross\fP (const Route &__par1, const Route &__par2, Route &__child)" +.br +.in -1c +.SH "Detailed Description" +.PP +Order Crossover. +.PP +Definition at line 17 of file order_xover.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO - Lessons from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/PartRouteEval.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/PartRouteEval.3 new file mode 100644 index 000000000..17f6c1dc1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/PartRouteEval.3 @@ -0,0 +1,42 @@ +.TH "PartRouteEval" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO - Lessons" \" -*- nroff -*- +.ad l +.nh +.SH NAME +PartRouteEval \- Route Evaluator. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBPartRouteEval\fP (float __from, float __to)" +.br +.RI "\fIConstructor. \fP" +.ti -1c +.RI "void \fBoperator()\fP (Route &__route)" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "float \fBfrom\fP" +.br +.ti -1c +.RI "float \fBto\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Route Evaluator. +.PP +Definition at line 17 of file part_route_eval.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO - Lessons from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/PartialMappedXover.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/PartialMappedXover.3 new file mode 100644 index 000000000..0d0a76278 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/PartialMappedXover.3 @@ -0,0 +1,35 @@ +.TH "PartialMappedXover" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO - Lessons" \" -*- nroff -*- +.ad l +.nh +.SH NAME +PartialMappedXover \- Partial Mapped Crossover. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "bool \fBoperator()\fP (Route &__route1, Route &__route2)" +.br +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBrepair\fP (Route &__route, unsigned __cut1, unsigned __cut2)" +.br +.in -1c +.SH "Detailed Description" +.PP +Partial Mapped Crossover. +.PP +Definition at line 17 of file partial_mapped_xover.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO - Lessons from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/RouteEval.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/RouteEval.3 new file mode 100644 index 000000000..ecc19358c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/RouteEval.3 @@ -0,0 +1,22 @@ +.TH "RouteEval" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO - Lessons" \" -*- nroff -*- +.ad l +.nh +.SH NAME +RouteEval \- +.SH SYNOPSIS +.br +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBoperator()\fP (Route &__route)" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 16 of file route_eval.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO - Lessons from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/RouteInit.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/RouteInit.3 new file mode 100644 index 000000000..c82a53858 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/RouteInit.3 @@ -0,0 +1,22 @@ +.TH "RouteInit" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO - Lessons" \" -*- nroff -*- +.ad l +.nh +.SH NAME +RouteInit \- +.SH SYNOPSIS +.br +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBoperator()\fP (Route &__route)" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 16 of file route_init.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO - Lessons from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/TwoOpt.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/TwoOpt.3 new file mode 100644 index 000000000..6a7c83385 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/TwoOpt.3 @@ -0,0 +1,24 @@ +.TH "TwoOpt" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO - Lessons" \" -*- nroff -*- +.ad l +.nh +.SH NAME +TwoOpt \- +.SH SYNOPSIS +.br +.PP +Inherits \fBmoMove< EOT >< eoVector< int, Node > >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBoperator()\fP (Route &__route)" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 17 of file two_opt.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO - Lessons from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/TwoOptIncrEval.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/TwoOptIncrEval.3 new file mode 100644 index 000000000..a6390ce25 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/TwoOptIncrEval.3 @@ -0,0 +1,24 @@ +.TH "TwoOptIncrEval" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO - Lessons" \" -*- nroff -*- +.ad l +.nh +.SH NAME +TwoOptIncrEval \- +.SH SYNOPSIS +.br +.PP +Inherits \fBmoMoveIncrEval< TwoOpt >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "int \fBoperator()\fP (const \fBTwoOpt\fP &__move, const Route &__route)" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 15 of file two_opt_incr_eval.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO - Lessons from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/TwoOptInit.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/TwoOptInit.3 new file mode 100644 index 000000000..7b40ebb14 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/TwoOptInit.3 @@ -0,0 +1,24 @@ +.TH "TwoOptInit" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO - Lessons" \" -*- nroff -*- +.ad l +.nh +.SH NAME +TwoOptInit \- +.SH SYNOPSIS +.br +.PP +Inherits \fBmoMoveInit< TwoOpt >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBoperator()\fP (\fBTwoOpt\fP &__move, const Route &__route)" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 16 of file two_opt_init.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO - Lessons from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/TwoOptNext.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/TwoOptNext.3 new file mode 100644 index 000000000..0a2e989e5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/TwoOptNext.3 @@ -0,0 +1,24 @@ +.TH "TwoOptNext" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO - Lessons" \" -*- nroff -*- +.ad l +.nh +.SH NAME +TwoOptNext \- +.SH SYNOPSIS +.br +.PP +Inherits \fBmoNextMove< TwoOpt >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "bool \fBoperator()\fP (\fBTwoOpt\fP &__move, const Route &__route)" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 16 of file two_opt_next.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO - Lessons from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/TwoOptRand.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/TwoOptRand.3 new file mode 100644 index 000000000..dd501c3b6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/lsnshared/man/man3/TwoOptRand.3 @@ -0,0 +1,22 @@ +.TH "TwoOptRand" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO - Lessons" \" -*- nroff -*- +.ad l +.nh +.SH NAME +TwoOptRand \- +.SH SYNOPSIS +.br +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBoperator()\fP (\fBTwoOpt\fP &__move, const Route &__route)" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 16 of file two_opt_rand.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO - Lessons from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/main.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/main.html new file mode 100644 index 000000000..9647f5c35 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/main.html @@ -0,0 +1,106 @@ + + +ParadisEO-PEO: The ParadisEO-PEO Framework + + + + +
+
+

The ParadisEO-PEO Framework

+

+

0.1

+intro

+ParadisEO is a white-box object-oriented framework dedicated to the reusable design of parallel and distributed metaheuristics (PDM). ParadisEO provides a broad range of features including evolutionary algorithms (EA), local searches (LS), the most common parallel and distributed models and hybridization mechanisms, etc. This high content and utility encourages its use at European level. ParadisEO is based on a clear conceptual separation of the solution methods from the problems they are intended to solve. This separation confers to the user a maximum code and design reuse. Furthermore, the fine-grained nature of the classes provided by the framework allow a higher flexibility compared to other frameworks. ParadisEO is one of the rare frameworks that provide the most common parallel and distributed models. Their implementation is portable on distributed-memory machines as well as on shared-memory multiprocessors, as it uses standard libraries such as MPI, PVM and PThreads. The models can be exploited in a transparent way, one has just to instantiate their associated provided classes. Their experimentation on the radio network design real-world application demonstrate their efficiency.

+In practice, combinatorial optimization problems are often NP-hard, CPU time-consuming, and evolve over time. Unlike exact methods, metaheuristics allow to tackle large-size problems instances by delivering satisfactory solutions in a reasonable time. Metaheuristics are general-purpose heuristics that split in two categories: evolutionary algorithms (EA) and local search methods (LS). These two families have complementary characteristics: EA allow a better exploration of the search space, while LS have the power to intensify the search in promising regions. Their hybridization allows to deliver robust and better solutions

+Although serial metaheuristics have a polynomial temporal complexity, they remain unsatisfactory for industrial problems. Parallel and distributed computing is a powerful way to deal with the performance issue of these problems. Numerous parallel and distributed metaheuristics (PDM) and their implementations have been proposed, and are available on theWeb. They can be reused and adapted to his/her own problems. However, the user has to deeply examine the code and rewrite its problem-specific sections. The task is tedious, errorprone, takes along time and makes harder the produced code maintenance. A better way to reuse the code of existing PDM is the reuse through libraries. These are often more reliable as they are more tested and documented. They allow a better maintainability and efficiency. However, libraries do not allow the reuse of design.

+Parallel and distributed metaheuristics

+

+Parallel distributed evolutionary algorithms

+Evolutionary Algorithms (EA) are based on the iterative improvement of a population of solutions. At each step, individuals are selected, paired and recombined in order to generate new solutions that replace other ones, and so on. As the algorithm converges, the population is mainly composed of individuals well adapted to the "environment", for instance the problem. The main features that characterize EA are the way the population is initialized, the selection strategy (deterministic/stochastic) by fostering "good" solutions, the replacement strategy that discards individuals, and the continuation/stopping criterion to decide whether the evolution should go on or not.

+Basically, three major parallel and distributed models for EA can been distinguished: the island (a)synchronous cooperative model, the parallel evaluation of the population, and the distributed evaluation of a single solution.

    +
  • +Island (a)synchronous cooperative model. Different EA are simultaneously deployed to cooperate for computing better and robust solutions. They exchange in an asynchronous way genetic stuff to diversify the search. The objective is to allow to delay the global convergence, especially when theEAare heterogeneous regarding the variation operators. The migration of individuals follows a policy defined by few parameters: the migration decision criterion, the exchange topology, the number of emigrants, the emigrants selection policy, and the replacement/integration policy.

    +

  • +
  • +Parallel evaluation of the population. It is required as it is in general the most timeconsuming. The parallel evaluation follows the centralized model. The farmer applies the following operations: selection, transformation and replacement as they require a global management of the population. At each generation, it distributes the set of new solutions between differentworkers. These evaluate and return back the solutions and their quality values. An efficient execution is often obtained particularly when the evaluation of each solution is costly. The two main advantages of an asynchronous model over the synchronous model are: (1) the fault tolerance of the asynchronous model; (2) the robustness in case the fitness computation can take very different computation times (e.g. for nonlinear numerical optimization). Whereas some time-out detection can be used to address the former issue, the latter one can be partially overcome if the grain is set to very small values, as individuals will be sent out for evaluations upon request of the workers.

    +

  • +
  • +Distributed evaluation of a single solution. The quality of each solution is evaluated in a parallel centralized way. That model is particularly interesting when the evaluation function can be itself parallelized as it is CPU time-consuming and/or IO intensive. In that case, the function can be viewed as an aggregation of a certain number of partial functions. The partial functions could also be identical if for example the problem to deal with is a data mining one. The evaluation is thus data parallel and the accesses to data base are performed in parallel. Furthermore, a reduction operation is performed on the results returned by the partial functions. As a summary, for this model the user has to indicate a set of partial functions and an aggregation operator of these.
  • +
+

+Parallel distributed local searches

+

+Local searches

+All metaheuristics dedicated to the improvement of a single solution are based on the concept of neighborhood. They start from a solution randomly generated or obtained from another optimization algorithm, and update it, step by step, by replacing the current solution by one of its neighboring candidates. Some criterion have been identified to differentiate such searches: the heuristic internal memory, the choice of the initial solution, the candidate solutions generator, and the selection strategy of candidate moves. Three main algorithms of local search stand out: Hill Climbing (HC), Simulated Annealing (SA) and Tabu Search (TS).

+Parallel local searches

+Two parallel distributed models are commonly used in the literature: the parallel distributed exploration of neighboring candidate solutions model, and the multi-start model.
    +
  • +Parallel exploration of neighboring candidates. It is a low-level Farmer-Worker model that does not alter the behavior of the heuristic. A sequential search computes the same results slower.At the beginning of each iteration, the farmer duplicates the current solution between distributed nodes. Each one manages some candidates and the results are returned to the farmer. The model is efficient if the evaluation of a each solution is time-consuming and/or there are a great deal of candidate neighbors to evaluate. This is obviously not applicable to SA since only one candidate is evaluated at each iteration. Likewise, the efficiency of the model for HC is not always guaranteed as the number of neighboring solutions to process before finding one that improves the current objective function may be highly variable.

    +

  • +
  • +Multi-start model. It consists in simultaneously launching several local searches. They may be heterogeneous, but no information is exchanged between them. The resultswould be identical as if the algorithms were sequentially run.Very often deterministic algorithms differ by the supplied initial solution and/or some other parameters. This trivial model is convenient for low-speed networks of workstations.
  • +
+

+Hybridization

+Recently, hybrid metaheuristics have gained a considerable interest. For many practical or academic optimization problems, the best found solutions are obtained by hybrid algorithms. Combinations of different metaheuristics have provided very powerful search methods. Two levels and two modes of hybridization have been distinguished: Low and High levels, and Relay and Cooperative modes. The low-level hybridization addresses the functional composition of a single optimization method. A function of a given metaheuristic is replaced by another metaheuristic. On the contrary, for high-level hybrid algorithms the different metaheuristics are self-containing, meaning no direct relationship to their internal working is considered. On the other hand, relay hybridization means a set of metaheuristics is applied in a pipeline way. The output of a metaheuristic (except the last) is the input of the following one (except the first). Conversely, co-evolutionist hybridization is a cooperative optimization model. Each metaheuristic performs a search in a solution space, and exchange solutions with others.

+Paradiseo goals and architecture

+The "EO" part of ParadisEO means Evolving Objects. EO is a C++ LGPL open source framework and includes a paradigm-free Evolutionary Computation library (EOlib) dedicated to the flexible design of EA through evolving objects superseding the most common dialects (Genetic Algorithms, Evolution Strategies, Evolutionary Programming and Genetic Programming). Furthermore, EO integrates several services including visualization facilities, on-line definition of parameters, application check-pointing, etc. ParadisEO is an extended version of the EO framework. The extensions include local search methods, hybridization mechanisms, parallelism and distribution mechanisms, and other features that are not addressed in this paper such as multi-objective optimization and grid computing. In the next sections, we present the motivations and goals of ParadisEO, its architecture and some of its main implementation details and issues.

+Motivations and goals

+A framework is normally intended to be exploited by as many users as possible. Therefore, its exploitation could be successful only if some important user criteria are satisfied. The following criteria are the major of them and constitute the main objectives of the ParadisEO framework:

+

    +
  • +Maximum design and code reuse. The framework must provide for the user a whole architecture design of his/her solution method. Moreover, the programmer may redo as little code as possible. This objective requires a clear and maximal conceptual separation between the solution methods and the problems to be solved, and thus a deep domain analysis. The user might therefore develop only the minimal problem-specific code.

    +

  • +
  • +Flexibility and adaptability. It must be possible for the user to easily add new features/ metaheuristics or change existing ones without implicating other components. Furthermore, as in practice existing problems evolve and new others arise these have to be tackled by specializing/adapting the framework components.

    +

  • +
  • +Utility. The framework must allow the user to cover a broad range of metaheuristics, problems, parallel distributed models, hybridization mechanisms, etc.

    +

  • +
  • +Transparent and easy access to performance and robustness. As the optimization applications are often time-consuming the performance issue is crucial. Parallelism and distribution are two important ways to achieve high performance execution. In order to facilitate its use it is implemented so that the user can deploy his/her parallel algorithms in a transparent manner. Moreover, the execution of the algorithms must be robust to guarantee the reliability and the quality of the results. The hybridization mechanism allows to obtain robust and better solutions.

    +

  • +
  • +Portability. In order to satisfy a large number of users the framework must support different material architectures and their associated operating systems.
  • +
+

+ParadisEO architecture

+The architecture of ParadisEO is multi-layer and modular allowing to achieve the objectives quoted above. This allows particularly a high flexibility and adaptability, an easier hybridization, and more code and design reuse. The architecture has three layers identifying three major categories of classes: Solvers, Runners and Helpers.
    +
  • +Helpers. Helpers are low-level classes that perform specific actions related to the evolution or search process. They are split in two categories: Evolutionary helpers (EH) and Local search helpers (LSH). EH include mainly the transformation, selection and replacement operations, the evaluation function and the stopping criterion. LSH can be generic such as the neighborhood explorer class, or specific to the local search metaheuristic like the tabu list manager class in the Tabu Search solution method. On the other hand, there are some special helpers dedicated to the management of parallel and distributed models 2 and 3, such as the communicators that embody the communication services.

    +Helpers cooperate between them and interact with the components of the upper layer i.e. the runners. The runners invoke the helpers through function parameters. Indeed, helpers have not their own data, but they work on the internal data of the runners.

    +

  • +
  • +Runners. The Runners layer contains a set of classes that implement the metaheuristics themselves. They perform the run of the metaheuristics from the initial state or population to the final one. One can distinguish the Evolutionary runners (ER) such as genetic algorithms, evolution strategies, etc., and Local search runners (LSR) like tabu search, simulated annealing and hill climbing. Runners invoke the helpers to perform specific actions on their data. For instance, an ER may ask the fitness function evaluation helper to evaluate its population. An LSR asks the movement helper to perform a given movement on the current state. Furthermore, runners can be serial or parallel distributed.

    +

  • +
  • +Solvers. Solvers are devoted to control the evolution process and/or the search. They generate the initial state (solution or population) and define the strategy for combining and sequencing different metaheuristics. Two types of solvers can be distinguished. Single metaheuristic solvers (SMS) and Multiple metaheuristics solvers (MMS). SMSs are dedicated to the execution of only one metaheuristic.MMS are more complex as they control and sequence several metaheuristics that can be heterogeneous. Solvers interact with the user by getting the input data and delivering the output (best solution, statistics, etc).
  • +
+

+According to the generality of their embedded features, the classes of the architecture split in two major categories: Provided classes and Required classes. Provided classes embody the factored out part of the metaheuristics. They are generic, implemented in the framework, and ensure the control at run time. Required classes are those that must be supplied by the user. They encapsulate the problem-specific aspects of the application. These classes are fixed but not implemented in ParadisEO. The programmer has the burden to develop them using the OO specialization mechanism.

+ParadisEO-PEO Tutorials

+The basisc of the ParadisEO framework philosophy are exposed in a few simple tutorials: +All the presented examples have as case study the traveling salesman problem (TSP). Different operators and auxiliary objects were designed, standing as a common shared source code base. While not being part of the ParadisEO-PEO framework, it may represent a startpoint for a better understanding of the presented tutorials.
Generated on Tue Jan 9 15:47:37 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/mess_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/mess_8cpp-source.html new file mode 100644 index 000000000..ab25d65a3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/mess_8cpp-source.html @@ -0,0 +1,266 @@ + + +ParadisEO-PEO: mess.cpp Source File + + + + +
+
+

mess.cpp

00001 // "mess.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <mpi.h>
+00010 #include <vector>
+00011 
+00012 #include "mess.h"
+00013 #include "../../core/peo_debug.h"
+00014 #include "node.h"
+00015 
+00016 #define MPI_BUF_SIZE 1024*64
+00017         
+00018 static char mpi_buf [MPI_BUF_SIZE];
+00019         
+00020 static int pos_buf ;
+00021 
+00022 static std :: vector <char *> act_buf; /* Active buffers */
+00023 
+00024 static std :: vector <MPI_Request *> act_req; /* Active requests */
+00025 
+00026 void cleanBuffers () {
+00027 
+00028   for (unsigned i = 0; i < act_req.size ();) {
+00029        
+00030     MPI_Status stat ;
+00031     int flag ;
+00032     MPI_Test (act_req [i], & flag, & stat) ;
+00033     if (flag) {
+00034       
+00035       delete act_buf [i] ;
+00036       delete act_req [i] ;
+00037         
+00038       act_buf [i] = act_buf.back () ;
+00039       act_buf.pop_back () ;
+00040       
+00041       act_req [i] = act_req.back () ;
+00042       act_req.pop_back () ;
+00043     }
+00044     else
+00045       i ++;
+00046   } 
+00047 }
+00048 
+00049 void waitBuffers () {
+00050 
+00051   printDebugMessage ("waiting the termination of the asynchronous operations to complete");
+00052 
+00053   for (unsigned i = 0; i < act_req.size (); i ++) {
+00054        
+00055     MPI_Status stat ;
+00056 
+00057     MPI_Wait (act_req [i], & stat) ;
+00058       
+00059     delete act_buf [i] ;
+00060     delete act_req [i] ;
+00061   } 
+00062 }
+00063 
+00064 bool probeMessage (int & __src, int & __tag) {
+00065 
+00066   int flag;
+00067 
+00068   MPI_Status stat;
+00069 
+00070   MPI_Iprobe (MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, & flag, & stat);
+00071 
+00072   __src = stat.MPI_SOURCE;
+00073   __tag = stat.MPI_TAG;
+00074 
+00075   return flag;
+00076 }
+00077 
+00078 void waitMessage () {
+00079 
+00080   MPI_Status stat;  
+00081 
+00082   MPI_Probe (MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, & stat);
+00083 }
+00084 
+00085 void initMessage () {
+00086   
+00087   pos_buf = 0;
+00088 }
+00089 
+00090 void sendMessage (int __to, int __tag) {
+00091 
+00092   cleanBuffers ();  
+00093   act_buf.push_back (new char [pos_buf]);
+00094   act_req.push_back (new MPI_Request);  
+00095   memcpy (act_buf.back (), mpi_buf, pos_buf);  
+00096   MPI_Isend (act_buf.back (), pos_buf, MPI_PACKED, __to, __tag, MPI_COMM_WORLD, act_req.back ()); 
+00097 }
+00098 
+00099 void sendMessageToAll (int __tag) {
+00100 
+00101   for (int i = 0; i < getNumberOfNodes (); i ++)
+00102     sendMessage (i, __tag);
+00103 }
+00104 
+00105 void receiveMessage (int __from, int __tag) {
+00106   
+00107   MPI_Status stat;  
+00108   MPI_Request req;
+00109 
+00110   MPI_Irecv (mpi_buf, MPI_BUF_SIZE, MPI_PACKED, __from, __tag, MPI_COMM_WORLD, & req) ;
+00111   MPI_Wait (& req, & stat) ;
+00112 }
+00113 
+00114 /* Char */
+00115 void pack (const char & __c) {
+00116 
+00117   MPI_Pack ((void *) & __c, 1, MPI_CHAR, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00118 }
+00119 
+00120 /* Float */
+00121 void pack (const float & __f, int __nitem) {
+00122 
+00123   MPI_Pack ((void *) & __f, __nitem, MPI_FLOAT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00124 }
+00125 
+00126 /* Double */
+00127 void pack (const double & __d, int __nitem) {
+00128 
+00129   MPI_Pack ((void *) & __d, __nitem, MPI_DOUBLE, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00130 }
+00131 
+00132 /* Integer */
+00133 void pack (const int & __i, int __nitem) {
+00134 
+00135   MPI_Pack ((void *) & __i, __nitem, MPI_INT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00136 }
+00137 
+00138 /* Unsigned int. */
+00139 void pack (const unsigned int & __ui, int __nitem) {
+00140 
+00141   MPI_Pack ((void *) & __ui, __nitem, MPI_UNSIGNED, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00142 }
+00143 
+00144 /* Short int. */
+00145 void pack (const short & __sh, int __nitem) {
+00146 
+00147   MPI_Pack ((void *) & __sh, __nitem, MPI_SHORT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00148 }
+00149 
+00150 /* Unsigned short */
+00151 void pack (const unsigned short & __ush, int __nitem) {
+00152 
+00153   MPI_Pack ((void *) & __ush, __nitem, MPI_UNSIGNED_SHORT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00154 }
+00155 
+00156 /* Long */
+00157 void pack (const long & __l, int __nitem) {
+00158 
+00159   MPI_Pack ((void *) & __l, __nitem, MPI_LONG, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00160 }
+00161 
+00162 /* Unsigned long */
+00163 void pack (const unsigned long & __ul, int __nitem) {
+00164 
+00165   MPI_Pack ((void *) & __ul, __nitem, MPI_UNSIGNED_LONG, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00166 }
+00167 
+00168 /* String */
+00169 void pack (const char * __str) {
+00170   
+00171   int len = strlen (__str) + 1;
+00172   MPI_Pack (& len, 1, MPI_INT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00173   MPI_Pack ((void *) __str, len, MPI_CHAR, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00174 }
+00175 
+00176 /* Char */
+00177 void unpack (char & __c) {
+00178 
+00179   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __c, 1, MPI_CHAR, MPI_COMM_WORLD);
+00180 }
+00181 
+00182 /* Float */
+00183 void unpack (float & __f, int __nitem) {
+00184 
+00185   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __f, __nitem, MPI_FLOAT, MPI_COMM_WORLD);
+00186 }
+00187 
+00188 /* Double */
+00189 void unpack (double & __d, int __nitem) {
+00190 
+00191   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __d, __nitem, MPI_DOUBLE, MPI_COMM_WORLD);
+00192 }
+00193 
+00194 /* Integer */
+00195 void unpack (int & __i, int __nitem) {
+00196 
+00197   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __i, __nitem, MPI_INT, MPI_COMM_WORLD);
+00198 }
+00199 
+00200 /* Unsigned int. */
+00201 void unpack (unsigned int & __ui, int __nitem) {
+00202 
+00203   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ui, __nitem, MPI_UNSIGNED, MPI_COMM_WORLD);
+00204 }
+00205 
+00206 /* Short int. */
+00207 void unpack (short & __sh, int __nitem) {
+00208 
+00209   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __sh, __nitem, MPI_SHORT, MPI_COMM_WORLD);
+00210 }
+00211 
+00212 /* Unsigned short */
+00213 void unpack (unsigned short & __ush, int __nitem) {
+00214 
+00215   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ush, __nitem, MPI_UNSIGNED_SHORT, MPI_COMM_WORLD);
+00216 }
+00217 
+00218 /* Long */
+00219 void unpack (long & __l, int __nitem) {
+00220 
+00221   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __l, __nitem, MPI_LONG, MPI_COMM_WORLD);
+00222 }
+00223 
+00224 /* Unsigned long */
+00225 void unpack (unsigned long & __ul, int __nitem) {
+00226 
+00227   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ul, __nitem, MPI_UNSIGNED_LONG, MPI_COMM_WORLD);
+00228 }
+00229 
+00230 /* String */
+00231 void unpack (char * __str) {
+00232 
+00233   int len;
+00234   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & len, 1, MPI_INT, MPI_COMM_WORLD);
+00235   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, __str, len, MPI_CHAR, MPI_COMM_WORLD);    
+00236 }
+00237 
+

Generated on Tue Jan 9 15:47:37 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/mess_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/mess_8h-source.html new file mode 100644 index 000000000..ea62162f0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/mess_8h-source.html @@ -0,0 +1,60 @@ + + +ParadisEO-PEO: mess.h Source File + + + + +
+
+

mess.h

00001 // "mess.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __mess_rmc_h
+00010 #define __mess_rmc_h
+00011 
+00012 #include "../../core/messaging.h"
+00013 
+00014 extern void initMessage ();
+00015 
+00016 extern void sendMessage (int __to, int __tag);
+00017 
+00018 extern void sendMessageToAll (int __tag);
+00019 
+00020 extern void receiveMessage (int __from, int __tag);
+00021 
+00022 extern void cleanBuffers ();
+00023 
+00024 extern void waitBuffers ();
+00025 
+00026 extern bool probeMessage (int & __src, int & __tag);
+00027 
+00028 extern void waitMessage ();
+00029 
+00030 #endif
+00031 
+

Generated on Tue Jan 9 15:47:37 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/messaging_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/messaging_8h-source.html new file mode 100644 index 000000000..724a827f3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/messaging_8h-source.html @@ -0,0 +1,133 @@ + + +ParadisEO-PEO: messaging.h Source File + + + + +
+
+

messaging.h

00001 // "messaging.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __mess_h
+00010 #define __mess_h
+00011 
+00012 #include <utility>
+00013 
+00014 /* Char */
+00015 extern void pack (const char & __c); 
+00016 
+00017 /* Float */
+00018 extern void pack (const float & __f, int __nitem = 1); 
+00019 
+00020 /* Double */
+00021 extern void pack (const double & __d, int __nitem = 1); 
+00022 
+00023 /* Integer */
+00024 extern void pack (const int & __i, int __nitem = 1); 
+00025 
+00026 /* Unsigned int. */
+00027 extern void pack (const unsigned int & __ui, int __nitem = 1); 
+00028 
+00029 /* Short int. */
+00030 extern void pack (const short & __sh, int __nitem = 1); 
+00031 
+00032 /* Unsigned short */
+00033 extern void pack (const unsigned short & __ush, int __nitem = 1);
+00034 
+00035 /* Long */
+00036 extern void pack (const long & __l, int __nitem = 1); 
+00037 
+00038 /* Unsigned long */
+00039 extern void pack (const unsigned long & __ul, int __nitem = 1); 
+00040 
+00041 /* String */
+00042 extern void pack (const char * __str); 
+00043 
+00044 /* Pointer */
+00045 template <class T> void pack (const T * __ptr) {
+00046   
+00047   pack ((unsigned long) __ptr); 
+00048 }
+00049 
+00050 /* Pair */
+00051 template <class U, class V> void pack (const std :: pair <U, V> & __pair) {
+00052   
+00053   pack (__pair.first);
+00054   pack (__pair.second);
+00055 }
+00056 
+00057 //
+00058 
+00059 /* Float */
+00060 extern void unpack (char & __c); 
+00061 
+00062 /* Float */
+00063 extern void unpack (float & __f, int __nitem = 1); 
+00064 
+00065 /* Double */
+00066 extern void unpack (double & __d, int __nitem = 1); 
+00067 
+00068 /* Integer */
+00069 extern void unpack (int & __i, int __nitem = 1); 
+00070 
+00071 /* Unsigned int. */
+00072 extern void unpack (unsigned int & __ui, int __nitem = 1); 
+00073 
+00074 /* Short int. */
+00075 extern void unpack (short & __sh, int __nitem = 1); 
+00076 
+00077 /* Unsigned short */
+00078 extern void unpack (unsigned short & __ush, int __nitem = 1);
+00079 
+00080 /* Long */
+00081 extern void unpack (long & __l, int __nitem = 1); 
+00082 
+00083 /* Unsigned long */
+00084 extern void unpack (unsigned long & __ul, int __nitem = 1); 
+00085 
+00086 /* String */
+00087 extern void unpack (char * __str); 
+00088 
+00089 /* Pointer */
+00090 template <class T> void unpack (T * & __ptr) {
+00091   
+00092   unsigned long p;
+00093   unpack (p);
+00094   __ptr = (T *) p;
+00095 }
+00096 
+00097 /* Pair */
+00098 template <class U, class V> void unpack (std :: pair <U, V> & __pair) {
+00099   
+00100   unpack (__pair.first);
+00101   unpack (__pair.second);
+00102 }
+00103 
+00104 #endif
+

Generated on Tue Jan 9 15:47:37 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/namespacemembers.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/namespacemembers.html new file mode 100644 index 000000000..dc44a65b8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/namespacemembers.html @@ -0,0 +1,51 @@ + + +ParadisEO-PEO: Class Members + + + + +
+
+ +
+ +
+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

+
Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/namespacemembers_func.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/namespacemembers_func.html new file mode 100644 index 000000000..4cbc09fd6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/namespacemembers_func.html @@ -0,0 +1,49 @@ + + +ParadisEO-PEO: Class Members + + + + +
+
+ +
+ +
+  +

+

    +
  • finalize() +: peo
  • init() +: peo
  • loadParameters() +: peo
  • run() +: peo
+
Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/namespacemembers_vars.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/namespacemembers_vars.html new file mode 100644 index 000000000..b0f4ed5c6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/namespacemembers_vars.html @@ -0,0 +1,47 @@ + + +ParadisEO-PEO: Class Members + + + + +
+
+ +
+ +
+  +

+

+
Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/namespacepeo.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/namespacepeo.html new file mode 100644 index 000000000..55a896ecd --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/namespacepeo.html @@ -0,0 +1,65 @@ + + +ParadisEO-PEO: peo Namespace Reference + + + + +
+
+ +

peo Namespace Reference

+

+ + + + + + + + + + + + + + + + + + + + +

Functions

+void finalize ()
+void init (int &__argc, char **&__argv)
+void loadParameters (int &__argc, char **&__argv)
+void run ()

Variables

+int * argc
+char *** argv
+int * argc
+char *** argv
+


Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/namespaces.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/namespaces.html new file mode 100644 index 000000000..07ec0fc31 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/namespaces.html @@ -0,0 +1,37 @@ + + +ParadisEO-PEO: Namespace Index + + + + +
+
+ +

ParadisEO-PEO Namespace List

Here is a list of all documented namespaces with brief descriptions: + +
peo
+
Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/node_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/node_8cpp-source.html new file mode 100644 index 000000000..c41e31cde --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/node_8cpp-source.html @@ -0,0 +1,87 @@ + + +ParadisEO-PEO: node.cpp Source File + + + + +
+
+

node.cpp

00001 // "node.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <mpi.h>
+00010 #include <vector>
+00011 #include <map>
+00012 #include <string>
+00013 #include <cassert>
+00014 
+00015 static int rk, sz; /* Rank & size */
+00016 
+00017 static std :: map <std :: string, int> name_to_rk;
+00018 
+00019 static std :: vector <std :: string> rk_to_name;
+00020 
+00021 int getNodeRank () {
+00022 
+00023   return rk;
+00024 }
+00025 
+00026 int getNumberOfNodes () {
+00027 
+00028   return sz;
+00029 }
+00030 
+00031 int getRankFromName (const std :: string & __name) {
+00032   
+00033   return atoi (__name.c_str ());  
+00034 }
+00035 
+00036 void initNode (int * __argc, char * * * __argv) {
+00037   
+00038   int provided;
+00039   MPI_Init_thread (__argc,  __argv, MPI_THREAD_FUNNELED, & provided);  
+00040   assert (provided == MPI_THREAD_FUNNELED); /* The MPI implementation must be multi-threaded.
+00041                                                Yet, only one thread performs the comm.
+00042                                                operations */
+00043   MPI_Comm_rank (MPI_COMM_WORLD, & rk);   /* Who ? */
+00044   MPI_Comm_size (MPI_COMM_WORLD, & sz);    /* How many ? */
+00045 
+00046   char names [sz] [MPI_MAX_PROCESSOR_NAME];
+00047   int len;
+00048 
+00049   /* Processor names */ 
+00050   MPI_Get_processor_name (names [0], & len);   /* Me */  
+00051   MPI_Allgather (names, MPI_MAX_PROCESSOR_NAME, MPI_CHAR, names, MPI_MAX_PROCESSOR_NAME, MPI_CHAR, MPI_COMM_WORLD); /* Broadcast */
+00052   
+00053   for (int i = 0; i < sz; i ++) {
+00054     rk_to_name.push_back (names [i]);
+00055     name_to_rk [names [i]] = i;
+00056   }
+00057 }
+00058 
+

Generated on Tue Jan 9 15:47:37 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/node_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/node_8h-source.html new file mode 100644 index 000000000..ae95113a8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/node_8h-source.html @@ -0,0 +1,53 @@ + + +ParadisEO-PEO: node.h Source File + + + + +
+
+

node.h

00001 // "node.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __node_h
+00010 #define __node_h
+00011 
+00012 #include <string>
+00013 #include <cassert>
+00014 
+00015 extern int getNodeRank (); /* It gives the rank of the calling process */
+00016 
+00017 extern int getNumberOfNodes (); /* It gives the size of the environment (Total number of nodes) */
+00018 
+00019 extern int getRankFromName (const std :: string & __name); /* It gives the rank of the process
+00020                                                               expressed by its name */
+00021 
+00022 extern void initNode (int * __argc, char * * * __argv);
+00023 
+00024 #endif
+

Generated on Tue Jan 9 15:47:37 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/paradiseo_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/paradiseo_8h-source.html new file mode 100644 index 000000000..9a4542b93 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/paradiseo_8h-source.html @@ -0,0 +1,70 @@ + + +ParadisEO-PEO: paradiseo.h Source File + + + + +
+
+

paradiseo.h

00001 // "paradiseo.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __paradiseo_h_
+00010 #define __paradiseo_h_
+00011 
+00012 #include <eo>
+00013 #include <mo>
+00014 
+00015 
+00260 
+00261 
+00262 
+00263 #include "core/peo_init.h"
+00264 #include "core/peo_run.h"
+00265 #include "core/peo_fin.h"
+00266 
+00267 #include "core/eoVector_comm.h"
+00268 
+00269 #include "peoEA.h"
+00270 
+00271 /* Parallel steps of the E.A. */
+00272 #include "peoSeqTransform.h"
+00273 #include "peoParaSGATransform.h"
+00274 #include "peoSeqPopEval.h"
+00275 #include "peoParaPopEval.h"
+00276 
+00277 /* Cooperative island model */
+00278 #include "core/ring_topo.h"
+00279 #include "peoAsyncIslandMig.h"
+00280 #include "peoSyncIslandMig.h"
+00281 
+00282 /* Synchronous multi-start model */
+00283 #include "peoSyncMultiStart.h"
+00284 
+00285 #endif
+

Generated on Tue Jan 9 15:47:37 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/param_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/param_8cpp-source.html new file mode 100644 index 000000000..ed8e5152f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/param_8cpp-source.html @@ -0,0 +1,50 @@ + + +ParadisEO-PEO: param.cpp Source File + + + + +
+
+

param.cpp

00001 // "param.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <utils/eoParser.h>
+00010 
+00011 #include "schema.h"
+00012 
+00013 void loadRMCParameters (int & __argc, char * * & __argv) {
+00014 
+00015   eoParser parser (__argc, __argv);
+00016 
+00017   /* Schema */
+00018   eoValueParam <std :: string> schema_param ("schema.xml", "schema", "?");
+00019   parser.processParam (schema_param);
+00020   loadSchema (schema_param.value ().c_str ());
+00021 }
+

Generated on Tue Jan 9 15:47:37 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/param_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/param_8h-source.html new file mode 100644 index 000000000..015a5d90d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/param_8h-source.html @@ -0,0 +1,43 @@ + + +ParadisEO-PEO: param.h Source File + + + + +
+
+

param.h

00001 // "param.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __rmc_param_h
+00010 #define __rmc_param_h
+00011 
+00012 extern void loadRMCParameters (int & __argc, char * * & __argv);
+00013 
+00014 #endif
+

Generated on Tue Jan 9 15:47:37 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoAggEvalFunc_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoAggEvalFunc_8h-source.html new file mode 100644 index 000000000..abe86cf1a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoAggEvalFunc_8h-source.html @@ -0,0 +1,49 @@ + + +ParadisEO-PEO: peoAggEvalFunc.h Source File + + + + +
+
+

peoAggEvalFunc.h

00001 // "peoAggEvalFunc.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __peoAggEvalFunc_h
+00010 #define __peoAggEvalFunc_h
+00011 
+00012 #include <eoFunctor.h>
+00013 
+00015 
+00025 template< class EOT > class peoAggEvalFunc : public eoBF< EOT&, const typename EOT :: Fitness&, void > {
+00026 
+00027 };
+00028 
+00029 
+00030 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoAsyncIslandMig_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoAsyncIslandMig_8h-source.html new file mode 100644 index 000000000..a3cfbf75d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoAsyncIslandMig_8h-source.html @@ -0,0 +1,189 @@ + + +ParadisEO-PEO: peoAsyncIslandMig.h Source File + + + + +
+
+

peoAsyncIslandMig.h

00001 // "peoAsyncIslandMig.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __peoAsyncIslandMig_h
+00010 #define __peoAsyncIslandMig_h
+00011 
+00012 
+00013 #include <queue>
+00014 
+00015 #include <utils/eoUpdater.h>
+00016 
+00017 #include <eoContinue.h>
+00018 #include <eoSelect.h>
+00019 #include <eoReplacement.h>
+00020 #include <eoPop.h>
+00021 
+00022 #include "core/topology.h"
+00023 #include "core/cooperative.h"
+00024 #include "core/eoPop_comm.h"
+00025 #include "core/peo_debug.h"
+00026 
+00027 
+00029 
+00112 template< class EOT > class peoAsyncIslandMig : public Cooperative, public eoUpdater {
+00113 
+00114 public:
+00115 
+00125         peoAsyncIslandMig( 
+00126                                 eoContinue< EOT >& __cont,
+00127                                 eoSelect< EOT >& __select,
+00128                                 eoReplacement< EOT >& __replace,
+00129                                 Topology& __topology,
+00130                                 eoPop< EOT >& __source,
+00131                                 eoPop< EOT >& __destination 
+00132         );
+00133 
+00138         void operator()();
+00139         
+00141         void pack();
+00143         void unpack();
+00144 
+00145 
+00146 private:
+00147 
+00148         void emigrate();
+00149         void immigrate();
+00150 
+00151 
+00152 private:
+00153 
+00154         eoContinue< EOT >& cont;        // continuator
+00155         eoSelect< EOT >& select;        // the selection strategy
+00156         eoReplacement< EOT >& replace;  // the replacement strategy
+00157         Topology& topology;             // the neighboring topology
+00158         
+00159         // source and destination populations
+00160         eoPop< EOT >& source;
+00161         eoPop< EOT >& destination;
+00162         
+00163         // immigrants & emigrants in the queue
+00164         std :: queue< eoPop< EOT > > imm;
+00165         std :: queue< eoPop< EOT > > em;
+00166         
+00167         std :: queue< Cooperative* > coop_em;
+00168 };
+00169 
+00170 
+00171 template< class EOT > peoAsyncIslandMig< EOT > :: peoAsyncIslandMig(
+00172 
+00173                 eoContinue< EOT >& __cont,
+00174                 eoSelect< EOT >& __select,
+00175                 eoReplacement< EOT >& __replace,
+00176                 Topology& __topology,
+00177                 eoPop< EOT >& __source,
+00178                 eoPop< EOT >& __destination
+00179 
+00180         ) : cont( __cont ), select( __select ), replace( __replace ), topology( __topology ), source( __source ), destination( __destination )
+00181 {
+00182 
+00183         __topology.add( *this );
+00184 }
+00185 
+00186 
+00187 template< class EOT > void peoAsyncIslandMig< EOT > :: pack()
+00188 {
+00189 
+00190         lock(); {
+00191 
+00192 		 :: pack( coop_em.front()->getKey() );
+00193 		 :: pack( em.front() );
+00194                 coop_em.pop();
+00195                 em.pop();
+00196         }
+00197         unlock();
+00198 }
+00199 
+00200 
+00201 template< class EOT > void peoAsyncIslandMig< EOT > :: unpack()
+00202 {
+00203 
+00204         lock(); {
+00205 
+00206                 eoPop< EOT > mig;
+00207 		 :: unpack( mig );
+00208                 imm.push( mig );
+00209         }
+00210         unlock();
+00211 }
+00212 
+00213 
+00214 template< class EOT > void peoAsyncIslandMig< EOT > :: emigrate()
+00215 {
+00216 
+00217         std :: vector< Cooperative* >in, out;
+00218         topology.setNeighbors( this, in, out );
+00219 
+00220         for ( unsigned i = 0; i < out.size(); i++ ) {
+00221         
+00222                 eoPop< EOT > mig;
+00223                 select( source, mig );
+00224                 em.push( mig );
+00225                 coop_em.push( out[i] );
+00226                 send( out[i] );
+00227                 printDebugMessage( "sending some emigrants." );
+00228         }
+00229 }
+00230 
+00231 
+00232 template< class EOT > void peoAsyncIslandMig< EOT > :: immigrate()
+00233 {
+00234 
+00235         lock(); {
+00236 
+00237                 while ( !imm.empty() ) {
+00238 
+00239                         replace( destination, imm.front() );
+00240                         imm.pop();
+00241                         printDebugMessage( "receiving some immigrants." );
+00242                 }
+00243         }
+00244         unlock();
+00245 }
+00246 
+00247 
+00248 template< class EOT > void peoAsyncIslandMig< EOT > :: operator()() {
+00249 
+00250         if ( !cont( source ) ) {
+00251 
+00252                 emigrate();     // sending emigrants
+00253                 immigrate();    // receiving immigrants
+00254         }
+00255 }
+00256 
+00257 
+00258 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoEA_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoEA_8h-source.html new file mode 100644 index 000000000..8e4a3c05e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoEA_8h-source.html @@ -0,0 +1,128 @@ + + +ParadisEO-PEO: peoEA.h Source File + + + + +
+
+

peoEA.h

00001 // "peoEA.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __peoEA_h
+00010 #define __peoEA_h
+00011 
+00012 #include <eoContinue.h>
+00013 #include <eoEvalFunc.h>
+00014 #include <eoSelect.h>
+00015 #include <eoPopEvalFunc.h>
+00016 #include <eoReplacement.h>
+00017 
+00018 #include "peoPopEval.h"
+00019 #include "peoTransform.h"
+00020 #include "core/runner.h"
+00021 #include "core/peo_debug.h"
+00022 
+00024 
+00054 template < class EOT > class peoEA : public Runner {
+00055 
+00056 public:
+00057 
+00069         peoEA( 
+00070                 eoContinue< EOT >& __cont,
+00071                 peoPopEval< EOT >& __pop_eval,
+00072                 eoSelect< EOT >& __select,
+00073                 peoTransform< EOT >& __trans,
+00074                 eoReplacement< EOT >& __replace 
+00075         );
+00076 
+00079         void run();
+00080         
+00084         void operator()( eoPop< EOT >& __pop );
+00085 
+00086 private:
+00087 
+00088 
+00089         eoContinue< EOT >& cont;
+00090         peoPopEval< EOT >& pop_eval;
+00091         eoSelect< EOT >& select;
+00092         peoTransform< EOT >& trans;
+00093         eoReplacement< EOT >& replace;
+00094         eoPop< EOT >* pop;
+00095 };
+00096 
+00097 
+00098 template < class EOT > peoEA< EOT > :: peoEA( 
+00099 
+00100                                 eoContinue< EOT >& __cont, 
+00101                                 peoPopEval< EOT >& __pop_eval, 
+00102                                 eoSelect< EOT >& __select, 
+00103                                 peoTransform< EOT >& __trans, 
+00104                                 eoReplacement< EOT >& __replace
+00105 
+00106                 ) : cont( __cont ), pop_eval( __pop_eval ), select( __select ), trans( __trans ), replace( __replace )
+00107 {
+00108 
+00109         trans.setOwner( *this );
+00110         pop_eval.setOwner( *this );
+00111 }
+00112 
+00113 
+00114 template< class EOT > void peoEA< EOT > :: operator ()( eoPop< EOT >& __pop ) {
+00115 
+00116         pop = &__pop;
+00117 }
+00118 
+00119 
+00120 template< class EOT > void peoEA< EOT > :: run() {
+00121 
+00122         printDebugMessage( "performing the first evaluation of the population." );
+00123         pop_eval( *pop );
+00124         
+00125         do {
+00126 
+00127                 eoPop< EOT > off;
+00128 
+00129                 printDebugMessage( "performing the selection step." );
+00130                 select( *pop, off );
+00131                 trans( off );
+00132 
+00133                 printDebugMessage( "performing the evaluation of the population." );
+00134                 pop_eval( off );
+00135 
+00136                 printDebugMessage( "performing the replacement of the population." );
+00137                 replace( *pop, off );
+00138 
+00139                 printDebugMessage( "deciding of the continuation." );
+00140         
+00141         } while ( cont( *pop ) );
+00142 }
+00143 
+00144 
+00145 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoNoAggEvalFunc_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoNoAggEvalFunc_8h-source.html new file mode 100644 index 000000000..cb0d6d8bf --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoNoAggEvalFunc_8h-source.html @@ -0,0 +1,58 @@ + + +ParadisEO-PEO: peoNoAggEvalFunc.h Source File + + + + +
+
+

peoNoAggEvalFunc.h

00001 // "peoNoAggEvalFunc.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __peoNoAggEvalFunc_h
+00010 #define __peoNoAggEvalFunc_h
+00011 
+00012 #include "peoAggEvalFunc.h"
+00013 
+00015 
+00019 template< class EOT > class peoNoAggEvalFunc : public peoAggEvalFunc< EOT > {
+00020 
+00021 public :
+00022 
+00024         void operator()( EOT& __sol, const typename EOT :: Fitness& __fit );
+00025 };
+00026 
+00027 
+00028 template< class EOT > void peoNoAggEvalFunc< EOT > :: operator()( EOT& __sol, const typename EOT :: Fitness& __fit ) {
+00029 
+00030         __sol.fitness( __fit );
+00031 }
+00032 
+00033 
+00034 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoParaPopEval_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoParaPopEval_8h-source.html new file mode 100644 index 000000000..9b3cc50b2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoParaPopEval_8h-source.html @@ -0,0 +1,226 @@ + + +ParadisEO-PEO: peoParaPopEval.h Source File + + + + +
+
+

peoParaPopEval.h

00001 // "peoParaPopEval.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __peoParaPopEval_h
+00010 #define __peoParaPopEval_h
+00011 
+00012 #include <queue>
+00013 #include <eoEvalFunc.h>
+00014 
+00015 #include "core/messaging.h"
+00016 #include "core/peo_debug.h"
+00017 #include "peoAggEvalFunc.h"
+00018 #include "peoNoAggEvalFunc.h"
+00019 
+00020 
+00022 
+00026 template< class EOT > class peoParaPopEval : public peoPopEval< EOT > {
+00027 
+00028 public:
+00029 
+00030         using peoPopEval< EOT > :: requestResourceRequest;
+00031         using peoPopEval< EOT > :: resume;
+00032         using peoPopEval< EOT > :: stop;
+00033         using peoPopEval< EOT > :: getOwner;
+00034         
+00039         peoParaPopEval( eoEvalFunc< EOT >& __eval_func );
+00040 
+00045         peoParaPopEval( const std :: vector< eoEvalFunc < EOT >* >& __funcs, peoAggEvalFunc< EOT >& __merge_eval );
+00046 
+00050         void operator()( eoPop< EOT >& __pop );
+00051 
+00054         void packData();
+00055         
+00058         void unpackData();
+00059 
+00061         void execute();
+00062         
+00065         void packResult();
+00066         
+00069         void unpackResult();
+00070         
+00073         void notifySendingData();
+00074 
+00077         void notifySendingAllResourceRequests();
+00078 
+00079 private:
+00080 
+00081 
+00082         const std :: vector< eoEvalFunc < EOT >* >& funcs;
+00083         std :: vector< eoEvalFunc < EOT >* > one_func;
+00084         
+00085         peoAggEvalFunc< EOT >& merge_eval;
+00086         peoNoAggEvalFunc< EOT > no_merge_eval;
+00087         
+00088         std :: queue< EOT* >tasks;
+00089         
+00090         std :: map< EOT*, std :: pair< unsigned, unsigned > > progression;
+00091         
+00092         unsigned num_func;
+00093         
+00094         EOT sol;
+00095         
+00096         EOT *ad_sol;
+00097         
+00098         unsigned total;
+00099 };
+00100 
+00101 
+00102 template< class EOT > peoParaPopEval< EOT > :: peoParaPopEval( eoEvalFunc< EOT >& __eval_func ) : 
+00103 
+00104                 funcs( one_func ), merge_eval( no_merge_eval )
+00105 {
+00106 
+00107         one_func.push_back( &__eval_func );
+00108 }
+00109 
+00110 
+00111 template< class EOT > peoParaPopEval< EOT > :: peoParaPopEval( 
+00112 
+00113                                 const std :: vector< eoEvalFunc< EOT >* >& __funcs,
+00114                                 peoAggEvalFunc< EOT >& __merge_eval 
+00115 
+00116                 ) : funcs( __funcs ), merge_eval( __merge_eval )
+00117 {
+00118 
+00119 }
+00120 
+00121 
+00122 template< class EOT > void peoParaPopEval< EOT >::operator()( eoPop< EOT >& __pop ) {
+00123 
+00124         for ( unsigned i = 0; i < __pop.size(); i++ ) {
+00125 
+00126                 __pop[ i ].fitness( typename EOT :: Fitness() );
+00127 
+00128                 progression[ &__pop[ i ] ].first = funcs.size() - 1;
+00129                 progression[ &__pop[ i ] ].second = funcs.size();
+00130                 
+00131                 for ( unsigned j = 0; j < funcs.size(); j++ ) {
+00132                         /* Queuing the 'invalid' solution and its associated owner */
+00133                         tasks.push( &__pop[ i ] );
+00134                 }
+00135         }
+00136         
+00137         total = funcs.size() * __pop.size();
+00138         requestResourceRequest( funcs.size() * __pop.size() );
+00139         stop();
+00140 }
+00141 
+00142 
+00143 template< class EOT > void peoParaPopEval< EOT > :: packData() {
+00144 
+00145         //  printDebugMessage ("debut pakc data");
+00146         pack( progression[ tasks.front() ].first-- );
+00147         
+00148         /* Packing the contents :-) of the solution */
+00149         pack( *tasks.front() );
+00150         
+00151         /* Packing the addresses of both the solution and the owner */
+00152         pack( tasks.front() );
+00153         tasks.pop(  );
+00154 }
+00155 
+00156 
+00157 template< class EOT > void peoParaPopEval< EOT > :: unpackData() {
+00158 
+00159         unpack( num_func );
+00160         /* Unpacking the solution */
+00161         unpack( sol );
+00162         /* Unpacking the @ of that one */
+00163         unpack( ad_sol );
+00164 }
+00165 
+00166 
+00167 template< class EOT > void peoParaPopEval< EOT > :: execute() {
+00168 
+00169         /* Computing the fitness of the solution */
+00170         funcs[ num_func ]->operator()( sol );
+00171 }
+00172 
+00173 
+00174 template< class EOT > void peoParaPopEval< EOT > :: packResult() {
+00175 
+00176         /* Packing the fitness of the solution */
+00177         pack( sol.fitness() );
+00178         /* Packing the @ of the individual */
+00179         pack( ad_sol );
+00180 }
+00181 
+00182 
+00183 template< class EOT > void peoParaPopEval< EOT > :: unpackResult() {
+00184 
+00185         typename EOT :: Fitness fit;
+00186         
+00187         /* Unpacking the computed fitness */
+00188         unpack( fit );
+00189                 
+00190         /* Unpacking the @ of the associated individual */
+00191         unpack( ad_sol );
+00192         
+00193         
+00194         /* Associating the fitness the local solution */
+00195         merge_eval( *ad_sol, fit );
+00196 
+00197         progression[ ad_sol ].second--;
+00198 
+00199         /* Notifying the container of the termination of the evaluation */
+00200         if ( !progression[ ad_sol ].second ) {
+00201 
+00202                 progression.erase( ad_sol );
+00203         }
+00204         
+00205         total--;
+00206         if ( !total ) {
+00207 
+00208                 getOwner()->setActive();
+00209                 resume();
+00210         }
+00211 }
+00212 
+00213 
+00214 template< class EOT > void peoParaPopEval< EOT > :: notifySendingData() {
+00215 
+00216 }
+00217 
+00218 
+00219 template< class EOT > void peoParaPopEval< EOT > :: notifySendingAllResourceRequests() {
+00220 
+00221         getOwner()->setPassive();
+00222 }
+00223 
+00224 
+00225 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoParaSGATransform_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoParaSGATransform_8h-source.html new file mode 100644 index 000000000..e2e275776 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoParaSGATransform_8h-source.html @@ -0,0 +1,184 @@ + + +ParadisEO-PEO: peoParaSGATransform.h Source File + + + + +
+
+

peoParaSGATransform.h

00001 // "peoParaSGATransform.h"
+00002 
+00003 //(c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __peoParaSGATransform_h
+00010 #define __peoParaSGATransform_h
+00011 
+00012 #include "peoTransform.h"
+00013 #include "core/thread.h"
+00014 #include "core/messaging.h"
+00015 #include "core/peo_debug.h"
+00016 
+00017 
+00018 extern int getNodeRank();
+00019 
+00020 
+00021 template< class EOT > class peoParaSGATransform : public peoTransform< EOT > {
+00022 
+00023 public:
+00024 
+00025         using peoTransform< EOT > :: requestResourceRequest;
+00026         using peoTransform< EOT > :: resume;
+00027         using peoTransform< EOT > :: stop;
+00028         using peoTransform< EOT > :: getOwner;
+00029 
+00030         peoParaSGATransform( 
+00031 
+00032                                 eoQuadOp< EOT >& __cross,
+00033                                 double __cross_rate,
+00034                                 eoMonOp< EOT >& __mut, 
+00035                                 double __mut_rate 
+00036         );
+00037 
+00038         void operator()( eoPop< EOT >& __pop );
+00039         
+00040         void packData();
+00041         
+00042         void unpackData();
+00043         
+00044         void execute();
+00045         
+00046         void packResult();
+00047         
+00048         void unpackResult();
+00049         
+00050         void notifySendingData();
+00051         void notifySendingAllResourceRequests();
+00052 
+00053 private:
+00054 
+00055     eoQuadOp< EOT >& cross;
+00056     double cross_rate;
+00057 
+00058     eoMonOp< EOT >& mut;
+00059     double mut_rate;
+00060 
+00061     unsigned idx;
+00062 
+00063     eoPop< EOT >* pop;
+00064 
+00065     EOT father, mother;
+00066 
+00067     unsigned num_term;
+00068 };
+00069 
+00070 template< class EOT > peoParaSGATransform< EOT > :: peoParaSGATransform( 
+00071 
+00072                                 eoQuadOp< EOT >& __cross,
+00073                                 double __cross_rate,
+00074                                 eoMonOp < EOT >& __mut,
+00075                                 double __mut_rate 
+00076 
+00077                 ) : cross( __cross ), cross_rate( __cross_rate ), mut( __mut ), mut_rate( __mut_rate )
+00078 {
+00079 
+00080 }
+00081 
+00082 
+00083 template< class EOT > void peoParaSGATransform< EOT > :: packData() {
+00084 
+00085         pack( idx );
+00086          :: pack( pop->operator[]( idx++ ) );
+00087          :: pack( pop->operator[]( idx++ ) );
+00088 }
+00089 
+00090 
+00091 template< class EOT > void peoParaSGATransform< EOT > :: unpackData() {
+00092 
+00093         unpack( idx );
+00094          :: unpack( father );
+00095          :: unpack( mother );
+00096 }
+00097 
+00098 
+00099 template< class EOT > void peoParaSGATransform< EOT > :: execute() {
+00100 
+00101         if( rng.uniform() < cross_rate ) cross( mother, father );
+00102 
+00103         if( rng.uniform() < mut_rate ) mut( mother );
+00104         if( rng.uniform() < mut_rate ) mut( father );
+00105 }
+00106 
+00107 
+00108 template< class EOT > void peoParaSGATransform< EOT > :: packResult() {
+00109 
+00110         pack( idx );
+00111          :: pack( father );
+00112          :: pack( mother );
+00113 }
+00114 
+00115 
+00116 template< class EOT > void peoParaSGATransform< EOT > :: unpackResult() {
+00117 
+00118         unsigned sidx;
+00119         
+00120         unpack( sidx );
+00121          :: unpack( pop->operator[]( sidx++ ) );
+00122          :: unpack( pop->operator[]( sidx ) );
+00123         num_term += 2;
+00124         
+00125         if( num_term == pop->size() ) {
+00126 
+00127                 getOwner()->setActive();
+00128                 resume();
+00129         }
+00130 }
+00131 
+00132 
+00133 template< class EOT > void peoParaSGATransform< EOT > :: operator()( eoPop < EOT >& __pop ) {
+00134 
+00135         printDebugMessage( "performing the parallel transformation step." );
+00136         pop = &__pop;
+00137         idx = 0;
+00138         num_term = 0;
+00139         requestResourceRequest( __pop.size() / 2 );
+00140         stop();
+00141 }
+00142 
+00143 
+00144 template< class EOT > void peoParaSGATransform< EOT > :: notifySendingData() {
+00145 
+00146 }
+00147 
+00148 
+00149 template< class EOT > void peoParaSGATransform< EOT > :: notifySendingAllResourceRequests() {
+00150 
+00151         getOwner()->setPassive();
+00152 }
+00153 
+00154 
+00155 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoPopEval_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoPopEval_8h-source.html new file mode 100644 index 000000000..fa5cd0ca7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoPopEval_8h-source.html @@ -0,0 +1,52 @@ + + +ParadisEO-PEO: peoPopEval.h Source File + + + + +
+
+

peoPopEval.h

00001 // "peoPopEval.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __peoPopEval_h
+00010 #define __peoPopEval_h
+00011 
+00012 #include "core/service.h"
+00013 
+00015 
+00019 template< class EOT > class peoPopEval : public Service {
+00020 
+00021 public:
+00022 
+00024         virtual void operator()( eoPop< EOT >& __pop ) = 0;
+00025 };
+00026 
+00027 
+00028 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoSeqPopEval_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoSeqPopEval_8h-source.html new file mode 100644 index 000000000..eb7dacf6d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoSeqPopEval_8h-source.html @@ -0,0 +1,72 @@ + + +ParadisEO-PEO: peoSeqPopEval.h Source File + + + + +
+
+

peoSeqPopEval.h

00001 // "peoSeqPopEval.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __peoSeqPopEval_h
+00010 #define __peoSeqPopEval_h
+00011 
+00012 #include <eoEvalFunc.h>
+00013 
+00014 #include "peoPopEval.h"
+00015 
+00017 
+00021 template< class EOT > class peoSeqPopEval : public peoPopEval< EOT > {
+00022 
+00023 public:
+00024 
+00028         peoSeqPopEval( eoEvalFunc< EOT >& __eval );
+00029 
+00033         void operator()( eoPop< EOT >& __pop );
+00034 
+00035 private:
+00036 
+00037         eoEvalFunc< EOT >& eval;
+00038 };
+00039 
+00040 
+00041 template< class EOT > peoSeqPopEval< EOT > :: peoSeqPopEval( eoEvalFunc< EOT >& __eval ) : eval( __eval ) {
+00042 
+00043 }
+00044 
+00045 
+00046 template< class EOT > void peoSeqPopEval< EOT > :: operator()( eoPop< EOT >& __pop ) {
+00047 
+00048         for ( unsigned i = 0; i < __pop.size(); i++ )
+00049                 eval( __pop[i] );
+00050 }
+00051 
+00052 
+00053 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoSeqTransform_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoSeqTransform_8h-source.html new file mode 100644 index 000000000..dce7ab32c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoSeqTransform_8h-source.html @@ -0,0 +1,80 @@ + + +ParadisEO-PEO: peoSeqTransform.h Source File + + + + +
+
+

peoSeqTransform.h

00001 // "peoSeqTransform.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __peoSeqTransform_h
+00010 #define __peoSeqTransform_h
+00011 
+00012 #include "peoTransform.h"
+00013 
+00014 
+00016 
+00020 template< class EOT > class peoSeqTransform : public peoTransform< EOT > {
+00021 
+00022 public:
+00023 
+00027         peoSeqTransform( eoTransform< EOT >& __trans );
+00028         
+00032         void operator()( eoPop< EOT >& __pop );
+00033         
+00035         virtual void packData() { }
+00036 
+00038         virtual void unpackData() { }
+00039         
+00041         virtual void execute() { }
+00042         
+00044         virtual void packResult() { }
+00045 
+00047         virtual void unpackResult() { }
+00048 
+00049 private:
+00050 
+00051         eoTransform< EOT >& trans;
+00052 };
+00053 
+00054 
+00055 template< class EOT > peoSeqTransform< EOT > :: peoSeqTransform( eoTransform< EOT >& __trans ) : trans( __trans ) {
+00056 
+00057 }
+00058 
+00059 
+00060 template< class EOT > void peoSeqTransform< EOT > :: operator()( eoPop< EOT >& __pop ) {
+00061 
+00062         trans( __pop );
+00063 }
+00064 
+00065 
+00066 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoSyncIslandMig_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoSyncIslandMig_8h-source.html new file mode 100644 index 000000000..ca57d1232 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoSyncIslandMig_8h-source.html @@ -0,0 +1,217 @@ + + +ParadisEO-PEO: peoSyncIslandMig.h Source File + + + + +
+
+

peoSyncIslandMig.h

00001 // "peoSyncIslandMig.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __peoSyncIslandMig_h
+00010 #define __peoSyncIslandMig_h
+00011 
+00012 
+00013 #include <queue>
+00014 #include <cassert>
+00015 
+00016 #include <eoPeriodicContinue.h>
+00017 
+00018 #include <utils/eoUpdater.h>
+00019 
+00020 #include <eoContinue.h>
+00021 #include <eoSelect.h>
+00022 #include <eoReplacement.h>
+00023 #include <eoPop.h>
+00024 
+00025 #include "core/topology.h"
+00026 #include "core/thread.h"
+00027 #include "core/eoPop_comm.h"
+00028 #include "core/peo_debug.h"
+00029 
+00030 
+00032 
+00114 template< class EOT > class peoSyncIslandMig : public Cooperative, public eoUpdater {
+00115 
+00116 public:
+00117 
+00127         peoSyncIslandMig(
+00128                                 unsigned __frequency,
+00129                                 eoSelect< EOT >& __select,
+00130                                 eoReplacement< EOT >& __replace,
+00131                                 Topology& __topology,
+00132                                 eoPop< EOT >& __source,
+00133                                 eoPop< EOT >& __destination
+00134         );
+00135 
+00140         void operator()();
+00141 
+00143         void pack();
+00145         void unpack();
+00146 
+00148         void notifySending();
+00149 
+00150 
+00151 private:
+00152 
+00153         void emigrate();
+00154         void immigrate();
+00155 
+00156 
+00157 private:
+00158 
+00159         eoPeriodicContinue< EOT > cont;
+00160         eoSelect< EOT >& select;        // selection strategy
+00161         eoReplacement< EOT >& replace;  // replacement strategy
+00162         Topology& topology;             // neighboring topology
+00163 
+00164         // source and target populations
+00165         eoPop< EOT >& source;
+00166         eoPop< EOT >& destination;
+00167 
+00168         // immigrants & emigrants in the queue
+00169         std :: queue< eoPop< EOT > > imm;
+00170         std :: queue< eoPop< EOT > > em;
+00171 
+00172         std :: queue< Cooperative* > coop_em;
+00173 
+00174         sem_t sync;
+00175 };
+00176 
+00177 
+00178 template< class EOT > peoSyncIslandMig< EOT > :: peoSyncIslandMig(
+00179 
+00180                 unsigned __frequency,
+00181                 eoSelect< EOT >& __select,
+00182                 eoReplacement< EOT >& __replace,
+00183                 Topology& __topology,
+00184                 eoPop< EOT >& __source,
+00185                 eoPop< EOT >& __destination
+00186 
+00187         ) : cont( __frequency ), select( __select ), replace( __replace ), topology( __topology ), source( __source ), destination( __destination ) 
+00188 {
+00189 
+00190         __topology.add( *this );
+00191         sem_init( &sync, 0, 0 );
+00192 }
+00193 
+00194 
+00195 template< class EOT > void peoSyncIslandMig< EOT > :: pack() {
+00196 
+00197         lock(); {
+00198 
+00199 		 :: pack( coop_em.front()->getKey() );
+00200 		 :: pack( em.front() );
+00201                 coop_em.pop();
+00202                 em.pop();
+00203         }
+00204         unlock();
+00205 }
+00206 
+00207 
+00208 template< class EOT > void peoSyncIslandMig< EOT > :: unpack() {
+00209 
+00210         lock(); {
+00211 
+00212                 eoPop< EOT > mig;
+00213 		 :: unpack( mig );
+00214                 imm.push( mig );
+00215         }
+00216         unlock();
+00217 
+00218         sem_post( &sync );
+00219 }
+00220 
+00221 
+00222 template< class EOT > void peoSyncIslandMig< EOT > :: emigrate() {
+00223 
+00224         std :: vector< Cooperative* > in, out;
+00225         topology.setNeighbors( this, in, out );
+00226         
+00227         for ( unsigned i = 0; i < out.size(); i ++ ) {
+00228 
+00229                 eoPop< EOT > mig;
+00230                 select( source, mig );
+00231                 em.push( mig );
+00232                 coop_em.push( out[ i ] );
+00233                 send( out[ i ] );
+00234                 printDebugMessage( "sending some emigrants." );
+00235         }
+00236 }
+00237 
+00238 
+00239 template< class EOT > void peoSyncIslandMig< EOT > :: immigrate() {
+00240 
+00241         lock(); {
+00242 
+00243                 assert( imm.size() );
+00244                 replace( destination, imm.front() ) ;
+00245                 imm.pop();
+00246                 printDebugMessage( "receiving some immigrants." );
+00247         }
+00248         unlock();
+00249 }
+00250 
+00251 
+00252 template< class EOT > void peoSyncIslandMig< EOT > :: operator()() {
+00253 
+00254         if ( !cont( source ) ) {
+00255         
+00256                 // sending emigrants
+00257                 emigrate();
+00258                 stop();
+00259 
+00260                 // synchronizing
+00261                 sem_wait( &sync );
+00262                 getOwner()->setActive();
+00263 
+00264                 // receiving immigrants
+00265                 immigrate();
+00266         }
+00267 }
+00268 
+00269 
+00270 template< class EOT > void peoSyncIslandMig< EOT > :: notifySending() {
+00271 
+00272         lock(); {
+00273 
+00274                 if ( imm.empty() ) {
+00275 
+00276                         printDebugMessage( "entering pasive mode\n" );
+00277                         getOwner()->setPassive();
+00278                 }
+00279         }
+00280         unlock();
+00281 
+00282         resume();
+00283 }
+00284 
+00285 
+00286 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoSyncMultiStart_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoSyncMultiStart_8h-source.html new file mode 100644 index 000000000..bf1ec7c9c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoSyncMultiStart_8h-source.html @@ -0,0 +1,181 @@ + + +ParadisEO-PEO: peoSyncMultiStart.h Source File + + + + +
+
+

peoSyncMultiStart.h

00001 // "peoSyncMultiStart.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __peoSyncMultiStart_h
+00010 #define __peoSyncMultiStart_h
+00011 
+00012 #include <utils/eoUpdater.h>
+00013 #include <moAlgo.h>
+00014 
+00015 #include <eoSelect.h>
+00016 #include <eoReplacement.h>
+00017 #include <eoContinue.h>
+00018 
+00019 #include "core/service.h"
+00020 #include "core/messaging.h"
+00021 #include "core/peo_debug.h"
+00022 
+00023 
+00024 extern int getNodeRank();
+00025 
+00026 
+00028 
+00036 template< class EOT > class peoSyncMultiStart : public Service, public eoUpdater {
+00037 
+00038 public:
+00039 
+00047         peoSyncMultiStart( 
+00048 
+00049                                 eoContinue< EOT >& __cont,
+00050                                 eoSelect< EOT >& __select,
+00051                                 eoReplacement< EOT >& __replace,
+00052                                 moAlgo< EOT >& __ls, 
+00053                                 eoPop< EOT >& __pop 
+00054                 );
+00055 
+00058         void operator()();
+00059 
+00062         void packData();
+00063 
+00066         void unpackData();
+00067 
+00070         void execute();
+00071 
+00074         void packResult();
+00075 
+00078         void unpackResult();
+00079 
+00082         void notifySendingData();
+00083 
+00086         void notifySendingAllResourceRequests();
+00087 
+00088 private:
+00089 
+00090         eoContinue< EOT >& cont;
+00091         eoSelect< EOT >& select;
+00092         eoReplacement< EOT >& replace;
+00093 
+00094         moAlgo< EOT >& ls;
+00095 
+00096         eoPop< EOT >& pop;
+00097         eoPop< EOT > sel;
+00098         eoPop< EOT > impr_sel;
+00099 
+00100         EOT sol;
+00101         unsigned idx;
+00102         unsigned num_term;
+00103 };
+00104 
+00105 
+00106 template< class EOT > peoSyncMultiStart< EOT > :: peoSyncMultiStart( 
+00107 
+00108                                 eoContinue < EOT >& __cont, 
+00109                                 eoSelect< EOT >& __select,
+00110                                 eoReplacement< EOT >& __replace, 
+00111                                 moAlgo < EOT >& __ls,
+00112                                 eoPop< EOT >& __pop 
+00113 
+00114                 ) : cont( __cont ), select( __select ), replace( __replace ), ls( __ls ), pop( __pop )
+00115 {
+00116 
+00117 }
+00118 
+00119 
+00120 template< class EOT > void peoSyncMultiStart< EOT > :: packData() {
+00121 
+00122          :: pack( sel[ idx++ ] );
+00123 }
+00124 
+00125 
+00126 template< class EOT > void peoSyncMultiStart< EOT > :: unpackData() {
+00127 
+00128         unpack( sol );
+00129 }
+00130 
+00131 
+00132 template< class EOT > void peoSyncMultiStart< EOT > :: execute() {
+00133 
+00134         ls( sol );
+00135 }
+00136 
+00137 
+00138 template< class EOT > void peoSyncMultiStart< EOT > :: packResult() {
+00139 
+00140         pack( sol );
+00141 }
+00142 
+00143 
+00144 template< class EOT > void peoSyncMultiStart< EOT > :: unpackResult() {
+00145 
+00146         unpack( sol );
+00147         impr_sel.push_back( sol );
+00148         num_term++;
+00149 
+00150         if ( num_term == sel.size() ) {
+00151 
+00152                 getOwner()->setActive();
+00153                 replace( pop, impr_sel );
+00154 
+00155                 printDebugMessage( "replacing the improved individuals in the population." );
+00156                 resume();
+00157         }
+00158 }
+00159 
+00160 
+00161 template< class EOT > void peoSyncMultiStart< EOT > :: operator()() {
+00162 
+00163         printDebugMessage( "performing the parallel multi-start hybridization." );
+00164         select( pop, sel );
+00165         impr_sel.clear();
+00166         idx = num_term = 0;
+00167         requestResourceRequest( sel.size() );
+00168         stop();
+00169 }
+00170 
+00171 
+00172 template< class EOT > void peoSyncMultiStart< EOT > :: notifySendingData() {
+00173 
+00174 }
+00175 
+00176 
+00177 template< class EOT > void peoSyncMultiStart< EOT > :: notifySendingAllResourceRequests() {
+00178 
+00179         getOwner()->setPassive();
+00180 }
+00181 
+00182 
+00183 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoTransform_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoTransform_8h-source.html new file mode 100644 index 000000000..ffbdfdb75 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peoTransform_8h-source.html @@ -0,0 +1,51 @@ + + +ParadisEO-PEO: peoTransform.h Source File + + + + +
+
+

peoTransform.h

00001 // "peoTransform.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __peoTransform_h
+00010 #define __peoTransform_h
+00011 
+00012 #include <eoTransform.h>
+00013 
+00014 #include "core/service.h"
+00015 
+00017 
+00020 template< class EOT > class peoTransform : public Service, public eoTransform< EOT > {
+00021 
+00022 };
+00023 
+00024 
+00025 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__debug_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__debug_8cpp-source.html new file mode 100644 index 000000000..014521c34 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__debug_8cpp-source.html @@ -0,0 +1,106 @@ + + +ParadisEO-PEO: peo_debug.cpp Source File + + + + +
+
+

peo_debug.cpp

00001 // "peo_debug.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "peo_debug.h"
+00010 
+00011 #include <stdio.h>
+00012 #include <time.h>
+00013 #include <unistd.h>
+00014 #include <string.h>
+00015 #include <sys/types.h>
+00016 #include <sys/stat.h>
+00017 #include <vector>
+00018 
+00019 #include "peo_debug.h"
+00020 
+00021 #define MAX_BUFF_SIZE 1000
+00022 
+00023 #define DEBUG_PATH "./log/"
+00024 
+00025 static bool debug = true;
+00026 
+00027 static char host [MAX_BUFF_SIZE];
+00028 
+00029 std :: vector <FILE *> files;
+00030 
+00031 void setDebugMode (bool __dbg) {
+00032 
+00033   debug = __dbg;
+00034   gethostname (host, MAX_BUFF_SIZE);
+00035 }
+00036 
+00037 extern int getNodeRank ();
+00038 
+00039 void initDebugging () {
+00040   
+00041   mkdir (DEBUG_PATH, S_IRWXU);
+00042   //  files.push_back (stdout);
+00043   char buff [MAX_BUFF_SIZE];
+00044   sprintf (buff, "%s/%d", DEBUG_PATH, getNodeRank ());
+00045   files.push_back (fopen (buff, "w"));
+00046 }
+00047 
+00048 void endDebugging () {
+00049 
+00050   for (unsigned i = 0; i < files.size (); i ++)
+00051     if (files [i] != stdout)
+00052       fclose (files [i]);
+00053 }
+00054 
+00055 void printDebugMessage (const char * __mess) {
+00056 
+00057   if (debug) {
+00058 
+00059     char buff [MAX_BUFF_SIZE];
+00060     time_t t = time (0);
+00061 
+00062     /* Date */
+00063     sprintf (buff, "[%s][%s: ", host, ctime (& t));
+00064     * strchr (buff, '\n') = ']';
+00065     for (unsigned i = 0; i < files.size (); i ++)
+00066       fprintf (files [i], buff);
+00067 
+00068     /* Message */
+00069     sprintf (buff, "%s", __mess);
+00070     
+00071     for (unsigned i = 0; i < files.size (); i ++) {
+00072       fputs (buff, files [i]);
+00073       fputs ("\n", files [i]);
+00074       fflush (files [i]);
+00075     }
+00076   }
+00077 }
+

Generated on Tue Jan 9 15:47:37 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__debug_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__debug_8h-source.html new file mode 100644 index 000000000..5f60e7d24 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__debug_8h-source.html @@ -0,0 +1,51 @@ + + +ParadisEO-PEO: peo_debug.h Source File + + + + +
+
+

peo_debug.h

00001 // "peo_debug.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __peo_debug_h
+00010 #define __peo_debug_h
+00011 
+00012 extern void initDebugging ();
+00013 
+00014 extern void endDebugging ();
+00015 
+00016 extern void setDebugMode (bool __dbg = true); /* (Des)activating the Debugging mode */
+00017 
+00018 extern void printDebugMessage (const char * __mess); /* Print a new message both on the
+00019                                                         standard output and a target
+00020                                                         text-file in a subdirectory) */
+00021 
+00022 #endif
+

Generated on Tue Jan 9 15:47:37 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__fin_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__fin_8cpp-source.html new file mode 100644 index 000000000..30bb0df9b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__fin_8cpp-source.html @@ -0,0 +1,53 @@ + + +ParadisEO-PEO: peo_fin.cpp Source File + + + + +
+
+

peo_fin.cpp

00001 // "peo_finalize.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "peo_fin.h"
+00010 #include "peo_debug.h"
+00011 #include "runner.h"
+00012 #include "rmc.h"
+00013 
+00014 void peo :: finalize () {
+00015 
+00016   printDebugMessage ("waiting for the termination of all threads");
+00017 
+00018   joinRunners ();
+00019 
+00020   finalizeRMC ();
+00021 
+00022   printDebugMessage ("this is the end");
+00023   endDebugging ();
+00024 }
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__fin_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__fin_8h-source.html new file mode 100644 index 000000000..160344205 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__fin_8h-source.html @@ -0,0 +1,46 @@ + + +ParadisEO-PEO: peo_fin.h Source File + + + + +
+
+

peo_fin.h

00001 // "peo_finalize.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __peo_finalize_h
+00010 #define __peo_finalize_h
+00011 
+00012 namespace peo {
+00013   
+00014   extern void finalize ();
+00015 }
+00016 
+00017 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__init_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__init_8cpp-source.html new file mode 100644 index 000000000..d0527178d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__init_8cpp-source.html @@ -0,0 +1,66 @@ + + +ParadisEO-PEO: peo_init.cpp Source File + + + + +
+
+

peo_init.cpp

00001 // "peo_init.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <stdio.h>
+00010 
+00011 #include "peo_init.h"
+00012 #include "peo_param.h"
+00013 #include "peo_debug.h"
+00014 #include "rmc.h"
+00015 
+00016 namespace peo {
+00017 
+00018   int * argc;
+00019   
+00020   char * * * argv;
+00021 
+00022   void init (int & __argc, char * * & __argv) {
+00023 
+00024     argc = & __argc;
+00025     
+00026     argv = & __argv;
+00027     
+00028     /* Initializing the the Resource Management and Communication */
+00029     initRMC (__argc, __argv);
+00030 
+00031     /* Loading the common parameters */ 
+00032     loadParameters (__argc, __argv);
+00033     
+00034     /* */
+00035     initDebugging ();
+00036   }
+00037 }
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__init_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__init_8h-source.html new file mode 100644 index 000000000..5e3211b48 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__init_8h-source.html @@ -0,0 +1,50 @@ + + +ParadisEO-PEO: peo_init.h Source File + + + + +
+
+

peo_init.h

00001 // "peo_init.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __peo_init_h
+00010 #define __peo_init_h
+00011 
+00012 namespace peo {
+00013 
+00014   extern int * argc;
+00015   
+00016   extern char * * * argv;
+00017   
+00018   extern void init (int & __argc, char * * & __argv);
+00019 }
+00020 
+00021 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__param_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__param_8cpp-source.html new file mode 100644 index 000000000..2cd671464 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__param_8cpp-source.html @@ -0,0 +1,54 @@ + + +ParadisEO-PEO: peo_param.cpp Source File + + + + +
+
+

peo_param.cpp

00001 // "peo_param.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <utils/eoParser.h>
+00010 
+00011 #include "peo_param.h"
+00012 #include "peo_debug.h"
+00013 
+00014 
+00015 
+00016 void peo :: loadParameters (int & __argc, char * * & __argv) {
+00017 
+00018   eoParser parser (__argc, __argv);
+00019 
+00020   /* Debug */
+00021   eoValueParam <std :: string> debug_param ("false", "debug", "?");
+00022   parser.processParam (debug_param);
+00023   if (debug_param.value () == "true")
+00024     setDebugMode ();
+00025 }
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__param_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__param_8h-source.html new file mode 100644 index 000000000..d7c6d593c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__param_8h-source.html @@ -0,0 +1,46 @@ + + +ParadisEO-PEO: peo_param.h Source File + + + + +
+
+

peo_param.h

00001 // "peo_param.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __peo_param_h
+00010 #define __peo_param_h
+00011 
+00012 namespace peo {
+00013   
+00014   extern void loadParameters (int & __argc, char * * & __argv);
+00015 }
+00016 
+00017 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__run_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__run_8cpp-source.html new file mode 100644 index 000000000..dc96a8816 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__run_8cpp-source.html @@ -0,0 +1,48 @@ + + +ParadisEO-PEO: peo_run.cpp Source File + + + + +
+
+

peo_run.cpp

00001 // "peo_run.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "peo_init.h"
+00010 #include "peo_run.h"
+00011 #include "rmc.h"
+00012 #include "runner.h"
+00013 
+00014 void peo :: run () {
+00015   
+00016   startRunners ();
+00017 
+00018   runRMC ();
+00019 }
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__run_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__run_8h-source.html new file mode 100644 index 000000000..9e622c1fb --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/peo__run_8h-source.html @@ -0,0 +1,46 @@ + + +ParadisEO-PEO: peo_run.h Source File + + + + +
+
+

peo_run.h

00001 // "peo_run.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __peo_run_h
+00010 #define __peo_run_h
+00011 
+00012 namespace peo {
+00013   
+00014   extern void run ();
+00015 }
+00016 
+00017 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/reac__thread_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/reac__thread_8cpp-source.html new file mode 100644 index 000000000..868d03a9b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/reac__thread_8cpp-source.html @@ -0,0 +1,65 @@ + + +ParadisEO-PEO: reac_thread.cpp Source File + + + + +
+
+

reac_thread.cpp

00001 // "reac_thread.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "reac_thread.h"
+00010 
+00011 static bool the_end = false;
+00012 
+00013 static std :: vector <ReactiveThread *> reac_threads;
+00014 
+00015 ReactiveThread :: ReactiveThread () {
+00016 
+00017   reac_threads.push_back (this);
+00018   sem_init (& sem, 0, 0);
+00019 }
+00020 
+00021 void ReactiveThread :: sleep () {
+00022 
+00023   sem_wait (& sem);     
+00024 }
+00025 
+00026 void ReactiveThread :: wakeUp () {
+00027 
+00028   sem_post (& sem);     
+00029 }
+00030 
+00031 void stopReactiveThreads () {
+00032 
+00033   the_end = true;
+00034   for (unsigned i = 0; i < reac_threads.size (); i ++)
+00035     reac_threads [i] -> wakeUp  ();     
+00036 }
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/reac__thread_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/reac__thread_8h-source.html new file mode 100644 index 000000000..4dc269641 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/reac__thread_8h-source.html @@ -0,0 +1,64 @@ + + +ParadisEO-PEO: reac_thread.h Source File + + + + +
+
+

reac_thread.h

00001 // "reac_thread.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef REAC_THREAD_H_
+00010 #define REAC_THREAD_H_
+00011 
+00012 #include <semaphore.h>
+00013 
+00014 #include "thread.h"
+00015 
+00016 class ReactiveThread : public Thread {
+00017         
+00018 public:
+00019 
+00020   /* Ctor */
+00021   ReactiveThread ();
+00022 
+00023   void sleep ();
+00024   
+00025   void wakeUp ();
+00026     
+00027 private:
+00028 
+00029   sem_t sem;
+00030    
+00031 };
+00032 
+00033 extern void stopReactiveThreads ();
+00034 
+00035 #endif /*THREAD_H_*/
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/recv_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/recv_8cpp-source.html new file mode 100644 index 000000000..68d9de4be --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/recv_8cpp-source.html @@ -0,0 +1,141 @@ + + +ParadisEO-PEO: recv.cpp Source File + + + + +
+
+

recv.cpp

00001 // "recv.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "comm.h"
+00010 #include "tags.h"
+00011 #include "worker.h"
+00012 #include "scheduler.h"
+00013 #include "mess.h"
+00014 #include "node.h"
+00015 #include "../../core/runner.h"
+00016 #include "../../core/cooperative.h"
+00017 #include "../../core/peo_debug.h"
+00018 
+00019 void receiveMessages () {
+00020 
+00021   cleanBuffers ();
+00022     
+00023   do {
+00024 
+00025     if (! atLeastOneActiveThread ()) {
+00026       //      printDebugMessage ("debut wait");
+00027       waitMessage ();
+00028       //printDebugMessage ("fin wait");
+00029     }
+00030     
+00031     int src, tag;
+00032 
+00033     while (probeMessage (src, tag)) {
+00034       
+00035       receiveMessage (src, tag);
+00036       initMessage ();
+00037       /*
+00038       char b [1000];
+00039       sprintf (b, "traitement recv %d\n", tag);
+00040       printDebugMessage (b);
+00041       */
+00042       
+00043       switch (tag) {
+00044         
+00045       case RUNNER_STOP_TAG:     
+00046         unpackTerminationOfRunner ();   
+00047         wakeUpCommunicator ();
+00048         break;
+00049       
+00050       case COOP_TAG:
+00051         //      printDebugMessage ("reception de message de cooperation");
+00052         COOP_ID coop_id;
+00053         unpack (coop_id);
+00054         getCooperative (coop_id) -> unpack ();
+00055         break;
+00056 
+00057       case SCHED_REQUEST_TAG:   
+00058         unpackResourceRequest ();
+00059         break;
+00060         
+00061       case SCHED_RESULT_TAG:
+00062         {         
+00063           /* Unpacking the resource */
+00064           SERVICE_ID serv_id;
+00065           unpack (serv_id);
+00066           Service * serv = getService (serv_id);
+00067           int dest;
+00068           unpack (dest);
+00069           WORKER_ID worker_id;
+00070           unpack (worker_id);
+00071 
+00072           /* Going back ... */
+00073           initMessage ();
+00074           pack (worker_id);
+00075           pack (serv_id); 
+00076           serv -> packData ();
+00077           serv -> notifySendingData ();
+00078           sendMessage (dest, TASK_DATA_TAG);
+00079           break;
+00080         }
+00081 
+00082       case TASK_DATA_TAG:
+00083       {
+00084         WORKER_ID worker_id;
+00085         unpack (worker_id);             
+00086         Worker * worker = getWorker (worker_id);
+00087         worker -> setSource (src);
+00088         worker -> unpackData ();
+00089         worker -> wakeUp ();
+00090         break; 
+00091       }
+00092       
+00093       case TASK_RESULT_TAG:
+00094         {
+00095           SERVICE_ID serv_id;
+00096           unpack (serv_id);
+00097           Service * serv = getService (serv_id);
+00098           serv -> unpackResult ();
+00099           break;
+00100         }
+00101 
+00102       case TASK_DONE_TAG:
+00103         unpackTaskDone ();
+00104         break;
+00105 
+00106       default:
+00107         ;
+00108       };
+00109     }
+00110         
+00111   } while (! atLeastOneActiveThread () && atLeastOneActiveRunner () /*&& ! allResourcesFree ()*/);
+00112 }
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/recv_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/recv_8h-source.html new file mode 100644 index 000000000..1a5739cbe --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/recv_8h-source.html @@ -0,0 +1,43 @@ + + +ParadisEO-PEO: recv.h Source File + + + + +
+
+

recv.h

00001 // "recv.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __recv_h
+00010 #define __recv_h
+00011 
+00012 extern void receiveMessages ();
+00013 
+00014 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ring__topo_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ring__topo_8cpp-source.html new file mode 100644 index 000000000..ede9a7553 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ring__topo_8cpp-source.html @@ -0,0 +1,54 @@ + + +ParadisEO-PEO: ring_topo.cpp Source File + + + + +
+
+

ring_topo.cpp

00001 // "ring_topo.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, September 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "ring_topo.h"
+00010 
+00011 void RingTopology :: setNeighbors (Cooperative * __mig,
+00012                                    std :: vector <Cooperative *> & __from,
+00013                                    std :: vector <Cooperative *> & __to) {
+00014   __from.clear () ;
+00015   __to.clear () ;
+00016 
+00017     int len = mig.size () ;
+00018     
+00019     for (int i = 0 ; i < len ; i ++)      
+00020       if (mig [i] == __mig) {   
+00021         __from.push_back (mig [(i - 1 + len) % len]) ;
+00022         __to.push_back (mig [(i + 1) % len]) ;  
+00023         break;
+00024       }
+00025 }
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ring__topo_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ring__topo_8h-source.html new file mode 100644 index 000000000..880ab0a98 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/ring__topo_8h-source.html @@ -0,0 +1,53 @@ + + +ParadisEO-PEO: ring_topo.h Source File + + + + +
+
+

ring_topo.h

00001 // "ring_topo.h"
+00002 
+00003 // (c) OPAC Team, LIFL, September 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __ring_topo_h
+00010 #define __ring_topo_h
+00011 
+00012 #include "topology.h"
+00013 
+00014 class RingTopology : public Topology {
+00015   
+00016 public :
+00017    
+00018   void setNeighbors (Cooperative * __mig,
+00019                      std :: vector <Cooperative *> & __from,
+00020                      std :: vector <Cooperative *> & __to);
+00021   
+00022 };
+00023 
+00024 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/rmc_2mpi_2runner_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/rmc_2mpi_2runner_8cpp-source.html new file mode 100644 index 000000000..b232d51b9 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/rmc_2mpi_2runner_8cpp-source.html @@ -0,0 +1,62 @@ + + +ParadisEO-PEO: runner.cpp Source File + + + + +
+
+

runner.cpp

00001 // "runner.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "../../core/messaging.h"
+00010 #include "../../core/runner.h"
+00011 #include "node.h"
+00012 #include "send.h"
+00013 #include "tags.h"
+00014 #include "schema.h"
+00015 
+00016 bool Runner :: isLocal () {
+00017 
+00018   for (unsigned i = 0; i < my_node -> id_run.size (); i ++)
+00019     if (my_node -> id_run [i] == id)
+00020       return true;
+00021   return false;
+00022 }
+00023 
+00024 void Runner :: packTermination () {
+00025 
+00026   pack (id);
+00027 }
+00028 
+00029 void Runner :: terminate () {
+00030 
+00031   sendToAll (this, RUNNER_STOP_TAG);     
+00032 }
+00033 
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/rmc_2mpi_2service_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/rmc_2mpi_2service_8cpp-source.html new file mode 100644 index 000000000..823e65ce6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/rmc_2mpi_2service_8cpp-source.html @@ -0,0 +1,59 @@ + + +ParadisEO-PEO: service.cpp Source File + + + + +
+
+

service.cpp

00001 // "service.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "../../core/service.h"
+00010 #include "../../core/messaging.h"
+00011 #include "node.h"
+00012 #include "tags.h"
+00013 #include "send.h"
+00014 #include "scheduler.h"
+00015 
+00016 void Service :: requestResourceRequest (unsigned __how_many) {
+00017 
+00018   num_sent_rr = __how_many;
+00019   for (unsigned i = 0; i < __how_many; i ++)
+00020     send (this, my_node -> rk_sched, SCHED_REQUEST_TAG);
+00021 }
+00022 
+00023 void Service :: packResourceRequest () {
+00024 
+00025   SCHED_REQUEST req;
+00026   req.first = getNodeRank ();
+00027   req.second = getKey ();
+00028   //  printf ("demande de ressource pour %d\n", req.second);
+00029   :: pack (req);
+00030 }
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/rmc_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/rmc_8cpp-source.html new file mode 100644 index 000000000..c28725b19 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/rmc_8cpp-source.html @@ -0,0 +1,75 @@ + + +ParadisEO-PEO: rmc.cpp Source File + + + + +
+
+

rmc.cpp

00001 // "rmc.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "send.h"
+00010 #include "worker.h"
+00011 #include "schema.h"
+00012 #include "comm.h"
+00013 #include "scheduler.h"
+00014 #include "../../core/peo_debug.h"
+00015 
+00016 static std :: vector <pthread_t *> ll_threads; /* Low level threads */
+00017 
+00018 void runRMC () {
+00019 
+00020   /* Worker(s) ? */
+00021   for (unsigned i = 0; i < my_node -> num_workers; i ++) 
+00022     addThread (new Worker, ll_threads);
+00023 
+00024   wakeUpCommunicator ();
+00025 }
+00026 
+00027 void initRMC (int & __argc, char * * & __argv) {
+00028 
+00029   /* Communication */
+00030   initCommunication ();
+00031   addThread (new Communicator (& __argc, & __argv), ll_threads);
+00032   waitNodeInitialization ();
+00033   initSending ();
+00034 
+00035   /* Scheduler */
+00036   if (isScheduleNode ())
+00037     initScheduler ();
+00038 
+00040 }
+00041 
+00042 void finalizeRMC () {
+00043 
+00044   printDebugMessage ("before join threads RMC");
+00045   joinThreads (ll_threads);
+00046   printDebugMessage ("after join threads RMC");
+00047 }
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/rmc_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/rmc_8h-source.html new file mode 100644 index 000000000..59a619e4a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/rmc_8h-source.html @@ -0,0 +1,47 @@ + + +ParadisEO-PEO: rmc.h Source File + + + + +
+
+

rmc.h

00001 // "rmc.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __rmc_h
+00010 #define __rmc_h
+00011 
+00012 extern void initRMC (int & __argc, char * * & __argv);
+00013 
+00014 extern void runRMC (); /* Resource Management and Communication */ 
+00015 
+00016 extern void finalizeRMC ();
+00017 
+00018 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/runner_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/runner_8h-source.html new file mode 100644 index 000000000..fcc932978 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/runner_8h-source.html @@ -0,0 +1,87 @@ + + +ParadisEO-PEO: runner.h Source File + + + + +
+
+

runner.h

00001 // "runner.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __runner_h
+00010 #define __runner_h
+00011 
+00012 #include <eoFunctor.h>
+00013 
+00014 #include "communicable.h"
+00015 #include "thread.h"
+00016 
+00017 typedef unsigned RUNNER_ID;
+00018 
+00019 class Runner : public Communicable, public Thread {
+00020 
+00021 public :
+00022 
+00023   Runner ();
+00024 
+00025   void start ();
+00026 
+00027   void waitStarting ();
+00028 
+00029   bool isLocal ();
+00030 
+00031   void terminate ();
+00032 
+00033   virtual void run () = 0;
+00034   
+00035   RUNNER_ID getID (); 
+00036 
+00037   void packTermination ();
+00038 
+00039   void notifySendingTermination ();
+00040 
+00041 private :
+00042 
+00043   sem_t sem_start;
+00044 
+00045   unsigned id;
+00046 };
+00047 
+00048 extern bool atLeastOneActiveRunner ();
+00049 
+00050 extern void unpackTerminationOfRunner ();
+00051 
+00052 extern Runner * getRunner (RUNNER_ID __key); 
+00053 
+00054 extern void startRunners ();
+00055 
+00056 extern void joinRunners ();
+00057 
+00058 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/scheduler_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/scheduler_8cpp-source.html new file mode 100644 index 000000000..9782d9ed3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/scheduler_8cpp-source.html @@ -0,0 +1,107 @@ + + +ParadisEO-PEO: scheduler.cpp Source File + + + + +
+
+

scheduler.cpp

00001 // "sched_thread.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <queue>
+00010 
+00011 #include "scheduler.h"
+00012 #include "tags.h"
+00013 #include "mess.h"
+00014 #include "../../core/peo_debug.h"
+00015 
+00016 static std :: queue <SCHED_RESOURCE> resources; /* Free resources */
+00017 
+00018 static std :: queue <SCHED_REQUEST> requests; /* Requests */
+00019 
+00020 static unsigned initNumberOfRes = 0;
+00021 
+00022 void initScheduler () {
+00023   
+00024   for (unsigned i = 0; i < the_schema.size (); i ++) {
+00025     
+00026     const Node & node = the_schema [i];
+00027     
+00028     if (node.rk_sched == my_node -> rk)      
+00029       for (unsigned j = 0; j < node.num_workers; j ++)
+00030         resources.push (std :: pair <RANK_ID, WORKER_ID> (i, j + 1));    
+00031   }  
+00032   initNumberOfRes = resources.size ();
+00033 }
+00034 
+00035 bool allResourcesFree () {
+00036 
+00037   return resources.size () == initNumberOfRes;
+00038 }
+00039 
+00040 static void update () {
+00041 
+00042   unsigned num_alloc = std :: min (resources.size (), requests.size ());
+00043   
+00044   for (unsigned i = 0; i < num_alloc; i ++) {
+00045     
+00046     SCHED_REQUEST req = requests.front ();
+00047     requests.pop ();
+00048     
+00049     SCHED_RESOURCE res = resources.front ();
+00050     resources.pop ();
+00051 
+00052     printDebugMessage ("allocating a resource.");    
+00053     initMessage ();
+00054     pack (req.second);
+00055     pack (res);
+00056     sendMessage (req.first, SCHED_RESULT_TAG);
+00057   }  
+00058 }
+00059 
+00060 void unpackResourceRequest () {
+00061 
+00062   printDebugMessage ("queuing a resource request.");
+00063   SCHED_REQUEST req;
+00064   unpack (req);
+00065   requests.push (req);
+00066   update ();
+00067 }
+00068 
+00069 void unpackTaskDone () {
+00070 
+00071   printDebugMessage ("I'm notified a worker is now idle.");
+00072   SCHED_RESOURCE res;
+00073   unpack (res);
+00074   resources.push (res);
+00075   if (resources.size () == initNumberOfRes)
+00076     printDebugMessage ("all the resources are now free.");
+00077   update ();
+00078 }
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/scheduler_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/scheduler_8h-source.html new file mode 100644 index 000000000..6815e7815 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/scheduler_8h-source.html @@ -0,0 +1,61 @@ + + +ParadisEO-PEO: scheduler.h Source File + + + + +
+
+

scheduler.h

00001 // "scheduler.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __scheduler_h
+00010 #define __scheduler_h
+00011 
+00012 #include <utility>
+00013 
+00014 #include "schema.h"
+00015 #include "worker.h"
+00016 
+00017 typedef std :: pair <RANK_ID, WORKER_ID> SCHED_RESOURCE;
+00018 
+00019 typedef std :: pair <RANK_ID, SERVICE_ID> SCHED_REQUEST;
+00020 
+00021 /* Initializing the list of available workers */
+00022 extern void initScheduler ();
+00023 
+00024 /* Processing a resource request from a service */
+00025 extern void unpackResourceRequest ();
+00026 
+00027 /* Being known a worker is now idle :-) */
+00028 extern void unpackTaskDone (); 
+00029 
+00030 extern bool allResourcesFree ();
+00031 
+00032 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/schema_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/schema_8cpp-source.html new file mode 100644 index 000000000..fb0dcfd6f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/schema_8cpp-source.html @@ -0,0 +1,164 @@ + + +ParadisEO-PEO: schema.cpp Source File + + + + +
+
+

schema.cpp

00001 // "schema.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <iostream>
+00010 #include <assert.h>
+00011 
+00012 #include "schema.h"
+00013 #include "xml_parser.h"
+00014 #include "comm.h"
+00015 #include "node.h"
+00016 #include "../../core/peo_debug.h"
+00017 
+00018 std :: vector <Node> the_schema;
+00019 
+00020 Node * my_node;
+00021 
+00022 RANK_ID getRankOfRunner (RUNNER_ID __key) {
+00023 
+00024   for (unsigned i = 0; i < the_schema.size (); i ++)
+00025     for (unsigned j = 0; j < the_schema [i].id_run.size (); j ++)
+00026       if (the_schema [i].id_run [j] == __key)
+00027         return the_schema [i].rk;
+00028   assert (false);
+00029   return 0; 
+00030 }
+00031 
+00032 static void loadNode (int __rk_sched) {
+00033 
+00034   Node node;
+00035   
+00036   node.rk_sched = __rk_sched;
+00037 
+00038   /* ATT: name*/
+00039   node.rk = getRankFromName (getAttributeValue ("name"));
+00040   /* ATT: num_workers */
+00041   node.num_workers = atoi (getAttributeValue ("num_workers").c_str ());
+00042 
+00043   while (true) {
+00044     
+00045     /* TAG: <runner> | </node> */
+00046     std :: string name = getNextNode ();
+00047     assert (name == "runner" || name == "node");    
+00048     if (name == "runner") {
+00049       /* TAG: </node> */
+00050       node.id_run.push_back (atoi (getNextNode ().c_str ()));
+00051       /* TAG: </runner> */
+00052       assert (getNextNode () == "runner");
+00053     }
+00054     else {      
+00055       /* TAG: </node> */
+00056       the_schema.push_back (node); 
+00057       break;
+00058     }
+00059   }
+00060 }
+00061 
+00062 static void loadGroup () {
+00063 
+00064   std :: string name;
+00065   
+00066   /* ATT: scheduler*/
+00067   int rk_sched = getRankFromName (getAttributeValue ("scheduler"));
+00068   
+00069   while (true) {
+00070 
+00071     /* TAG: <node> | </group> */
+00072     name = getNextNode ();
+00073     assert (name == "node" || name == "group");    
+00074     if (name == "node")
+00075       /* TAG: <node> */
+00076       loadNode (rk_sched);
+00077     else
+00078       /* TAG: </group> */
+00079       break;
+00080   }
+00081 }
+00082 
+00083 bool isScheduleNode () {
+00084   
+00085   return my_node -> rk == my_node -> rk_sched;
+00086 }
+00087 
+00088 void loadSchema (const char * __filename) {
+00089   
+00090   openXMLDocument (__filename);
+00091   
+00092   std :: string name;
+00093   
+00094   /* TAG: <schema> */
+00095   name = getNextNode ();
+00096   assert (name == "schema");
+00097     
+00098   while (true) {
+00099 
+00100     /* TAG: <group> | </schema> */
+00101     name = getNextNode ();
+00102     assert (name == "group" || name == "schema");    
+00103     if (name == "group")
+00104       /* TAG: <group> */
+00105       loadGroup ();
+00106     else
+00107       /* TAG: </schema> */
+00108       break;    
+00109   }
+00110 
+00111   /* Looking for my node */
+00112   for (unsigned i = 0; i < the_schema.size (); i ++)
+00113     if (the_schema [i].rk == getNodeRank ())
+00114       my_node = & (the_schema [i]);
+00115   
+00116   /* About me */
+00117   char mess [1000];
+00118   
+00119   sprintf (mess, "my rank is %d", my_node -> rk);
+00120   printDebugMessage (mess);
+00121   if (isScheduleNode ())
+00122     printDebugMessage ("I'am a scheduler");  
+00123   for (unsigned i = 0; i < my_node -> id_run.size (); i ++) {
+00124     sprintf (mess, "I manage the runner %d", my_node -> id_run [i]);
+00125     printDebugMessage (mess);
+00126   }
+00127   if (my_node -> num_workers) {
+00128     
+00129     sprintf (mess, "I manage %d worker(s)", my_node -> num_workers);
+00130     printDebugMessage (mess);
+00131   }
+00132           
+00133   closeXMLDocument ();
+00134 }
+00135 
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/schema_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/schema_8h-source.html new file mode 100644 index 000000000..8f85317a8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/schema_8h-source.html @@ -0,0 +1,68 @@ + + +ParadisEO-PEO: schema.h Source File + + + + +
+
+

schema.h

00001 // "schema.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __schema_h
+00010 #define __schema_h
+00011 
+00012 #include <string>
+00013 #include <vector>
+00014 #include <cassert>
+00015 
+00016 #include "../../core/runner.h"
+00017 
+00018 typedef int RANK_ID;
+00019 
+00020 struct Node {
+00021   
+00022   RANK_ID rk; /* Rank */
+00023   std :: string name; /* Host name */
+00024   unsigned num_workers; /* Number of parallel workers */
+00025   int rk_sched; /* rank of the scheduler */
+00026   std :: vector <RUNNER_ID> id_run; /* List of runners */
+00027 };
+00028 
+00029 extern std :: vector <Node> the_schema;
+00030 
+00031 extern Node * my_node;
+00032 
+00033 extern void loadSchema (const char * __filename);
+00034 
+00035 extern RANK_ID getRankOfRunner (RUNNER_ID __key);
+00036 
+00037 extern bool isScheduleNode ();
+00038 
+00039 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/search.idx b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/search.idx new file mode 100644 index 000000000..7313a9c0e Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/search.idx differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/search.php b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/search.php new file mode 100644 index 000000000..ee2088cdc --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/search.php @@ -0,0 +1,382 @@ + + +Search + + + + +
+
    +
  • Main Page
  • +
  • Namespaces
  • +
  • Classes
  • +
  • Files
  • +
  • +
    + + + + +1 document matching your query."; + } + else // $num>1 + { + return "Found $num documents matching your query. Showing best matches first."; + } +} + +function report_matches() +{ + return "Matches: "; +} +function end_form($value) +{ + echo " \n \n
    \n
    \n
  • \n
\n
\n"; +} + +function readInt($file) +{ + $b1 = ord(fgetc($file)); $b2 = ord(fgetc($file)); + $b3 = ord(fgetc($file)); $b4 = ord(fgetc($file)); + return ($b1<<24)|($b2<<16)|($b3<<8)|$b4; +} + +function readString($file) +{ + $result=""; + while (ord($c=fgetc($file))) $result.=$c; + return $result; +} + +function readHeader($file) +{ + $header =fgetc($file); $header.=fgetc($file); + $header.=fgetc($file); $header.=fgetc($file); + return $header; +} + +function computeIndex($word) +{ + // Fast string hashing + //$lword = strtolower($word); + //$l = strlen($lword); + //for ($i=0;$i<$l;$i++) + //{ + // $c = ord($lword{$i}); + // $v = (($v & 0xfc00) ^ ($v << 6) ^ $c) & 0xffff; + //} + //return $v; + + // Simple hashing that allows for substring search + if (strlen($word)<2) return -1; + // high char of the index + $hi = ord($word{0}); + if ($hi==0) return -1; + // low char of the index + $lo = ord($word{1}); + if ($lo==0) return -1; + // return index + return $hi*256+$lo; +} + +function search($file,$word,&$statsList) +{ + $index = computeIndex($word); + if ($index!=-1) // found a valid index + { + fseek($file,$index*4+4); // 4 bytes per entry, skip header + $index = readInt($file); + if ($index) // found words matching the hash key + { + $start=sizeof($statsList); + $count=$start; + fseek($file,$index); + $w = readString($file); + while ($w) + { + $statIdx = readInt($file); + if ($word==substr($w,0,strlen($word))) + { // found word that matches (as substring) + $statsList[$count++]=array( + "word"=>$word, + "match"=>$w, + "index"=>$statIdx, + "full"=>strlen($w)==strlen($word), + "docs"=>array() + ); + } + $w = readString($file); + } + $totalHi=0; + $totalFreqHi=0; + $totalFreqLo=0; + for ($count=$start;$count $idx, + "freq" => $freq>>1, + "rank" => 0.0, + "hi" => $freq&1 + ); + if ($freq&1) // word occurs in high priority doc + { + $totalHi++; + $totalFreqHi+=$freq*$multiplier; + } + else // word occurs in low priority doc + { + $totalFreqLo+=$freq*$multiplier; + } + } + // read name and url info for the doc + for ($i=0;$i<$numDocs;$i++) + { + fseek($file,$docInfo[$i]["idx"]); + $docInfo[$i]["name"]=readString($file); + $docInfo[$i]["url"]=readString($file); + } + $statInfo["docs"]=$docInfo; + } + $totalFreq=($totalHi+1)*$totalFreqLo + $totalFreqHi; + for ($count=$start;$count$key, + "name"=>$di["name"], + "rank"=>$rank + ); + } + $docs[$key]["words"][] = array( + "word"=>$wordInfo["word"], + "match"=>$wordInfo["match"], + "freq"=>$di["freq"] + ); + } + } + return $docs; +} + +function filter_results($docs,&$requiredWords,&$forbiddenWords) +{ + $filteredDocs=array(); + while (list ($key, $val) = each ($docs)) + { + $words = &$docs[$key]["words"]; + $copy=1; // copy entry by default + if (sizeof($requiredWords)>0) + { + foreach ($requiredWords as $reqWord) + { + $found=0; + foreach ($words as $wordInfo) + { + $found = $wordInfo["word"]==$reqWord; + if ($found) break; + } + if (!$found) + { + $copy=0; // document contains none of the required words + break; + } + } + } + if (sizeof($forbiddenWords)>0) + { + foreach ($words as $wordInfo) + { + if (in_array($wordInfo["word"],$forbiddenWords)) + { + $copy=0; // document contains a forbidden word + break; + } + } + } + if ($copy) $filteredDocs[$key]=$docs[$key]; + } + return $filteredDocs; +} + +function compare_rank($a,$b) +{ + if ($a["rank"] == $b["rank"]) + { + return 0; + } + return ($a["rank"]>$b["rank"]) ? -1 : 1; +} + +function sort_results($docs,&$sorted) +{ + $sorted = $docs; + usort($sorted,"compare_rank"); + return $sorted; +} + +function report_results(&$docs) +{ + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $numDocs = sizeof($docs); + if ($numDocs==0) + { + echo " \n"; + echo " \n"; + echo " \n"; + } + else + { + echo " \n"; + echo " \n"; + echo " \n"; + $num=1; + foreach ($docs as $doc) + { + echo " \n"; + echo " "; + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $num++; + } + } + echo "

".search_results()."

".matches_text(0)."
".matches_text($numDocs); + echo "\n"; + echo "
$num.".$doc["name"]."
".report_matches()." "; + foreach ($doc["words"] as $wordInfo) + { + $word = $wordInfo["word"]; + $matchRight = substr($wordInfo["match"],strlen($word)); + echo "$word$matchRight(".$wordInfo["freq"].") "; + } + echo "
\n"; +} + +function main() +{ + if(strcmp('4.1.0', phpversion()) > 0) + { + die("Error: PHP version 4.1.0 or above required!"); + } + if (!($file=fopen("search.idx","rb"))) + { + die("Error: Search index file could NOT be opened!"); + } + if (readHeader($file)!="DOXS") + { + die("Error: Header of index file is invalid!"); + } + $query=""; + if (array_key_exists("query", $_GET)) + { + $query=$_GET["query"]; + } + end_form($query); + echo " \n
\n"; + $results = array(); + $requiredWords = array(); + $forbiddenWords = array(); + $foundWords = array(); + $word=strtok($query," "); + while ($word) // for each word in the search query + { + if (($word{0}=='+')) { $word=substr($word,1); $requiredWords[]=$word; } + if (($word{0}=='-')) { $word=substr($word,1); $forbiddenWords[]=$word; } + if (!in_array($word,$foundWords)) + { + $foundWords[]=$word; + search($file,strtolower($word),$results); + } + $word=strtok(" "); + } + $docs = array(); + combine_results($results,$docs); + // filter out documents with forbidden word or that do not contain + // required words + $filteredDocs = filter_results($docs,$requiredWords,$forbiddenWords); + // sort the results based on rank + $sorted = array(); + sort_results($filteredDocs,$sorted); + // report results to the user + report_results($sorted); + echo "
\n"; + fclose($file); +} + +main(); + + +?> +
Generated on Tue Jan 9 15:47:41 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/send_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/send_8cpp-source.html new file mode 100644 index 000000000..cc2d61a67 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/send_8cpp-source.html @@ -0,0 +1,145 @@ + + +ParadisEO-PEO: send.cpp Source File + + + + +
+
+

send.cpp

00001 // "send.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <mpi.h>
+00010 #include <semaphore.h>
+00011 #include <queue>
+00012 
+00013 #include "tags.h"
+00014 #include "comm.h"
+00015 #include "worker.h"
+00016 #include "scheduler.h"
+00017 #include "mess.h"
+00018 #include "node.h"
+00019 #include "../../core/cooperative.h"
+00020 #include "../../core/peo_debug.h"
+00021 
+00022 #define TO_ALL -1
+00023 
+00024 typedef struct {
+00025 
+00026   Communicable * comm;
+00027   int to;
+00028   int tag;
+00029 
+00030 } SEND_REQUEST;
+00031         
+00032 static std :: queue <SEND_REQUEST> mess;
+00033 
+00034 static sem_t sem_send;
+00035 
+00036 void initSending () {
+00037 
+00038   sem_init (& sem_send, 0, 1);
+00039 }
+00040 
+00041 void send (Communicable * __comm, int __to, int __tag) {
+00042 
+00043   SEND_REQUEST req;  
+00044   req.comm = __comm;
+00045   req.to = __to;
+00046   req.tag = __tag;
+00047 
+00048   sem_wait (& sem_send);
+00049   mess.push (req);
+00050   sem_post (& sem_send);
+00051   wakeUpCommunicator ();
+00052 }
+00053 
+00054 void sendToAll (Communicable * __comm, int __tag) {
+00055   
+00056   send (__comm, TO_ALL, __tag);
+00057 }
+00058 
+00059 void sendMessages () {
+00060 
+00061   sem_wait (& sem_send);
+00062 
+00063   while (! mess.empty ()) {
+00064     
+00065     SEND_REQUEST req = mess.front ();
+00066     /*
+00067     char b [1000];
+00068     sprintf (b, "traitement send %d\n", req.tag);
+00069     printDebugMessage (b);
+00070     */
+00071     
+00072     Communicable * comm = req.comm;
+00073 
+00074     initMessage ();
+00075 
+00076     switch (req.tag) {
+00077 
+00078     case RUNNER_STOP_TAG:
+00079       dynamic_cast <Runner *> (comm) -> packTermination ();            
+00080       dynamic_cast <Runner *> (comm) -> notifySendingTermination ();            
+00081       break;
+00082 
+00083     case COOP_TAG:
+00084       dynamic_cast <Cooperative *> (comm) -> pack ();      
+00085       dynamic_cast <Cooperative *> (comm) -> notifySending ();      
+00086       break;
+00087           
+00088     case SCHED_REQUEST_TAG:
+00089       dynamic_cast <Service *> (comm) -> packResourceRequest ();
+00090       dynamic_cast <Service *> (comm) -> notifySendingResourceRequest ();            
+00091       break;
+00092 
+00093     case TASK_RESULT_TAG:
+00094       dynamic_cast <Worker *> (comm) -> packResult ();
+00095       dynamic_cast <Worker *> (comm) -> notifySendingResult ();
+00096       break;
+00097 
+00098     case TASK_DONE_TAG:
+00099       dynamic_cast <Worker *> (comm) -> packTaskDone ();
+00100       dynamic_cast <Worker *> (comm) -> notifySendingTaskDone ();
+00101       break;
+00102       
+00103     default :
+00104       break;
+00105 
+00106     };
+00107     
+00108     if (req.to == TO_ALL)
+00109       sendMessageToAll (req.tag);
+00110     else
+00111       sendMessage (req.to, req.tag);
+00112     mess.pop ();
+00113   }
+00114 
+00115   sem_post (& sem_send);  
+00116 }
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/send_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/send_8h-source.html new file mode 100644 index 000000000..454d69072 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/send_8h-source.html @@ -0,0 +1,51 @@ + + +ParadisEO-PEO: send.h Source File + + + + +
+
+

send.h

00001 // "send.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __send_h
+00010 #define __send_h
+00011 
+00012 #include "../../core/communicable.h"
+00013 
+00014 extern void initSending ();
+00015 
+00016 extern void send (Communicable * __comm, int __to, int __tag);
+00017 
+00018 extern void sendToAll (Communicable * __comm, int __tag);
+00019 
+00020 extern void sendMessages ();
+00021 
+00022 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/service_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/service_8h-source.html new file mode 100644 index 000000000..3c47db10b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/service_8h-source.html @@ -0,0 +1,79 @@ + + +ParadisEO-PEO: service.h Source File + + + + +
+
+

service.h

00001 // "service.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __service_h
+00010 #define __service_h
+00011 
+00012 #include "communicable.h"
+00013 #include "thread.h"
+00014 
+00015 typedef unsigned SERVICE_ID;
+00016 
+00017 class Service : public Communicable {
+00018 
+00019 public :
+00020 
+00021   void setOwner (Thread & __owner);
+00022   
+00023   Thread * getOwner (); 
+00024 
+00025   void requestResourceRequest (unsigned __how_many = 1);
+00026   void packResourceRequest ();
+00027 
+00028   virtual void packData ();
+00029   virtual void unpackData ();
+00030 
+00031   virtual void execute ();
+00032   
+00033   virtual void packResult ();
+00034   virtual void unpackResult ();
+00035 
+00036   virtual void notifySendingData ();
+00037   virtual void notifySendingResourceRequest ();
+00038   virtual void notifySendingAllResourceRequests ();
+00039 
+00040 private :
+00041 
+00042   Thread * owner; /* Owner thread (i.e. 'uses' that service) */ 
+00043 
+00044   unsigned num_sent_rr; /* Number of RR not really sent (i.e. still in the sending queue)*/
+00045 
+00046 };
+00047 
+00048 extern Service * getService (SERVICE_ID __key); 
+00049 
+00050 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/structNode-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/structNode-members.html new file mode 100644 index 000000000..ac9bd28f2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/structNode-members.html @@ -0,0 +1,42 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

Node Member List

This is the complete list of members for Node, including all inherited members.

+ + + + + +
id_runNode
nameNode
num_workersNode
rkNode
rk_schedNode


Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/structNode.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/structNode.html new file mode 100644 index 000000000..9cb8a6f10 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/structNode.html @@ -0,0 +1,62 @@ + + +ParadisEO-PEO: Node Struct Reference + + + + +
+
+ +

Node Struct Reference

List of all members. + + + + + + + + + + + + +

Public Attributes

+RANK_ID rk
+std::string name
+unsigned num_workers
+int rk_sched
+std::vector< RUNNER_ID > id_run
+

Detailed Description

+ +

+ +

+Definition at line 20 of file schema.h.


The documentation for this struct was generated from the following file: +
Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/structSEND__REQUEST-members.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/structSEND__REQUEST-members.html new file mode 100644 index 000000000..b5a2beec7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/structSEND__REQUEST-members.html @@ -0,0 +1,40 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

SEND_REQUEST Member List

This is the complete list of members for SEND_REQUEST, including all inherited members.

+ + + +
commSEND_REQUEST
tagSEND_REQUEST
toSEND_REQUEST


Generated on Tue Jan 9 15:47:40 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/structSEND__REQUEST.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/structSEND__REQUEST.html new file mode 100644 index 000000000..c79c5942b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/structSEND__REQUEST.html @@ -0,0 +1,56 @@ + + +ParadisEO-PEO: SEND_REQUEST Struct Reference + + + + +
+
+ +

SEND_REQUEST Struct Reference

List of all members. + + + + + + + + +

Public Attributes

+Communicablecomm
+int to
+int tag
+

Detailed Description

+ +

+ +

+Definition at line 24 of file send.cpp.


The documentation for this struct was generated from the following file: +
Generated on Tue Jan 9 15:47:40 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/tab_b.gif b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/tab_b.gif new file mode 100644 index 000000000..0d623483f Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/tab_b.gif differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/tab_l.gif b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/tab_l.gif new file mode 100644 index 000000000..9b1e6337c Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/tab_l.gif differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/tab_r.gif b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/tab_r.gif new file mode 100644 index 000000000..ce9dd9f53 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/tab_r.gif differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/tabs.css b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/tabs.css new file mode 100644 index 000000000..a61552a67 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI#current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI#current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/tags_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/tags_8h-source.html new file mode 100644 index 000000000..3935d5a4a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/tags_8h-source.html @@ -0,0 +1,53 @@ + + +ParadisEO-PEO: tags.h Source File + + + + +
+
+

tags.h

00001 // "tags.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __tags_h
+00010 #define __tags_h
+00011 
+00012 #define RUNNER_STOP_TAG 13
+00013 
+00014 #define COOP_TAG 14
+00015 
+00016 #define SCHED_REQUEST_TAG 16
+00017 
+00018 #define SCHED_RESULT_TAG 17
+00019 #define TASK_DATA_TAG 18
+00020 
+00021 #define TASK_RESULT_TAG 19
+00022 #define TASK_DONE_TAG 20
+00023 
+00024 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/thread_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/thread_8cpp-source.html new file mode 100644 index 000000000..5da76787d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/thread_8cpp-source.html @@ -0,0 +1,110 @@ + + +ParadisEO-PEO: thread.cpp Source File + + + + +
+
+

thread.cpp

00001 // "thread.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <map>
+00010 
+00011 #include "thread.h"
+00012 
+00013 static std :: vector <Thread *> threads;
+00014 
+00015 unsigned num_act = 0;
+00016 
+00017 Thread :: Thread () {
+00018         
+00019   threads.push_back (this);
+00020   act = false;
+00021 }
+00022 
+00023 Thread :: ~ Thread () {
+00024 
+00025   /* Nothing ! */
+00026 }
+00027 
+00028 extern int getNodeRank ();
+00029 
+00030 void Thread :: setActive () {
+00031 
+00032   if (! act ) {
+00033 
+00034     act = true;
+00035     num_act ++;
+00036     //    if (getNodeRank () == 1)      
+00037     //   printf ("On passe a %d\n", num_act);
+00038   }
+00039 }
+00040 
+00041 void Thread :: setPassive () {
+00042 
+00043   if (act) {
+00044 
+00045    act = false;
+00046     num_act --;
+00047     //    if (getNodeRank () == 1)      
+00048     //  printf ("On passe a %d\n", num_act);
+00049 
+00050   } 
+00051 }
+00052 
+00053 bool atLeastOneActiveThread () {
+00054 
+00055   return num_act;
+00056 }
+00057 
+00058 unsigned numberOfActiveThreads () {
+00059 
+00060   return num_act;
+00061 }
+00062 
+00063 static void * launch (void * __arg) {
+00064 
+00065   Thread * thr = (Thread *) __arg;  
+00066   thr -> start ();
+00067   return 0;
+00068 }
+00069 
+00070 void addThread (Thread * __hl_thread, std :: vector <pthread_t *> & __ll_threads) {
+00071 
+00072   pthread_t * ll_thr = new pthread_t;
+00073   __ll_threads.push_back (ll_thr);
+00074   pthread_create (ll_thr, 0, launch, __hl_thread); 
+00075 }
+00076 
+00077 void joinThreads (std :: vector <pthread_t *> & __threads) {
+00078 
+00079   for (unsigned i = 0; i < __threads.size (); i ++)    
+00080     pthread_join (* __threads [i], 0);  
+00081 }
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/thread_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/thread_8h-source.html new file mode 100644 index 000000000..0f976dc1f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/thread_8h-source.html @@ -0,0 +1,77 @@ + + +ParadisEO-PEO: thread.h Source File + + + + +
+
+

thread.h

00001 // "thread.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef THREAD_H_
+00010 #define THREAD_H_
+00011 
+00012 #include <vector>
+00013 
+00014 /* A high-level thread */
+00015 
+00016 class Thread {
+00017         
+00018 public:
+00019 
+00020   /* Ctor */
+00021   Thread ();
+00022 
+00023   /* Dtor */
+00024   virtual ~ Thread ();
+00025   
+00026   /* Go ! */
+00027   virtual void start () = 0;
+00028 
+00029   void setActive ();/* It means the current process is going to send messages soon */
+00030   void setPassive ();/* The current process is not going to perform send operations
+00031                         (but it may receive messages) */
+00032 
+00033 private :
+00034   
+00035   bool act;
+00036 };
+00037 
+00038 extern void addThread (Thread * __hl_thread, std :: vector <pthread_t *> & __ll_threads);
+00039 
+00040 extern void joinThreads (std :: vector <pthread_t *> & __ll_threads);
+00041 
+00042 extern bool atLeastOneActiveThread (); /* It returns 'true' iff at least one process is going
+00043                                       to send messages */
+00044   
+00045 extern unsigned numberOfActiveThreads ();
+00046 
+00047 
+00048 #endif /*THREAD_H_*/
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/topology_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/topology_8cpp-source.html new file mode 100644 index 000000000..af380f723 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/topology_8cpp-source.html @@ -0,0 +1,49 @@ + + +ParadisEO-PEO: topology.cpp Source File + + + + +
+
+

topology.cpp

00001 // "topo.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, September 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include "topology.h"
+00010 
+00011 Topology :: ~ Topology () {
+00012   
+00013   /* Nothing ! */
+00014 }
+00015 
+00016 void Topology :: add (Cooperative & __mig) {
+00017   
+00018   mig.push_back (& __mig) ;
+00019 } 
+00020 
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/topology_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/topology_8h-source.html new file mode 100644 index 000000000..7266b7c1c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/topology_8h-source.html @@ -0,0 +1,62 @@ + + +ParadisEO-PEO: topology.h Source File + + + + +
+
+

topology.h

00001 // "topology.h"
+00002 
+00003 // (c) OPAC Team, LIFL, September 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __topology_h
+00010 #define __topology_h
+00011 
+00012 #include <vector>
+00013 
+00014 #include "cooperative.h"
+00015 
+00016 class Topology {
+00017 
+00018 public:
+00019 
+00020         virtual ~Topology ();
+00021 
+00022         void add (Cooperative & __mig); 
+00023 
+00024         virtual void setNeighbors (Cooperative * __mig,
+00025                                 std :: vector <Cooperative *> & __from,
+00026                                 std :: vector <Cooperative *> & __to) = 0;
+00027 
+00028 protected:
+00029 
+00030         std :: vector <Cooperative *> mig ;  
+00031 };
+00032 
+00033 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/tree.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/tree.html new file mode 100644 index 000000000..56a9db27b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/tree.html @@ -0,0 +1,222 @@ + + + + + + + TreeView + + + + +
+

ParadisEO-PEO

+
+

o*The ParadisEO-PEO Framework

+

o+Class List

+ +

o+Class Hierarchy

+ +

o*Class Members

+

o+Namespace List

+
+

|\*peo

+
+

o*Namespace Members

+

\+File List

+
+

 o*comm.cpp

+

 o*comm.h

+

 o*communicable.cpp

+

 o*communicable.h

+

 o*coop.cpp

+

 o*cooperative.h

+

 o*eoPop_comm.h

+

 o*eoVector_comm.h

+

 o*mess.cpp

+

 o*mess.h

+

 o*messaging.h

+

 o*node.cpp

+

 o*node.h

+

 o*paradiseo.h

+

 o*param.cpp

+

 o*param.h

+

 o*peo_debug.cpp

+

 o*peo_debug.h

+

 o*peo_fin.cpp

+

 o*peo_fin.h

+

 o*peo_init.cpp

+

 o*peo_init.h

+

 o*peo_param.cpp

+

 o*peo_param.h

+

 o*peo_run.cpp

+

 o*peo_run.h

+

 o*peoAggEvalFunc.h

+

 o*peoAsyncIslandMig.h

+

 o*peoEA.h

+

 o*peoNoAggEvalFunc.h

+

 o*peoParaPopEval.h

+

 o*peoParaSGATransform.h

+

 o*peoPopEval.h

+

 o*peoSeqPopEval.h

+

 o*peoSeqTransform.h

+

 o*peoSyncIslandMig.h

+

 o*peoSyncMultiStart.h

+

 o*peoTransform.h

+

 o*reac_thread.cpp

+

 o*reac_thread.h

+

 o*recv.cpp

+

 o*recv.h

+

 o*ring_topo.cpp

+

 o*ring_topo.h

+

 o*rmc.cpp

+

 o*rmc.h

+

 o*core/runner.cpp

+

 o*rmc/mpi/runner.cpp

+

 o*runner.h

+

 o*scheduler.cpp

+

 o*scheduler.h

+

 o*schema.cpp

+

 o*schema.h

+

 o*send.cpp

+

 o*send.h

+

 o*core/service.cpp

+

 o*rmc/mpi/service.cpp

+

 o*service.h

+

 o*tags.h

+

 o*thread.cpp

+

 o*thread.h

+

 o*topology.cpp

+

 o*topology.h

+

 o*worker.cpp

+

 o*worker.h

+

 o*xml_parser.cpp

+

 \*xml_parser.h

+
+
+
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/worker_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/worker_8cpp-source.html new file mode 100644 index 000000000..f44b0ddeb --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/worker_8cpp-source.html @@ -0,0 +1,122 @@ + + +ParadisEO-PEO: worker.cpp Source File + + + + +
+
+

worker.cpp

00001 // "worker.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <vector>
+00010 
+00011 #include "tags.h"
+00012 #include "send.h"
+00013 #include "node.h"
+00014 #include "schema.h"
+00015 #include "worker.h"
+00016 #include "mess.h"
+00017 #include "../../core/peo_debug.h"
+00018 
+00019 static std :: vector <Worker *> key_to_worker (1); /* Vector of registered workers */
+00020 
+00021 Worker * getWorker (WORKER_ID __key) {
+00022 
+00023   return key_to_worker [__key];  
+00024 }
+00025 
+00026 Worker :: Worker () {
+00027   
+00028   toto = false;
+00029   id = key_to_worker.size ();
+00030   key_to_worker.push_back (this);
+00031 }
+00032 
+00033 void Worker :: packResult () {
+00034   
+00035   pack (serv_id);
+00036   serv -> packResult ();    
+00037 }
+00038 
+00039 void Worker :: unpackData () {
+00040 
+00041   printDebugMessage ("unpacking the ID. of the service.");
+00042   unpack (serv_id);
+00043   serv = getService (serv_id); 
+00044   printDebugMessage ("found the service.");
+00045   serv -> unpackData (); 
+00046   printDebugMessage ("unpacking the data.");
+00047   setActive ();
+00048 }
+00049 
+00050 void Worker :: packTaskDone () {
+00051 
+00052   pack (getNodeRank ());
+00053   pack (id);
+00054 }
+00055 
+00056 void Worker :: notifySendingResult () {
+00057 
+00058   /* Notifying the scheduler of the termination */
+00059   toto = true;
+00060   wakeUp ();
+00061 }
+00062 
+00063 void Worker :: notifySendingTaskDone () {
+00064 
+00065   setPassive ();
+00066 }
+00067   
+00068 void Worker :: setSource (int __rank) {
+00069 
+00070   src = __rank;
+00071 }
+00072 
+00073 void Worker :: start () {
+00074 
+00075   while (true) {
+00076     
+00077     sleep (); 
+00078 
+00079     if (! atLeastOneActiveRunner ())
+00080       break;
+00081     
+00082     if (toto) {
+00083       send (this, my_node -> rk_sched, TASK_DONE_TAG);  
+00084       toto = false;
+00085     }
+00086     else {
+00087 
+00088       printDebugMessage ("executing the task.");
+00089       serv -> execute ();   
+00090       send (this, src, TASK_RESULT_TAG);    
+00091     }
+00092   }
+00093 }
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/worker_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/worker_8h-source.html new file mode 100644 index 000000000..adf342f29 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/worker_8h-source.html @@ -0,0 +1,79 @@ + + +ParadisEO-PEO: worker.h Source File + + + + +
+
+

worker.h

00001 // "worker.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __worker_h
+00010 #define __worker_h
+00011 
+00012 #include "../../core/communicable.h"
+00013 #include "../../core/reac_thread.h"
+00014 #include "../../core/service.h"
+00015 
+00016 typedef unsigned WORKER_ID; 
+00017 
+00018 class Worker : public Communicable, public ReactiveThread {
+00019 
+00020 public : 
+00021 
+00022   Worker ();
+00023 
+00024   void start ();
+00025 
+00026   void packResult ();
+00027 
+00028   void unpackData ();
+00029 
+00030   void packTaskDone (); 
+00031 
+00032   void notifySendingResult ();
+00033 
+00034   void notifySendingTaskDone ();
+00035   
+00036   void setSource (int __rank);
+00037   
+00038 private :
+00039 
+00040   WORKER_ID id;
+00041   SERVICE_ID serv_id;
+00042   Service * serv;
+00043   int src;
+00044 
+00045   bool toto;
+00046 };
+00047 
+00048 extern Worker * getWorker (WORKER_ID __key);
+00049 
+00050 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/xml__parser_8cpp-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/xml__parser_8cpp-source.html new file mode 100644 index 000000000..061b4b34e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/xml__parser_8cpp-source.html @@ -0,0 +1,104 @@ + + +ParadisEO-PEO: xml_parser.cpp Source File + + + + +
+
+

xml_parser.cpp

00001 // "xml_parser.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <libxml/xmlreader.h>
+00010 
+00011 #include "xml_parser.h"
+00012 
+00013 static xmlTextReaderPtr reader;
+00014 
+00015 void openXMLDocument (const char * __filename) {
+00016   
+00017   reader = xmlNewTextReaderFilename (__filename);
+00018   
+00019   if (! reader) {
+00020     
+00021     fprintf (stderr, "unable to open '%s'.\n", __filename);
+00022     exit (1);
+00023   }
+00024 }
+00025 
+00026 void closeXMLDocument () {
+00027 
+00028   xmlFreeTextReader (reader);
+00029 }
+00030 
+00031 std :: string getAttributeValue (const std :: string & __attr) {
+00032   
+00033   xmlChar * value = xmlTextReaderGetAttribute (reader, (const xmlChar *) __attr.c_str ());
+00034   
+00035   std :: string str ((const char *) value);
+00036   
+00037   xmlFree (value);
+00038   
+00039   return str;
+00040 }
+00041 
+00042 static bool isSep (const xmlChar * __text) {
+00043   
+00044   for (unsigned i = 0; i < strlen ((char *) __text); i ++)
+00045     if (__text [i] != ' ' && __text [i] != '\t' && __text [i] != '\n')
+00046       return false;
+00047   return true;
+00048 }
+00049 
+00050 std :: string getNextNode () {
+00051   
+00052   xmlChar * name, * value;
+00053 
+00054   do {
+00055     xmlTextReaderRead (reader);
+00056     name = xmlTextReaderName (reader);
+00057     value = xmlTextReaderValue (reader);
+00058     //    printf ("value = %s\n", value);
+00059   } while (! strcmp ((char *) name, "#text") && isSep (value));
+00060 
+00061   std :: string str;
+00062 
+00063   if (strcmp ((char *) name, "#text"))
+00064     str.assign ((char *) name);
+00065   else
+00066     str.assign ((char *) value);
+00067   
+00068   if (name)
+00069     xmlFree (name);
+00070   if (value)
+00071     xmlFree (value);
+00072     
+00073   return str;
+00074 }
+00075 
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/xml__parser_8h-source.html b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/xml__parser_8h-source.html new file mode 100644 index 000000000..18e186cb0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/html/xml__parser_8h-source.html @@ -0,0 +1,51 @@ + + +ParadisEO-PEO: xml_parser.h Source File + + + + +
+
+

xml_parser.h

00001 // "xml_parser.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __xml_parser_h
+00010 #define __xml_parser_h
+00011 
+00012 #include <string>
+00013 
+00014 extern void openXMLDocument (const char * __filename);
+00015 
+00016 extern void closeXMLDocument ();
+00017 
+00018 extern std :: string getAttributeValue (const std :: string & __attr);
+00019 
+00020 extern std :: string getNextNode ();
+00021 
+00022 #endif
+

Generated on Tue Jan 9 15:47:38 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/images/peoEA.png b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/images/peoEA.png new file mode 100644 index 000000000..01a237838 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/images/peoEA.png differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/FreeSans.ttf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/FreeSans.ttf new file mode 100644 index 000000000..b550b90ba Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/FreeSans.ttf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/Makefile b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/Makefile new file mode 100644 index 000000000..a67f1b7f6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/Makefile @@ -0,0 +1,17 @@ +all: clean refman.pdf + +refman.pdf: refman.tex + pdflatex refman.tex + makeindex refman.idx + pdflatex refman.tex + latex_count=5 ; \ + while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + pdflatex refman.tex ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/annotated.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/annotated.tex new file mode 100644 index 000000000..37607c7f5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/annotated.tex @@ -0,0 +1,27 @@ +\section{Paradis\-EO-PEO Class List} +Here are the classes, structs, unions and interfaces with brief descriptions:\begin{CompactList} +\item\contentsline{section}{\hyperlink{classCommunicable}{Communicable} }{\pageref{classCommunicable}}{} +\item\contentsline{section}{\hyperlink{classCommunicator}{Communicator} }{\pageref{classCommunicator}}{} +\item\contentsline{section}{\hyperlink{classCooperative}{Cooperative} }{\pageref{classCooperative}}{} +\item\contentsline{section}{\hyperlink{structNode}{Node} }{\pageref{structNode}}{} +\item\contentsline{section}{\hyperlink{classpeoAggEvalFunc}{peo\-Agg\-Eval\-Func$<$ EOT $>$} (The \hyperlink{classpeoAggEvalFunc}{peo\-Agg\-Eval\-Func} class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided )}{\pageref{classpeoAggEvalFunc}}{} +\item\contentsline{section}{\hyperlink{classpeoAsyncIslandMig}{peo\-Async\-Island\-Mig$<$ EOT $>$} (The \hyperlink{classpeoAsyncIslandMig}{peo\-Async\-Island\-Mig} class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e )}{\pageref{classpeoAsyncIslandMig}}{} +\item\contentsline{section}{\hyperlink{classpeoEA}{peo\-EA$<$ EOT $>$} (The \hyperlink{classpeoEA}{peo\-EA} class offers an elementary evolutionary algorithm implementation )}{\pageref{classpeoEA}}{} +\item\contentsline{section}{\hyperlink{classpeoNoAggEvalFunc}{peo\-No\-Agg\-Eval\-Func$<$ EOT $>$} (The \hyperlink{classpeoNoAggEvalFunc}{peo\-No\-Agg\-Eval\-Func} class does nothing more than an association between a fitness value and a specified individual )}{\pageref{classpeoNoAggEvalFunc}}{} +\item\contentsline{section}{\hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval$<$ EOT $>$} (The \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval} represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor )}{\pageref{classpeoParaPopEval}}{} +\item\contentsline{section}{\hyperlink{classpeoParaSGATransform}{peo\-Para\-SGATransform$<$ EOT $>$} }{\pageref{classpeoParaSGATransform}}{} +\item\contentsline{section}{\hyperlink{classpeoPopEval}{peo\-Pop\-Eval$<$ EOT $>$} (The {\bf \hyperlink{classpeoPopEval}{peo\-Pop\-Eval}} class provides the interface for constructing Paradis\-EO specific evaluation functors )}{\pageref{classpeoPopEval}}{} +\item\contentsline{section}{\hyperlink{classpeoSeqPopEval}{peo\-Seq\-Pop\-Eval$<$ EOT $>$} (The \hyperlink{classpeoSeqPopEval}{peo\-Seq\-Pop\-Eval} class acts only as a Paradis\-EO specific sequential evaluation functor - a wrapper for incorporating an {\bf eo\-Eval\-Func$<$ EOT $>$}-derived class as evaluation functor )}{\pageref{classpeoSeqPopEval}}{} +\item\contentsline{section}{\hyperlink{classpeoSeqTransform}{peo\-Seq\-Transform$<$ EOT $>$} (The \hyperlink{classpeoSeqTransform}{peo\-Seq\-Transform} represent a wrapper for offering the possibility of using EO derived transform operators along with the Paradis\-EO evolutionary algorithms )}{\pageref{classpeoSeqTransform}}{} +\item\contentsline{section}{\hyperlink{classpeoSyncIslandMig}{peo\-Sync\-Island\-Mig$<$ EOT $>$} (The \hyperlink{classpeoSyncIslandMig}{peo\-Sync\-Island\-Mig} class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e )}{\pageref{classpeoSyncIslandMig}}{} +\item\contentsline{section}{\hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start$<$ EOT $>$} (The \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start} class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population )}{\pageref{classpeoSyncMultiStart}}{} +\item\contentsline{section}{\hyperlink{classpeoTransform}{peo\-Transform$<$ EOT $>$} (The \hyperlink{classpeoTransform}{peo\-Transform} class acts only as an interface for creating transform operators - for an example please refer to the {\bf \hyperlink{classpeoSeqTransform}{peo\-Seq\-Transform}} and the {\bf \hyperlink{classpeoParaSGATransform}{peo\-Para\-SGATransform}} classes )}{\pageref{classpeoTransform}}{} +\item\contentsline{section}{\hyperlink{classReactiveThread}{Reactive\-Thread} }{\pageref{classReactiveThread}}{} +\item\contentsline{section}{\hyperlink{classRingTopology}{Ring\-Topology} }{\pageref{classRingTopology}}{} +\item\contentsline{section}{\hyperlink{classRunner}{Runner} }{\pageref{classRunner}}{} +\item\contentsline{section}{\hyperlink{structSEND__REQUEST}{SEND\_\-REQUEST} }{\pageref{structSEND__REQUEST}}{} +\item\contentsline{section}{\hyperlink{classService}{Service} }{\pageref{classService}}{} +\item\contentsline{section}{\hyperlink{classThread}{Thread} }{\pageref{classThread}}{} +\item\contentsline{section}{\hyperlink{classTopology}{Topology} }{\pageref{classTopology}}{} +\item\contentsline{section}{\hyperlink{classWorker}{Worker} }{\pageref{classWorker}}{} +\end{CompactList} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCommunicable.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCommunicable.eps new file mode 100644 index 000000000..a4f4be521 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCommunicable.eps @@ -0,0 +1,269 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 57.1429 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 8.75 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 7 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Communicable) cw +(Cooperative) cw +(Runner) cw +(Service) cw +(Worker) cw +(peoAsyncIslandMig< EOT >) cw +(peoSyncIslandMig< EOT >) cw +(peoEA< EOT >) cw +(peoPopEval< EOT >) cw +(peoSyncMultiStart< EOT >) cw +(peoTransform< EOT >) cw +(peoParaPopEval< EOT >) cw +(peoSeqPopEval< EOT >) cw +(peoParaSGATransform< EOT >) cw +(peoSeqTransform< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Communicable) 3 3 box + (Cooperative) 0.5 2 box + (Runner) 2 2 box + (Service) 4 2 box + (Worker) 5 2 box + (peoAsyncIslandMig< EOT >) 0 1 box + (peoSyncIslandMig< EOT >) 1 1 box + (peoEA< EOT >) 2 1 box + (peoPopEval< EOT >) 3 1 box + (peoSyncMultiStart< EOT >) 4 1 box + (peoTransform< EOT >) 5 1 box + (peoParaPopEval< EOT >) 2.5 0 box + (peoSeqPopEval< EOT >) 3.5 0 box + (peoParaSGATransform< EOT >) 4.5 0 box + (peoSeqTransform< EOT >) 5.5 0 box + +% ----- relations ----- + +solid +1 3 2.25 out +solid +0.5 5 3 conn +solid +0 0.5 2.75 in +solid +1 0.5 1.25 out +solid +0 1 2 conn +solid +0 2 2.75 in +solid +1 2 1.25 out +solid +0 4 2.75 in +solid +1 4 1.25 out +solid +3 5 2 conn +solid +0 5 2.75 in +solid +0 0 1.75 in +solid +0 1 1.75 in +solid +0 2 1.75 in +solid +0 3 1.75 in +solid +1 3 0.25 out +solid +2.5 3.5 1 conn +solid +0 4 1.75 in +solid +0 5 1.75 in +solid +1 5 0.25 out +solid +4.5 5.5 1 conn +solid +0 2.5 0.75 in +solid +0 3.5 0.75 in +solid +0 4.5 0.75 in +solid +0 5.5 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCommunicable.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCommunicable.pdf new file mode 100644 index 000000000..9f917a292 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCommunicable.pdf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCommunicable.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCommunicable.tex new file mode 100644 index 000000000..3d4ee6164 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCommunicable.tex @@ -0,0 +1,87 @@ +\hypertarget{classCommunicable}{ +\section{Communicable Class Reference} +\label{classCommunicable}\index{Communicable@{Communicable}} +} +Inheritance diagram for Communicable::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=1.6cm]{classCommunicable} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classCommunicable_8ae1827ecf7569b3db1ed386c7d8ad78}{ +\hyperlink{classCommunicable_8ae1827ecf7569b3db1ed386c7d8ad78}{Communicable} ()} +\label{classCommunicable_8ae1827ecf7569b3db1ed386c7d8ad78} + +\item +\hypertarget{classCommunicable_2280b0dfa0d3a515fccf62c2a9fd5f41}{ +virtual \hyperlink{classCommunicable_2280b0dfa0d3a515fccf62c2a9fd5f41}{$\sim$Communicable} ()} +\label{classCommunicable_2280b0dfa0d3a515fccf62c2a9fd5f41} + +\item +\hypertarget{classCommunicable_db4307b69b9ccacff55fdbf84b8f50e4}{ +COMM\_\-ID \hyperlink{classCommunicable_db4307b69b9ccacff55fdbf84b8f50e4}{get\-Key} ()} +\label{classCommunicable_db4307b69b9ccacff55fdbf84b8f50e4} + +\item +\hypertarget{classCommunicable_e1f8bd1ee810fd73d44315c95998d19d}{ +void \hyperlink{classCommunicable_e1f8bd1ee810fd73d44315c95998d19d}{lock} ()} +\label{classCommunicable_e1f8bd1ee810fd73d44315c95998d19d} + +\item +\hypertarget{classCommunicable_caa814847192e71f434fbf9479ede862}{ +void \hyperlink{classCommunicable_caa814847192e71f434fbf9479ede862}{unlock} ()} +\label{classCommunicable_caa814847192e71f434fbf9479ede862} + +\item +\hypertarget{classCommunicable_cb53e6534b947bc889aa181d9dbbd13b}{ +void \hyperlink{classCommunicable_cb53e6534b947bc889aa181d9dbbd13b}{stop} ()} +\label{classCommunicable_cb53e6534b947bc889aa181d9dbbd13b} + +\item +\hypertarget{classCommunicable_3306a9adb11a0ab5af342c0db9f7bb2a}{ +void \hyperlink{classCommunicable_3306a9adb11a0ab5af342c0db9f7bb2a}{resume} ()} +\label{classCommunicable_3306a9adb11a0ab5af342c0db9f7bb2a} + +\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +\hypertarget{classCommunicable_605b0efeffe81326f216c9903f5bbf4c}{ +COMM\_\-ID \hyperlink{classCommunicable_605b0efeffe81326f216c9903f5bbf4c}{key}} +\label{classCommunicable_605b0efeffe81326f216c9903f5bbf4c} + +\item +\hypertarget{classCommunicable_cf9639312f71a2f348bc1e7789ccbd9d}{ +sem\_\-t \hyperlink{classCommunicable_cf9639312f71a2f348bc1e7789ccbd9d}{sem\_\-lock}} +\label{classCommunicable_cf9639312f71a2f348bc1e7789ccbd9d} + +\item +\hypertarget{classCommunicable_29c53b9191348e0505e3bcba6d8b82b1}{ +sem\_\-t \hyperlink{classCommunicable_29c53b9191348e0505e3bcba6d8b82b1}{sem\_\-stop}} +\label{classCommunicable_29c53b9191348e0505e3bcba6d8b82b1} + +\end{CompactItemize} +\subsection*{Static Protected Attributes} +\begin{CompactItemize} +\item +\hypertarget{classCommunicable_7a6acfdc781a67c9c0ec4f17893f86c3}{ +static unsigned \hyperlink{classCommunicable_7a6acfdc781a67c9c0ec4f17893f86c3}{num\_\-comm} = 0} +\label{classCommunicable_7a6acfdc781a67c9c0ec4f17893f86c3} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 16 of file communicable.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +communicable.h\item +communicable.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCommunicator.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCommunicator.eps new file mode 100644 index 000000000..3d7cc0668 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCommunicator.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 550.459 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 0.908333 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Communicator) cw +(ReactiveThread) cw +(Thread) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Communicator) 0 0 box + (ReactiveThread) 0 1 box + (Thread) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCommunicator.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCommunicator.pdf new file mode 100644 index 000000000..2f413397f Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCommunicator.pdf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCommunicator.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCommunicator.tex new file mode 100644 index 000000000..a8d08b499 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCommunicator.tex @@ -0,0 +1,36 @@ +\hypertarget{classCommunicator}{ +\section{Communicator Class Reference} +\label{classCommunicator}\index{Communicator@{Communicator}} +} +Inheritance diagram for Communicator::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classCommunicator} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classCommunicator_7c9dce4ea92bd04d01d53f80c0ef08ee}{ +\hyperlink{classCommunicator_7c9dce4ea92bd04d01d53f80c0ef08ee}{Communicator} (int $\ast$\_\-\_\-argc, char $\ast$$\ast$$\ast$\_\-\_\-argv)} +\label{classCommunicator_7c9dce4ea92bd04d01d53f80c0ef08ee} + +\item +\hypertarget{classCommunicator_142fae13b16b166519315f248a513c62}{ +void \hyperlink{classCommunicator_142fae13b16b166519315f248a513c62}{start} ()} +\label{classCommunicator_142fae13b16b166519315f248a513c62} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 15 of file comm.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +comm.h\item +comm.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCooperative.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCooperative.eps new file mode 100644 index 000000000..60c6b6b94 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCooperative.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 166.667 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Cooperative) cw +(Communicable) cw +(peoAsyncIslandMig< EOT >) cw +(peoSyncIslandMig< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Cooperative) 0.5 1 box + (Communicable) 0.5 2 box + (peoAsyncIslandMig< EOT >) 0 0 box + (peoSyncIslandMig< EOT >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCooperative.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCooperative.pdf new file mode 100644 index 000000000..3c4e76e87 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCooperative.pdf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCooperative.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCooperative.tex new file mode 100644 index 000000000..43224f537 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classCooperative.tex @@ -0,0 +1,54 @@ +\hypertarget{classCooperative}{ +\section{Cooperative Class Reference} +\label{classCooperative}\index{Cooperative@{Cooperative}} +} +Inheritance diagram for Cooperative::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classCooperative} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classCooperative_4012b4e8329e87d26ee266491e1a883e}{ +\hyperlink{classRunner}{Runner} $\ast$ \hyperlink{classCooperative_4012b4e8329e87d26ee266491e1a883e}{get\-Owner} ()} +\label{classCooperative_4012b4e8329e87d26ee266491e1a883e} + +\item +\hypertarget{classCooperative_fe7b022567174c8305bc78d8c5749b12}{ +void \hyperlink{classCooperative_fe7b022567174c8305bc78d8c5749b12}{set\-Owner} (\hyperlink{classRunner}{Runner} \&\_\-\_\-runner)} +\label{classCooperative_fe7b022567174c8305bc78d8c5749b12} + +\item +\hypertarget{classCooperative_c609f2a1200da7d1ac96005602515fc6}{ +void \hyperlink{classCooperative_c609f2a1200da7d1ac96005602515fc6}{send} (\hyperlink{classCooperative}{Cooperative} $\ast$\_\-\_\-coop)} +\label{classCooperative_c609f2a1200da7d1ac96005602515fc6} + +\item +\hypertarget{classCooperative_4439ddeaa1246a2e44c003bfb781739b}{ +virtual void \hyperlink{classCooperative_4439ddeaa1246a2e44c003bfb781739b}{notify\-Sending} ()} +\label{classCooperative_4439ddeaa1246a2e44c003bfb781739b} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classCooperative_7604f094479d08154ede4996a45bf79e}{ +\hyperlink{classRunner}{Runner} $\ast$ \hyperlink{classCooperative_7604f094479d08154ede4996a45bf79e}{owner}} +\label{classCooperative_7604f094479d08154ede4996a45bf79e} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 17 of file cooperative.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +cooperative.h\item +coop.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classReactiveThread.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classReactiveThread.eps new file mode 100644 index 000000000..9c8a085ba --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classReactiveThread.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 275.229 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.81667 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(ReactiveThread) cw +(Thread) cw +(Communicator) cw +(Worker) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (ReactiveThread) 0.5 1 box + (Thread) 0.5 2 box + (Communicator) 0 0 box + (Worker) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classReactiveThread.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classReactiveThread.pdf new file mode 100644 index 000000000..4d4e70204 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classReactiveThread.pdf @@ -0,0 +1,76 @@ +%PDF-1.3 +%Çì¢ +5 0 obj +<> +stream +xœSMÓ0½ûWøÏŒ¿æ +Bœ»Dâ\•î¶°¡jYàï3·“n¤]E‘í¿yïÙ“³u€Ö•gw­y—ìÃ/ãìg}ÌÙ`·ÁîµÝ”-HJÁ6÷¦'£E ¢Ž$€‘lÓš7wûíîéøgß.ûí··Íwó©1C |F¶•|4g;–\ c†¤¢"@Á¶†cFà +˶–†P2Ì 뚅’Z×3©Ö—ÀÈ8’Abñá@}¼" +ê-I.qì“|<µíïŸÇÝöétYÏS†Ö(‰ ˆÎë> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000746 00000 n +0000000960 00000 n +0000000687 00000 n +0000000534 00000 n +0000000015 00000 n +0000000515 00000 n +0000000794 00000 n +0000000894 00000 n +0000000835 00000 n +0000000864 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [(OôˆmÅøzÌL„«)(OôˆmÅøzÌL„«)] +>> +startxref +1117 +%%EOF diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classReactiveThread.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classReactiveThread.tex new file mode 100644 index 000000000..c350c6eef --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classReactiveThread.tex @@ -0,0 +1,49 @@ +\hypertarget{classReactiveThread}{ +\section{Reactive\-Thread Class Reference} +\label{classReactiveThread}\index{ReactiveThread@{ReactiveThread}} +} +Inheritance diagram for Reactive\-Thread::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classReactiveThread} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classReactiveThread_77381649429941c99a3e3d568113d6cf}{ +\hyperlink{classReactiveThread_77381649429941c99a3e3d568113d6cf}{Reactive\-Thread} ()} +\label{classReactiveThread_77381649429941c99a3e3d568113d6cf} + +\item +\hypertarget{classReactiveThread_8263c2a32d8c99a49a05f1a7717d4262}{ +void \hyperlink{classReactiveThread_8263c2a32d8c99a49a05f1a7717d4262}{sleep} ()} +\label{classReactiveThread_8263c2a32d8c99a49a05f1a7717d4262} + +\item +\hypertarget{classReactiveThread_a724a54575de10f09cc03ab7aa4e59ce}{ +void \hyperlink{classReactiveThread_a724a54575de10f09cc03ab7aa4e59ce}{wake\-Up} ()} +\label{classReactiveThread_a724a54575de10f09cc03ab7aa4e59ce} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classReactiveThread_915e5a42dc8cb1bcf6738d5fe883a4e7}{ +sem\_\-t \hyperlink{classReactiveThread_915e5a42dc8cb1bcf6738d5fe883a4e7}{sem}} +\label{classReactiveThread_915e5a42dc8cb1bcf6738d5fe883a4e7} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 16 of file reac\_\-thread.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +reac\_\-thread.h\item +reac\_\-thread.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classRingTopology.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classRingTopology.eps new file mode 100644 index 000000000..04c98c56e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classRingTopology.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 412.371 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.2125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(RingTopology) cw +(Topology) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (RingTopology) 0 0 box + (Topology) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classRingTopology.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classRingTopology.pdf new file mode 100644 index 000000000..0ac55b282 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classRingTopology.pdf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classRingTopology.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classRingTopology.tex new file mode 100644 index 000000000..379dd1961 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classRingTopology.tex @@ -0,0 +1,31 @@ +\hypertarget{classRingTopology}{ +\section{Ring\-Topology Class Reference} +\label{classRingTopology}\index{RingTopology@{RingTopology}} +} +Inheritance diagram for Ring\-Topology::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classRingTopology} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classRingTopology_292a7746993788f96042f2f628cfcbc5}{ +void \hyperlink{classRingTopology_292a7746993788f96042f2f628cfcbc5}{set\-Neighbors} (\hyperlink{classCooperative}{Cooperative} $\ast$\_\-\_\-mig, std::vector$<$ \hyperlink{classCooperative}{Cooperative} $\ast$ $>$ \&\_\-\_\-from, std::vector$<$ \hyperlink{classCooperative}{Cooperative} $\ast$ $>$ \&\_\-\_\-to)} +\label{classRingTopology_292a7746993788f96042f2f628cfcbc5} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 14 of file ring\_\-topo.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +ring\_\-topo.h\item +ring\_\-topo.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classRunner.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classRunner.eps new file mode 100644 index 000000000..6e1d6846c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classRunner.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 280.374 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.78333 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Runner) cw +(Communicable) cw +(Thread) cw +(peoEA< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Runner) 0.5 1 box + (Communicable) 0 2 box + (Thread) 1 2 box + (peoEA< EOT >) 0.5 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in +solid +1 0.5 0.25 out +solid +0 0.5 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classRunner.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classRunner.pdf new file mode 100644 index 000000000..1b1b9f40e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classRunner.pdf @@ -0,0 +1,73 @@ +%PDF-1.3 +%Çì¢ +5 0 obj +<> +stream +xœ¥TËnÛ0¼ó+öØô°å.Ÿ ÒÀè±pªH]çË©ýý.e™¦¬ú‚ q´™åˆ;°H`Ë5>W½ùt“àþÕXøª÷½Ù`|¬zøÒiPǘEŸ£Îiti‚ÃR +{§åù3¦4º} S¾yôö{Èqº'¨Æ13Ý+›ú½ˆ&oѹ R²BSëîãœÃ)Õ#2åpŠ–¸ cÓÑ¥TÎŽ™Õú‡aÈYùìëÌë±PºO ¡¦%ÑMrñ®zž¥A‘¦ÌÙÆ£o&4ƶKó2?endstream +endobj +6 0 obj +469 +endobj +4 0 obj +<> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000785 00000 n +0000000999 00000 n +0000000726 00000 n +0000000573 00000 n +0000000015 00000 n +0000000554 00000 n +0000000833 00000 n +0000000933 00000 n +0000000874 00000 n +0000000903 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [(;û“ Ô\nà"h'.¯ŽÇk)(;û“ Ô\nà"h'.¯ŽÇk)] +>> +startxref +1156 +%%EOF diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classRunner.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classRunner.tex new file mode 100644 index 000000000..5fc2e5e12 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classRunner.tex @@ -0,0 +1,80 @@ +\hypertarget{classRunner}{ +\section{Runner Class Reference} +\label{classRunner}\index{Runner@{Runner}} +} +Inheritance diagram for Runner::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classRunner} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classRunner_7acb8258c21da9daa62f9a177a2e5acd}{ +\hyperlink{classRunner_7acb8258c21da9daa62f9a177a2e5acd}{Runner} ()} +\label{classRunner_7acb8258c21da9daa62f9a177a2e5acd} + +\item +\hypertarget{classRunner_7dc4419051fcc5cc9dadd54ecc9cd47d}{ +void \hyperlink{classRunner_7dc4419051fcc5cc9dadd54ecc9cd47d}{start} ()} +\label{classRunner_7dc4419051fcc5cc9dadd54ecc9cd47d} + +\item +\hypertarget{classRunner_5bc239db2be753b77369fa9a038769fd}{ +void \hyperlink{classRunner_5bc239db2be753b77369fa9a038769fd}{wait\-Starting} ()} +\label{classRunner_5bc239db2be753b77369fa9a038769fd} + +\item +\hypertarget{classRunner_40adbfb7d6944189b4fff60b02e669ca}{ +bool \hyperlink{classRunner_40adbfb7d6944189b4fff60b02e669ca}{is\-Local} ()} +\label{classRunner_40adbfb7d6944189b4fff60b02e669ca} + +\item +\hypertarget{classRunner_0f133e75c28fb8264549814f80608e68}{ +void \hyperlink{classRunner_0f133e75c28fb8264549814f80608e68}{terminate} ()} +\label{classRunner_0f133e75c28fb8264549814f80608e68} + +\item +\hypertarget{classRunner_5026c74eec184e3a15cb3c0ec4200a57}{ +RUNNER\_\-ID \hyperlink{classRunner_5026c74eec184e3a15cb3c0ec4200a57}{get\-ID} ()} +\label{classRunner_5026c74eec184e3a15cb3c0ec4200a57} + +\item +\hypertarget{classRunner_2ad6d199d684d6f34347fc202ffe2fa3}{ +void \hyperlink{classRunner_2ad6d199d684d6f34347fc202ffe2fa3}{pack\-Termination} ()} +\label{classRunner_2ad6d199d684d6f34347fc202ffe2fa3} + +\item +\hypertarget{classRunner_3591be473e0fcee1105fb57319b529aa}{ +void \hyperlink{classRunner_3591be473e0fcee1105fb57319b529aa}{notify\-Sending\-Termination} ()} +\label{classRunner_3591be473e0fcee1105fb57319b529aa} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classRunner_4b0827d5df2df632db4ab71dd55e81b2}{ +sem\_\-t \hyperlink{classRunner_4b0827d5df2df632db4ab71dd55e81b2}{sem\_\-start}} +\label{classRunner_4b0827d5df2df632db4ab71dd55e81b2} + +\item +\hypertarget{classRunner_1989c1f8e0b0b54ad2e60a341007e59d}{ +unsigned \hyperlink{classRunner_1989c1f8e0b0b54ad2e60a341007e59d}{id}} +\label{classRunner_1989c1f8e0b0b54ad2e60a341007e59d} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 19 of file runner.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +runner.h\item +core/runner.cpp\item +rmc/mpi/runner.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classService.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classService.eps new file mode 100644 index 000000000..77ffc2408 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classService.eps @@ -0,0 +1,237 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 100 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 5 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 4 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Service) cw +(Communicable) cw +(peoPopEval< EOT >) cw +(peoSyncMultiStart< EOT >) cw +(peoTransform< EOT >) cw +(peoParaPopEval< EOT >) cw +(peoSeqPopEval< EOT >) cw +(peoParaSGATransform< EOT >) cw +(peoSeqTransform< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Service) 1.5 2 box + (Communicable) 1.5 3 box + (peoPopEval< EOT >) 0.5 1 box + (peoSyncMultiStart< EOT >) 1.5 1 box + (peoTransform< EOT >) 2.5 1 box + (peoParaPopEval< EOT >) 0 0 box + (peoSeqPopEval< EOT >) 1 0 box + (peoParaSGATransform< EOT >) 2 0 box + (peoSeqTransform< EOT >) 3 0 box + +% ----- relations ----- + +solid +0 1.5 2 out +solid +1 1.5 3 in +solid +1 1.5 1.25 out +solid +0.5 2.5 2 conn +solid +0 0.5 1.75 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 1.5 1.75 in +solid +0 2.5 1.75 in +solid +1 2.5 0.25 out +solid +2 3 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in +solid +0 2 0.75 in +solid +0 3 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classService.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classService.pdf new file mode 100644 index 000000000..56c73f705 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classService.pdf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classService.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classService.tex new file mode 100644 index 000000000..7d0ea5f92 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classService.tex @@ -0,0 +1,100 @@ +\hypertarget{classService}{ +\section{Service Class Reference} +\label{classService}\index{Service@{Service}} +} +Inheritance diagram for Service::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.8cm]{classService} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classService_33b149b98498c0e7e401b0f0839d7f0d}{ +void \hyperlink{classService_33b149b98498c0e7e401b0f0839d7f0d}{set\-Owner} (\hyperlink{classThread}{Thread} \&\_\-\_\-owner)} +\label{classService_33b149b98498c0e7e401b0f0839d7f0d} + +\item +\hypertarget{classService_0dae00309c51a7b7069788142aed799f}{ +\hyperlink{classThread}{Thread} $\ast$ \hyperlink{classService_0dae00309c51a7b7069788142aed799f}{get\-Owner} ()} +\label{classService_0dae00309c51a7b7069788142aed799f} + +\item +\hypertarget{classService_7e2ae35a9070a05dcd46488df649896d}{ +void \hyperlink{classService_7e2ae35a9070a05dcd46488df649896d}{request\-Resource\-Request} (unsigned \_\-\_\-how\_\-many=1)} +\label{classService_7e2ae35a9070a05dcd46488df649896d} + +\item +\hypertarget{classService_c4289f98d1cd9ed53e850efbb6a947bd}{ +void \hyperlink{classService_c4289f98d1cd9ed53e850efbb6a947bd}{pack\-Resource\-Request} ()} +\label{classService_c4289f98d1cd9ed53e850efbb6a947bd} + +\item +\hypertarget{classService_aea4b8f7f8fb88e83862ee4bfd9ab207}{ +virtual void \hyperlink{classService_aea4b8f7f8fb88e83862ee4bfd9ab207}{pack\-Data} ()} +\label{classService_aea4b8f7f8fb88e83862ee4bfd9ab207} + +\item +\hypertarget{classService_3bd87b444710813d30fd754d4d0b4df3}{ +virtual void \hyperlink{classService_3bd87b444710813d30fd754d4d0b4df3}{unpack\-Data} ()} +\label{classService_3bd87b444710813d30fd754d4d0b4df3} + +\item +\hypertarget{classService_e4f2894e6121e60f38d41cfbd7447ae4}{ +virtual void \hyperlink{classService_e4f2894e6121e60f38d41cfbd7447ae4}{execute} ()} +\label{classService_e4f2894e6121e60f38d41cfbd7447ae4} + +\item +\hypertarget{classService_e5e4f90b2315e15c2a2913bd370f4cf5}{ +virtual void \hyperlink{classService_e5e4f90b2315e15c2a2913bd370f4cf5}{pack\-Result} ()} +\label{classService_e5e4f90b2315e15c2a2913bd370f4cf5} + +\item +\hypertarget{classService_45c06344edbfa482b91f68e2035a6099}{ +virtual void \hyperlink{classService_45c06344edbfa482b91f68e2035a6099}{unpack\-Result} ()} +\label{classService_45c06344edbfa482b91f68e2035a6099} + +\item +\hypertarget{classService_81ad4d6ebb50045b8977e2ab74826f30}{ +virtual void \hyperlink{classService_81ad4d6ebb50045b8977e2ab74826f30}{notify\-Sending\-Data} ()} +\label{classService_81ad4d6ebb50045b8977e2ab74826f30} + +\item +\hypertarget{classService_94e2012e76aaae3aa8199250f558d503}{ +virtual void \hyperlink{classService_94e2012e76aaae3aa8199250f558d503}{notify\-Sending\-Resource\-Request} ()} +\label{classService_94e2012e76aaae3aa8199250f558d503} + +\item +\hypertarget{classService_f94cc8a5c2665d4574041737e61e9ffc}{ +virtual void \hyperlink{classService_f94cc8a5c2665d4574041737e61e9ffc}{notify\-Sending\-All\-Resource\-Requests} ()} +\label{classService_f94cc8a5c2665d4574041737e61e9ffc} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classService_8b615c65c876f342fe8209eb7e36d7b2}{ +\hyperlink{classThread}{Thread} $\ast$ \hyperlink{classService_8b615c65c876f342fe8209eb7e36d7b2}{owner}} +\label{classService_8b615c65c876f342fe8209eb7e36d7b2} + +\item +\hypertarget{classService_a5b2ad9520bb3710b54348b99acebd58}{ +unsigned \hyperlink{classService_a5b2ad9520bb3710b54348b99acebd58}{num\_\-sent\_\-rr}} +\label{classService_a5b2ad9520bb3710b54348b99acebd58} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 17 of file service.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +service.h\item +core/service.cpp\item +rmc/mpi/service.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classThread.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classThread.eps new file mode 100644 index 000000000..e02a5f5fe --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classThread.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 183.486 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.725 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 3 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Thread) cw +(ReactiveThread) cw +(Runner) cw +(Communicator) cw +(Worker) cw +(peoEA< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Thread) 1.25 2 box + (ReactiveThread) 0.5 1 box + (Runner) 2 1 box + (Communicator) 0 0 box + (Worker) 1 0 box + (peoEA< EOT >) 2 0 box + +% ----- relations ----- + +solid +1 1.25 1.25 out +solid +0.5 2 2 conn +solid +0 0.5 1.75 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 2 1.75 in +solid +1 2 0.25 out +solid +0 0 0.75 in +solid +0 1 0.75 in +solid +0 2 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classThread.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classThread.pdf new file mode 100644 index 000000000..016da4c83 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classThread.pdf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classThread.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classThread.tex new file mode 100644 index 000000000..46d9b9d3e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classThread.tex @@ -0,0 +1,54 @@ +\hypertarget{classThread}{ +\section{Thread Class Reference} +\label{classThread}\index{Thread@{Thread}} +} +Inheritance diagram for Thread::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classThread} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classThread_95c703fb8f2f27cb64f475a8c940864a}{ +\hyperlink{classThread_95c703fb8f2f27cb64f475a8c940864a}{Thread} ()} +\label{classThread_95c703fb8f2f27cb64f475a8c940864a} + +\item +\hypertarget{classThread_37d9edd3a1a776cbc27dedff949c9726}{ +virtual \hyperlink{classThread_37d9edd3a1a776cbc27dedff949c9726}{$\sim$Thread} ()} +\label{classThread_37d9edd3a1a776cbc27dedff949c9726} + +\item +\hypertarget{classThread_e197c46f8f62ecce6d2a7fe95bdc5b38}{ +void \hyperlink{classThread_e197c46f8f62ecce6d2a7fe95bdc5b38}{set\-Active} ()} +\label{classThread_e197c46f8f62ecce6d2a7fe95bdc5b38} + +\item +\hypertarget{classThread_20632ffe9ddfa2a478afb0c84dc1096b}{ +void \hyperlink{classThread_20632ffe9ddfa2a478afb0c84dc1096b}{set\-Passive} ()} +\label{classThread_20632ffe9ddfa2a478afb0c84dc1096b} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classThread_1b155d63bca3096ac4a1d039aea83c7c}{ +bool \hyperlink{classThread_1b155d63bca3096ac4a1d039aea83c7c}{act}} +\label{classThread_1b155d63bca3096ac4a1d039aea83c7c} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 16 of file thread.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +thread.h\item +thread.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classTopology.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classTopology.eps new file mode 100644 index 000000000..45dacefa6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classTopology.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 412.371 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.2125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Topology) cw +(RingTopology) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Topology) 0 1 box + (RingTopology) 0 0 box + +% ----- relations ----- + +solid +1 0 0.25 out +solid +0 0 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classTopology.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classTopology.pdf new file mode 100644 index 000000000..72f8e14c7 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classTopology.pdf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classTopology.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classTopology.tex new file mode 100644 index 000000000..3bdb11a3e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classTopology.tex @@ -0,0 +1,44 @@ +\hypertarget{classTopology}{ +\section{Topology Class Reference} +\label{classTopology}\index{Topology@{Topology}} +} +Inheritance diagram for Topology::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classTopology} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classTopology_3e447669757c8311c7f6f8edc705abf2}{ +virtual \hyperlink{classTopology_3e447669757c8311c7f6f8edc705abf2}{$\sim$Topology} ()} +\label{classTopology_3e447669757c8311c7f6f8edc705abf2} + +\item +\hypertarget{classTopology_62bc46d8c20fdc71dad9e7c7a0d7aded}{ +void \hyperlink{classTopology_62bc46d8c20fdc71dad9e7c7a0d7aded}{add} (\hyperlink{classCooperative}{Cooperative} \&\_\-\_\-mig)} +\label{classTopology_62bc46d8c20fdc71dad9e7c7a0d7aded} + +\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +\hypertarget{classTopology_247a2faa8568b678f0b7b11e62c7812c}{ +std::vector$<$ \hyperlink{classCooperative}{Cooperative} $\ast$ $>$ \hyperlink{classTopology_247a2faa8568b678f0b7b11e62c7812c}{mig}} +\label{classTopology_247a2faa8568b678f0b7b11e62c7812c} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 16 of file topology.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +topology.h\item +topology.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classWorker.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classWorker.eps new file mode 100644 index 000000000..5972d40a6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classWorker.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 275.229 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.81667 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Worker) cw +(Communicable) cw +(ReactiveThread) cw +(Thread) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Worker) 0.5 0 box + (Communicable) 0 1 box + (ReactiveThread) 1 1 box + (Thread) 1 2 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +0 1 1 conn +solid +1 0 1 in +solid +1 1 1 in +solid +0 1 1 out +solid +1 1 2 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classWorker.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classWorker.pdf new file mode 100644 index 000000000..695ac925a Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classWorker.pdf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classWorker.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classWorker.tex new file mode 100644 index 000000000..fe55f2a2f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classWorker.tex @@ -0,0 +1,94 @@ +\hypertarget{classWorker}{ +\section{Worker Class Reference} +\label{classWorker}\index{Worker@{Worker}} +} +Inheritance diagram for Worker::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classWorker} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classWorker_3754817df06ffe220f7f0d903c78ccac}{ +\hyperlink{classWorker_3754817df06ffe220f7f0d903c78ccac}{Worker} ()} +\label{classWorker_3754817df06ffe220f7f0d903c78ccac} + +\item +\hypertarget{classWorker_abcbbace05c6113f1959c494b3577291}{ +void \hyperlink{classWorker_abcbbace05c6113f1959c494b3577291}{start} ()} +\label{classWorker_abcbbace05c6113f1959c494b3577291} + +\item +\hypertarget{classWorker_83780920118e6c2b67d9477bdf8be248}{ +void \hyperlink{classWorker_83780920118e6c2b67d9477bdf8be248}{pack\-Result} ()} +\label{classWorker_83780920118e6c2b67d9477bdf8be248} + +\item +\hypertarget{classWorker_bff2bdcd64fe5400156cc78704c64953}{ +void \hyperlink{classWorker_bff2bdcd64fe5400156cc78704c64953}{unpack\-Data} ()} +\label{classWorker_bff2bdcd64fe5400156cc78704c64953} + +\item +\hypertarget{classWorker_60d2e8eba85b9ef403d94be54c391640}{ +void \hyperlink{classWorker_60d2e8eba85b9ef403d94be54c391640}{pack\-Task\-Done} ()} +\label{classWorker_60d2e8eba85b9ef403d94be54c391640} + +\item +\hypertarget{classWorker_e2f487014766a73c5788bdcfd58ad863}{ +void \hyperlink{classWorker_e2f487014766a73c5788bdcfd58ad863}{notify\-Sending\-Result} ()} +\label{classWorker_e2f487014766a73c5788bdcfd58ad863} + +\item +\hypertarget{classWorker_13efd6a8e275745329a4a8e23a0eb0bb}{ +void \hyperlink{classWorker_13efd6a8e275745329a4a8e23a0eb0bb}{notify\-Sending\-Task\-Done} ()} +\label{classWorker_13efd6a8e275745329a4a8e23a0eb0bb} + +\item +\hypertarget{classWorker_5dab4ea663546b5a49d9398d7a624d27}{ +void \hyperlink{classWorker_5dab4ea663546b5a49d9398d7a624d27}{set\-Source} (int \_\-\_\-rank)} +\label{classWorker_5dab4ea663546b5a49d9398d7a624d27} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classWorker_b5ffcb995e12fa71b9551e91729d6972}{ +WORKER\_\-ID \hyperlink{classWorker_b5ffcb995e12fa71b9551e91729d6972}{id}} +\label{classWorker_b5ffcb995e12fa71b9551e91729d6972} + +\item +\hypertarget{classWorker_d7dc76e301fd2bcf5d3a2088a59f1378}{ +SERVICE\_\-ID \hyperlink{classWorker_d7dc76e301fd2bcf5d3a2088a59f1378}{serv\_\-id}} +\label{classWorker_d7dc76e301fd2bcf5d3a2088a59f1378} + +\item +\hypertarget{classWorker_454e1764ed165af733cc44a73e395692}{ +\hyperlink{classService}{Service} $\ast$ \hyperlink{classWorker_454e1764ed165af733cc44a73e395692}{serv}} +\label{classWorker_454e1764ed165af733cc44a73e395692} + +\item +\hypertarget{classWorker_895c3ebc198018ea3391c09bc802d2f6}{ +int \hyperlink{classWorker_895c3ebc198018ea3391c09bc802d2f6}{src}} +\label{classWorker_895c3ebc198018ea3391c09bc802d2f6} + +\item +\hypertarget{classWorker_7ba5a18b2918cf9e704536b763be37f7}{ +bool \hyperlink{classWorker_7ba5a18b2918cf9e704536b763be37f7}{toto}} +\label{classWorker_7ba5a18b2918cf9e704536b763be37f7} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 18 of file worker.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +worker.h\item +worker.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoAggEvalFunc.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoAggEvalFunc.eps new file mode 100644 index 000000000..0caadfe0f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoAggEvalFunc.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 218.579 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.2875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoAggEvalFunc< EOT >) cw +(peoNoAggEvalFunc< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoAggEvalFunc< EOT >) 0 1 box + (peoNoAggEvalFunc< EOT >) 0 0 box + +% ----- relations ----- + +solid +1 0 0.25 out +solid +0 0 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoAggEvalFunc.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoAggEvalFunc.pdf new file mode 100644 index 000000000..6e0a10d8a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoAggEvalFunc.pdf @@ -0,0 +1,73 @@ +%PDF-1.3 +%Çì¢ +5 0 obj +<> +stream +xœ•NÛJ1}Ÿ¯8¶q&77P +-l}SªùYÚEizQÔßwÒ-l}$„““9—9€ë¹`Wèöéý1îõöt"9 p®`™UÔÀ%™yKƒYàÙÄä$ Ì…nŽ›Ã¢ïÛ¯—ÝêsßÍÐ>fÌ'ùÚLkrÎpøÖ„W­gA¿#ã}CÏÿë—h|JÖõ-Pm¿û4" +YE¤Ä(Ãó¼ÜN%#«ŸL€HÓèÌúÀWìʵ´ö”1ºÆ­é[çR¿endstream +endobj +6 0 obj +204 +endobj +4 0 obj +<> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000520 00000 n +0000000734 00000 n +0000000461 00000 n +0000000308 00000 n +0000000015 00000 n +0000000289 00000 n +0000000568 00000 n +0000000668 00000 n +0000000609 00000 n +0000000638 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [(ÐnäÂô“¦öM[«_)(ÐnäÂô“¦öM[«_)] +>> +startxref +891 +%%EOF diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoAggEvalFunc.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoAggEvalFunc.tex new file mode 100644 index 000000000..dc3bf9db5 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoAggEvalFunc.tex @@ -0,0 +1,39 @@ +\hypertarget{classpeoAggEvalFunc}{ +\section{peo\-Agg\-Eval\-Func$<$ EOT $>$ Class Template Reference} +\label{classpeoAggEvalFunc}\index{peoAggEvalFunc@{peoAggEvalFunc}} +} +The \hyperlink{classpeoAggEvalFunc}{peo\-Agg\-Eval\-Func} class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided. + + +{\tt \#include $<$peo\-Agg\-Eval\-Func.h$>$} + +Inheritance diagram for peo\-Agg\-Eval\-Func$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classpeoAggEvalFunc} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Agg\-Eval\-Func$<$ EOT $>$} + +The \hyperlink{classpeoAggEvalFunc}{peo\-Agg\-Eval\-Func} class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided. + +The class inherits {\bf public eo\-BF$<$ EOT\&, const typename EOT :: Fitness\&, void $>$} thus requiring, for the derived classes, the creation of a function having the following signature: + +\begin{TabularC}{2} +\hline +void operator()( EOT\& \_\-\_\-eot, const typename EOT :: Fitness\& \_\-\_\-partial\_\-fittness ); ~ &~ \\\hline +\end{TabularC} + + +The aggregation object is called in an iterative manner for each of the results obtained by applying partial evaluation functions. + + + +Definition at line 25 of file peo\-Agg\-Eval\-Func.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Agg\-Eval\-Func.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoAsyncIslandMig.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoAsyncIslandMig.eps new file mode 100644 index 000000000..1d54a93f4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoAsyncIslandMig.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 333.333 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.5 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoAsyncIslandMig< EOT >) cw +(Cooperative) cw +(Communicable) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoAsyncIslandMig< EOT >) 0 0 box + (Cooperative) 0 1 box + (Communicable) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoAsyncIslandMig.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoAsyncIslandMig.pdf new file mode 100644 index 000000000..9b6866f57 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoAsyncIslandMig.pdf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoAsyncIslandMig.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoAsyncIslandMig.tex new file mode 100644 index 000000000..670a8acb9 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoAsyncIslandMig.tex @@ -0,0 +1,216 @@ +\hypertarget{classpeoAsyncIslandMig}{ +\section{peo\-Async\-Island\-Mig$<$ EOT $>$ Class Template Reference} +\label{classpeoAsyncIslandMig}\index{peoAsyncIslandMig@{peoAsyncIslandMig}} +} +The \hyperlink{classpeoAsyncIslandMig}{peo\-Async\-Island\-Mig} class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e. + + +{\tt \#include $<$peo\-Async\-Island\-Mig.h$>$} + +Inheritance diagram for peo\-Async\-Island\-Mig$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classpeoAsyncIslandMig} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hyperlink{classpeoAsyncIslandMig_e0f706cbf4148d3ca327227a5c7a9fdf}{peo\-Async\-Island\-Mig} (eo\-Continue$<$ EOT $>$ \&\_\-\_\-cont, eo\-Select$<$ EOT $>$ \&\_\-\_\-select, eo\-Replacement$<$ EOT $>$ \&\_\-\_\-replace, \hyperlink{classTopology}{Topology} \&\_\-\_\-topology, eo\-Pop$<$ EOT $>$ \&\_\-\_\-source, eo\-Pop$<$ EOT $>$ \&\_\-\_\-destination) +\begin{CompactList}\small\item\em Constructor for the \hyperlink{classpeoAsyncIslandMig}{peo\-Async\-Island\-Mig} class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. \item\end{CompactList}\item +void \hyperlink{classpeoAsyncIslandMig_13581e54425727a7f785ca8a6df527b5}{operator()} () +\begin{CompactList}\small\item\em Function operator to be called as checkpoint for performing the migration step. \item\end{CompactList}\item +\hypertarget{classpeoAsyncIslandMig_6d790a5d0b6ac510cac4f61a1c0d8f16}{ +void \hyperlink{classpeoAsyncIslandMig_6d790a5d0b6ac510cac4f61a1c0d8f16}{pack} ()} +\label{classpeoAsyncIslandMig_6d790a5d0b6ac510cac4f61a1c0d8f16} + +\begin{CompactList}\small\item\em Auxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function. \item\end{CompactList}\item +\hypertarget{classpeoAsyncIslandMig_455501aee5db2bbfbae15779c8429369}{ +void \hyperlink{classpeoAsyncIslandMig_455501aee5db2bbfbae15779c8429369}{unpack} ()} +\label{classpeoAsyncIslandMig_455501aee5db2bbfbae15779c8429369} + +\begin{CompactList}\small\item\em Auxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classpeoAsyncIslandMig_87a4ef7d4bd30d349a801bf0f9e87c82}{ +void \hyperlink{classpeoAsyncIslandMig_87a4ef7d4bd30d349a801bf0f9e87c82}{emigrate} ()} +\label{classpeoAsyncIslandMig_87a4ef7d4bd30d349a801bf0f9e87c82} + +\item +\hypertarget{classpeoAsyncIslandMig_5a9a64ba51a696e45f91b362c39c9a64}{ +void \hyperlink{classpeoAsyncIslandMig_5a9a64ba51a696e45f91b362c39c9a64}{immigrate} ()} +\label{classpeoAsyncIslandMig_5a9a64ba51a696e45f91b362c39c9a64} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classpeoAsyncIslandMig_2fc077d02ef9ea4595cfe883af0d4f83}{ +eo\-Continue$<$ EOT $>$ \& \hyperlink{classpeoAsyncIslandMig_2fc077d02ef9ea4595cfe883af0d4f83}{cont}} +\label{classpeoAsyncIslandMig_2fc077d02ef9ea4595cfe883af0d4f83} + +\item +\hypertarget{classpeoAsyncIslandMig_b1fa045094c8a411323e75b5820c80c2}{ +eo\-Select$<$ EOT $>$ \& \hyperlink{classpeoAsyncIslandMig_b1fa045094c8a411323e75b5820c80c2}{select}} +\label{classpeoAsyncIslandMig_b1fa045094c8a411323e75b5820c80c2} + +\item +\hypertarget{classpeoAsyncIslandMig_b761dbd880ee32e170741ecd78da6f48}{ +eo\-Replacement$<$ EOT $>$ \& \hyperlink{classpeoAsyncIslandMig_b761dbd880ee32e170741ecd78da6f48}{replace}} +\label{classpeoAsyncIslandMig_b761dbd880ee32e170741ecd78da6f48} + +\item +\hypertarget{classpeoAsyncIslandMig_e45e5a808a96f0853ab6ba42339fe679}{ +\hyperlink{classTopology}{Topology} \& \hyperlink{classpeoAsyncIslandMig_e45e5a808a96f0853ab6ba42339fe679}{topology}} +\label{classpeoAsyncIslandMig_e45e5a808a96f0853ab6ba42339fe679} + +\item +\hypertarget{classpeoAsyncIslandMig_8a502d82c773033e274dca932fc2d4ee}{ +eo\-Pop$<$ EOT $>$ \& \hyperlink{classpeoAsyncIslandMig_8a502d82c773033e274dca932fc2d4ee}{source}} +\label{classpeoAsyncIslandMig_8a502d82c773033e274dca932fc2d4ee} + +\item +\hypertarget{classpeoAsyncIslandMig_e407f411d08ae7d96992603c145a7e43}{ +eo\-Pop$<$ EOT $>$ \& \hyperlink{classpeoAsyncIslandMig_e407f411d08ae7d96992603c145a7e43}{destination}} +\label{classpeoAsyncIslandMig_e407f411d08ae7d96992603c145a7e43} + +\item +\hypertarget{classpeoAsyncIslandMig_b8c76d98d9ae99dd930a77c12860519a}{ +std::queue$<$ eo\-Pop$<$ EOT $>$ $>$ \hyperlink{classpeoAsyncIslandMig_b8c76d98d9ae99dd930a77c12860519a}{imm}} +\label{classpeoAsyncIslandMig_b8c76d98d9ae99dd930a77c12860519a} + +\item +\hypertarget{classpeoAsyncIslandMig_a9cc0e2d61cac6e11647b141962adc89}{ +std::queue$<$ eo\-Pop$<$ EOT $>$ $>$ \hyperlink{classpeoAsyncIslandMig_a9cc0e2d61cac6e11647b141962adc89}{em}} +\label{classpeoAsyncIslandMig_a9cc0e2d61cac6e11647b141962adc89} + +\item +\hypertarget{classpeoAsyncIslandMig_1a2c0004d23bc303420af137a8c8bd27}{ +std::queue$<$ \hyperlink{classCooperative}{Cooperative} $\ast$ $>$ \hyperlink{classpeoAsyncIslandMig_1a2c0004d23bc303420af137a8c8bd27}{coop\_\-em}} +\label{classpeoAsyncIslandMig_1a2c0004d23bc303420af137a8c8bd27} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Async\-Island\-Mig$<$ EOT $>$} + +The \hyperlink{classpeoAsyncIslandMig}{peo\-Async\-Island\-Mig} class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e. + +continuation criterion, selection and replacement strategies, a topological model and the source and destination population for the migrating individuals. As opposed to the synchronous migration model, in the asynchronous migration approach, there is no synchronization step between islands after performing the emigration phase. + +The migration operator is called at the end of each generation of an evolutionary algorithms as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm: + +\begin{TabularC}{2} +\hline +{\bf do} \{ ~ &~ \\\hline +~~~~~~~~ select( population, offsprings ); ~ &// select the offsprings from the current population \\\hline +~~~~~~~~ transform( offsprings ); ~ &// crossover and mutation operators are applied on the selected offsprings \\\hline +~~~~~~~~ evaluate( offsprings ); ~ &// evaluation step of the resulting offsprings \\\hline +~~~~~~~~ replace( population, offsprings ); ~ &// replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy \\\hline +\} {\bf while} ( ea\-Checkpoint\-Continue( population ) ); ~ &// checkpoint operators are applied on the current population, including the migration operator, if any specified \\\hline +\end{TabularC} + + +Constructing an asynchronous island migration model requires having defined (1) a topological migration model, (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, and (4) an owner object must be set. The owner object must be derived from the {\bf \hyperlink{classRunner}{Runner}} class (for example a \hyperlink{classpeoEA}{peo\-EA} object represents a possible owner). A simple example is offered bellow: + +\begin{enumerate} +\item topological model to be followed when performing migrations: \par + \par + \begin{TabularC}{2} +\hline +\hyperlink{classRingTopology}{Ring\-Topology} mig\-Topology; ~ &// a simple ring topological model - each island communicates with two other islands \\\hline +\end{TabularC} + + +\item the continuation criterion, selection and replacement strategy etc. are defined: \par + \par + \begin{TabularC}{2} +\hline +eo\-Pop$<$ EOT $>$ population( POP\_\-SIZE, pop\-Initializer ); ~ &// population of individuals to be used for the evolutionary algorithm \\\hline +~ &~ \\\hline +eo\-Periodic\-Continue$<$ EOT $>$ mig\-Cont( MIG\_\-FREQ ); ~ &// migrations occur periodically at MIG\_\-FREQ iterations \\\hline +eo\-Random\-Select$<$ EOT $>$ mig\-Select\-Strategy; ~ &// selection strategy - in this case a random selection is applied \\\hline +eo\-Select\-Number$<$ EOT $>$ mig\-Select( mig\-Select\-Strategy, MIG\_\-SIZE ); ~ &// number of individuals to be selected using the specified strategy \\\hline +eo\-Plus\-Replacement$<$ EOT $>$ mig\-Replace; ~ &// immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals \\\hline +~ &~ \\\hline +peo\-Async\-Island\-Mig$<$ EOT $>$ async\-Migration( \par + ~~~~~~~~ mig\-Cont, mig\-Select, mig\-Replace, mig\-Topology, \par + ~~~~~~~~ population, population \par + ); ~ &// asynchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated \\\hline +\end{TabularC} + + +\item creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope): \par + \par + \begin{TabularC}{2} +\hline +... ~ &~ \\\hline +eo\-Gen\-Continue$<$ EOT $>$ ea\-Cont( NUM\_\-GEN ); ~ &// the evolutionary algorithm will stop after NUM\_\-GEN generations \\\hline +eo\-Check\-Point$<$ EOT $>$ ea\-Checkpoint\-Continue( ea\-Cont ); ~ &// number of individuals to be selected using the specified strategy \\\hline +... ~ &~ \\\hline +ea\-Checkpoint\-Continue.add( async\-Migration ); ~ &// adding the migration operator as checkpoint element \\\hline +... ~ &~ \\\hline +\end{TabularC} + + +\item definition of an owner evolutionary algorithm (an object inheriting the {\bf \hyperlink{classRunner}{Runner}} class): \par + \par + \begin{TabularC}{2} +\hline +peo\-EA$<$ EOT $>$ ea\-Alg( ea\-Checkpoint\-Continue, ea\-Pop\-Eval, ea\-Select, ea\-Transform, ea\-Replace); ~ &// evolutionary algorithm having as checkpoint the ea\-Checkpoint\-Continue object defined above \\\hline +async\-Migration.set\-Owner( ea\-Alg ); ~ &// setting the evolutionary algorithm as owner of the migration object \\\hline +ea\-Alg( population ); ~ &// applying the evolutionary algorithm on a given population \\\hline +\end{TabularC} +\end{enumerate} + + +The source and the destination population for the migration object were specified as being the same, in step no. 2, as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations as source and destination for the emigrant and immigrant individuals respectively. + +The above steps only create an asynchronous migration object associated to an evolutionary algorithm. The creation of several islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 (the same C++ mig\-Topology object has to be passed as parameter for all the migration objects, in order to interconnect them). + + + +Definition at line 112 of file peo\-Async\-Island\-Mig.h. + +\subsection{Constructor \& Destructor Documentation} +\hypertarget{classpeoAsyncIslandMig_e0f706cbf4148d3ca327227a5c7a9fdf}{ +\index{peoAsyncIslandMig@{peo\-Async\-Island\-Mig}!peoAsyncIslandMig@{peoAsyncIslandMig}} +\index{peoAsyncIslandMig@{peoAsyncIslandMig}!peoAsyncIslandMig@{peo\-Async\-Island\-Mig}} +\subsubsection[peoAsyncIslandMig]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ \hyperlink{classpeoAsyncIslandMig}{peo\-Async\-Island\-Mig}$<$ EOT $>$::\hyperlink{classpeoAsyncIslandMig}{peo\-Async\-Island\-Mig} (eo\-Continue$<$ EOT $>$ \& {\em \_\-\_\-cont}, eo\-Select$<$ EOT $>$ \& {\em \_\-\_\-select}, eo\-Replacement$<$ EOT $>$ \& {\em \_\-\_\-replace}, \hyperlink{classTopology}{Topology} \& {\em \_\-\_\-topology}, eo\-Pop$<$ EOT $>$ \& {\em \_\-\_\-source}, eo\-Pop$<$ EOT $>$ \& {\em \_\-\_\-destination})}} +\label{classpeoAsyncIslandMig_e0f706cbf4148d3ca327227a5c7a9fdf} + + +Constructor for the \hyperlink{classpeoAsyncIslandMig}{peo\-Async\-Island\-Mig} class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Continue$<$}]EOT $>$\& \_\-\_\-cont - continuation criterion specifying whether the migration is performed or not; \item[{\em eo\-Select$<$}]EOT $>$\& \_\-\_\-select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population; \item[{\em eo\-Replacement$<$}]EOT $>$\& \_\-\_\-replace - replacement strategy used for integrating the immigrant individuals in the destination population; \item[{\em Topology\&}]\_\-\_\-topology - topological model to be followed when performing migrations; \item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-source - source population from which the emigrant individuals are selected; \item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-destination - destination population in which the immigrant population are integrated. \end{description} +\end{Desc} + + +Definition at line 171 of file peo\-Async\-Island\-Mig.h. + +References Topology::add(). + +\subsection{Member Function Documentation} +\hypertarget{classpeoAsyncIslandMig_13581e54425727a7f785ca8a6df527b5}{ +\index{peoAsyncIslandMig@{peo\-Async\-Island\-Mig}!operator()@{operator()}} +\index{operator()@{operator()}!peoAsyncIslandMig@{peo\-Async\-Island\-Mig}} +\subsubsection[operator()]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoAsyncIslandMig}{peo\-Async\-Island\-Mig}$<$ EOT $>$::operator() ()}} +\label{classpeoAsyncIslandMig_13581e54425727a7f785ca8a6df527b5} + + +Function operator to be called as checkpoint for performing the migration step. + +The emigrant individuals are selected from the source population and sent to the next island (defined by the topology object) while the immigrant individuals are integrated in the destination population. There is no need to explicitly call the function - the wrapper checkpoint object (please refer to the above example) will perform the call when required. + +Definition at line 248 of file peo\-Async\-Island\-Mig.h. + +References peo\-Async\-Island\-Mig$<$ EOT $>$::cont, peo\-Async\-Island\-Mig$<$ EOT $>$::emigrate(), peo\-Async\-Island\-Mig$<$ EOT $>$::immigrate(), and peo\-Async\-Island\-Mig$<$ EOT $>$::source. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Async\-Island\-Mig.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoEA.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoEA.eps new file mode 100644 index 000000000..e4aabc826 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoEA.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 280.374 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.78333 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoEA< EOT >) cw +(Runner) cw +(Communicable) cw +(Thread) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoEA< EOT >) 0.5 0 box + (Runner) 0.5 1 box + (Communicable) 0 2 box + (Thread) 1 2 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoEA.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoEA.pdf new file mode 100644 index 000000000..2686ece75 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoEA.pdf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoEA.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoEA.tex new file mode 100644 index 000000000..216fc6abb --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoEA.tex @@ -0,0 +1,145 @@ +\hypertarget{classpeoEA}{ +\section{peo\-EA$<$ EOT $>$ Class Template Reference} +\label{classpeoEA}\index{peoEA@{peoEA}} +} +The \hyperlink{classpeoEA}{peo\-EA} class offers an elementary evolutionary algorithm implementation. + + +{\tt \#include $<$peo\-EA.h$>$} + +Inheritance diagram for peo\-EA$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classpeoEA} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hyperlink{classpeoEA_dbfc4f8907bef234602149229f132371}{peo\-EA} (eo\-Continue$<$ EOT $>$ \&\_\-\_\-cont, \hyperlink{classpeoPopEval}{peo\-Pop\-Eval}$<$ EOT $>$ \&\_\-\_\-pop\_\-eval, eo\-Select$<$ EOT $>$ \&\_\-\_\-select, \hyperlink{classpeoTransform}{peo\-Transform}$<$ EOT $>$ \&\_\-\_\-trans, eo\-Replacement$<$ EOT $>$ \&\_\-\_\-replace) +\begin{CompactList}\small\item\em Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. \item\end{CompactList}\item +\hypertarget{classpeoEA_6ab8c321d29350634143a2a01cf2ad24}{ +void \hyperlink{classpeoEA_6ab8c321d29350634143a2a01cf2ad24}{run} ()} +\label{classpeoEA_6ab8c321d29350634143a2a01cf2ad24} + +\begin{CompactList}\small\item\em Evolutionary algorithm function - a side effect of the fact that the class is derived from the {\bf \hyperlink{classRunner}{Runner}} class, thus requiring the existence of a {\em run\/} function, the algorithm being executed on a distinct thread. \item\end{CompactList}\item +void \hyperlink{classpeoEA_3c709e3b2491147d26fee36138644613}{operator()} (eo\-Pop$<$ EOT $>$ \&\_\-\_\-pop) +\begin{CompactList}\small\item\em Function operator for specifying the population to be associated with the algorithm. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classpeoEA_5f015eebf42f176b9fe322488c446c2a}{ +eo\-Continue$<$ EOT $>$ \& \hyperlink{classpeoEA_5f015eebf42f176b9fe322488c446c2a}{cont}} +\label{classpeoEA_5f015eebf42f176b9fe322488c446c2a} + +\item +\hypertarget{classpeoEA_9140259f50c9186edcb062b023624c96}{ +\hyperlink{classpeoPopEval}{peo\-Pop\-Eval}$<$ EOT $>$ \& \hyperlink{classpeoEA_9140259f50c9186edcb062b023624c96}{pop\_\-eval}} +\label{classpeoEA_9140259f50c9186edcb062b023624c96} + +\item +\hypertarget{classpeoEA_2d8428d69fdd6aefefbaf543fdd46d19}{ +eo\-Select$<$ EOT $>$ \& \hyperlink{classpeoEA_2d8428d69fdd6aefefbaf543fdd46d19}{select}} +\label{classpeoEA_2d8428d69fdd6aefefbaf543fdd46d19} + +\item +\hypertarget{classpeoEA_713c77935eb8aafebfb9488cfaa4a363}{ +\hyperlink{classpeoTransform}{peo\-Transform}$<$ EOT $>$ \& \hyperlink{classpeoEA_713c77935eb8aafebfb9488cfaa4a363}{trans}} +\label{classpeoEA_713c77935eb8aafebfb9488cfaa4a363} + +\item +\hypertarget{classpeoEA_9bd2d4356cf7e69e3141dc269213aa8a}{ +eo\-Replacement$<$ EOT $>$ \& \hyperlink{classpeoEA_9bd2d4356cf7e69e3141dc269213aa8a}{replace}} +\label{classpeoEA_9bd2d4356cf7e69e3141dc269213aa8a} + +\item +\hypertarget{classpeoEA_c0b110e410bc16283e8339f24b733772}{ +eo\-Pop$<$ EOT $>$ $\ast$ \hyperlink{classpeoEA_c0b110e410bc16283e8339f24b733772}{pop}} +\label{classpeoEA_c0b110e410bc16283e8339f24b733772} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-EA$<$ EOT $>$} + +The \hyperlink{classpeoEA}{peo\-EA} class offers an elementary evolutionary algorithm implementation. + +In addition, as compared with the algorithms provided by the EO framework, the \hyperlink{classpeoEA}{peo\-EA} class has the underlying necessary structure for including, for example, parallel evaluation and parallel transformation operators, migration operators etc. Although there is no restriction on using the algorithms provided by the EO framework, the drawback resides in the fact that the EO implementation is exclusively sequential and, in consequence, no parallelism is provided. A simple example for constructing a \hyperlink{classpeoEA}{peo\-EA} object: + +\begin{TabularC}{2} +\hline +... ~ &~ \\\hline +eo\-Pop$<$ EOT $>$ population( POP\_\-SIZE, pop\-Initializer ); ~ &// creation of a population with POP\_\-SIZE individuals - the pop\-Initializer is a functor to be called for each individual \\\hline +~ &~ \\\hline +eo\-Gen\-Continue$<$ EOT $>$ ea\-Cont( NUM\_\-GEN ); ~ &// number of generations for the evolutionary algorithm \\\hline +eo\-Check\-Point$<$ EOT $>$ ea\-Checkpoint\-Continue( ea\-Cont ); ~ &// checkpoint incorporating the continuation criterion - startpoint for adding other checkpoint objects \\\hline +~ &~ \\\hline +peo\-Seq\-Pop\-Eval$<$ EOT $>$ ea\-Pop\-Eval( eval\-Function ); ~ &// sequential evaluation functor wrapper - eval\-Function represents the actual evaluation functor \\\hline +~ &~ \\\hline +eo\-Ranking\-Select$<$ EOT $>$ selection\-Strategy; ~ &// selection strategy for creating the offspring population - a simple ranking selection in this case \\\hline +eo\-Select\-Number$<$ EOT $>$ ea\-Select( selection\-Strategy, POP\_\-SIZE ); ~ &// the number of individuals to be selected for creating the offspring population \\\hline +eo\-Ranking\-Select$<$ EOT $>$ selection\-Strategy; ~ &// selection strategy for creating the offspring population - a simple ranking selection in this case \\\hline +~ &~ \\\hline +eo\-SGATransform$<$ EOT $>$ transform( crossover, CROSS\_\-RATE, mutation, MUT\_\-RATE ); ~ &// transformation operator - crossover and mutation operators with their associated probabilities \\\hline +peo\-Seq\-Transform$<$ EOT $>$ ea\-Transform( transform ); ~ &// Paradis\-EO specific sequential operator - a parallel version may be specified in the same manner \\\hline +~ &~ \\\hline +eo\-Plus\-Replacement$<$ EOT $>$ ea\-Replace; ~ &// replacement strategy - for integrating the offspring resulting individuals in the initial population \\\hline +~ &~ \\\hline +peo\-EA$<$ EOT $>$ ea\-Alg( ea\-Checkpoint\-Continue, ea\-Pop\-Eval, ea\-Select, ea\-Transform, ea\-Replace ); ~ &// Paradis\-EO evolutionary algorithm integrating the above defined objects \\\hline +ea\-Alg( population ); ~ &// specifying the initial population for the algorithm \\\hline +... ~ &~ \\\hline +\end{TabularC} + + + + +Definition at line 54 of file peo\-EA.h. + +\subsection{Constructor \& Destructor Documentation} +\hypertarget{classpeoEA_dbfc4f8907bef234602149229f132371}{ +\index{peoEA@{peo\-EA}!peoEA@{peoEA}} +\index{peoEA@{peoEA}!peoEA@{peo\-EA}} +\subsubsection[peoEA]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ \hyperlink{classpeoEA}{peo\-EA}$<$ EOT $>$::\hyperlink{classpeoEA}{peo\-EA} (eo\-Continue$<$ EOT $>$ \& {\em \_\-\_\-cont}, \hyperlink{classpeoPopEval}{peo\-Pop\-Eval}$<$ EOT $>$ \& {\em \_\-\_\-pop\_\-eval}, eo\-Select$<$ EOT $>$ \& {\em \_\-\_\-select}, \hyperlink{classpeoTransform}{peo\-Transform}$<$ EOT $>$ \& {\em \_\-\_\-trans}, eo\-Replacement$<$ EOT $>$ \& {\em \_\-\_\-replace})}} +\label{classpeoEA_dbfc4f8907bef234602149229f132371} + + +Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. + +Depending on the requirements, a sequential or a parallel evaluation operator may be specified or, in the same manner, a sequential or a parallel transformation operator may be given as parameter. Out of the box objects may be provided, from the EO package, for example, or custom defined ones may be specified, provided that they are derived from the correct base classes. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Continue$<$}]EOT $>$\& \_\-\_\-cont - continuation criterion specifying whether the algorithm should continue or not; \item[{\em peo\-Pop\-Eval$<$}]EOT $>$\& \_\-\_\-pop\_\-eval - evaluation operator; it allows the specification of parallel evaluation operators, aggregate evaluation functions, etc.; \item[{\em eo\-Select$<$}]EOT $>$\& \_\-\_\-select - selection strategy to be applied for constructing a list of offspring individuals; \item[{\em peo\-Transform$<$}]EOT $>$\& \_\-\_\-trans - transformation operator, i.e. crossover and mutation; allows for sequential or parallel transform; \item[{\em eo\-Replacement$<$}]EOT $>$\& \_\-\_\-replace - replacement strategy for integrating the offspring individuals in the initial population; \end{description} +\end{Desc} + + +Definition at line 98 of file peo\-EA.h. + +References peo\-EA$<$ EOT $>$::pop\_\-eval, and peo\-EA$<$ EOT $>$::trans. + +\subsection{Member Function Documentation} +\hypertarget{classpeoEA_3c709e3b2491147d26fee36138644613}{ +\index{peoEA@{peo\-EA}!operator()@{operator()}} +\index{operator()@{operator()}!peoEA@{peo\-EA}} +\subsubsection[operator()]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoEA}{peo\-EA}$<$ EOT $>$::operator() (eo\-Pop$<$ EOT $>$ \& {\em \_\-\_\-pop})}} +\label{classpeoEA_3c709e3b2491147d26fee36138644613} + + +Function operator for specifying the population to be associated with the algorithm. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-pop - initial population of the algorithm, to be iteratively evolved; \end{description} +\end{Desc} + + +Definition at line 114 of file peo\-EA.h. + +References peo\-EA$<$ EOT $>$::pop. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-EA.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoNoAggEvalFunc.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoNoAggEvalFunc.eps new file mode 100644 index 000000000..ead08b31e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoNoAggEvalFunc.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 218.579 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.2875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoNoAggEvalFunc< EOT >) cw +(peoAggEvalFunc< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoNoAggEvalFunc< EOT >) 0 0 box + (peoAggEvalFunc< EOT >) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoNoAggEvalFunc.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoNoAggEvalFunc.pdf new file mode 100644 index 000000000..476ee2e0c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoNoAggEvalFunc.pdf @@ -0,0 +1,73 @@ +%PDF-1.3 +%Çì¢ +5 0 obj +<> +stream +xœ•OÉŠ1½×W¼ãè!SYí€ +íÜFtòÒh£Ø.3¨¿oõ‚Ša¡òªÞR9•×§«EEŸ‹Ê?b|É-éDº! +E…IRU`ÖHkjÅ:(£±â—*ú8®߇qYæ—ånzÞC䳄Q/m)O4'k×W±ØPmâ#ÆïŠ~þ—îX…è"´÷ø7ᢱæ5Q¾àÛŒïúUûŒ‘±ÆtýÆä>hP=qQyhe23ÎózR­û²È ŠÛR¿endstream +endobj +6 0 obj +202 +endobj +4 0 obj +<> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000518 00000 n +0000000732 00000 n +0000000459 00000 n +0000000306 00000 n +0000000015 00000 n +0000000287 00000 n +0000000566 00000 n +0000000666 00000 n +0000000607 00000 n +0000000636 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [(‡¹4¨®®æÌ`{s8´e:)(‡¹4¨®®æÌ`{s8´e:)] +>> +startxref +889 +%%EOF diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoNoAggEvalFunc.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoNoAggEvalFunc.tex new file mode 100644 index 000000000..bf8848e1e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoNoAggEvalFunc.tex @@ -0,0 +1,39 @@ +\hypertarget{classpeoNoAggEvalFunc}{ +\section{peo\-No\-Agg\-Eval\-Func$<$ EOT $>$ Class Template Reference} +\label{classpeoNoAggEvalFunc}\index{peoNoAggEvalFunc@{peoNoAggEvalFunc}} +} +The \hyperlink{classpeoNoAggEvalFunc}{peo\-No\-Agg\-Eval\-Func} class does nothing more than an association between a fitness value and a specified individual. + + +{\tt \#include $<$peo\-No\-Agg\-Eval\-Func.h$>$} + +Inheritance diagram for peo\-No\-Agg\-Eval\-Func$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classpeoNoAggEvalFunc} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classpeoNoAggEvalFunc_1a69ee1af8745ac75c864bf884436de5}{ +void \hyperlink{classpeoNoAggEvalFunc_1a69ee1af8745ac75c864bf884436de5}{operator()} (EOT \&\_\-\_\-sol, const typename EOT::Fitness \&\_\-\_\-fit)} +\label{classpeoNoAggEvalFunc_1a69ee1af8745ac75c864bf884436de5} + +\begin{CompactList}\small\item\em Operator which sets as fitness the {\bf \_\-\_\-fit} value for the {\bf \_\-\_\-sol} individual. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-No\-Agg\-Eval\-Func$<$ EOT $>$} + +The \hyperlink{classpeoNoAggEvalFunc}{peo\-No\-Agg\-Eval\-Func} class does nothing more than an association between a fitness value and a specified individual. + +The class is provided as a mean of declaring that no aggregation is required for the evaluation function - the fitness value is explicitly specified. + + + +Definition at line 19 of file peo\-No\-Agg\-Eval\-Func.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-No\-Agg\-Eval\-Func.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoParaPopEval.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoParaPopEval.eps new file mode 100644 index 000000000..25c8b8af1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoParaPopEval.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 487.805 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.025 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoParaPopEval< EOT >) cw +(peoPopEval< EOT >) cw +(Service) cw +(Communicable) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoParaPopEval< EOT >) 0 0 box + (peoPopEval< EOT >) 0 1 box + (Service) 0 2 box + (Communicable) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoParaPopEval.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoParaPopEval.pdf new file mode 100644 index 000000000..adade1847 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoParaPopEval.pdf @@ -0,0 +1,73 @@ +%PDF-1.3 +%Çì¢ +5 0 obj +<> +stream +xœ­’ËNÃ0E÷þŠY‹ÁOü PÅ’–æJ”VE } Êï3IãÔU»AB‘eùÞñÜ£qv Ñ€î¾a¯Zuÿæaõ¥4¼ÈZ©2} [ÕÂS)EØ`0&@¹TÇˬGcb´Q”­ºÙÖ›éb¿˜n¶“ây€Ék ·å‡š”j¦,c`Kð#=ÖÊDiàXz±Ó:.: ξVó¿±xFêngÑËžX®s¤dc£”ÛÈ7Á£ÕduCéóçõþ°®ê‹TòRÌŤ!13a¡cŸú¼iÛïÏuµxo.£ÙƒÒãj´*2N^‡ +­G¯=æ)B#•gBòûYRæÃíüB8àò«8)hßy™’_iÔò‹1„ØFÔYH’?Œöä ‚Ô!ƒÈ”ó ÂrÊ1ÄKè³$ ~òè'áÁºÍ "SÎ{ÄLý®ÆÄÆendstream +endobj +6 0 obj +354 +endobj +4 0 obj +<> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000669 00000 n +0000000883 00000 n +0000000610 00000 n +0000000458 00000 n +0000000015 00000 n +0000000439 00000 n +0000000717 00000 n +0000000817 00000 n +0000000758 00000 n +0000000787 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [(Êô}ÉG×ë=ÑH+r)(Êô}ÉG×ë=ÑH+r)] +>> +startxref +1040 +%%EOF diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoParaPopEval.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoParaPopEval.tex new file mode 100644 index 000000000..307bbdb64 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoParaPopEval.tex @@ -0,0 +1,258 @@ +\hypertarget{classpeoParaPopEval}{ +\section{peo\-Para\-Pop\-Eval$<$ EOT $>$ Class Template Reference} +\label{classpeoParaPopEval}\index{peoParaPopEval@{peoParaPopEval}} +} +The \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval} represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor. + + +{\tt \#include $<$peo\-Para\-Pop\-Eval.h$>$} + +Inheritance diagram for peo\-Para\-Pop\-Eval$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classpeoParaPopEval} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hyperlink{classpeoParaPopEval_bcb540510a7038520bec41a7af332daf}{peo\-Para\-Pop\-Eval} (eo\-Eval\-Func$<$ EOT $>$ \&\_\-\_\-eval\_\-func) +\begin{CompactList}\small\item\em Constructor function - an EO-derived evaluation functor has to be specified; an internal reference is set towards the specified evaluation functor. \item\end{CompactList}\item +\hyperlink{classpeoParaPopEval_1cc13a1ec366f95d219d682eccb455bc}{peo\-Para\-Pop\-Eval} (const std::vector$<$ eo\-Eval\-Func$<$ EOT $>$ $\ast$ $>$ \&\_\-\_\-funcs, \hyperlink{classpeoAggEvalFunc}{peo\-Agg\-Eval\-Func}$<$ EOT $>$ \&\_\-\_\-merge\_\-eval) +\begin{CompactList}\small\item\em Constructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function. \item\end{CompactList}\item +void \hyperlink{classpeoParaPopEval_aeaa4fca4f8650e453e308838b4a2cb5}{operator()} (eo\-Pop$<$ EOT $>$ \&\_\-\_\-pop) +\begin{CompactList}\small\item\em Operator for applying the evaluation functor (direct or aggregate) for each individual of the specified population. \item\end{CompactList}\item +void \hyperlink{classpeoParaPopEval_fea632bd645ab11182782fd3c038d6d8}{pack\-Data} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \item\end{CompactList}\item +void \hyperlink{classpeoParaPopEval_410bf4c173e2f36df82251cb16ce1b05}{unpack\-Data} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \item\end{CompactList}\item +\hypertarget{classpeoParaPopEval_3af76378611eac5a36da9a0a00aeeb6c}{ +void \hyperlink{classpeoParaPopEval_3af76378611eac5a36da9a0a00aeeb6c}{execute} ()} +\label{classpeoParaPopEval_3af76378611eac5a36da9a0a00aeeb6c} + +\begin{CompactList}\small\item\em Auxiliary function - it calls the specified evaluation functor(s). There is no need to explicitly call the function. \item\end{CompactList}\item +void \hyperlink{classpeoParaPopEval_24bb4ae84b0b9f64e7170e3d2b0e1223}{pack\-Result} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \item\end{CompactList}\item +void \hyperlink{classpeoParaPopEval_fd7f0afe9cba30be39269d16097e190e}{unpack\-Result} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \item\end{CompactList}\item +void \hyperlink{classpeoParaPopEval_1f78c3cec2940af08a059cc1aa96a9c8}{notify\-Sending\-Data} () +\begin{CompactList}\small\item\em Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. \item\end{CompactList}\item +void \hyperlink{classpeoParaPopEval_b77031fc4807921ffaf7cf6b669a7665}{notify\-Sending\-All\-Resource\-Requests} () +\begin{CompactList}\small\item\em Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classpeoParaPopEval_6d69b8f73c0b5d72baf75d6e53f025b7}{ +const std::vector$<$ eo\-Eval\-Func$<$ EOT $>$ $\ast$ $>$ \& \hyperlink{classpeoParaPopEval_6d69b8f73c0b5d72baf75d6e53f025b7}{funcs}} +\label{classpeoParaPopEval_6d69b8f73c0b5d72baf75d6e53f025b7} + +\item +\hypertarget{classpeoParaPopEval_f0e8af3ee442d2b6baf0bd122226be3c}{ +std::vector$<$ eo\-Eval\-Func$<$ EOT $>$ $\ast$ $>$ \hyperlink{classpeoParaPopEval_f0e8af3ee442d2b6baf0bd122226be3c}{one\_\-func}} +\label{classpeoParaPopEval_f0e8af3ee442d2b6baf0bd122226be3c} + +\item +\hypertarget{classpeoParaPopEval_b48bcd4e9f92f364118304535c089456}{ +\hyperlink{classpeoAggEvalFunc}{peo\-Agg\-Eval\-Func}$<$ EOT $>$ \& \hyperlink{classpeoParaPopEval_b48bcd4e9f92f364118304535c089456}{merge\_\-eval}} +\label{classpeoParaPopEval_b48bcd4e9f92f364118304535c089456} + +\item +\hypertarget{classpeoParaPopEval_bf255dd5861e27108c2abae7309d7690}{ +\hyperlink{classpeoNoAggEvalFunc}{peo\-No\-Agg\-Eval\-Func}$<$ EOT $>$ \hyperlink{classpeoParaPopEval_bf255dd5861e27108c2abae7309d7690}{no\_\-merge\_\-eval}} +\label{classpeoParaPopEval_bf255dd5861e27108c2abae7309d7690} + +\item +\hypertarget{classpeoParaPopEval_af76cd18368a0f6185878f37f0b5f272}{ +std::queue$<$ EOT $\ast$ $>$ \hyperlink{classpeoParaPopEval_af76cd18368a0f6185878f37f0b5f272}{tasks}} +\label{classpeoParaPopEval_af76cd18368a0f6185878f37f0b5f272} + +\item +\hypertarget{classpeoParaPopEval_80e7e34bb1bb2d12f1f2eed3feac6ecf}{ +std::map$<$ EOT $\ast$, std::pair$<$ unsigned, unsigned $>$ $>$ \hyperlink{classpeoParaPopEval_80e7e34bb1bb2d12f1f2eed3feac6ecf}{progression}} +\label{classpeoParaPopEval_80e7e34bb1bb2d12f1f2eed3feac6ecf} + +\item +\hypertarget{classpeoParaPopEval_87abb090c0de39f0ccc36af1f07cca0c}{ +unsigned \hyperlink{classpeoParaPopEval_87abb090c0de39f0ccc36af1f07cca0c}{num\_\-func}} +\label{classpeoParaPopEval_87abb090c0de39f0ccc36af1f07cca0c} + +\item +\hypertarget{classpeoParaPopEval_fb6941e0455515a908eb82342b995163}{ +EOT \hyperlink{classpeoParaPopEval_fb6941e0455515a908eb82342b995163}{sol}} +\label{classpeoParaPopEval_fb6941e0455515a908eb82342b995163} + +\item +\hypertarget{classpeoParaPopEval_60cafeab376262af675fdff43434c8d8}{ +EOT $\ast$ \hyperlink{classpeoParaPopEval_60cafeab376262af675fdff43434c8d8}{ad\_\-sol}} +\label{classpeoParaPopEval_60cafeab376262af675fdff43434c8d8} + +\item +\hypertarget{classpeoParaPopEval_b528ad9dd9006c3dd57f149a3843e57d}{ +unsigned \hyperlink{classpeoParaPopEval_b528ad9dd9006c3dd57f149a3843e57d}{total}} +\label{classpeoParaPopEval_b528ad9dd9006c3dd57f149a3843e57d} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Para\-Pop\-Eval$<$ EOT $>$} + +The \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval} represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor. + +The class offers the possibility of chosing between a single-function evaluation and an aggregate evaluation function, including several sub-evalution functions. + + + +Definition at line 26 of file peo\-Para\-Pop\-Eval.h. + +\subsection{Constructor \& Destructor Documentation} +\hypertarget{classpeoParaPopEval_bcb540510a7038520bec41a7af332daf}{ +\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!peoParaPopEval@{peoParaPopEval}} +\index{peoParaPopEval@{peoParaPopEval}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection[peoParaPopEval]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval}$<$ EOT $>$::\hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval} (eo\-Eval\-Func$<$ EOT $>$ \& {\em \_\-\_\-eval\_\-func})}} +\label{classpeoParaPopEval_bcb540510a7038520bec41a7af332daf} + + +Constructor function - an EO-derived evaluation functor has to be specified; an internal reference is set towards the specified evaluation functor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Eval\-Func$<$}]EOT $>$\& \_\-\_\-eval\_\-func - EO-derived evaluation functor to be applied in parallel on each individual of a specified population \end{description} +\end{Desc} + + +Definition at line 102 of file peo\-Para\-Pop\-Eval.h. + +References peo\-Para\-Pop\-Eval$<$ EOT $>$::one\_\-func.\hypertarget{classpeoParaPopEval_1cc13a1ec366f95d219d682eccb455bc}{ +\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!peoParaPopEval@{peoParaPopEval}} +\index{peoParaPopEval@{peoParaPopEval}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection[peoParaPopEval]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval}$<$ EOT $>$::\hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval} (const std::vector$<$ eo\-Eval\-Func$<$ EOT $>$ $\ast$ $>$ \& {\em \_\-\_\-funcs}, \hyperlink{classpeoAggEvalFunc}{peo\-Agg\-Eval\-Func}$<$ EOT $>$ \& {\em \_\-\_\-merge\_\-eval})}} +\label{classpeoParaPopEval_1cc13a1ec366f95d219d682eccb455bc} + + +Constructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em const}]std :: vector$<$ eo\-Eval\-Func $<$ EOT $>$$\ast$ $>$\& \_\-\_\-funcs - vector of EO-derived partial evaluation functors; \item[{\em peo\-Agg\-Eval\-Func$<$}]EOT $>$\& \_\-\_\-merge\_\-eval - aggregation functor for creating a fitness value out of the partial fitness values. \end{description} +\end{Desc} + + +Definition at line 111 of file peo\-Para\-Pop\-Eval.h. + +\subsection{Member Function Documentation} +\hypertarget{classpeoParaPopEval_aeaa4fca4f8650e453e308838b4a2cb5}{ +\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!operator()@{operator()}} +\index{operator()@{operator()}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection[operator()]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval}$<$ EOT $>$::operator() (eo\-Pop$<$ EOT $>$ \& {\em \_\-\_\-pop})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoParaPopEval_aeaa4fca4f8650e453e308838b4a2cb5} + + +Operator for applying the evaluation functor (direct or aggregate) for each individual of the specified population. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-pop - population to be evaluated by applying the evaluation functor specified in the constructor. \end{description} +\end{Desc} + + +Implements \hyperlink{classpeoPopEval_2f208067a5e39c3b26c1234050a41e8f}{peo\-Pop\-Eval$<$ EOT $>$}. + +Definition at line 122 of file peo\-Para\-Pop\-Eval.h. + +References peo\-Para\-Pop\-Eval$<$ EOT $>$::funcs, peo\-Para\-Pop\-Eval$<$ EOT $>$::progression, Service::request\-Resource\-Request(), Communicable::stop(), peo\-Para\-Pop\-Eval$<$ EOT $>$::tasks, and peo\-Para\-Pop\-Eval$<$ EOT $>$::total.\hypertarget{classpeoParaPopEval_fea632bd645ab11182782fd3c038d6d8}{ +\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!packData@{packData}} +\index{packData@{packData}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection[packData]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval}$<$ EOT $>$::pack\-Data ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoParaPopEval_fea632bd645ab11182782fd3c038d6d8} + + +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_aea4b8f7f8fb88e83862ee4bfd9ab207}{Service}. + +Definition at line 143 of file peo\-Para\-Pop\-Eval.h. + +References peo\-Para\-Pop\-Eval$<$ EOT $>$::progression, and peo\-Para\-Pop\-Eval$<$ EOT $>$::tasks.\hypertarget{classpeoParaPopEval_410bf4c173e2f36df82251cb16ce1b05}{ +\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!unpackData@{unpackData}} +\index{unpackData@{unpackData}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection[unpackData]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval}$<$ EOT $>$::unpack\-Data ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoParaPopEval_410bf4c173e2f36df82251cb16ce1b05} + + +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_3bd87b444710813d30fd754d4d0b4df3}{Service}. + +Definition at line 157 of file peo\-Para\-Pop\-Eval.h. + +References peo\-Para\-Pop\-Eval$<$ EOT $>$::ad\_\-sol, peo\-Para\-Pop\-Eval$<$ EOT $>$::num\_\-func, and peo\-Para\-Pop\-Eval$<$ EOT $>$::sol.\hypertarget{classpeoParaPopEval_24bb4ae84b0b9f64e7170e3d2b0e1223}{ +\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!packResult@{packResult}} +\index{packResult@{packResult}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection[packResult]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval}$<$ EOT $>$::pack\-Result ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoParaPopEval_24bb4ae84b0b9f64e7170e3d2b0e1223} + + +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_e5e4f90b2315e15c2a2913bd370f4cf5}{Service}. + +Definition at line 174 of file peo\-Para\-Pop\-Eval.h. + +References peo\-Para\-Pop\-Eval$<$ EOT $>$::ad\_\-sol, and peo\-Para\-Pop\-Eval$<$ EOT $>$::sol.\hypertarget{classpeoParaPopEval_fd7f0afe9cba30be39269d16097e190e}{ +\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!unpackResult@{unpackResult}} +\index{unpackResult@{unpackResult}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection[unpackResult]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval}$<$ EOT $>$::unpack\-Result ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoParaPopEval_fd7f0afe9cba30be39269d16097e190e} + + +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_45c06344edbfa482b91f68e2035a6099}{Service}. + +Definition at line 183 of file peo\-Para\-Pop\-Eval.h. + +References peo\-Para\-Pop\-Eval$<$ EOT $>$::ad\_\-sol, Service::get\-Owner(), peo\-Para\-Pop\-Eval$<$ EOT $>$::merge\_\-eval, peo\-Para\-Pop\-Eval$<$ EOT $>$::progression, Communicable::resume(), Thread::set\-Active(), and peo\-Para\-Pop\-Eval$<$ EOT $>$::total.\hypertarget{classpeoParaPopEval_1f78c3cec2940af08a059cc1aa96a9c8}{ +\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!notifySendingData@{notifySendingData}} +\index{notifySendingData@{notifySendingData}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection[notifySendingData]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval}$<$ EOT $>$::notify\-Sending\-Data ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoParaPopEval_1f78c3cec2940af08a059cc1aa96a9c8} + + +Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_81ad4d6ebb50045b8977e2ab74826f30}{Service}. + +Definition at line 214 of file peo\-Para\-Pop\-Eval.h.\hypertarget{classpeoParaPopEval_b77031fc4807921ffaf7cf6b669a7665}{ +\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!notifySendingAllResourceRequests@{notifySendingAllResourceRequests}} +\index{notifySendingAllResourceRequests@{notifySendingAllResourceRequests}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection[notifySendingAllResourceRequests]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval}$<$ EOT $>$::notify\-Sending\-All\-Resource\-Requests ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoParaPopEval_b77031fc4807921ffaf7cf6b669a7665} + + +Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_f94cc8a5c2665d4574041737e61e9ffc}{Service}. + +Definition at line 219 of file peo\-Para\-Pop\-Eval.h. + +References Service::get\-Owner(), and Thread::set\-Passive(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Para\-Pop\-Eval.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoParaSGATransform.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoParaSGATransform.eps new file mode 100644 index 000000000..eee7ca312 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoParaSGATransform.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 400 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.25 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoParaSGATransform< EOT >) cw +(peoTransform< EOT >) cw +(Service) cw +(Communicable) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoParaSGATransform< EOT >) 0 0 box + (peoTransform< EOT >) 0 1 box + (Service) 0 2 box + (Communicable) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoParaSGATransform.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoParaSGATransform.pdf new file mode 100644 index 000000000..aace8d263 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoParaSGATransform.pdf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoParaSGATransform.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoParaSGATransform.tex new file mode 100644 index 000000000..015a84bea --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoParaSGATransform.tex @@ -0,0 +1,120 @@ +\hypertarget{classpeoParaSGATransform}{ +\section{peo\-Para\-SGATransform$<$ EOT $>$ Class Template Reference} +\label{classpeoParaSGATransform}\index{peoParaSGATransform@{peoParaSGATransform}} +} +Inheritance diagram for peo\-Para\-SGATransform$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classpeoParaSGATransform} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classpeoParaSGATransform_2052bca82fbbfe5455bf6f69246d4dbf}{ +\hyperlink{classpeoParaSGATransform_2052bca82fbbfe5455bf6f69246d4dbf}{peo\-Para\-SGATransform} (eo\-Quad\-Op$<$ EOT $>$ \&\_\-\_\-cross, double \_\-\_\-cross\_\-rate, eo\-Mon\-Op$<$ EOT $>$ \&\_\-\_\-mut, double \_\-\_\-mut\_\-rate)} +\label{classpeoParaSGATransform_2052bca82fbbfe5455bf6f69246d4dbf} + +\item +\hypertarget{classpeoParaSGATransform_669de7f7c6316fa745a15b909efb6527}{ +void \hyperlink{classpeoParaSGATransform_669de7f7c6316fa745a15b909efb6527}{operator()} (eo\-Pop$<$ EOT $>$ \&\_\-\_\-pop)} +\label{classpeoParaSGATransform_669de7f7c6316fa745a15b909efb6527} + +\item +\hypertarget{classpeoParaSGATransform_fd278bcde58d29c9a343d5cbead81a1e}{ +void \hyperlink{classpeoParaSGATransform_fd278bcde58d29c9a343d5cbead81a1e}{pack\-Data} ()} +\label{classpeoParaSGATransform_fd278bcde58d29c9a343d5cbead81a1e} + +\item +\hypertarget{classpeoParaSGATransform_a43a487a6e81791c8bbf6ce30f4336ab}{ +void \hyperlink{classpeoParaSGATransform_a43a487a6e81791c8bbf6ce30f4336ab}{unpack\-Data} ()} +\label{classpeoParaSGATransform_a43a487a6e81791c8bbf6ce30f4336ab} + +\item +\hypertarget{classpeoParaSGATransform_c9de2100fb897177a401c634002f6dd9}{ +void \hyperlink{classpeoParaSGATransform_c9de2100fb897177a401c634002f6dd9}{execute} ()} +\label{classpeoParaSGATransform_c9de2100fb897177a401c634002f6dd9} + +\item +\hypertarget{classpeoParaSGATransform_ba08e224ceaa4149e8e1a88694a2ccf2}{ +void \hyperlink{classpeoParaSGATransform_ba08e224ceaa4149e8e1a88694a2ccf2}{pack\-Result} ()} +\label{classpeoParaSGATransform_ba08e224ceaa4149e8e1a88694a2ccf2} + +\item +\hypertarget{classpeoParaSGATransform_257663dcdc6cc95b6183d472ffba1b2f}{ +void \hyperlink{classpeoParaSGATransform_257663dcdc6cc95b6183d472ffba1b2f}{unpack\-Result} ()} +\label{classpeoParaSGATransform_257663dcdc6cc95b6183d472ffba1b2f} + +\item +\hypertarget{classpeoParaSGATransform_4e19dfc22b6f69fa8b93537226551866}{ +void \hyperlink{classpeoParaSGATransform_4e19dfc22b6f69fa8b93537226551866}{notify\-Sending\-Data} ()} +\label{classpeoParaSGATransform_4e19dfc22b6f69fa8b93537226551866} + +\item +\hypertarget{classpeoParaSGATransform_8a0316e33897c395a81787f59ea7a1c8}{ +void \hyperlink{classpeoParaSGATransform_8a0316e33897c395a81787f59ea7a1c8}{notify\-Sending\-All\-Resource\-Requests} ()} +\label{classpeoParaSGATransform_8a0316e33897c395a81787f59ea7a1c8} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classpeoParaSGATransform_c6f97deabe7502c84f5b6c479013f6dc}{ +eo\-Quad\-Op$<$ EOT $>$ \& \hyperlink{classpeoParaSGATransform_c6f97deabe7502c84f5b6c479013f6dc}{cross}} +\label{classpeoParaSGATransform_c6f97deabe7502c84f5b6c479013f6dc} + +\item +\hypertarget{classpeoParaSGATransform_dfcf216e2df05016db4d57a5ffb0b0e2}{ +double \hyperlink{classpeoParaSGATransform_dfcf216e2df05016db4d57a5ffb0b0e2}{cross\_\-rate}} +\label{classpeoParaSGATransform_dfcf216e2df05016db4d57a5ffb0b0e2} + +\item +\hypertarget{classpeoParaSGATransform_34ff5f9d285ca4879cf8865fb425a311}{ +eo\-Mon\-Op$<$ EOT $>$ \& \hyperlink{classpeoParaSGATransform_34ff5f9d285ca4879cf8865fb425a311}{mut}} +\label{classpeoParaSGATransform_34ff5f9d285ca4879cf8865fb425a311} + +\item +\hypertarget{classpeoParaSGATransform_b9d3a2094737d0bbd034aac942cc53e3}{ +double \hyperlink{classpeoParaSGATransform_b9d3a2094737d0bbd034aac942cc53e3}{mut\_\-rate}} +\label{classpeoParaSGATransform_b9d3a2094737d0bbd034aac942cc53e3} + +\item +\hypertarget{classpeoParaSGATransform_03972feadc86626e58fe60bd4061b57e}{ +unsigned \hyperlink{classpeoParaSGATransform_03972feadc86626e58fe60bd4061b57e}{idx}} +\label{classpeoParaSGATransform_03972feadc86626e58fe60bd4061b57e} + +\item +\hypertarget{classpeoParaSGATransform_94e10a1285e128aba6e71517c941f961}{ +eo\-Pop$<$ EOT $>$ $\ast$ \hyperlink{classpeoParaSGATransform_94e10a1285e128aba6e71517c941f961}{pop}} +\label{classpeoParaSGATransform_94e10a1285e128aba6e71517c941f961} + +\item +\hypertarget{classpeoParaSGATransform_9ef60190e2e3bd5961a93d1b52cb275d}{ +EOT \hyperlink{classpeoParaSGATransform_9ef60190e2e3bd5961a93d1b52cb275d}{father}} +\label{classpeoParaSGATransform_9ef60190e2e3bd5961a93d1b52cb275d} + +\item +\hypertarget{classpeoParaSGATransform_e991ad2af6d116afd855de2db46e1d27}{ +EOT \hyperlink{classpeoParaSGATransform_e991ad2af6d116afd855de2db46e1d27}{mother}} +\label{classpeoParaSGATransform_e991ad2af6d116afd855de2db46e1d27} + +\item +\hypertarget{classpeoParaSGATransform_589ea7cd72d522ae51a07de4d8ffbf11}{ +unsigned \hyperlink{classpeoParaSGATransform_589ea7cd72d522ae51a07de4d8ffbf11}{num\_\-term}} +\label{classpeoParaSGATransform_589ea7cd72d522ae51a07de4d8ffbf11} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Para\-SGATransform$<$ EOT $>$} + + + + + +Definition at line 21 of file peo\-Para\-SGATransform.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Para\-SGATransform.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoPopEval.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoPopEval.eps new file mode 100644 index 000000000..b486aceee --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoPopEval.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 243.902 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.05 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoPopEval< EOT >) cw +(Service) cw +(Communicable) cw +(peoParaPopEval< EOT >) cw +(peoSeqPopEval< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoPopEval< EOT >) 0.5 1 box + (Service) 0.5 2 box + (Communicable) 0.5 3 box + (peoParaPopEval< EOT >) 0 0 box + (peoSeqPopEval< EOT >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoPopEval.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoPopEval.pdf new file mode 100644 index 000000000..8f973acb1 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoPopEval.pdf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoPopEval.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoPopEval.tex new file mode 100644 index 000000000..8b3be4531 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoPopEval.tex @@ -0,0 +1,39 @@ +\hypertarget{classpeoPopEval}{ +\section{peo\-Pop\-Eval$<$ EOT $>$ Class Template Reference} +\label{classpeoPopEval}\index{peoPopEval@{peoPopEval}} +} +The {\bf \hyperlink{classpeoPopEval}{peo\-Pop\-Eval}} class provides the interface for constructing Paradis\-EO specific evaluation functors. + + +{\tt \#include $<$peo\-Pop\-Eval.h$>$} + +Inheritance diagram for peo\-Pop\-Eval$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classpeoPopEval} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classpeoPopEval_2f208067a5e39c3b26c1234050a41e8f}{ +virtual void \hyperlink{classpeoPopEval_2f208067a5e39c3b26c1234050a41e8f}{operator()} (eo\-Pop$<$ EOT $>$ \&\_\-\_\-pop)=0} +\label{classpeoPopEval_2f208067a5e39c3b26c1234050a41e8f} + +\begin{CompactList}\small\item\em Interface function providing the signature for constructing an evaluation functor. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Pop\-Eval$<$ EOT $>$} + +The {\bf \hyperlink{classpeoPopEval}{peo\-Pop\-Eval}} class provides the interface for constructing Paradis\-EO specific evaluation functors. + +The derived classes may be used as wrappers for {\bf EO}-derived evaluation functors. In order to have an example, please refer to the implementation of the {\bf \hyperlink{classpeoSeqPopEval}{peo\-Seq\-Pop\-Eval}} and {\bf \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval}} classes. + + + +Definition at line 19 of file peo\-Pop\-Eval.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Pop\-Eval.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSeqPopEval.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSeqPopEval.eps new file mode 100644 index 000000000..e8cf5fd7e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSeqPopEval.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 506.329 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 0.9875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoSeqPopEval< EOT >) cw +(peoPopEval< EOT >) cw +(Service) cw +(Communicable) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoSeqPopEval< EOT >) 0 0 box + (peoPopEval< EOT >) 0 1 box + (Service) 0 2 box + (Communicable) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSeqPopEval.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSeqPopEval.pdf new file mode 100644 index 000000000..763911c03 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSeqPopEval.pdf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSeqPopEval.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSeqPopEval.tex new file mode 100644 index 000000000..22f9f3698 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSeqPopEval.tex @@ -0,0 +1,88 @@ +\hypertarget{classpeoSeqPopEval}{ +\section{peo\-Seq\-Pop\-Eval$<$ EOT $>$ Class Template Reference} +\label{classpeoSeqPopEval}\index{peoSeqPopEval@{peoSeqPopEval}} +} +The \hyperlink{classpeoSeqPopEval}{peo\-Seq\-Pop\-Eval} class acts only as a Paradis\-EO specific sequential evaluation functor - a wrapper for incorporating an {\bf eo\-Eval\-Func$<$ EOT $>$}-derived class as evaluation functor. + + +{\tt \#include $<$peo\-Seq\-Pop\-Eval.h$>$} + +Inheritance diagram for peo\-Seq\-Pop\-Eval$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classpeoSeqPopEval} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hyperlink{classpeoSeqPopEval_a41f91ab4b2aeb325ff75feb66d4e003}{peo\-Seq\-Pop\-Eval} (eo\-Eval\-Func$<$ EOT $>$ \&\_\-\_\-eval) +\begin{CompactList}\small\item\em Constructor function - it only sets an internal reference to point to the specified evaluation object. \item\end{CompactList}\item +void \hyperlink{classpeoSeqPopEval_b2c88b9a3ad9091949acf741844eb02f}{operator()} (eo\-Pop$<$ EOT $>$ \&\_\-\_\-pop) +\begin{CompactList}\small\item\em Operator for evaluating all the individuals of a given population - in a sequential iterative manner. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classpeoSeqPopEval_5465f31386c6b96bc8f7fb9393a28a2f}{ +eo\-Eval\-Func$<$ EOT $>$ \& \hyperlink{classpeoSeqPopEval_5465f31386c6b96bc8f7fb9393a28a2f}{eval}} +\label{classpeoSeqPopEval_5465f31386c6b96bc8f7fb9393a28a2f} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Seq\-Pop\-Eval$<$ EOT $>$} + +The \hyperlink{classpeoSeqPopEval}{peo\-Seq\-Pop\-Eval} class acts only as a Paradis\-EO specific sequential evaluation functor - a wrapper for incorporating an {\bf eo\-Eval\-Func$<$ EOT $>$}-derived class as evaluation functor. + +The specified EO evaluation object is applyied in an iterative manner to each individual of a specified population. + + + +Definition at line 21 of file peo\-Seq\-Pop\-Eval.h. + +\subsection{Constructor \& Destructor Documentation} +\hypertarget{classpeoSeqPopEval_a41f91ab4b2aeb325ff75feb66d4e003}{ +\index{peoSeqPopEval@{peo\-Seq\-Pop\-Eval}!peoSeqPopEval@{peoSeqPopEval}} +\index{peoSeqPopEval@{peoSeqPopEval}!peoSeqPopEval@{peo\-Seq\-Pop\-Eval}} +\subsubsection[peoSeqPopEval]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ \hyperlink{classpeoSeqPopEval}{peo\-Seq\-Pop\-Eval}$<$ EOT $>$::\hyperlink{classpeoSeqPopEval}{peo\-Seq\-Pop\-Eval} (eo\-Eval\-Func$<$ EOT $>$ \& {\em \_\-\_\-eval})}} +\label{classpeoSeqPopEval_a41f91ab4b2aeb325ff75feb66d4e003} + + +Constructor function - it only sets an internal reference to point to the specified evaluation object. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Eval\-Func$<$}]EOT $>$\& \_\-\_\-eval - evaluation object to be applied for each individual of a specified population \end{description} +\end{Desc} + + +Definition at line 41 of file peo\-Seq\-Pop\-Eval.h. + +\subsection{Member Function Documentation} +\hypertarget{classpeoSeqPopEval_b2c88b9a3ad9091949acf741844eb02f}{ +\index{peoSeqPopEval@{peo\-Seq\-Pop\-Eval}!operator()@{operator()}} +\index{operator()@{operator()}!peoSeqPopEval@{peo\-Seq\-Pop\-Eval}} +\subsubsection[operator()]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSeqPopEval}{peo\-Seq\-Pop\-Eval}$<$ EOT $>$::operator() (eo\-Pop$<$ EOT $>$ \& {\em \_\-\_\-pop})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoSeqPopEval_b2c88b9a3ad9091949acf741844eb02f} + + +Operator for evaluating all the individuals of a given population - in a sequential iterative manner. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-pop - population to be evaluated. \end{description} +\end{Desc} + + +Implements \hyperlink{classpeoPopEval_2f208067a5e39c3b26c1234050a41e8f}{peo\-Pop\-Eval$<$ EOT $>$}. + +Definition at line 46 of file peo\-Seq\-Pop\-Eval.h. + +References peo\-Seq\-Pop\-Eval$<$ EOT $>$::eval. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Seq\-Pop\-Eval.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSeqTransform.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSeqTransform.eps new file mode 100644 index 000000000..2b86c8a2d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSeqTransform.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 476.19 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.05 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoSeqTransform< EOT >) cw +(peoTransform< EOT >) cw +(Service) cw +(Communicable) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoSeqTransform< EOT >) 0 0 box + (peoTransform< EOT >) 0 1 box + (Service) 0 2 box + (Communicable) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSeqTransform.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSeqTransform.pdf new file mode 100644 index 000000000..823446633 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSeqTransform.pdf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSeqTransform.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSeqTransform.tex new file mode 100644 index 000000000..34cdf35ca --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSeqTransform.tex @@ -0,0 +1,111 @@ +\hypertarget{classpeoSeqTransform}{ +\section{peo\-Seq\-Transform$<$ EOT $>$ Class Template Reference} +\label{classpeoSeqTransform}\index{peoSeqTransform@{peoSeqTransform}} +} +The \hyperlink{classpeoSeqTransform}{peo\-Seq\-Transform} represent a wrapper for offering the possibility of using EO derived transform operators along with the Paradis\-EO evolutionary algorithms. + + +{\tt \#include $<$peo\-Seq\-Transform.h$>$} + +Inheritance diagram for peo\-Seq\-Transform$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classpeoSeqTransform} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hyperlink{classpeoSeqTransform_3b8e4ed19d9458938eb669d83a53c626}{peo\-Seq\-Transform} (eo\-Transform$<$ EOT $>$ \&\_\-\_\-trans) +\begin{CompactList}\small\item\em Constructor function - sets an internal reference towards the specified EO-derived transform object. \item\end{CompactList}\item +void \hyperlink{classpeoSeqTransform_1ba63536abb6c4e1c369e0b7e066872e}{operator()} (eo\-Pop$<$ EOT $>$ \&\_\-\_\-pop) +\begin{CompactList}\small\item\em Operator for applying the specified transform operators on each individual of the given population. \item\end{CompactList}\item +\hypertarget{classpeoSeqTransform_c4bf2724e9f6055f12bd169fad893be3}{ +virtual void \hyperlink{classpeoSeqTransform_c4bf2724e9f6055f12bd169fad893be3}{pack\-Data} ()} +\label{classpeoSeqTransform_c4bf2724e9f6055f12bd169fad893be3} + +\begin{CompactList}\small\item\em Interface function for providing a link with the parallel architecture of the Paradis\-EO framework. \item\end{CompactList}\item +\hypertarget{classpeoSeqTransform_24e6cf15ef230ed538031b522ddd4ae6}{ +virtual void \hyperlink{classpeoSeqTransform_24e6cf15ef230ed538031b522ddd4ae6}{unpack\-Data} ()} +\label{classpeoSeqTransform_24e6cf15ef230ed538031b522ddd4ae6} + +\begin{CompactList}\small\item\em Interface function for providing a link with the parallel architecture of the Paradis\-EO framework. \item\end{CompactList}\item +\hypertarget{classpeoSeqTransform_0294a2f9d6b44ec74d22eaceccdffc2b}{ +virtual void \hyperlink{classpeoSeqTransform_0294a2f9d6b44ec74d22eaceccdffc2b}{execute} ()} +\label{classpeoSeqTransform_0294a2f9d6b44ec74d22eaceccdffc2b} + +\begin{CompactList}\small\item\em Interface function for providing a link with the parallel architecture of the Paradis\-EO framework. \item\end{CompactList}\item +\hypertarget{classpeoSeqTransform_4861c61f9e46d83964ea8a156a9a3ee0}{ +virtual void \hyperlink{classpeoSeqTransform_4861c61f9e46d83964ea8a156a9a3ee0}{pack\-Result} ()} +\label{classpeoSeqTransform_4861c61f9e46d83964ea8a156a9a3ee0} + +\begin{CompactList}\small\item\em Interface function for providing a link with the parallel architecture of the Paradis\-EO framework. \item\end{CompactList}\item +\hypertarget{classpeoSeqTransform_5dd029fc011eb2a810ca1140025129b1}{ +virtual void \hyperlink{classpeoSeqTransform_5dd029fc011eb2a810ca1140025129b1}{unpack\-Result} ()} +\label{classpeoSeqTransform_5dd029fc011eb2a810ca1140025129b1} + +\begin{CompactList}\small\item\em Interface function for providing a link with the parallel architecture of the Paradis\-EO framework. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classpeoSeqTransform_ad3e16c59dd6c46dfc1baf7b88af30cf}{ +eo\-Transform$<$ EOT $>$ \& \hyperlink{classpeoSeqTransform_ad3e16c59dd6c46dfc1baf7b88af30cf}{trans}} +\label{classpeoSeqTransform_ad3e16c59dd6c46dfc1baf7b88af30cf} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Seq\-Transform$<$ EOT $>$} + +The \hyperlink{classpeoSeqTransform}{peo\-Seq\-Transform} represent a wrapper for offering the possibility of using EO derived transform operators along with the Paradis\-EO evolutionary algorithms. + +A minimal set of interface functions is also provided for creating the link with the parallel architecture of the Paradis\-EO framework. + + + +Definition at line 20 of file peo\-Seq\-Transform.h. + +\subsection{Constructor \& Destructor Documentation} +\hypertarget{classpeoSeqTransform_3b8e4ed19d9458938eb669d83a53c626}{ +\index{peoSeqTransform@{peo\-Seq\-Transform}!peoSeqTransform@{peoSeqTransform}} +\index{peoSeqTransform@{peoSeqTransform}!peoSeqTransform@{peo\-Seq\-Transform}} +\subsubsection[peoSeqTransform]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ \hyperlink{classpeoSeqTransform}{peo\-Seq\-Transform}$<$ EOT $>$::\hyperlink{classpeoSeqTransform}{peo\-Seq\-Transform} (eo\-Transform$<$ EOT $>$ \& {\em \_\-\_\-trans})}} +\label{classpeoSeqTransform_3b8e4ed19d9458938eb669d83a53c626} + + +Constructor function - sets an internal reference towards the specified EO-derived transform object. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Transform$<$}]EOT $>$\& \_\-\_\-trans - EO-derived transform object including crossover and mutation operators. \end{description} +\end{Desc} + + +Definition at line 55 of file peo\-Seq\-Transform.h. + +\subsection{Member Function Documentation} +\hypertarget{classpeoSeqTransform_1ba63536abb6c4e1c369e0b7e066872e}{ +\index{peoSeqTransform@{peo\-Seq\-Transform}!operator()@{operator()}} +\index{operator()@{operator()}!peoSeqTransform@{peo\-Seq\-Transform}} +\subsubsection[operator()]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSeqTransform}{peo\-Seq\-Transform}$<$ EOT $>$::operator() (eo\-Pop$<$ EOT $>$ \& {\em \_\-\_\-pop})}} +\label{classpeoSeqTransform_1ba63536abb6c4e1c369e0b7e066872e} + + +Operator for applying the specified transform operators on each individual of the given population. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-pop - population to be transformed by applying the crossover and mutation operators. \end{description} +\end{Desc} + + +Definition at line 60 of file peo\-Seq\-Transform.h. + +References peo\-Seq\-Transform$<$ EOT $>$::trans. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Seq\-Transform.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSyncIslandMig.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSyncIslandMig.eps new file mode 100644 index 000000000..ce426eb0b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSyncIslandMig.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 346.821 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.44167 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoSyncIslandMig< EOT >) cw +(Cooperative) cw +(Communicable) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoSyncIslandMig< EOT >) 0 0 box + (Cooperative) 0 1 box + (Communicable) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSyncIslandMig.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSyncIslandMig.pdf new file mode 100644 index 000000000..ba400c595 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSyncIslandMig.pdf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSyncIslandMig.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSyncIslandMig.tex new file mode 100644 index 000000000..62710bd20 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSyncIslandMig.tex @@ -0,0 +1,225 @@ +\hypertarget{classpeoSyncIslandMig}{ +\section{peo\-Sync\-Island\-Mig$<$ EOT $>$ Class Template Reference} +\label{classpeoSyncIslandMig}\index{peoSyncIslandMig@{peoSyncIslandMig}} +} +The \hyperlink{classpeoSyncIslandMig}{peo\-Sync\-Island\-Mig} class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e. + + +{\tt \#include $<$peo\-Sync\-Island\-Mig.h$>$} + +Inheritance diagram for peo\-Sync\-Island\-Mig$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classpeoSyncIslandMig} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hyperlink{classpeoSyncIslandMig_96b7b6de20b5e318a8b1cde76842305c}{peo\-Sync\-Island\-Mig} (unsigned \_\-\_\-frequency, eo\-Select$<$ EOT $>$ \&\_\-\_\-select, eo\-Replacement$<$ EOT $>$ \&\_\-\_\-replace, \hyperlink{classTopology}{Topology} \&\_\-\_\-topology, eo\-Pop$<$ EOT $>$ \&\_\-\_\-source, eo\-Pop$<$ EOT $>$ \&\_\-\_\-destination) +\begin{CompactList}\small\item\em Constructor for the \hyperlink{classpeoSyncIslandMig}{peo\-Sync\-Island\-Mig} class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. \item\end{CompactList}\item +void \hyperlink{classpeoSyncIslandMig_178476fd276f78b73607b33d19522c36}{operator()} () +\begin{CompactList}\small\item\em Function operator to be called as checkpoint for performing the migration step. \item\end{CompactList}\item +\hypertarget{classpeoSyncIslandMig_e334188141eeba9f7b78bc6716f819ad}{ +void \hyperlink{classpeoSyncIslandMig_e334188141eeba9f7b78bc6716f819ad}{pack} ()} +\label{classpeoSyncIslandMig_e334188141eeba9f7b78bc6716f819ad} + +\begin{CompactList}\small\item\em Auxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function. \item\end{CompactList}\item +\hypertarget{classpeoSyncIslandMig_85777bd9f709c5d4107799e8619948d1}{ +void \hyperlink{classpeoSyncIslandMig_85777bd9f709c5d4107799e8619948d1}{unpack} ()} +\label{classpeoSyncIslandMig_85777bd9f709c5d4107799e8619948d1} + +\begin{CompactList}\small\item\em Auxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function. \item\end{CompactList}\item +\hypertarget{classpeoSyncIslandMig_8c427b3f91c19ff85f86930366b96008}{ +void \hyperlink{classpeoSyncIslandMig_8c427b3f91c19ff85f86930366b96008}{notify\-Sending} ()} +\label{classpeoSyncIslandMig_8c427b3f91c19ff85f86930366b96008} + +\begin{CompactList}\small\item\em Auxiliary function dealing with migration notifications. There is no need to explicitly call the function. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classpeoSyncIslandMig_4c8416e3acce1a6e4c3b0a442d94b063}{ +void \hyperlink{classpeoSyncIslandMig_4c8416e3acce1a6e4c3b0a442d94b063}{emigrate} ()} +\label{classpeoSyncIslandMig_4c8416e3acce1a6e4c3b0a442d94b063} + +\item +\hypertarget{classpeoSyncIslandMig_38dd72312a3d16808af1aa7beb9ed4a7}{ +void \hyperlink{classpeoSyncIslandMig_38dd72312a3d16808af1aa7beb9ed4a7}{immigrate} ()} +\label{classpeoSyncIslandMig_38dd72312a3d16808af1aa7beb9ed4a7} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classpeoSyncIslandMig_2d8ae9104376f3e073e0b250d9b425a2}{ +eo\-Periodic\-Continue$<$ EOT $>$ \hyperlink{classpeoSyncIslandMig_2d8ae9104376f3e073e0b250d9b425a2}{cont}} +\label{classpeoSyncIslandMig_2d8ae9104376f3e073e0b250d9b425a2} + +\item +\hypertarget{classpeoSyncIslandMig_5e9c9f5f65d6418ad46e647ee1804a3d}{ +eo\-Select$<$ EOT $>$ \& \hyperlink{classpeoSyncIslandMig_5e9c9f5f65d6418ad46e647ee1804a3d}{select}} +\label{classpeoSyncIslandMig_5e9c9f5f65d6418ad46e647ee1804a3d} + +\item +\hypertarget{classpeoSyncIslandMig_cb6d2d909503a86415912900d6e1d891}{ +eo\-Replacement$<$ EOT $>$ \& \hyperlink{classpeoSyncIslandMig_cb6d2d909503a86415912900d6e1d891}{replace}} +\label{classpeoSyncIslandMig_cb6d2d909503a86415912900d6e1d891} + +\item +\hypertarget{classpeoSyncIslandMig_ebfe6edb6be16d46bf6d71cb233fcace}{ +\hyperlink{classTopology}{Topology} \& \hyperlink{classpeoSyncIslandMig_ebfe6edb6be16d46bf6d71cb233fcace}{topology}} +\label{classpeoSyncIslandMig_ebfe6edb6be16d46bf6d71cb233fcace} + +\item +\hypertarget{classpeoSyncIslandMig_33fde1f09faf2a3f772d8b8f6a2615c6}{ +eo\-Pop$<$ EOT $>$ \& \hyperlink{classpeoSyncIslandMig_33fde1f09faf2a3f772d8b8f6a2615c6}{source}} +\label{classpeoSyncIslandMig_33fde1f09faf2a3f772d8b8f6a2615c6} + +\item +\hypertarget{classpeoSyncIslandMig_a9bf4612c7c04da6cf69245c6617e6a6}{ +eo\-Pop$<$ EOT $>$ \& \hyperlink{classpeoSyncIslandMig_a9bf4612c7c04da6cf69245c6617e6a6}{destination}} +\label{classpeoSyncIslandMig_a9bf4612c7c04da6cf69245c6617e6a6} + +\item +\hypertarget{classpeoSyncIslandMig_088c1623f32668dcd3683fceff9426c3}{ +std::queue$<$ eo\-Pop$<$ EOT $>$ $>$ \hyperlink{classpeoSyncIslandMig_088c1623f32668dcd3683fceff9426c3}{imm}} +\label{classpeoSyncIslandMig_088c1623f32668dcd3683fceff9426c3} + +\item +\hypertarget{classpeoSyncIslandMig_11d6dd3e4a6db710433f501af0988322}{ +std::queue$<$ eo\-Pop$<$ EOT $>$ $>$ \hyperlink{classpeoSyncIslandMig_11d6dd3e4a6db710433f501af0988322}{em}} +\label{classpeoSyncIslandMig_11d6dd3e4a6db710433f501af0988322} + +\item +\hypertarget{classpeoSyncIslandMig_2f7ca18d67ab7fb47a9851ab3179eb7d}{ +std::queue$<$ \hyperlink{classCooperative}{Cooperative} $\ast$ $>$ \hyperlink{classpeoSyncIslandMig_2f7ca18d67ab7fb47a9851ab3179eb7d}{coop\_\-em}} +\label{classpeoSyncIslandMig_2f7ca18d67ab7fb47a9851ab3179eb7d} + +\item +\hypertarget{classpeoSyncIslandMig_91e0e1ea59c2a6a66eb496bddd60a18f}{ +sem\_\-t \hyperlink{classpeoSyncIslandMig_91e0e1ea59c2a6a66eb496bddd60a18f}{sync}} +\label{classpeoSyncIslandMig_91e0e1ea59c2a6a66eb496bddd60a18f} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Sync\-Island\-Mig$<$ EOT $>$} + +The \hyperlink{classpeoSyncIslandMig}{peo\-Sync\-Island\-Mig} class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e. + +frequency of the migrations, selection and replacement strategies, a topological model and the source and destination population for the migrating individuals. The main difference as opposed to the asynchronous migration model is the synchronization step performed after selecting and sending the emigrant individuals. + +The migration operator is called at the end of each generation of an evolutionary algorithms as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm: + +\begin{TabularC}{2} +\hline +{\bf do} \{ ~ &~ \\\hline +~~~~~~~~ select( population, offsprings ); ~ &// select the offsprings from the current population \\\hline +~~~~~~~~ transform( offsprings ); ~ &// crossover and mutation operators are applied on the selected offsprings \\\hline +~~~~~~~~ evaluate( offsprings ); ~ &// evaluation step of the resulting offspring \\\hline +~~~~~~~~ replace( population, offsprings ); ~ &// replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy \\\hline +\} {\bf while} ( ea\-Checkpoint\-Continue( population ) ); ~ &// checkpoint operators are applied on the current population, including the migration operator, if any specified \\\hline +\end{TabularC} + + +Constructing a synchronous island migration model requires having defined (1) a topological migration model, (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, and (4) an owner object must be set. The owner object must be derived from the {\bf \hyperlink{classRunner}{Runner}} class (for example a \hyperlink{classpeoEA}{peo\-EA} object represents a possible owner). A simple example is offered bellow: + +\begin{enumerate} +\item topological model to be followed when performing migrations: \par + \par + \begin{TabularC}{2} +\hline +\hyperlink{classRingTopology}{Ring\-Topology} mig\-Topology; ~ &// a simple ring topological model - each island communicates with two other islands \\\hline +\end{TabularC} + + +\item the continuation criterion, selection and replacement strategy etc. are defined: \par + \par + \begin{TabularC}{2} +\hline +eo\-Pop$<$ EOT $>$ population( POP\_\-SIZE, pop\-Initializer ); ~ &// population of individuals to be used for the evolutionary algorithm \\\hline +~ &~ \\\hline +eo\-Random\-Select$<$ EOT $>$ mig\-Select\-Strategy; ~ &// selection strategy - in this case a random selection is applied \\\hline +eo\-Select\-Number$<$ EOT $>$ mig\-Select( mig\-Select\-Strategy, MIG\_\-SIZE ); ~ &// number of individuals to be selected using the specified strategy \\\hline +eo\-Plus\-Replacement$<$ EOT $>$ mig\-Replace; ~ &// immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals \\\hline +~ &~ \\\hline +peo\-Sync\-Island\-Mig$<$ EOT $>$ sync\-Migration( \par + ~~~~~~~~ MIG\_\-FREQ, mig\-Select, mig\-Replace, mig\-Topology, \par + ~~~~~~~~ population, population \par + ); ~ &// synchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated \\\hline +\end{TabularC} + + +\item creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope): \par + \par + \begin{TabularC}{2} +\hline +... ~ &~ \\\hline +eo\-Gen\-Continue$<$ EOT $>$ ea\-Cont( NUM\_\-GEN ); ~ &// the evolutionary algorithm will stop after NUM\_\-GEN generations \\\hline +eo\-Check\-Point$<$ EOT $>$ ea\-Checkpoint\-Continue( ea\-Cont ); ~ &// number of individuals to be selected using the specified strategy \\\hline +... ~ &~ \\\hline +ea\-Checkpoint\-Continue.add( sync\-Migration ); ~ &// adding the migration operator as checkpoint element \\\hline +... ~ &~ \\\hline +\end{TabularC} + + +\item definition of an owner evolutionary algorithm (an object inheriting the {\bf \hyperlink{classRunner}{Runner}} class): \par + \par + \begin{TabularC}{2} +\hline +peo\-EA$<$ EOT $>$ ea\-Alg( ea\-Checkpoint\-Continue, ea\-Pop\-Eval, ea\-Select, ea\-Transform, ea\-Replace); ~ &// evolutionary algorithm having as checkpoint the ea\-Checkpoint\-Continue object defined above \\\hline +sync\-Migration.set\-Owner( ea\-Alg ); ~ &// setting the evolutionary algorithm as owner of the migration object \\\hline +ea\-Alg( population ); ~ &// applying the evolutionary algorithm on a given population \\\hline +\end{TabularC} +\end{enumerate} + + +The source and the destination population for the migration object were specified as being the same, in step no. 2, as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations as source and destination for the emigrant and immigrant individuals respectively. + +The above steps only create a synchronous migration object associated to an evolutionary algorithm. The creation of several islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 (the same C++ mig\-Topology object has to be passed as parameter for all the migration objects, in order to interconnect them). + + + +Definition at line 114 of file peo\-Sync\-Island\-Mig.h. + +\subsection{Constructor \& Destructor Documentation} +\hypertarget{classpeoSyncIslandMig_96b7b6de20b5e318a8b1cde76842305c}{ +\index{peoSyncIslandMig@{peo\-Sync\-Island\-Mig}!peoSyncIslandMig@{peoSyncIslandMig}} +\index{peoSyncIslandMig@{peoSyncIslandMig}!peoSyncIslandMig@{peo\-Sync\-Island\-Mig}} +\subsubsection[peoSyncIslandMig]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ \hyperlink{classpeoSyncIslandMig}{peo\-Sync\-Island\-Mig}$<$ EOT $>$::\hyperlink{classpeoSyncIslandMig}{peo\-Sync\-Island\-Mig} (unsigned {\em \_\-\_\-frequency}, eo\-Select$<$ EOT $>$ \& {\em \_\-\_\-select}, eo\-Replacement$<$ EOT $>$ \& {\em \_\-\_\-replace}, \hyperlink{classTopology}{Topology} \& {\em \_\-\_\-topology}, eo\-Pop$<$ EOT $>$ \& {\em \_\-\_\-source}, eo\-Pop$<$ EOT $>$ \& {\em \_\-\_\-destination})}} +\label{classpeoSyncIslandMig_96b7b6de20b5e318a8b1cde76842305c} + + +Constructor for the \hyperlink{classpeoSyncIslandMig}{peo\-Sync\-Island\-Mig} class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em unsigned}]\_\-\_\-frequency - frequency of the migrations - the migrations occur periodically; \item[{\em eo\-Select$<$}]EOT $>$\& \_\-\_\-select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population; \item[{\em eo\-Replacement$<$}]EOT $>$\& \_\-\_\-replace - replacement strategy used for integrating the immigrant individuals in the destination population; \item[{\em Topology\&}]\_\-\_\-topology - topological model to be followed when performing migrations; \item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-source - source population from which the emigrant individuals are selected; \item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-destination - destination population in which the immigrant population are integrated. \end{description} +\end{Desc} + + +Definition at line 178 of file peo\-Sync\-Island\-Mig.h. + +References Topology::add(), and peo\-Sync\-Island\-Mig$<$ EOT $>$::sync. + +\subsection{Member Function Documentation} +\hypertarget{classpeoSyncIslandMig_178476fd276f78b73607b33d19522c36}{ +\index{peoSyncIslandMig@{peo\-Sync\-Island\-Mig}!operator()@{operator()}} +\index{operator()@{operator()}!peoSyncIslandMig@{peo\-Sync\-Island\-Mig}} +\subsubsection[operator()]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSyncIslandMig}{peo\-Sync\-Island\-Mig}$<$ EOT $>$::operator() ()}} +\label{classpeoSyncIslandMig_178476fd276f78b73607b33d19522c36} + + +Function operator to be called as checkpoint for performing the migration step. + +The emigrant individuals are selected from the source population and sent to the next island (defined by the topology object) while the immigrant individuals are integrated in the destination population. There is no need to explicitly call the function - the wrapper checkpoint object (please refer to the above example) will perform the call when required. + +Definition at line 252 of file peo\-Sync\-Island\-Mig.h. + +References peo\-Sync\-Island\-Mig$<$ EOT $>$::cont, peo\-Sync\-Island\-Mig$<$ EOT $>$::emigrate(), Cooperative::get\-Owner(), peo\-Sync\-Island\-Mig$<$ EOT $>$::immigrate(), Thread::set\-Active(), peo\-Sync\-Island\-Mig$<$ EOT $>$::source, Communicable::stop(), and peo\-Sync\-Island\-Mig$<$ EOT $>$::sync. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Sync\-Island\-Mig.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSyncMultiStart.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSyncMultiStart.eps new file mode 100644 index 000000000..025e47565 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSyncMultiStart.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 348.837 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.43333 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoSyncMultiStart< EOT >) cw +(Service) cw +(Communicable) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoSyncMultiStart< EOT >) 0 0 box + (Service) 0 1 box + (Communicable) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSyncMultiStart.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSyncMultiStart.pdf new file mode 100644 index 000000000..007be7bdf --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSyncMultiStart.pdf @@ -0,0 +1,73 @@ +%PDF-1.3 +%Çì¢ +5 0 obj +<> +stream +xœ¥PËNÃ0¼û+ö–µwý’PÅ ¡’ü@‰Ò*¨iiIAü=NšDâ‚e­<3Þ™Ýj öôµ¨Õõ³‡Í»"xHw£JwèKQÃ]žDDc  _«óg Ú£h'`9䵺x+÷Ù×®xüâØ­ÍKZ±®>?5‰EØ&å ø~’‘ï–·)žM)­ Ù$1"ý ™÷X_C‘â`b„ +&0ðýp#ßcã’µLCLyb©¾Á‹Dendstream +endobj +6 0 obj +293 +endobj +4 0 obj +<> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000609 00000 n +0000000823 00000 n +0000000550 00000 n +0000000397 00000 n +0000000015 00000 n +0000000378 00000 n +0000000657 00000 n +0000000757 00000 n +0000000698 00000 n +0000000727 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [(\)ô‡C¿Û\nê:©TÏWóÚ)(\)ô‡C¿Û\nê:©TÏWóÚ)] +>> +startxref +980 +%%EOF diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSyncMultiStart.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSyncMultiStart.tex new file mode 100644 index 000000000..24d426cc7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoSyncMultiStart.tex @@ -0,0 +1,243 @@ +\hypertarget{classpeoSyncMultiStart}{ +\section{peo\-Sync\-Multi\-Start$<$ EOT $>$ Class Template Reference} +\label{classpeoSyncMultiStart}\index{peoSyncMultiStart@{peoSyncMultiStart}} +} +The \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start} class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population. + + +{\tt \#include $<$peo\-Sync\-Multi\-Start.h$>$} + +Inheritance diagram for peo\-Sync\-Multi\-Start$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classpeoSyncMultiStart} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hyperlink{classpeoSyncMultiStart_d29f94aad3c1f443bfffc8b6aee0704c}{peo\-Sync\-Multi\-Start} (eo\-Continue$<$ EOT $>$ \&\_\-\_\-cont, eo\-Select$<$ EOT $>$ \&\_\-\_\-select, eo\-Replacement$<$ EOT $>$ \&\_\-\_\-replace, \bf{mo\-Algo}$<$ EOT $>$ \&\_\-\_\-ls, eo\-Pop$<$ EOT $>$ \&\_\-\_\-pop) +\begin{CompactList}\small\item\em Constructor function - several simple parameters are required for defining the characteristics of the multi-start model. \item\end{CompactList}\item +void \hyperlink{classpeoSyncMultiStart_76385b33fe514f91cb83f0fbecbeb3c2}{operator()} () +\begin{CompactList}\small\item\em Operator which synchronously executes the specified algorithm on the individuals selected from the initial population. \item\end{CompactList}\item +void \hyperlink{classpeoSyncMultiStart_8becfab1922b64708dca5a53e2932a5a}{pack\-Data} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \item\end{CompactList}\item +void \hyperlink{classpeoSyncMultiStart_2903a441b77cded266b5fb651e17a5b5}{unpack\-Data} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \item\end{CompactList}\item +void \hyperlink{classpeoSyncMultiStart_a4d1c2943c290de540800087b54dc49b}{execute} () +\begin{CompactList}\small\item\em Auxiliary function for actually executing the specified algorithm on one assigned individual. \item\end{CompactList}\item +void \hyperlink{classpeoSyncMultiStart_6c48eb0dae741cff7203b65e226f9616}{pack\-Result} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \item\end{CompactList}\item +void \hyperlink{classpeoSyncMultiStart_c3cbd1f10a89d1915c5ccf82a2c34a1d}{unpack\-Result} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \item\end{CompactList}\item +void \hyperlink{classpeoSyncMultiStart_32ec0d01d3fd8a9932abd68f4781fc94}{notify\-Sending\-Data} () +\begin{CompactList}\small\item\em Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. \item\end{CompactList}\item +void \hyperlink{classpeoSyncMultiStart_fc90282cc4e93cdea8f82fd52dd78fb0}{notify\-Sending\-All\-Resource\-Requests} () +\begin{CompactList}\small\item\em Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classpeoSyncMultiStart_43f4fa9b125baef6fc8b968dfd16f437}{ +eo\-Continue$<$ EOT $>$ \& \hyperlink{classpeoSyncMultiStart_43f4fa9b125baef6fc8b968dfd16f437}{cont}} +\label{classpeoSyncMultiStart_43f4fa9b125baef6fc8b968dfd16f437} + +\item +\hypertarget{classpeoSyncMultiStart_8fc9a3d046023ddd077defec3c23ab3b}{ +eo\-Select$<$ EOT $>$ \& \hyperlink{classpeoSyncMultiStart_8fc9a3d046023ddd077defec3c23ab3b}{select}} +\label{classpeoSyncMultiStart_8fc9a3d046023ddd077defec3c23ab3b} + +\item +\hypertarget{classpeoSyncMultiStart_a375ccea98e9bf2a0854dac27df4522f}{ +eo\-Replacement$<$ EOT $>$ \& \hyperlink{classpeoSyncMultiStart_a375ccea98e9bf2a0854dac27df4522f}{replace}} +\label{classpeoSyncMultiStart_a375ccea98e9bf2a0854dac27df4522f} + +\item +\hypertarget{classpeoSyncMultiStart_4d317966de767dcc87eee0286ea7f95d}{ +\bf{mo\-Algo}$<$ EOT $>$ \& \hyperlink{classpeoSyncMultiStart_4d317966de767dcc87eee0286ea7f95d}{ls}} +\label{classpeoSyncMultiStart_4d317966de767dcc87eee0286ea7f95d} + +\item +\hypertarget{classpeoSyncMultiStart_391178bd6b8a97a08ab4e345f070e967}{ +eo\-Pop$<$ EOT $>$ \& \hyperlink{classpeoSyncMultiStart_391178bd6b8a97a08ab4e345f070e967}{pop}} +\label{classpeoSyncMultiStart_391178bd6b8a97a08ab4e345f070e967} + +\item +\hypertarget{classpeoSyncMultiStart_dbcc1a069ec72ecd8d40c392640d84b3}{ +eo\-Pop$<$ EOT $>$ \hyperlink{classpeoSyncMultiStart_dbcc1a069ec72ecd8d40c392640d84b3}{sel}} +\label{classpeoSyncMultiStart_dbcc1a069ec72ecd8d40c392640d84b3} + +\item +\hypertarget{classpeoSyncMultiStart_ca10f6d258105e3c4f0d1660db5b7679}{ +eo\-Pop$<$ EOT $>$ \hyperlink{classpeoSyncMultiStart_ca10f6d258105e3c4f0d1660db5b7679}{impr\_\-sel}} +\label{classpeoSyncMultiStart_ca10f6d258105e3c4f0d1660db5b7679} + +\item +\hypertarget{classpeoSyncMultiStart_2c2ebe46470d1425f0409897deab435b}{ +EOT \hyperlink{classpeoSyncMultiStart_2c2ebe46470d1425f0409897deab435b}{sol}} +\label{classpeoSyncMultiStart_2c2ebe46470d1425f0409897deab435b} + +\item +\hypertarget{classpeoSyncMultiStart_64191ef79b7b589964ac9c3e23ae6718}{ +unsigned \hyperlink{classpeoSyncMultiStart_64191ef79b7b589964ac9c3e23ae6718}{idx}} +\label{classpeoSyncMultiStart_64191ef79b7b589964ac9c3e23ae6718} + +\item +\hypertarget{classpeoSyncMultiStart_773eb9097550d9444f25ca8f48997a30}{ +unsigned \hyperlink{classpeoSyncMultiStart_773eb9097550d9444f25ca8f48997a30}{num\_\-term}} +\label{classpeoSyncMultiStart_773eb9097550d9444f25ca8f48997a30} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Sync\-Multi\-Start$<$ EOT $>$} + +The \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start} class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population. + +As a simple example, several hill climbing algorithms may be synchronously launched on the specified population, each algorithm acting upon one individual only, the final result being integrated back in the population. A \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start} object can be specified as checkpoint object for a classic Paradis\-EO evolutionary algorithm thus allowing for simple hybridization schemes which combine the evolutionary approach with a local search approach, for example, executed at the end of each generation. + + + +Definition at line 36 of file peo\-Sync\-Multi\-Start.h. + +\subsection{Constructor \& Destructor Documentation} +\hypertarget{classpeoSyncMultiStart_d29f94aad3c1f443bfffc8b6aee0704c}{ +\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!peoSyncMultiStart@{peoSyncMultiStart}} +\index{peoSyncMultiStart@{peoSyncMultiStart}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection[peoSyncMultiStart]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start}$<$ EOT $>$::\hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start} (eo\-Continue$<$ EOT $>$ \& {\em \_\-\_\-cont}, eo\-Select$<$ EOT $>$ \& {\em \_\-\_\-select}, eo\-Replacement$<$ EOT $>$ \& {\em \_\-\_\-replace}, \bf{mo\-Algo}$<$ EOT $>$ \& {\em \_\-\_\-ls}, eo\-Pop$<$ EOT $>$ \& {\em \_\-\_\-pop})}} +\label{classpeoSyncMultiStart_d29f94aad3c1f443bfffc8b6aee0704c} + + +Constructor function - several simple parameters are required for defining the characteristics of the multi-start model. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Continue$<$}]EOT $>$\& \_\-\_\-cont - defined for including further functionality - no semantics associated at this time; \item[{\em eo\-Select$<$}]EOT $>$\& \_\-\_\-select - selection strategy for obtaining a subset of the initial population on which to apply the specified algorithm; \item[{\em eo\-Replacement$<$}]EOT $>$\& \_\-\_\-replace - replacement strategy for integrating the resulting individuals in the initial population; \item[{\em mo\-Algo$<$}]EOT $>$\& \_\-\_\-ls - algorithm to be applied on each of the selected individuals - a {\bf mo\-Algo$<$ EOT $>$}-derived object must be specified; \item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-pop - the initial population from which the individuals are selected for applying the specified algorithm. \end{description} +\end{Desc} + + +Definition at line 106 of file peo\-Sync\-Multi\-Start.h. + +\subsection{Member Function Documentation} +\hypertarget{classpeoSyncMultiStart_76385b33fe514f91cb83f0fbecbeb3c2}{ +\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!operator()@{operator()}} +\index{operator()@{operator()}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection[operator()]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start}$<$ EOT $>$::operator() ()}} +\label{classpeoSyncMultiStart_76385b33fe514f91cb83f0fbecbeb3c2} + + +Operator which synchronously executes the specified algorithm on the individuals selected from the initial population. + +There is no need to explicitly call the operator - automatically called as checkpoint operator. + +Definition at line 161 of file peo\-Sync\-Multi\-Start.h. + +References peo\-Sync\-Multi\-Start$<$ EOT $>$::idx, peo\-Sync\-Multi\-Start$<$ EOT $>$::impr\_\-sel, peo\-Sync\-Multi\-Start$<$ EOT $>$::num\_\-term, peo\-Sync\-Multi\-Start$<$ EOT $>$::pop, Service::request\-Resource\-Request(), peo\-Sync\-Multi\-Start$<$ EOT $>$::sel, peo\-Sync\-Multi\-Start$<$ EOT $>$::select, and Communicable::stop().\hypertarget{classpeoSyncMultiStart_8becfab1922b64708dca5a53e2932a5a}{ +\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!packData@{packData}} +\index{packData@{packData}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection[packData]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start}$<$ EOT $>$::pack\-Data ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoSyncMultiStart_8becfab1922b64708dca5a53e2932a5a} + + +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_aea4b8f7f8fb88e83862ee4bfd9ab207}{Service}. + +Definition at line 120 of file peo\-Sync\-Multi\-Start.h. + +References peo\-Sync\-Multi\-Start$<$ EOT $>$::idx, and peo\-Sync\-Multi\-Start$<$ EOT $>$::sel.\hypertarget{classpeoSyncMultiStart_2903a441b77cded266b5fb651e17a5b5}{ +\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!unpackData@{unpackData}} +\index{unpackData@{unpackData}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection[unpackData]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start}$<$ EOT $>$::unpack\-Data ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoSyncMultiStart_2903a441b77cded266b5fb651e17a5b5} + + +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_3bd87b444710813d30fd754d4d0b4df3}{Service}. + +Definition at line 126 of file peo\-Sync\-Multi\-Start.h. + +References peo\-Sync\-Multi\-Start$<$ EOT $>$::sol.\hypertarget{classpeoSyncMultiStart_a4d1c2943c290de540800087b54dc49b}{ +\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!execute@{execute}} +\index{execute@{execute}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection[execute]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start}$<$ EOT $>$::execute ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoSyncMultiStart_a4d1c2943c290de540800087b54dc49b} + + +Auxiliary function for actually executing the specified algorithm on one assigned individual. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_e4f2894e6121e60f38d41cfbd7447ae4}{Service}. + +Definition at line 132 of file peo\-Sync\-Multi\-Start.h. + +References peo\-Sync\-Multi\-Start$<$ EOT $>$::ls, and peo\-Sync\-Multi\-Start$<$ EOT $>$::sol.\hypertarget{classpeoSyncMultiStart_6c48eb0dae741cff7203b65e226f9616}{ +\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!packResult@{packResult}} +\index{packResult@{packResult}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection[packResult]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start}$<$ EOT $>$::pack\-Result ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoSyncMultiStart_6c48eb0dae741cff7203b65e226f9616} + + +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_e5e4f90b2315e15c2a2913bd370f4cf5}{Service}. + +Definition at line 138 of file peo\-Sync\-Multi\-Start.h. + +References peo\-Sync\-Multi\-Start$<$ EOT $>$::sol.\hypertarget{classpeoSyncMultiStart_c3cbd1f10a89d1915c5ccf82a2c34a1d}{ +\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!unpackResult@{unpackResult}} +\index{unpackResult@{unpackResult}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection[unpackResult]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start}$<$ EOT $>$::unpack\-Result ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoSyncMultiStart_c3cbd1f10a89d1915c5ccf82a2c34a1d} + + +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_45c06344edbfa482b91f68e2035a6099}{Service}. + +Definition at line 144 of file peo\-Sync\-Multi\-Start.h. + +References Service::get\-Owner(), peo\-Sync\-Multi\-Start$<$ EOT $>$::impr\_\-sel, peo\-Sync\-Multi\-Start$<$ EOT $>$::num\_\-term, peo\-Sync\-Multi\-Start$<$ EOT $>$::pop, peo\-Sync\-Multi\-Start$<$ EOT $>$::replace, Communicable::resume(), peo\-Sync\-Multi\-Start$<$ EOT $>$::sel, Thread::set\-Active(), and peo\-Sync\-Multi\-Start$<$ EOT $>$::sol.\hypertarget{classpeoSyncMultiStart_32ec0d01d3fd8a9932abd68f4781fc94}{ +\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!notifySendingData@{notifySendingData}} +\index{notifySendingData@{notifySendingData}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection[notifySendingData]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start}$<$ EOT $>$::notify\-Sending\-Data ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoSyncMultiStart_32ec0d01d3fd8a9932abd68f4781fc94} + + +Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_81ad4d6ebb50045b8977e2ab74826f30}{Service}. + +Definition at line 172 of file peo\-Sync\-Multi\-Start.h.\hypertarget{classpeoSyncMultiStart_fc90282cc4e93cdea8f82fd52dd78fb0}{ +\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!notifySendingAllResourceRequests@{notifySendingAllResourceRequests}} +\index{notifySendingAllResourceRequests@{notifySendingAllResourceRequests}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection[notifySendingAllResourceRequests]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start}$<$ EOT $>$::notify\-Sending\-All\-Resource\-Requests ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoSyncMultiStart_fc90282cc4e93cdea8f82fd52dd78fb0} + + +Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_f94cc8a5c2665d4574041737e61e9ffc}{Service}. + +Definition at line 177 of file peo\-Sync\-Multi\-Start.h. + +References Service::get\-Owner(), and Thread::set\-Passive(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Sync\-Multi\-Start.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoTransform.eps b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoTransform.eps new file mode 100644 index 000000000..6dbaa126c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoTransform.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 200 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.5 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoTransform< EOT >) cw +(Service) cw +(Communicable) cw +(peoParaSGATransform< EOT >) cw +(peoSeqTransform< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoTransform< EOT >) 0.5 1 box + (Service) 0.5 2 box + (Communicable) 0.5 3 box + (peoParaSGATransform< EOT >) 0 0 box + (peoSeqTransform< EOT >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoTransform.pdf b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoTransform.pdf new file mode 100644 index 000000000..626da1718 Binary files /dev/null and b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoTransform.pdf differ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoTransform.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoTransform.tex new file mode 100644 index 000000000..d86c3b194 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/classpeoTransform.tex @@ -0,0 +1,29 @@ +\hypertarget{classpeoTransform}{ +\section{peo\-Transform$<$ EOT $>$ Class Template Reference} +\label{classpeoTransform}\index{peoTransform@{peoTransform}} +} +The \hyperlink{classpeoTransform}{peo\-Transform} class acts only as an interface for creating transform operators - for an example please refer to the {\bf \hyperlink{classpeoSeqTransform}{peo\-Seq\-Transform}} and the {\bf \hyperlink{classpeoParaSGATransform}{peo\-Para\-SGATransform}} classes. + + +{\tt \#include $<$peo\-Transform.h$>$} + +Inheritance diagram for peo\-Transform$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classpeoTransform} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Transform$<$ EOT $>$} + +The \hyperlink{classpeoTransform}{peo\-Transform} class acts only as an interface for creating transform operators - for an example please refer to the {\bf \hyperlink{classpeoSeqTransform}{peo\-Seq\-Transform}} and the {\bf \hyperlink{classpeoParaSGATransform}{peo\-Para\-SGATransform}} classes. + + + +Definition at line 20 of file peo\-Transform.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Transform.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/doxygen.sty b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/doxygen.sty new file mode 100644 index 000000000..42c075741 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/doxygen.sty @@ -0,0 +1,78 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} +\RequirePackage{calc} +\RequirePackage{array} +\pagestyle{fancyplain} +\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}} +\renewcommand{\chaptermark}[1]{\markboth{#1}{}} +\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} +\lhead[\fancyplain{}{\bfseries\thepage}] + {\fancyplain{}{\bfseries\rightmark}} +\rhead[\fancyplain{}{\bfseries\leftmark}] + {\fancyplain{}{\bfseries\thepage}} +\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Tue Jan 9 15:47:37 2007 for Paradis\-EO-PEO by Doxygen }]{} +\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Tue Jan 9 15:47:37 2007 for Paradis\-EO-PEO by Doxygen }} +\cfoot{} +\newenvironment{Code} +{\footnotesize} +{\normalsize} +\newcommand{\doxyref}[3]{\textbf{#1} (\textnormal{#2}\,\pageref{#3})} +\newenvironment{DocInclude} +{\footnotesize} +{\normalsize} +\newenvironment{VerbInclude} +{\footnotesize} +{\normalsize} +\newenvironment{Image} +{\begin{figure}[H]} +{\end{figure}} +\newenvironment{ImageNoCaption}{}{} +\newenvironment{CompactList} +{\begin{list}{}{ + \setlength{\leftmargin}{0.5cm} + \setlength{\itemsep}{0pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \renewcommand{\makelabel}{\hfill}}} +{\end{list}} +\newenvironment{CompactItemize} +{ + \begin{itemize} + \setlength{\itemsep}{-3pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \setlength{\partopsep}{0pt} +} +{\end{itemize}} +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp} +\newlength{\tmplength} +\newenvironment{TabularC}[1] +{ +\setlength{\tmplength} + {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)} + \par\begin{tabular*}{\linewidth} + {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|} +} +{\end{tabular*}\par} +\newcommand{\entrylabel}[1]{ + {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\vspace{1.5\baselineskip}}}} +\newenvironment{Desc} +{\begin{list}{} + { + \settowidth{\labelwidth}{40pt} + \setlength{\leftmargin}{\labelwidth} + \setlength{\parsep}{0pt} + \setlength{\itemsep}{-4pt} + \renewcommand{\makelabel}{\entrylabel} + } +} +{\end{list}} +\newenvironment{Indent} + {\begin{list}{}{\setlength{\leftmargin}{0.5cm}} + \item[]\ignorespaces} + {\unskip\end{list}} +\setlength{\parindent}{0cm} +\setlength{\parskip}{0.2cm} +\addtocounter{secnumdepth}{1} +\sloppy +\usepackage[T1]{fontenc} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/hierarchy.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/hierarchy.tex new file mode 100644 index 000000000..3e5558b44 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/hierarchy.tex @@ -0,0 +1,49 @@ +\section{Paradis\-EO-PEO Class Hierarchy} +This inheritance list is sorted roughly, but not completely, alphabetically:\begin{CompactList} +\item \contentsline{section}{Communicable}{\pageref{classCommunicable}}{} +\begin{CompactList} +\item \contentsline{section}{Cooperative}{\pageref{classCooperative}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-Async\-Island\-Mig$<$ EOT $>$}{\pageref{classpeoAsyncIslandMig}}{} +\item \contentsline{section}{peo\-Sync\-Island\-Mig$<$ EOT $>$}{\pageref{classpeoSyncIslandMig}}{} +\end{CompactList} +\item \contentsline{section}{Runner}{\pageref{classRunner}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-EA$<$ EOT $>$}{\pageref{classpeoEA}}{} +\end{CompactList} +\item \contentsline{section}{Service}{\pageref{classService}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-Pop\-Eval$<$ EOT $>$}{\pageref{classpeoPopEval}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-Para\-Pop\-Eval$<$ EOT $>$}{\pageref{classpeoParaPopEval}}{} +\item \contentsline{section}{peo\-Seq\-Pop\-Eval$<$ EOT $>$}{\pageref{classpeoSeqPopEval}}{} +\end{CompactList} +\item \contentsline{section}{peo\-Sync\-Multi\-Start$<$ EOT $>$}{\pageref{classpeoSyncMultiStart}}{} +\item \contentsline{section}{peo\-Transform$<$ EOT $>$}{\pageref{classpeoTransform}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-Para\-SGATransform$<$ EOT $>$}{\pageref{classpeoParaSGATransform}}{} +\item \contentsline{section}{peo\-Seq\-Transform$<$ EOT $>$}{\pageref{classpeoSeqTransform}}{} +\end{CompactList} +\end{CompactList} +\item \contentsline{section}{Worker}{\pageref{classWorker}}{} +\end{CompactList} +\item \contentsline{section}{Node}{\pageref{structNode}}{} +\item \contentsline{section}{peo\-Agg\-Eval\-Func$<$ EOT $>$}{\pageref{classpeoAggEvalFunc}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-No\-Agg\-Eval\-Func$<$ EOT $>$}{\pageref{classpeoNoAggEvalFunc}}{} +\end{CompactList} +\item \contentsline{section}{SEND\_\-REQUEST}{\pageref{structSEND__REQUEST}}{} +\item \contentsline{section}{Thread}{\pageref{classThread}}{} +\begin{CompactList} +\item \contentsline{section}{Reactive\-Thread}{\pageref{classReactiveThread}}{} +\begin{CompactList} +\item \contentsline{section}{Communicator}{\pageref{classCommunicator}}{} +\item \contentsline{section}{Worker}{\pageref{classWorker}}{} +\end{CompactList} +\item \contentsline{section}{Runner}{\pageref{classRunner}}{} +\end{CompactList} +\item \contentsline{section}{Topology}{\pageref{classTopology}}{} +\begin{CompactList} +\item \contentsline{section}{Ring\-Topology}{\pageref{classRingTopology}}{} +\end{CompactList} +\end{CompactList} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/main.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/main.tex new file mode 100644 index 000000000..c9053218e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/main.tex @@ -0,0 +1,52 @@ +\hypertarget{main_intro}{}\section{intro}\label{main_intro} +Paradis\-EO is a white-box object-oriented framework dedicated to the reusable design of parallel and distributed metaheuristics (PDM). Paradis\-EO provides a broad range of features including evolutionary algorithms (EA), local searches (LS), the most common parallel and distributed models and hybridization mechanisms, etc. This high content and utility encourages its use at European level. Paradis\-EO is based on a clear conceptual separation of the solution methods from the problems they are intended to solve. This separation confers to the user a maximum code and design reuse. Furthermore, the fine-grained nature of the classes provided by the framework allow a higher flexibility compared to other frameworks. Paradis\-EO is one of the rare frameworks that provide the most common parallel and distributed models. Their implementation is portable on distributed-memory machines as well as on shared-memory multiprocessors, as it uses standard libraries such as MPI, PVM and PThreads. The models can be exploited in a transparent way, one has just to instantiate their associated provided classes. Their experimentation on the radio network design real-world application demonstrate their efficiency. + +In practice, combinatorial optimization problems are often NP-hard, CPU time-consuming, and evolve over time. Unlike exact methods, metaheuristics allow to tackle large-size problems instances by delivering satisfactory solutions in a reasonable time. Metaheuristics are general-purpose heuristics that split in two categories: evolutionary algorithms (EA) and local search methods (LS). These two families have complementary characteristics: EA allow a better exploration of the search space, while LS have the power to intensify the search in promising regions. Their hybridization allows to deliver robust and better solutions + +Although serial metaheuristics have a polynomial temporal complexity, they remain unsatisfactory for industrial problems. Parallel and distributed computing is a powerful way to deal with the performance issue of these problems. Numerous parallel and distributed metaheuristics (PDM) and their implementations have been proposed, and are available on the\-Web. They can be reused and adapted to his/her own problems. However, the user has to deeply examine the code and rewrite its problem-specific sections. The task is tedious, errorprone, takes along time and makes harder the produced code maintenance. A better way to reuse the code of existing PDM is the reuse through libraries. These are often more reliable as they are more tested and documented. They allow a better maintainability and efficiency. However, libraries do not allow the reuse of design.\hypertarget{main_parallel_metaheuristics}{}\section{Parallel and distributed metaheuristics}\label{main_parallel_metaheuristics} +\hypertarget{main_parallel_distributed}{}\subsection{Parallel distributed evolutionary algorithms}\label{main_parallel_distributed} +Evolutionary Algorithms (EA) are based on the iterative improvement of a population of solutions. At each step, individuals are selected, paired and recombined in order to generate new solutions that replace other ones, and so on. As the algorithm converges, the population is mainly composed of individuals well adapted to the \char`\"{}environment\char`\"{}, for instance the problem. The main features that characterize EA are the way the population is initialized, the selection strategy (deterministic/stochastic) by fostering \char`\"{}good\char`\"{} solutions, the replacement strategy that discards individuals, and the continuation/stopping criterion to decide whether the evolution should go on or not. + +Basically, three major parallel and distributed models for EA can been distinguished: the island (a)synchronous cooperative model, the parallel evaluation of the population, and the distributed evaluation of a single solution. \begin{itemize} +\item {\em Island (a)synchronous cooperative model\/}. Different EA are simultaneously deployed to cooperate for computing better and robust solutions. They exchange in an asynchronous way genetic stuff to diversify the search. The objective is to allow to delay the global convergence, especially when the\-EAare heterogeneous regarding the variation operators. The migration of individuals follows a policy defined by few parameters: the migration decision criterion, the exchange topology, the number of emigrants, the emigrants selection policy, and the replacement/integration policy. + +\item {\em Parallel evaluation of the population\/}. It is required as it is in general the most timeconsuming. The parallel evaluation follows the centralized model. The farmer applies the following operations: selection, transformation and replacement as they require a global management of the population. At each generation, it distributes the set of new solutions between differentworkers. These evaluate and return back the solutions and their quality values. An efficient execution is often obtained particularly when the evaluation of each solution is costly. The two main advantages of an asynchronous model over the synchronous model are: (1) the fault tolerance of the asynchronous model; (2) the robustness in case the fitness computation can take very different computation times (e.g. for nonlinear numerical optimization). Whereas some time-out detection can be used to address the former issue, the latter one can be partially overcome if the grain is set to very small values, as individuals will be sent out for evaluations upon request of the workers. + +\item {\em Distributed evaluation of a single solution\/}. The quality of each solution is evaluated in a parallel centralized way. That model is particularly interesting when the evaluation function can be itself parallelized as it is CPU time-consuming and/or IO intensive. In that case, the function can be viewed as an aggregation of a certain number of partial functions. The partial functions could also be identical if for example the problem to deal with is a data mining one. The evaluation is thus data parallel and the accesses to data base are performed in parallel. Furthermore, a reduction operation is performed on the results returned by the partial functions. As a summary, for this model the user has to indicate a set of partial functions and an aggregation operator of these. \end{itemize} +\hypertarget{main_parallel_ls}{}\subsection{Parallel distributed local searches}\label{main_parallel_ls} +\hypertarget{main_local_searches}{}\subsubsection{Local searches}\label{main_local_searches} +All metaheuristics dedicated to the improvement of a single solution are based on the concept of neighborhood. They start from a solution randomly generated or obtained from another optimization algorithm, and update it, step by step, by replacing the current solution by one of its neighboring candidates. Some criterion have been identified to differentiate such searches: the heuristic internal memory, the choice of the initial solution, the candidate solutions generator, and the selection strategy of candidate moves. Three main algorithms of local search stand out: Hill Climbing (HC), Simulated Annealing (SA) and Tabu Search (TS).\hypertarget{main_parallel_local_searches}{}\subsubsection{Parallel local searches}\label{main_parallel_local_searches} +Two parallel distributed models are commonly used in the literature: the parallel distributed exploration of neighboring candidate solutions model, and the multi-start model. \begin{itemize} +\item {\em Parallel exploration of neighboring candidates\/}. It is a low-level Farmer-Worker model that does not alter the behavior of the heuristic. A sequential search computes the same results slower.At the beginning of each iteration, the farmer duplicates the current solution between distributed nodes. Each one manages some candidates and the results are returned to the farmer. The model is efficient if the evaluation of a each solution is time-consuming and/or there are a great deal of candidate neighbors to evaluate. This is obviously not applicable to SA since only one candidate is evaluated at each iteration. Likewise, the efficiency of the model for HC is not always guaranteed as the number of neighboring solutions to process before finding one that improves the current objective function may be highly variable. + +\item {\em Multi-start model\/}. It consists in simultaneously launching several local searches. They may be heterogeneous, but no information is exchanged between them. The resultswould be identical as if the algorithms were sequentially run.Very often deterministic algorithms differ by the supplied initial solution and/or some other parameters. This trivial model is convenient for low-speed networks of workstations. \end{itemize} +\hypertarget{main_hybridization}{}\section{Hybridization}\label{main_hybridization} +Recently, hybrid metaheuristics have gained a considerable interest. For many practical or academic optimization problems, the best found solutions are obtained by hybrid algorithms. Combinations of different metaheuristics have provided very powerful search methods. Two levels and two modes of hybridization have been distinguished: Low and High levels, and Relay and \hyperlink{classCooperative}{Cooperative} modes. The low-level hybridization addresses the functional composition of a single optimization method. A function of a given metaheuristic is replaced by another metaheuristic. On the contrary, for high-level hybrid algorithms the different metaheuristics are self-containing, meaning no direct relationship to their internal working is considered. On the other hand, relay hybridization means a set of metaheuristics is applied in a pipeline way. The output of a metaheuristic (except the last) is the input of the following one (except the first). Conversely, co-evolutionist hybridization is a cooperative optimization model. Each metaheuristic performs a search in a solution space, and exchange solutions with others.\hypertarget{main_paradiseo_goals}{}\section{Paradiseo goals and architecture}\label{main_paradiseo_goals} +The \char`\"{}EO\char`\"{} part of Paradis\-EO means Evolving Objects. EO is a C++ LGPL open source framework and includes a paradigm-free Evolutionary Computation library (EOlib) dedicated to the flexible design of EA through evolving objects superseding the most common dialects (Genetic Algorithms, Evolution Strategies, Evolutionary Programming and Genetic Programming). Furthermore, EO integrates several services including visualization facilities, on-line definition of parameters, application check-pointing, etc. Paradis\-EO is an extended version of the EO framework. The extensions include local search methods, hybridization mechanisms, parallelism and distribution mechanisms, and other features that are not addressed in this paper such as multi-objective optimization and grid computing. In the next sections, we present the motivations and goals of Paradis\-EO, its architecture and some of its main implementation details and issues.\hypertarget{main_motivation}{}\subsection{Motivations and goals}\label{main_motivation} +A framework is normally intended to be exploited by as many users as possible. Therefore, its exploitation could be successful only if some important user criteria are satisfied. The following criteria are the major of them and constitute the main objectives of the Paradis\-EO framework: + +\begin{itemize} +\item {\em Maximum design and code reuse\/}. The framework must provide for the user a whole architecture design of his/her solution method. Moreover, the programmer may redo as little code as possible. This objective requires a clear and maximal conceptual separation between the solution methods and the problems to be solved, and thus a deep domain analysis. The user might therefore develop only the minimal problem-specific code. + +\item {\em Flexibility and adaptability\/}. It must be possible for the user to easily add new features/ metaheuristics or change existing ones without implicating other components. Furthermore, as in practice existing problems evolve and new others arise these have to be tackled by specializing/adapting the framework components. + +\item {\em Utility\/}. The framework must allow the user to cover a broad range of metaheuristics, problems, parallel distributed models, hybridization mechanisms, etc. + +\item {\em Transparent and easy access to performance and robustness\/}. As the optimization applications are often time-consuming the performance issue is crucial. Parallelism and distribution are two important ways to achieve high performance execution. In order to facilitate its use it is implemented so that the user can deploy his/her parallel algorithms in a transparent manner. Moreover, the execution of the algorithms must be robust to guarantee the reliability and the quality of the results. The hybridization mechanism allows to obtain robust and better solutions. + +\item {\em Portability\/}. In order to satisfy a large number of users the framework must support different material architectures and their associated operating systems. \end{itemize} +\hypertarget{main_architecture}{}\subsection{Paradis\-EO architecture}\label{main_architecture} +The architecture of Paradis\-EO is multi-layer and modular allowing to achieve the objectives quoted above. This allows particularly a high flexibility and adaptability, an easier hybridization, and more code and design reuse. The architecture has three layers identifying three major categories of classes: {\em Solvers\/}, {\em Runners\/} and {\em Helpers\/}. \begin{itemize} +\item {\em Helpers\/}. Helpers are low-level classes that perform specific actions related to the evolution or search process. They are split in two categories: {\em Evolutionary helpers (EH)\/} and {\em Local search helpers (LSH)\/}. EH include mainly the transformation, selection and replacement operations, the evaluation function and the stopping criterion. LSH can be generic such as the neighborhood explorer class, or specific to the local search metaheuristic like the tabu list manager class in the Tabu Search solution method. On the other hand, there are some special helpers dedicated to the management of parallel and distributed models 2 and 3, such as the communicators that embody the communication services. + +Helpers cooperate between them and interact with the components of the upper layer i.e. the runners. The runners invoke the helpers through function parameters. Indeed, helpers have not their own data, but they work on the internal data of the runners. + +\item {\em Runners\/}. The Runners layer contains a set of classes that implement the metaheuristics themselves. They perform the run of the metaheuristics from the initial state or population to the final one. One can distinguish the {\em Evolutionary runners (ER)\/} such as genetic algorithms, evolution strategies, etc., and {\em Local search runners (LSR)\/} like tabu search, simulated annealing and hill climbing. Runners invoke the helpers to perform specific actions on their data. For instance, an ER may ask the fitness function evaluation helper to evaluate its population. An LSR asks the movement helper to perform a given movement on the current state. Furthermore, runners can be serial or parallel distributed. + +\item {\em Solvers\/}. Solvers are devoted to control the evolution process and/or the search. They generate the initial state (solution or population) and define the strategy for combining and sequencing different metaheuristics. Two types of solvers can be distinguished. {\em Single metaheuristic solvers (SMS)\/} and {\em Multiple metaheuristics solvers (MMS)\/}. SMSs are dedicated to the execution of only one metaheuristic.MMS are more complex as they control and sequence several metaheuristics that can be heterogeneous. Solvers interact with the user by getting the input data and delivering the output (best solution, statistics, etc). \end{itemize} + + +According to the generality of their embedded features, the classes of the architecture split in two major categories: {\em Provided classes\/} and {\em Required classes\/}. Provided classes embody the factored out part of the metaheuristics. They are generic, implemented in the framework, and ensure the control at run time. Required classes are those that must be supplied by the user. They encapsulate the problem-specific aspects of the application. These classes are fixed but not implemented in Paradis\-EO. The programmer has the burden to develop them using the OO specialization mechanism.\hypertarget{main_tutorials}{}\section{Paradis\-EO-PEO Tutorials}\label{main_tutorials} +The basisc of the Paradis\-EO framework philosophy are exposed in a few simple tutorials: \begin{itemize} +\item \href{lesson1/html/main.html}{\tt creating a simple Paradis\-EO evolutionary algorithm}; \end{itemize} +All the presented examples have as case study the traveling salesman problem (TSP). Different operators and auxiliary objects were designed, standing as a \href{lsnshared/html/index.html}{\tt common shared source code base}. While not being part of the Paradis\-EO-PEO framework, it may represent a startpoint for a better understanding of the presented tutorials. \ No newline at end of file diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/namespacepeo.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/namespacepeo.tex new file mode 100644 index 000000000..ee1f78ba8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/namespacepeo.tex @@ -0,0 +1,52 @@ +\hypertarget{namespacepeo}{ +\section{peo Namespace Reference} +\label{namespacepeo}\index{peo@{peo}} +} + + +\subsection*{Functions} +\begin{CompactItemize} +\item +\hypertarget{namespacepeo_f90478489cc92d1e6abb222179163a30}{ +void \hyperlink{namespacepeo_f90478489cc92d1e6abb222179163a30}{finalize} ()} +\label{namespacepeo_f90478489cc92d1e6abb222179163a30} + +\item +\hypertarget{namespacepeo_8184c3b1f7eecc68f69bb8e8b872a7d3}{ +void \hyperlink{namespacepeo_8184c3b1f7eecc68f69bb8e8b872a7d3}{init} (int \&\_\-\_\-argc, char $\ast$$\ast$\&\_\-\_\-argv)} +\label{namespacepeo_8184c3b1f7eecc68f69bb8e8b872a7d3} + +\item +\hypertarget{namespacepeo_2b496ee9b81d9ae322ae6edb9a93dc71}{ +void \hyperlink{namespacepeo_2b496ee9b81d9ae322ae6edb9a93dc71}{load\-Parameters} (int \&\_\-\_\-argc, char $\ast$$\ast$\&\_\-\_\-argv)} +\label{namespacepeo_2b496ee9b81d9ae322ae6edb9a93dc71} + +\item +\hypertarget{namespacepeo_10819b2d60b37477c6a89b60c595c67c}{ +void \hyperlink{namespacepeo_10819b2d60b37477c6a89b60c595c67c}{run} ()} +\label{namespacepeo_10819b2d60b37477c6a89b60c595c67c} + +\end{CompactItemize} +\subsection*{Variables} +\begin{CompactItemize} +\item +\hypertarget{namespacepeo_18a3998ce8b39c4e1143914fdd07b3d2}{ +int $\ast$ \hyperlink{namespacepeo_18a3998ce8b39c4e1143914fdd07b3d2}{argc}} +\label{namespacepeo_18a3998ce8b39c4e1143914fdd07b3d2} + +\item +\hypertarget{namespacepeo_d07043237d4d923125e38860ba9bbe20}{ +char $\ast$$\ast$$\ast$ \hyperlink{namespacepeo_d07043237d4d923125e38860ba9bbe20}{argv}} +\label{namespacepeo_d07043237d4d923125e38860ba9bbe20} + +\item +\hypertarget{namespacepeo_18a3998ce8b39c4e1143914fdd07b3d2}{ +int $\ast$ \hyperlink{namespacepeo_18a3998ce8b39c4e1143914fdd07b3d2}{argc}} +\label{namespacepeo_18a3998ce8b39c4e1143914fdd07b3d2} + +\item +\hypertarget{namespacepeo_d07043237d4d923125e38860ba9bbe20}{ +char $\ast$$\ast$$\ast$ \hyperlink{namespacepeo_d07043237d4d923125e38860ba9bbe20}{argv}} +\label{namespacepeo_d07043237d4d923125e38860ba9bbe20} + +\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/namespaces.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/namespaces.tex new file mode 100644 index 000000000..b05536ba2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/namespaces.tex @@ -0,0 +1,4 @@ +\section{Paradis\-EO-PEO Namespace List} +Here is a list of all documented namespaces with brief descriptions:\begin{CompactList} +\item\contentsline{section}{\hyperlink{namespacepeo}{peo} }{\pageref{namespacepeo}}{} +\end{CompactList} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/refman.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/refman.tex new file mode 100644 index 000000000..c29f32d70 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/refman.tex @@ -0,0 +1,82 @@ +\documentclass[a4paper]{book} +\usepackage{a4wide} +\usepackage{makeidx} +\usepackage{fancyhdr} +\usepackage{graphicx} +\usepackage{multicol} +\usepackage{float} +\usepackage{textcomp} +\usepackage{alltt} +\usepackage{times} +\usepackage{ifpdf} +\ifpdf +\usepackage[pdftex, + pagebackref=true, + colorlinks=true, + linkcolor=blue + ]{hyperref} +\else +\usepackage[ps2pdf, + pagebackref=true, + colorlinks=true, + linkcolor=blue + ]{hyperref} +\usepackage{pspicture} +\fi +\usepackage{doxygen} +\makeindex +\setcounter{tocdepth}{1} +\renewcommand{\footrulewidth}{0.4pt} +\begin{document} +\begin{titlepage} +\vspace*{7cm} +\begin{center} +{\Large Paradis\-EO-PEO Reference Manual\\[1ex]\large 0.1 }\\ +\vspace*{1cm} +{\large Generated by Doxygen 1.4.7}\\ +\vspace*{0.5cm} +{\small Tue Jan 9 15:47:37 2007}\\ +\end{center} +\end{titlepage} +\clearemptydoublepage +\pagenumbering{roman} +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} +\chapter{The Paradis\-EO-PEO Framework } +\label{index}\hypertarget{index}{}\input{main} +\chapter{Paradis\-EO-PEO Namespace Index} +\input{namespaces} +\chapter{Paradis\-EO-PEO Hierarchical Index} +\input{hierarchy} +\chapter{Paradis\-EO-PEO Class Index} +\input{annotated} +\chapter{Paradis\-EO-PEO Namespace Documentation} +\input{namespacepeo} +\chapter{Paradis\-EO-PEO Class Documentation} +\input{classCommunicable} +\include{classCommunicator} +\include{classCooperative} +\include{structNode} +\include{classpeoAggEvalFunc} +\include{classpeoAsyncIslandMig} +\include{classpeoEA} +\include{classpeoNoAggEvalFunc} +\include{classpeoParaPopEval} +\include{classpeoParaSGATransform} +\include{classpeoPopEval} +\include{classpeoSeqPopEval} +\include{classpeoSeqTransform} +\include{classpeoSyncIslandMig} +\include{classpeoSyncMultiStart} +\include{classpeoTransform} +\include{classReactiveThread} +\include{classRingTopology} +\include{classRunner} +\include{structSEND__REQUEST} +\include{classService} +\include{classThread} +\include{classTopology} +\include{classWorker} +\printindex +\end{document} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/structNode.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/structNode.tex new file mode 100644 index 000000000..ae5acb2bc --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/structNode.tex @@ -0,0 +1,44 @@ +\hypertarget{structNode}{ +\section{Node Struct Reference} +\label{structNode}\index{Node@{Node}} +} +\subsection*{Public Attributes} +\begin{CompactItemize} +\item +\hypertarget{structNode_7de6f254b6b8c3f9f8287af0bb742e9b}{ +RANK\_\-ID \hyperlink{structNode_7de6f254b6b8c3f9f8287af0bb742e9b}{rk}} +\label{structNode_7de6f254b6b8c3f9f8287af0bb742e9b} + +\item +\hypertarget{structNode_3c4318d71ca9a44fe33edcf8b7f26863}{ +std::string \hyperlink{structNode_3c4318d71ca9a44fe33edcf8b7f26863}{name}} +\label{structNode_3c4318d71ca9a44fe33edcf8b7f26863} + +\item +\hypertarget{structNode_01fec86d75332858b158c810d57caee3}{ +unsigned \hyperlink{structNode_01fec86d75332858b158c810d57caee3}{num\_\-workers}} +\label{structNode_01fec86d75332858b158c810d57caee3} + +\item +\hypertarget{structNode_98deed2036c3dd8fc0f4fe8dacf56a92}{ +int \hyperlink{structNode_98deed2036c3dd8fc0f4fe8dacf56a92}{rk\_\-sched}} +\label{structNode_98deed2036c3dd8fc0f4fe8dacf56a92} + +\item +\hypertarget{structNode_a90013b890888d3d252a71cb4fe48934}{ +std::vector$<$ RUNNER\_\-ID $>$ \hyperlink{structNode_a90013b890888d3d252a71cb4fe48934}{id\_\-run}} +\label{structNode_a90013b890888d3d252a71cb4fe48934} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 20 of file schema.h. + +The documentation for this struct was generated from the following file:\begin{CompactItemize} +\item +schema.h\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/structSEND__REQUEST.tex b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/structSEND__REQUEST.tex new file mode 100644 index 000000000..6678d8e30 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/latex/structSEND__REQUEST.tex @@ -0,0 +1,34 @@ +\hypertarget{structSEND__REQUEST}{ +\section{SEND\_\-REQUEST Struct Reference} +\label{structSEND__REQUEST}\index{SEND_REQUEST@{SEND\_\-REQUEST}} +} +\subsection*{Public Attributes} +\begin{CompactItemize} +\item +\hypertarget{structSEND__REQUEST_1ad8f7233fa3ff13262e783a9153920f}{ +\hyperlink{classCommunicable}{Communicable} $\ast$ \hyperlink{structSEND__REQUEST_1ad8f7233fa3ff13262e783a9153920f}{comm}} +\label{structSEND__REQUEST_1ad8f7233fa3ff13262e783a9153920f} + +\item +\hypertarget{structSEND__REQUEST_93e2a6a71d2a91aa2b7bdd050ee59b4d}{ +int \hyperlink{structSEND__REQUEST_93e2a6a71d2a91aa2b7bdd050ee59b4d}{to}} +\label{structSEND__REQUEST_93e2a6a71d2a91aa2b7bdd050ee59b4d} + +\item +\hypertarget{structSEND__REQUEST_3126b3ef9d6533d3086760e413a7f23f}{ +int \hyperlink{structSEND__REQUEST_3126b3ef9d6533d3086760e413a7f23f}{tag}} +\label{structSEND__REQUEST_3126b3ef9d6533d3086760e413a7f23f} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 24 of file send.cpp. + +The documentation for this struct was generated from the following file:\begin{CompactItemize} +\item +send.cpp\end{CompactItemize} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Communicable.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Communicable.3 new file mode 100644 index 000000000..9785b4a98 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Communicable.3 @@ -0,0 +1,62 @@ +.TH "Communicable" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Communicable \- +.SH SYNOPSIS +.br +.PP +Inherited by \fBCooperative\fP, \fBRunner\fP, \fBService\fP, and \fBWorker\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBCommunicable\fP ()" +.br +.ti -1c +.RI "virtual \fB~Communicable\fP ()" +.br +.ti -1c +.RI "COMM_ID \fBgetKey\fP ()" +.br +.ti -1c +.RI "void \fBlock\fP ()" +.br +.ti -1c +.RI "void \fBunlock\fP ()" +.br +.ti -1c +.RI "void \fBstop\fP ()" +.br +.ti -1c +.RI "void \fBresume\fP ()" +.br +.in -1c +.SS "Protected Attributes" + +.in +1c +.ti -1c +.RI "COMM_ID \fBkey\fP" +.br +.ti -1c +.RI "sem_t \fBsem_lock\fP" +.br +.ti -1c +.RI "sem_t \fBsem_stop\fP" +.br +.in -1c +.SS "Static Protected Attributes" + +.in +1c +.ti -1c +.RI "static unsigned \fBnum_comm\fP = 0" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 16 of file communicable.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Communicator.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Communicator.3 new file mode 100644 index 000000000..daeef4888 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Communicator.3 @@ -0,0 +1,27 @@ +.TH "Communicator" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Communicator \- +.SH SYNOPSIS +.br +.PP +Inherits \fBReactiveThread\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBCommunicator\fP (int *__argc, char ***__argv)" +.br +.ti -1c +.RI "void \fBstart\fP ()" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 15 of file comm.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Cooperative.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Cooperative.3 new file mode 100644 index 000000000..5f07234e4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Cooperative.3 @@ -0,0 +1,42 @@ +.TH "Cooperative" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Cooperative \- +.SH SYNOPSIS +.br +.PP +Inherits \fBCommunicable\fP. +.PP +Inherited by \fBpeoAsyncIslandMig< EOT >\fP, and \fBpeoSyncIslandMig< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBRunner\fP * \fBgetOwner\fP ()" +.br +.ti -1c +.RI "void \fBsetOwner\fP (\fBRunner\fP &__runner)" +.br +.ti -1c +.RI "void \fBsend\fP (\fBCooperative\fP *__coop)" +.br +.ti -1c +.RI "virtual void \fBnotifySending\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBRunner\fP * \fBowner\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 17 of file cooperative.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Node.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Node.3 new file mode 100644 index 000000000..3beb7405a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Node.3 @@ -0,0 +1,34 @@ +.TH "Node" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Node \- +.SH SYNOPSIS +.br +.PP +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "RANK_ID \fBrk\fP" +.br +.ti -1c +.RI "std::string \fBname\fP" +.br +.ti -1c +.RI "unsigned \fBnum_workers\fP" +.br +.ti -1c +.RI "int \fBrk_sched\fP" +.br +.ti -1c +.RI "std::vector< RUNNER_ID > \fBid_run\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 20 of file schema.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/ReactiveThread.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/ReactiveThread.3 new file mode 100644 index 000000000..e13586c51 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/ReactiveThread.3 @@ -0,0 +1,39 @@ +.TH "ReactiveThread" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +ReactiveThread \- +.SH SYNOPSIS +.br +.PP +Inherits \fBThread\fP. +.PP +Inherited by \fBCommunicator\fP, and \fBWorker\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBReactiveThread\fP ()" +.br +.ti -1c +.RI "void \fBsleep\fP ()" +.br +.ti -1c +.RI "void \fBwakeUp\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "sem_t \fBsem\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 16 of file reac_thread.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/RingTopology.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/RingTopology.3 new file mode 100644 index 000000000..2ea91a020 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/RingTopology.3 @@ -0,0 +1,24 @@ +.TH "RingTopology" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +RingTopology \- +.SH SYNOPSIS +.br +.PP +Inherits \fBTopology\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBsetNeighbors\fP (\fBCooperative\fP *__mig, std::vector< \fBCooperative\fP * > &__from, std::vector< \fBCooperative\fP * > &__to)" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 14 of file ring_topo.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Runner.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Runner.3 new file mode 100644 index 000000000..50c28f82f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Runner.3 @@ -0,0 +1,57 @@ +.TH "Runner" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Runner \- +.SH SYNOPSIS +.br +.PP +Inherits \fBCommunicable\fP, and \fBThread\fP. +.PP +Inherited by \fBpeoEA< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBRunner\fP ()" +.br +.ti -1c +.RI "void \fBstart\fP ()" +.br +.ti -1c +.RI "void \fBwaitStarting\fP ()" +.br +.ti -1c +.RI "bool \fBisLocal\fP ()" +.br +.ti -1c +.RI "void \fBterminate\fP ()" +.br +.ti -1c +.RI "RUNNER_ID \fBgetID\fP ()" +.br +.ti -1c +.RI "void \fBpackTermination\fP ()" +.br +.ti -1c +.RI "void \fBnotifySendingTermination\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "sem_t \fBsem_start\fP" +.br +.ti -1c +.RI "unsigned \fBid\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 19 of file runner.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/SEND_REQUEST.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/SEND_REQUEST.3 new file mode 100644 index 000000000..64fdd1f30 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/SEND_REQUEST.3 @@ -0,0 +1,28 @@ +.TH "SEND_REQUEST" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +SEND_REQUEST \- +.SH SYNOPSIS +.br +.PP +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "\fBCommunicable\fP * \fBcomm\fP" +.br +.ti -1c +.RI "int \fBto\fP" +.br +.ti -1c +.RI "int \fBtag\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 24 of file send.cpp. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Service.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Service.3 new file mode 100644 index 000000000..5fe8db06a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Service.3 @@ -0,0 +1,69 @@ +.TH "Service" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Service \- +.SH SYNOPSIS +.br +.PP +Inherits \fBCommunicable\fP. +.PP +Inherited by \fBpeoPopEval< EOT >\fP, \fBpeoSyncMultiStart< EOT >\fP, and \fBpeoTransform< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBsetOwner\fP (\fBThread\fP &__owner)" +.br +.ti -1c +.RI "\fBThread\fP * \fBgetOwner\fP ()" +.br +.ti -1c +.RI "void \fBrequestResourceRequest\fP (unsigned __how_many=1)" +.br +.ti -1c +.RI "void \fBpackResourceRequest\fP ()" +.br +.ti -1c +.RI "virtual void \fBpackData\fP ()" +.br +.ti -1c +.RI "virtual void \fBunpackData\fP ()" +.br +.ti -1c +.RI "virtual void \fBexecute\fP ()" +.br +.ti -1c +.RI "virtual void \fBpackResult\fP ()" +.br +.ti -1c +.RI "virtual void \fBunpackResult\fP ()" +.br +.ti -1c +.RI "virtual void \fBnotifySendingData\fP ()" +.br +.ti -1c +.RI "virtual void \fBnotifySendingResourceRequest\fP ()" +.br +.ti -1c +.RI "virtual void \fBnotifySendingAllResourceRequests\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBThread\fP * \fBowner\fP" +.br +.ti -1c +.RI "unsigned \fBnum_sent_rr\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 17 of file service.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Thread.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Thread.3 new file mode 100644 index 000000000..3b2b3fcb1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Thread.3 @@ -0,0 +1,40 @@ +.TH "Thread" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Thread \- +.SH SYNOPSIS +.br +.PP +Inherited by \fBReactiveThread\fP, and \fBRunner\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBThread\fP ()" +.br +.ti -1c +.RI "virtual \fB~Thread\fP ()" +.br +.ti -1c +.RI "void \fBsetActive\fP ()" +.br +.ti -1c +.RI "void \fBsetPassive\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "bool \fBact\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 16 of file thread.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Topology.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Topology.3 new file mode 100644 index 000000000..a8137f036 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Topology.3 @@ -0,0 +1,34 @@ +.TH "Topology" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Topology \- +.SH SYNOPSIS +.br +.PP +Inherited by \fBRingTopology\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual \fB~Topology\fP ()" +.br +.ti -1c +.RI "void \fBadd\fP (\fBCooperative\fP &__mig)" +.br +.in -1c +.SS "Protected Attributes" + +.in +1c +.ti -1c +.RI "std::vector< \fBCooperative\fP * > \fBmig\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 16 of file topology.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Worker.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Worker.3 new file mode 100644 index 000000000..31904bcca --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/Worker.3 @@ -0,0 +1,64 @@ +.TH "Worker" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Worker \- +.SH SYNOPSIS +.br +.PP +Inherits \fBCommunicable\fP, and \fBReactiveThread\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBWorker\fP ()" +.br +.ti -1c +.RI "void \fBstart\fP ()" +.br +.ti -1c +.RI "void \fBpackResult\fP ()" +.br +.ti -1c +.RI "void \fBunpackData\fP ()" +.br +.ti -1c +.RI "void \fBpackTaskDone\fP ()" +.br +.ti -1c +.RI "void \fBnotifySendingResult\fP ()" +.br +.ti -1c +.RI "void \fBnotifySendingTaskDone\fP ()" +.br +.ti -1c +.RI "void \fBsetSource\fP (int __rank)" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "WORKER_ID \fBid\fP" +.br +.ti -1c +.RI "SERVICE_ID \fBserv_id\fP" +.br +.ti -1c +.RI "\fBService\fP * \fBserv\fP" +.br +.ti -1c +.RI "int \fBsrc\fP" +.br +.ti -1c +.RI "bool \fBtoto\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 18 of file worker.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peo.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peo.3 new file mode 100644 index 000000000..28f387207 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peo.3 @@ -0,0 +1,43 @@ +.TH "peo" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peo \- +.SH SYNOPSIS +.br +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "void \fBfinalize\fP ()" +.br +.ti -1c +.RI "void \fBinit\fP (int &__argc, char **&__argv)" +.br +.ti -1c +.RI "void \fBloadParameters\fP (int &__argc, char **&__argv)" +.br +.ti -1c +.RI "void \fBrun\fP ()" +.br +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "int * \fBargc\fP" +.br +.ti -1c +.RI "char *** \fBargv\fP" +.br +.ti -1c +.RI "int * \fBargc\fP" +.br +.ti -1c +.RI "char *** \fBargv\fP" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoAggEvalFunc.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoAggEvalFunc.3 new file mode 100644 index 000000000..a9e017137 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoAggEvalFunc.3 @@ -0,0 +1,31 @@ +.TH "peoAggEvalFunc" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoAggEvalFunc \- The \fBpeoAggEvalFunc\fP class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherited by \fBpeoNoAggEvalFunc< EOT >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class peoAggEvalFunc< EOT >" +The \fBpeoAggEvalFunc\fP class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided. + +The class inherits \fBpublic eoBF< EOT&, const typename EOT :: Fitness&, void >\fP thus requiring, for the derived classes, the creation of a function having the following signature: +.PP +void operator()( EOT& __eot, const typename EOT :: Fitness& __partial_fittness ); +.PP +The aggregation object is called in an iterative manner for each of the results obtained by applying partial evaluation functions. +.PP +Definition at line 25 of file peoAggEvalFunc.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoAsyncIslandMig.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoAsyncIslandMig.3 new file mode 100644 index 000000000..1ad88264f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoAsyncIslandMig.3 @@ -0,0 +1,174 @@ +.TH "peoAsyncIslandMig" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoAsyncIslandMig \- The \fBpeoAsyncIslandMig\fP class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBCooperative\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoAsyncIslandMig\fP (eoContinue< EOT > &__cont, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, \fBTopology\fP &__topology, eoPop< EOT > &__source, eoPop< EOT > &__destination)" +.br +.RI "\fIConstructor for the \fBpeoAsyncIslandMig\fP class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. \fP" +.ti -1c +.RI "void \fBoperator()\fP ()" +.br +.RI "\fIFunction operator to be called as checkpoint for performing the migration step. \fP" +.ti -1c +.RI "void \fBpack\fP ()" +.br +.RI "\fIAuxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function. \fP" +.ti -1c +.RI "void \fBunpack\fP ()" +.br +.RI "\fIAuxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBemigrate\fP ()" +.br +.ti -1c +.RI "void \fBimmigrate\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "eoContinue< EOT > & \fBcont\fP" +.br +.ti -1c +.RI "eoSelect< EOT > & \fBselect\fP" +.br +.ti -1c +.RI "eoReplacement< EOT > & \fBreplace\fP" +.br +.ti -1c +.RI "\fBTopology\fP & \fBtopology\fP" +.br +.ti -1c +.RI "eoPop< EOT > & \fBsource\fP" +.br +.ti -1c +.RI "eoPop< EOT > & \fBdestination\fP" +.br +.ti -1c +.RI "std::queue< eoPop< EOT > > \fBimm\fP" +.br +.ti -1c +.RI "std::queue< eoPop< EOT > > \fBem\fP" +.br +.ti -1c +.RI "std::queue< \fBCooperative\fP * > \fBcoop_em\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoAsyncIslandMig< EOT >" +The \fBpeoAsyncIslandMig\fP class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e. + +continuation criterion, selection and replacement strategies, a topological model and the source and destination population for the migrating individuals. As opposed to the synchronous migration model, in the asynchronous migration approach, there is no synchronization step between islands after performing the emigration phase. +.PP +The migration operator is called at the end of each generation of an evolutionary algorithms as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm: +.PP +\fBdo\fP { select( population, offsprings ); // select the offsprings from the current population transform( offsprings ); // crossover and mutation operators are applied on the selected offsprings evaluate( offsprings ); // evaluation step of the resulting offsprings replace( population, offsprings ); // replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy } \fBwhile\fP ( eaCheckpointContinue( population ) ); // checkpoint operators are applied on the current population, including the migration operator, if any specified +.PP +Constructing an asynchronous island migration model requires having defined (1) a topological migration model, (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, and (4) an owner object must be set. The owner object must be derived from the \fB\fBRunner\fP\fP class (for example a \fBpeoEA\fP object represents a possible owner). A simple example is offered bellow: +.PP +.PD 0 +.IP "1." 4 +topological model to be followed when performing migrations: +.br + +.br + \fBRingTopology\fP migTopology; // a simple ring topological model - each island communicates with two other islands +.PP + +.IP "2." 4 +the continuation criterion, selection and replacement strategy etc. are defined: +.br + +.br + eoPop< EOT > population( POP_SIZE, popInitializer ); // population of individuals to be used for the evolutionary algorithm eoPeriodicContinue< EOT > migCont( MIG_FREQ ); // migrations occur periodically at MIG_FREQ iterations eoRandomSelect< EOT > migSelectStrategy; // selection strategy - in this case a random selection is applied eoSelectNumber< EOT > migSelect( migSelectStrategy, MIG_SIZE ); // number of individuals to be selected using the specified strategy eoPlusReplacement< EOT > migReplace; // immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals peoAsyncIslandMig< EOT > asyncMigration( +.br + migCont, migSelect, migReplace, migTopology, +.br + population, population +.br + ); // asynchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated +.PP + +.IP "3." 4 +creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope): +.br + +.br + ... eoGenContinue< EOT > eaCont( NUM_GEN ); // the evolutionary algorithm will stop after NUM_GEN generations eoCheckPoint< EOT > eaCheckpointContinue( eaCont ); // number of individuals to be selected using the specified strategy ... eaCheckpointContinue.add( asyncMigration ); // adding the migration operator as checkpoint element ... +.PP + +.IP "4." 4 +definition of an owner evolutionary algorithm (an object inheriting the \fB\fBRunner\fP\fP class): +.br + +.br + peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace); // evolutionary algorithm having as checkpoint the eaCheckpointContinue object defined above asyncMigration.setOwner( eaAlg ); // setting the evolutionary algorithm as owner of the migration object eaAlg( population ); // applying the evolutionary algorithm on a given population +.PP +.PP +The source and the destination population for the migration object were specified as being the same, in step no. 2, as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations as source and destination for the emigrant and immigrant individuals respectively. +.PP +The above steps only create an asynchronous migration object associated to an evolutionary algorithm. The creation of several islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 (the same C++ migTopology object has to be passed as parameter for all the migration objects, in order to interconnect them). +.PP +Definition at line 112 of file peoAsyncIslandMig.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoAsyncIslandMig\fP< EOT >::\fBpeoAsyncIslandMig\fP (eoContinue< EOT > & __cont, eoSelect< EOT > & __select, eoReplacement< EOT > & __replace, \fBTopology\fP & __topology, eoPop< EOT > & __source, eoPop< EOT > & __destination)" +.PP +Constructor for the \fBpeoAsyncIslandMig\fP class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. +.PP +\fBParameters:\fP +.RS 4 +\fIeoContinue<\fP EOT >& __cont - continuation criterion specifying whether the migration is performed or not; +.br +\fIeoSelect<\fP EOT >& __select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population; +.br +\fIeoReplacement<\fP EOT >& __replace - replacement strategy used for integrating the immigrant individuals in the destination population; +.br +\fITopology&\fP __topology - topological model to be followed when performing migrations; +.br +\fIeoPop<\fP EOT >& __source - source population from which the emigrant individuals are selected; +.br +\fIeoPop<\fP EOT >& __destination - destination population in which the immigrant population are integrated. +.RE +.PP + +.PP +Definition at line 171 of file peoAsyncIslandMig.h. +.PP +References Topology::add(). +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoAsyncIslandMig\fP< EOT >::operator() ()" +.PP +Function operator to be called as checkpoint for performing the migration step. +.PP +The emigrant individuals are selected from the source population and sent to the next island (defined by the topology object) while the immigrant individuals are integrated in the destination population. There is no need to explicitly call the function - the wrapper checkpoint object (please refer to the above example) will perform the call when required. +.PP +Definition at line 248 of file peoAsyncIslandMig.h. +.PP +References peoAsyncIslandMig< EOT >::cont, peoAsyncIslandMig< EOT >::emigrate(), peoAsyncIslandMig< EOT >::immigrate(), and peoAsyncIslandMig< EOT >::source. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoEA.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoEA.3 new file mode 100644 index 000000000..6626c217a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoEA.3 @@ -0,0 +1,109 @@ +.TH "peoEA" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoEA \- The \fBpeoEA\fP class offers an elementary evolutionary algorithm implementation. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBRunner\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoEA\fP (eoContinue< EOT > &__cont, \fBpeoPopEval\fP< EOT > &__pop_eval, eoSelect< EOT > &__select, \fBpeoTransform\fP< EOT > &__trans, eoReplacement< EOT > &__replace)" +.br +.RI "\fIConstructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. \fP" +.ti -1c +.RI "void \fBrun\fP ()" +.br +.RI "\fIEvolutionary algorithm function - a side effect of the fact that the class is derived from the \fB\fBRunner\fP\fP class, thus requiring the existence of a \fIrun\fP function, the algorithm being executed on a distinct thread. \fP" +.ti -1c +.RI "void \fBoperator()\fP (eoPop< EOT > &__pop)" +.br +.RI "\fIFunction operator for specifying the population to be associated with the algorithm. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "eoContinue< EOT > & \fBcont\fP" +.br +.ti -1c +.RI "\fBpeoPopEval\fP< EOT > & \fBpop_eval\fP" +.br +.ti -1c +.RI "eoSelect< EOT > & \fBselect\fP" +.br +.ti -1c +.RI "\fBpeoTransform\fP< EOT > & \fBtrans\fP" +.br +.ti -1c +.RI "eoReplacement< EOT > & \fBreplace\fP" +.br +.ti -1c +.RI "eoPop< EOT > * \fBpop\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoEA< EOT >" +The \fBpeoEA\fP class offers an elementary evolutionary algorithm implementation. + +In addition, as compared with the algorithms provided by the EO framework, the \fBpeoEA\fP class has the underlying necessary structure for including, for example, parallel evaluation and parallel transformation operators, migration operators etc. Although there is no restriction on using the algorithms provided by the EO framework, the drawback resides in the fact that the EO implementation is exclusively sequential and, in consequence, no parallelism is provided. A simple example for constructing a \fBpeoEA\fP object: +.PP +... eoPop< EOT > population( POP_SIZE, popInitializer ); // creation of a population with POP_SIZE individuals - the popInitializer is a functor to be called for each individual eoGenContinue< EOT > eaCont( NUM_GEN ); // number of generations for the evolutionary algorithm eoCheckPoint< EOT > eaCheckpointContinue( eaCont ); // checkpoint incorporating the continuation criterion - startpoint for adding other checkpoint objects peoSeqPopEval< EOT > eaPopEval( evalFunction ); // sequential evaluation functor wrapper - evalFunction represents the actual evaluation functor eoRankingSelect< EOT > selectionStrategy; // selection strategy for creating the offspring population - a simple ranking selection in this case eoSelectNumber< EOT > eaSelect( selectionStrategy, POP_SIZE ); // the number of individuals to be selected for creating the offspring population eoRankingSelect< EOT > selectionStrategy; // selection strategy for creating the offspring population - a simple ranking selection in this case eoSGATransform< EOT > transform( crossover, CROSS_RATE, mutation, MUT_RATE ); // transformation operator - crossover and mutation operators with their associated probabilities peoSeqTransform< EOT > eaTransform( transform ); // ParadisEO specific sequential operator - a parallel version may be specified in the same manner eoPlusReplacement< EOT > eaReplace; // replacement strategy - for integrating the offspring resulting individuals in the initial population peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace ); // ParadisEO evolutionary algorithm integrating the above defined objects eaAlg( population ); // specifying the initial population for the algorithm ... +.PP +Definition at line 54 of file peoEA.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoEA\fP< EOT >::\fBpeoEA\fP (eoContinue< EOT > & __cont, \fBpeoPopEval\fP< EOT > & __pop_eval, eoSelect< EOT > & __select, \fBpeoTransform\fP< EOT > & __trans, eoReplacement< EOT > & __replace)" +.PP +Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. +.PP +Depending on the requirements, a sequential or a parallel evaluation operator may be specified or, in the same manner, a sequential or a parallel transformation operator may be given as parameter. Out of the box objects may be provided, from the EO package, for example, or custom defined ones may be specified, provided that they are derived from the correct base classes. +.PP +\fBParameters:\fP +.RS 4 +\fIeoContinue<\fP EOT >& __cont - continuation criterion specifying whether the algorithm should continue or not; +.br +\fIpeoPopEval<\fP EOT >& __pop_eval - evaluation operator; it allows the specification of parallel evaluation operators, aggregate evaluation functions, etc.; +.br +\fIeoSelect<\fP EOT >& __select - selection strategy to be applied for constructing a list of offspring individuals; +.br +\fIpeoTransform<\fP EOT >& __trans - transformation operator, i.e. crossover and mutation; allows for sequential or parallel transform; +.br +\fIeoReplacement<\fP EOT >& __replace - replacement strategy for integrating the offspring individuals in the initial population; +.RE +.PP + +.PP +Definition at line 98 of file peoEA.h. +.PP +References peoEA< EOT >::pop_eval, and peoEA< EOT >::trans. +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoEA\fP< EOT >::operator() (eoPop< EOT > & __pop)" +.PP +Function operator for specifying the population to be associated with the algorithm. +.PP +\fBParameters:\fP +.RS 4 +\fIeoPop<\fP EOT >& __pop - initial population of the algorithm, to be iteratively evolved; +.RE +.PP + +.PP +Definition at line 114 of file peoEA.h. +.PP +References peoEA< EOT >::pop. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoNoAggEvalFunc.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoNoAggEvalFunc.3 new file mode 100644 index 000000000..efa824b55 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoNoAggEvalFunc.3 @@ -0,0 +1,35 @@ +.TH "peoNoAggEvalFunc" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoNoAggEvalFunc \- The \fBpeoNoAggEvalFunc\fP class does nothing more than an association between a fitness value and a specified individual. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBpeoAggEvalFunc< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBoperator()\fP (EOT &__sol, const typename EOT::Fitness &__fit)" +.br +.RI "\fIOperator which sets as fitness the \fB__fit\fP value for the \fB__sol\fP individual. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoNoAggEvalFunc< EOT >" +The \fBpeoNoAggEvalFunc\fP class does nothing more than an association between a fitness value and a specified individual. + +The class is provided as a mean of declaring that no aggregation is required for the evaluation function - the fitness value is explicitly specified. +.PP +Definition at line 19 of file peoNoAggEvalFunc.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoParaPopEval.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoParaPopEval.3 new file mode 100644 index 000000000..4f15421e0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoParaPopEval.3 @@ -0,0 +1,217 @@ +.TH "peoParaPopEval" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoParaPopEval \- The \fBpeoParaPopEval\fP represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBpeoPopEval< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoParaPopEval\fP (eoEvalFunc< EOT > &__eval_func)" +.br +.RI "\fIConstructor function - an EO-derived evaluation functor has to be specified; an internal reference is set towards the specified evaluation functor. \fP" +.ti -1c +.RI "\fBpeoParaPopEval\fP (const std::vector< eoEvalFunc< EOT > * > &__funcs, \fBpeoAggEvalFunc\fP< EOT > &__merge_eval)" +.br +.RI "\fIConstructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function. \fP" +.ti -1c +.RI "void \fBoperator()\fP (eoPop< EOT > &__pop)" +.br +.RI "\fIOperator for applying the evaluation functor (direct or aggregate) for each individual of the specified population. \fP" +.ti -1c +.RI "void \fBpackData\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \fP" +.ti -1c +.RI "void \fBunpackData\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \fP" +.ti -1c +.RI "void \fBexecute\fP ()" +.br +.RI "\fIAuxiliary function - it calls the specified evaluation functor(s). There is no need to explicitly call the function. \fP" +.ti -1c +.RI "void \fBpackResult\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \fP" +.ti -1c +.RI "void \fBunpackResult\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \fP" +.ti -1c +.RI "void \fBnotifySendingData\fP ()" +.br +.RI "\fIAuxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. \fP" +.ti -1c +.RI "void \fBnotifySendingAllResourceRequests\fP ()" +.br +.RI "\fIAuxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "const std::vector< eoEvalFunc< EOT > * > & \fBfuncs\fP" +.br +.ti -1c +.RI "std::vector< eoEvalFunc< EOT > * > \fBone_func\fP" +.br +.ti -1c +.RI "\fBpeoAggEvalFunc\fP< EOT > & \fBmerge_eval\fP" +.br +.ti -1c +.RI "\fBpeoNoAggEvalFunc\fP< EOT > \fBno_merge_eval\fP" +.br +.ti -1c +.RI "std::queue< EOT * > \fBtasks\fP" +.br +.ti -1c +.RI "std::map< EOT *, std::pair< unsigned, unsigned > > \fBprogression\fP" +.br +.ti -1c +.RI "unsigned \fBnum_func\fP" +.br +.ti -1c +.RI "EOT \fBsol\fP" +.br +.ti -1c +.RI "EOT * \fBad_sol\fP" +.br +.ti -1c +.RI "unsigned \fBtotal\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoParaPopEval< EOT >" +The \fBpeoParaPopEval\fP represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor. + +The class offers the possibility of chosing between a single-function evaluation and an aggregate evaluation function, including several sub-evalution functions. +.PP +Definition at line 26 of file peoParaPopEval.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoParaPopEval\fP< EOT >::\fBpeoParaPopEval\fP (eoEvalFunc< EOT > & __eval_func)" +.PP +Constructor function - an EO-derived evaluation functor has to be specified; an internal reference is set towards the specified evaluation functor. +.PP +\fBParameters:\fP +.RS 4 +\fIeoEvalFunc<\fP EOT >& __eval_func - EO-derived evaluation functor to be applied in parallel on each individual of a specified population +.RE +.PP + +.PP +Definition at line 102 of file peoParaPopEval.h. +.PP +References peoParaPopEval< EOT >::one_func. +.SS "template \fBpeoParaPopEval\fP< EOT >::\fBpeoParaPopEval\fP (const std::vector< eoEvalFunc< EOT > * > & __funcs, \fBpeoAggEvalFunc\fP< EOT > & __merge_eval)" +.PP +Constructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function. +.PP +\fBParameters:\fP +.RS 4 +\fIconst\fP std :: vector< eoEvalFunc < EOT >* >& __funcs - vector of EO-derived partial evaluation functors; +.br +\fIpeoAggEvalFunc<\fP EOT >& __merge_eval - aggregation functor for creating a fitness value out of the partial fitness values. +.RE +.PP + +.PP +Definition at line 111 of file peoParaPopEval.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoParaPopEval\fP< EOT >::operator() (eoPop< EOT > & __pop)\fC [virtual]\fP" +.PP +Operator for applying the evaluation functor (direct or aggregate) for each individual of the specified population. +.PP +\fBParameters:\fP +.RS 4 +\fIeoPop<\fP EOT >& __pop - population to be evaluated by applying the evaluation functor specified in the constructor. +.RE +.PP + +.PP +Implements \fBpeoPopEval< EOT >\fP. +.PP +Definition at line 122 of file peoParaPopEval.h. +.PP +References peoParaPopEval< EOT >::funcs, peoParaPopEval< EOT >::progression, Service::requestResourceRequest(), Communicable::stop(), peoParaPopEval< EOT >::tasks, and peoParaPopEval< EOT >::total. +.SS "template void \fBpeoParaPopEval\fP< EOT >::packData ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 143 of file peoParaPopEval.h. +.PP +References peoParaPopEval< EOT >::progression, and peoParaPopEval< EOT >::tasks. +.SS "template void \fBpeoParaPopEval\fP< EOT >::unpackData ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 157 of file peoParaPopEval.h. +.PP +References peoParaPopEval< EOT >::ad_sol, peoParaPopEval< EOT >::num_func, and peoParaPopEval< EOT >::sol. +.SS "template void \fBpeoParaPopEval\fP< EOT >::packResult ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 174 of file peoParaPopEval.h. +.PP +References peoParaPopEval< EOT >::ad_sol, and peoParaPopEval< EOT >::sol. +.SS "template void \fBpeoParaPopEval\fP< EOT >::unpackResult ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 183 of file peoParaPopEval.h. +.PP +References peoParaPopEval< EOT >::ad_sol, Service::getOwner(), peoParaPopEval< EOT >::merge_eval, peoParaPopEval< EOT >::progression, Communicable::resume(), Thread::setActive(), and peoParaPopEval< EOT >::total. +.SS "template void \fBpeoParaPopEval\fP< EOT >::notifySendingData ()\fC [virtual]\fP" +.PP +Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 214 of file peoParaPopEval.h. +.SS "template void \fBpeoParaPopEval\fP< EOT >::notifySendingAllResourceRequests ()\fC [virtual]\fP" +.PP +Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 219 of file peoParaPopEval.h. +.PP +References Service::getOwner(), and Thread::setPassive(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoParaSGATransform.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoParaSGATransform.3 new file mode 100644 index 000000000..466016204 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoParaSGATransform.3 @@ -0,0 +1,83 @@ +.TH "peoParaSGATransform" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoParaSGATransform \- +.SH SYNOPSIS +.br +.PP +Inherits \fBpeoTransform< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoParaSGATransform\fP (eoQuadOp< EOT > &__cross, double __cross_rate, eoMonOp< EOT > &__mut, double __mut_rate)" +.br +.ti -1c +.RI "void \fBoperator()\fP (eoPop< EOT > &__pop)" +.br +.ti -1c +.RI "void \fBpackData\fP ()" +.br +.ti -1c +.RI "void \fBunpackData\fP ()" +.br +.ti -1c +.RI "void \fBexecute\fP ()" +.br +.ti -1c +.RI "void \fBpackResult\fP ()" +.br +.ti -1c +.RI "void \fBunpackResult\fP ()" +.br +.ti -1c +.RI "void \fBnotifySendingData\fP ()" +.br +.ti -1c +.RI "void \fBnotifySendingAllResourceRequests\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "eoQuadOp< EOT > & \fBcross\fP" +.br +.ti -1c +.RI "double \fBcross_rate\fP" +.br +.ti -1c +.RI "eoMonOp< EOT > & \fBmut\fP" +.br +.ti -1c +.RI "double \fBmut_rate\fP" +.br +.ti -1c +.RI "unsigned \fBidx\fP" +.br +.ti -1c +.RI "eoPop< EOT > * \fBpop\fP" +.br +.ti -1c +.RI "EOT \fBfather\fP" +.br +.ti -1c +.RI "EOT \fBmother\fP" +.br +.ti -1c +.RI "unsigned \fBnum_term\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoParaSGATransform< EOT >" + +.PP +Definition at line 21 of file peoParaSGATransform.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoPopEval.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoPopEval.3 new file mode 100644 index 000000000..38fa18a57 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoPopEval.3 @@ -0,0 +1,37 @@ +.TH "peoPopEval" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoPopEval \- The \fB\fBpeoPopEval\fP\fP class provides the interface for constructing ParadisEO specific evaluation functors. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBService\fP. +.PP +Inherited by \fBpeoParaPopEval< EOT >\fP, and \fBpeoSeqPopEval< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual void \fBoperator()\fP (eoPop< EOT > &__pop)=0" +.br +.RI "\fIInterface function providing the signature for constructing an evaluation functor. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoPopEval< EOT >" +The \fB\fBpeoPopEval\fP\fP class provides the interface for constructing ParadisEO specific evaluation functors. + +The derived classes may be used as wrappers for \fBEO\fP-derived evaluation functors. In order to have an example, please refer to the implementation of the \fB\fBpeoSeqPopEval\fP\fP and \fB\fBpeoParaPopEval\fP\fP classes. +.PP +Definition at line 19 of file peoPopEval.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoSeqPopEval.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoSeqPopEval.3 new file mode 100644 index 000000000..99cc00ef7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoSeqPopEval.3 @@ -0,0 +1,78 @@ +.TH "peoSeqPopEval" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoSeqPopEval \- The \fBpeoSeqPopEval\fP class acts only as a ParadisEO specific sequential evaluation functor - a wrapper for incorporating an \fBeoEvalFunc< EOT >\fP-derived class as evaluation functor. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBpeoPopEval< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoSeqPopEval\fP (eoEvalFunc< EOT > &__eval)" +.br +.RI "\fIConstructor function - it only sets an internal reference to point to the specified evaluation object. \fP" +.ti -1c +.RI "void \fBoperator()\fP (eoPop< EOT > &__pop)" +.br +.RI "\fIOperator for evaluating all the individuals of a given population - in a sequential iterative manner. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "eoEvalFunc< EOT > & \fBeval\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoSeqPopEval< EOT >" +The \fBpeoSeqPopEval\fP class acts only as a ParadisEO specific sequential evaluation functor - a wrapper for incorporating an \fBeoEvalFunc< EOT >\fP-derived class as evaluation functor. + +The specified EO evaluation object is applyied in an iterative manner to each individual of a specified population. +.PP +Definition at line 21 of file peoSeqPopEval.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoSeqPopEval\fP< EOT >::\fBpeoSeqPopEval\fP (eoEvalFunc< EOT > & __eval)" +.PP +Constructor function - it only sets an internal reference to point to the specified evaluation object. +.PP +\fBParameters:\fP +.RS 4 +\fIeoEvalFunc<\fP EOT >& __eval - evaluation object to be applied for each individual of a specified population +.RE +.PP + +.PP +Definition at line 41 of file peoSeqPopEval.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoSeqPopEval\fP< EOT >::operator() (eoPop< EOT > & __pop)\fC [virtual]\fP" +.PP +Operator for evaluating all the individuals of a given population - in a sequential iterative manner. +.PP +\fBParameters:\fP +.RS 4 +\fIeoPop<\fP EOT >& __pop - population to be evaluated. +.RE +.PP + +.PP +Implements \fBpeoPopEval< EOT >\fP. +.PP +Definition at line 46 of file peoSeqPopEval.h. +.PP +References peoSeqPopEval< EOT >::eval. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoSeqTransform.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoSeqTransform.3 new file mode 100644 index 000000000..6a12b1d03 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoSeqTransform.3 @@ -0,0 +1,96 @@ +.TH "peoSeqTransform" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoSeqTransform \- The \fBpeoSeqTransform\fP represent a wrapper for offering the possibility of using EO derived transform operators along with the ParadisEO evolutionary algorithms. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBpeoTransform< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoSeqTransform\fP (eoTransform< EOT > &__trans)" +.br +.RI "\fIConstructor function - sets an internal reference towards the specified EO-derived transform object. \fP" +.ti -1c +.RI "void \fBoperator()\fP (eoPop< EOT > &__pop)" +.br +.RI "\fIOperator for applying the specified transform operators on each individual of the given population. \fP" +.ti -1c +.RI "virtual void \fBpackData\fP ()" +.br +.RI "\fIInterface function for providing a link with the parallel architecture of the ParadisEO framework. \fP" +.ti -1c +.RI "virtual void \fBunpackData\fP ()" +.br +.RI "\fIInterface function for providing a link with the parallel architecture of the ParadisEO framework. \fP" +.ti -1c +.RI "virtual void \fBexecute\fP ()" +.br +.RI "\fIInterface function for providing a link with the parallel architecture of the ParadisEO framework. \fP" +.ti -1c +.RI "virtual void \fBpackResult\fP ()" +.br +.RI "\fIInterface function for providing a link with the parallel architecture of the ParadisEO framework. \fP" +.ti -1c +.RI "virtual void \fBunpackResult\fP ()" +.br +.RI "\fIInterface function for providing a link with the parallel architecture of the ParadisEO framework. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "eoTransform< EOT > & \fBtrans\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoSeqTransform< EOT >" +The \fBpeoSeqTransform\fP represent a wrapper for offering the possibility of using EO derived transform operators along with the ParadisEO evolutionary algorithms. + +A minimal set of interface functions is also provided for creating the link with the parallel architecture of the ParadisEO framework. +.PP +Definition at line 20 of file peoSeqTransform.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoSeqTransform\fP< EOT >::\fBpeoSeqTransform\fP (eoTransform< EOT > & __trans)" +.PP +Constructor function - sets an internal reference towards the specified EO-derived transform object. +.PP +\fBParameters:\fP +.RS 4 +\fIeoTransform<\fP EOT >& __trans - EO-derived transform object including crossover and mutation operators. +.RE +.PP + +.PP +Definition at line 55 of file peoSeqTransform.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoSeqTransform\fP< EOT >::operator() (eoPop< EOT > & __pop)" +.PP +Operator for applying the specified transform operators on each individual of the given population. +.PP +\fBParameters:\fP +.RS 4 +\fIeoPop<\fP EOT >& __pop - population to be transformed by applying the crossover and mutation operators. +.RE +.PP + +.PP +Definition at line 60 of file peoSeqTransform.h. +.PP +References peoSeqTransform< EOT >::trans. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoSyncIslandMig.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoSyncIslandMig.3 new file mode 100644 index 000000000..36919aae7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoSyncIslandMig.3 @@ -0,0 +1,181 @@ +.TH "peoSyncIslandMig" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoSyncIslandMig \- The \fBpeoSyncIslandMig\fP class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBCooperative\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoSyncIslandMig\fP (unsigned __frequency, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, \fBTopology\fP &__topology, eoPop< EOT > &__source, eoPop< EOT > &__destination)" +.br +.RI "\fIConstructor for the \fBpeoSyncIslandMig\fP class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. \fP" +.ti -1c +.RI "void \fBoperator()\fP ()" +.br +.RI "\fIFunction operator to be called as checkpoint for performing the migration step. \fP" +.ti -1c +.RI "void \fBpack\fP ()" +.br +.RI "\fIAuxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function. \fP" +.ti -1c +.RI "void \fBunpack\fP ()" +.br +.RI "\fIAuxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function. \fP" +.ti -1c +.RI "void \fBnotifySending\fP ()" +.br +.RI "\fIAuxiliary function dealing with migration notifications. There is no need to explicitly call the function. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBemigrate\fP ()" +.br +.ti -1c +.RI "void \fBimmigrate\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "eoPeriodicContinue< EOT > \fBcont\fP" +.br +.ti -1c +.RI "eoSelect< EOT > & \fBselect\fP" +.br +.ti -1c +.RI "eoReplacement< EOT > & \fBreplace\fP" +.br +.ti -1c +.RI "\fBTopology\fP & \fBtopology\fP" +.br +.ti -1c +.RI "eoPop< EOT > & \fBsource\fP" +.br +.ti -1c +.RI "eoPop< EOT > & \fBdestination\fP" +.br +.ti -1c +.RI "std::queue< eoPop< EOT > > \fBimm\fP" +.br +.ti -1c +.RI "std::queue< eoPop< EOT > > \fBem\fP" +.br +.ti -1c +.RI "std::queue< \fBCooperative\fP * > \fBcoop_em\fP" +.br +.ti -1c +.RI "sem_t \fBsync\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoSyncIslandMig< EOT >" +The \fBpeoSyncIslandMig\fP class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e. + +frequency of the migrations, selection and replacement strategies, a topological model and the source and destination population for the migrating individuals. The main difference as opposed to the asynchronous migration model is the synchronization step performed after selecting and sending the emigrant individuals. +.PP +The migration operator is called at the end of each generation of an evolutionary algorithms as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm: +.PP +\fBdo\fP { select( population, offsprings ); // select the offsprings from the current population transform( offsprings ); // crossover and mutation operators are applied on the selected offsprings evaluate( offsprings ); // evaluation step of the resulting offspring replace( population, offsprings ); // replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy } \fBwhile\fP ( eaCheckpointContinue( population ) ); // checkpoint operators are applied on the current population, including the migration operator, if any specified +.PP +Constructing a synchronous island migration model requires having defined (1) a topological migration model, (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, and (4) an owner object must be set. The owner object must be derived from the \fB\fBRunner\fP\fP class (for example a \fBpeoEA\fP object represents a possible owner). A simple example is offered bellow: +.PP +.PD 0 +.IP "1." 4 +topological model to be followed when performing migrations: +.br + +.br + \fBRingTopology\fP migTopology; // a simple ring topological model - each island communicates with two other islands +.PP + +.IP "2." 4 +the continuation criterion, selection and replacement strategy etc. are defined: +.br + +.br + eoPop< EOT > population( POP_SIZE, popInitializer ); // population of individuals to be used for the evolutionary algorithm eoRandomSelect< EOT > migSelectStrategy; // selection strategy - in this case a random selection is applied eoSelectNumber< EOT > migSelect( migSelectStrategy, MIG_SIZE ); // number of individuals to be selected using the specified strategy eoPlusReplacement< EOT > migReplace; // immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals peoSyncIslandMig< EOT > syncMigration( +.br + MIG_FREQ, migSelect, migReplace, migTopology, +.br + population, population +.br + ); // synchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated +.PP + +.IP "3." 4 +creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope): +.br + +.br + ... eoGenContinue< EOT > eaCont( NUM_GEN ); // the evolutionary algorithm will stop after NUM_GEN generations eoCheckPoint< EOT > eaCheckpointContinue( eaCont ); // number of individuals to be selected using the specified strategy ... eaCheckpointContinue.add( syncMigration ); // adding the migration operator as checkpoint element ... +.PP + +.IP "4." 4 +definition of an owner evolutionary algorithm (an object inheriting the \fB\fBRunner\fP\fP class): +.br + +.br + peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace); // evolutionary algorithm having as checkpoint the eaCheckpointContinue object defined above syncMigration.setOwner( eaAlg ); // setting the evolutionary algorithm as owner of the migration object eaAlg( population ); // applying the evolutionary algorithm on a given population +.PP +.PP +The source and the destination population for the migration object were specified as being the same, in step no. 2, as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations as source and destination for the emigrant and immigrant individuals respectively. +.PP +The above steps only create a synchronous migration object associated to an evolutionary algorithm. The creation of several islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 (the same C++ migTopology object has to be passed as parameter for all the migration objects, in order to interconnect them). +.PP +Definition at line 114 of file peoSyncIslandMig.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoSyncIslandMig\fP< EOT >::\fBpeoSyncIslandMig\fP (unsigned __frequency, eoSelect< EOT > & __select, eoReplacement< EOT > & __replace, \fBTopology\fP & __topology, eoPop< EOT > & __source, eoPop< EOT > & __destination)" +.PP +Constructor for the \fBpeoSyncIslandMig\fP class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. +.PP +\fBParameters:\fP +.RS 4 +\fIunsigned\fP __frequency - frequency of the migrations - the migrations occur periodically; +.br +\fIeoSelect<\fP EOT >& __select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population; +.br +\fIeoReplacement<\fP EOT >& __replace - replacement strategy used for integrating the immigrant individuals in the destination population; +.br +\fITopology&\fP __topology - topological model to be followed when performing migrations; +.br +\fIeoPop<\fP EOT >& __source - source population from which the emigrant individuals are selected; +.br +\fIeoPop<\fP EOT >& __destination - destination population in which the immigrant population are integrated. +.RE +.PP + +.PP +Definition at line 178 of file peoSyncIslandMig.h. +.PP +References Topology::add(), and peoSyncIslandMig< EOT >::sync. +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoSyncIslandMig\fP< EOT >::operator() ()" +.PP +Function operator to be called as checkpoint for performing the migration step. +.PP +The emigrant individuals are selected from the source population and sent to the next island (defined by the topology object) while the immigrant individuals are integrated in the destination population. There is no need to explicitly call the function - the wrapper checkpoint object (please refer to the above example) will perform the call when required. +.PP +Definition at line 252 of file peoSyncIslandMig.h. +.PP +References peoSyncIslandMig< EOT >::cont, peoSyncIslandMig< EOT >::emigrate(), Cooperative::getOwner(), peoSyncIslandMig< EOT >::immigrate(), Thread::setActive(), peoSyncIslandMig< EOT >::source, Communicable::stop(), and peoSyncIslandMig< EOT >::sync. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoSyncMultiStart.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoSyncMultiStart.3 new file mode 100644 index 000000000..db9eb776d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoSyncMultiStart.3 @@ -0,0 +1,209 @@ +.TH "peoSyncMultiStart" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoSyncMultiStart \- The \fBpeoSyncMultiStart\fP class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBService\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoSyncMultiStart\fP (eoContinue< EOT > &__cont, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, \fBmoAlgo\fP< EOT > &__ls, eoPop< EOT > &__pop)" +.br +.RI "\fIConstructor function - several simple parameters are required for defining the characteristics of the multi-start model. \fP" +.ti -1c +.RI "void \fBoperator()\fP ()" +.br +.RI "\fIOperator which synchronously executes the specified algorithm on the individuals selected from the initial population. \fP" +.ti -1c +.RI "void \fBpackData\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \fP" +.ti -1c +.RI "void \fBunpackData\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \fP" +.ti -1c +.RI "void \fBexecute\fP ()" +.br +.RI "\fIAuxiliary function for actually executing the specified algorithm on one assigned individual. \fP" +.ti -1c +.RI "void \fBpackResult\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \fP" +.ti -1c +.RI "void \fBunpackResult\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \fP" +.ti -1c +.RI "void \fBnotifySendingData\fP ()" +.br +.RI "\fIAuxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. \fP" +.ti -1c +.RI "void \fBnotifySendingAllResourceRequests\fP ()" +.br +.RI "\fIAuxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "eoContinue< EOT > & \fBcont\fP" +.br +.ti -1c +.RI "eoSelect< EOT > & \fBselect\fP" +.br +.ti -1c +.RI "eoReplacement< EOT > & \fBreplace\fP" +.br +.ti -1c +.RI "\fBmoAlgo\fP< EOT > & \fBls\fP" +.br +.ti -1c +.RI "eoPop< EOT > & \fBpop\fP" +.br +.ti -1c +.RI "eoPop< EOT > \fBsel\fP" +.br +.ti -1c +.RI "eoPop< EOT > \fBimpr_sel\fP" +.br +.ti -1c +.RI "EOT \fBsol\fP" +.br +.ti -1c +.RI "unsigned \fBidx\fP" +.br +.ti -1c +.RI "unsigned \fBnum_term\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoSyncMultiStart< EOT >" +The \fBpeoSyncMultiStart\fP class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population. + +As a simple example, several hill climbing algorithms may be synchronously launched on the specified population, each algorithm acting upon one individual only, the final result being integrated back in the population. A \fBpeoSyncMultiStart\fP object can be specified as checkpoint object for a classic ParadisEO evolutionary algorithm thus allowing for simple hybridization schemes which combine the evolutionary approach with a local search approach, for example, executed at the end of each generation. +.PP +Definition at line 36 of file peoSyncMultiStart.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoSyncMultiStart\fP< EOT >::\fBpeoSyncMultiStart\fP (eoContinue< EOT > & __cont, eoSelect< EOT > & __select, eoReplacement< EOT > & __replace, \fBmoAlgo\fP< EOT > & __ls, eoPop< EOT > & __pop)" +.PP +Constructor function - several simple parameters are required for defining the characteristics of the multi-start model. +.PP +\fBParameters:\fP +.RS 4 +\fIeoContinue<\fP EOT >& __cont - defined for including further functionality - no semantics associated at this time; +.br +\fIeoSelect<\fP EOT >& __select - selection strategy for obtaining a subset of the initial population on which to apply the specified algorithm; +.br +\fIeoReplacement<\fP EOT >& __replace - replacement strategy for integrating the resulting individuals in the initial population; +.br +\fImoAlgo<\fP EOT >& __ls - algorithm to be applied on each of the selected individuals - a \fBmoAlgo< EOT >\fP-derived object must be specified; +.br +\fIeoPop<\fP EOT >& __pop - the initial population from which the individuals are selected for applying the specified algorithm. +.RE +.PP + +.PP +Definition at line 106 of file peoSyncMultiStart.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::operator() ()" +.PP +Operator which synchronously executes the specified algorithm on the individuals selected from the initial population. +.PP +There is no need to explicitly call the operator - automatically called as checkpoint operator. +.PP +Definition at line 161 of file peoSyncMultiStart.h. +.PP +References peoSyncMultiStart< EOT >::idx, peoSyncMultiStart< EOT >::impr_sel, peoSyncMultiStart< EOT >::num_term, peoSyncMultiStart< EOT >::pop, Service::requestResourceRequest(), peoSyncMultiStart< EOT >::sel, peoSyncMultiStart< EOT >::select, and Communicable::stop(). +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::packData ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 120 of file peoSyncMultiStart.h. +.PP +References peoSyncMultiStart< EOT >::idx, and peoSyncMultiStart< EOT >::sel. +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::unpackData ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 126 of file peoSyncMultiStart.h. +.PP +References peoSyncMultiStart< EOT >::sol. +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::execute ()\fC [virtual]\fP" +.PP +Auxiliary function for actually executing the specified algorithm on one assigned individual. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 132 of file peoSyncMultiStart.h. +.PP +References peoSyncMultiStart< EOT >::ls, and peoSyncMultiStart< EOT >::sol. +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::packResult ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 138 of file peoSyncMultiStart.h. +.PP +References peoSyncMultiStart< EOT >::sol. +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::unpackResult ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 144 of file peoSyncMultiStart.h. +.PP +References Service::getOwner(), peoSyncMultiStart< EOT >::impr_sel, peoSyncMultiStart< EOT >::num_term, peoSyncMultiStart< EOT >::pop, peoSyncMultiStart< EOT >::replace, Communicable::resume(), peoSyncMultiStart< EOT >::sel, Thread::setActive(), and peoSyncMultiStart< EOT >::sol. +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::notifySendingData ()\fC [virtual]\fP" +.PP +Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 172 of file peoSyncMultiStart.h. +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::notifySendingAllResourceRequests ()\fC [virtual]\fP" +.PP +Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 177 of file peoSyncMultiStart.h. +.PP +References Service::getOwner(), and Thread::setPassive(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoTransform.3 b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoTransform.3 new file mode 100644 index 000000000..d26e639fc --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/man/man3/peoTransform.3 @@ -0,0 +1,27 @@ +.TH "peoTransform" 3 "9 Jan 2007" "Version 0.1" "ParadisEO-PEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoTransform \- The \fBpeoTransform\fP class acts only as an interface for creating transform operators - for an example please refer to the \fB\fBpeoSeqTransform\fP\fP and the \fB\fBpeoParaSGATransform\fP\fP classes. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBService\fP. +.PP +Inherited by \fBpeoParaSGATransform< EOT >\fP, and \fBpeoSeqTransform< EOT >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class peoTransform< EOT >" +The \fBpeoTransform\fP class acts only as an interface for creating transform operators - for an example please refer to the \fB\fBpeoSeqTransform\fP\fP and the \fB\fBpeoParaSGATransform\fP\fP classes. +.PP +Definition at line 20 of file peoTransform.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEO from the source code. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/paradiseo-peo-lsn-shared.doxytag b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/paradiseo-peo-lsn-shared.doxytag new file mode 100644 index 000000000..dcd7ef5ab --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/paradiseo-peo-lsn-shared.doxytag @@ -0,0 +1,253 @@ + + + + CitySwap + classCitySwap.html + + bool + operator() + classCitySwap.html + 7e6958b62048c89604cbf046b86bdf2d + (Route &__route) + + + + DisplayBestRoute + classDisplayBestRoute.html + + + DisplayBestRoute + classDisplayBestRoute.html + db263e38f1e82174f811bf62f323f87f + (eoPop< Route > &__pop) + + + void + operator() + classDisplayBestRoute.html + ee879344a6d8b81a04d4eabbed2c7a04 + () + + + eoPop< Route > & + pop + classDisplayBestRoute.html + 5270aabbf294d2deca9878934216eb89 + + + + + EdgeXover + classEdgeXover.html + + bool + operator() + classEdgeXover.html + cb1c0a103106a4d3319540cb23163a79 + (Route &__route1, Route &__route2) + + + void + cross + classEdgeXover.html + 88c2d4c9a878454a32d56010f3dddc27 + (const Route &__par1, const Route &__par2, Route &__child) + + + void + remove_entry + classEdgeXover.html + 1b3a4c75dd9a034c81af6d89d85d30f5 + (unsigned __vertex, std::vector< std::set< unsigned > > &__map) + + + void + build_map + classEdgeXover.html + 04de96aa1016836e0ba5f4b952a5fa16 + (const Route &__par1, const Route &__par2) + + + void + add_vertex + classEdgeXover.html + 2d3045ef503d8b16a27e11fdc23ca11c + (unsigned __vertex, Route &__child) + + + std::vector< std::set< unsigned > > + _map + classEdgeXover.html + d41399c6effb54ee48c722f1e19cb3c3 + + + + std::vector< bool > + visited + classEdgeXover.html + 46d4d4724cf6d660b1a7ab4a346573d4 + + + + + MergeRouteEval + classMergeRouteEval.html + peoAggEvalFunc + + void + operator() + classMergeRouteEval.html + 29cb0028ac0df4b2cee3a809c8f35dea + (Route &__route, const int &__part_fit) + + + + OrderXover + classOrderXover.html + + bool + operator() + classOrderXover.html + 0ff6aada669eb8173322ed68cda1ac61 + (Route &__route1, Route &__route2) + + + void + cross + classOrderXover.html + d2bf90b5f46ac4a344777e17bc5f364d + (const Route &__par1, const Route &__par2, Route &__child) + + + + PartialMappedXover + classPartialMappedXover.html + + bool + operator() + classPartialMappedXover.html + 1cda6ea86ca36e5de0125f4ba5cfc695 + (Route &__route1, Route &__route2) + + + void + repair + classPartialMappedXover.html + b6d4035544aff3b2b3fe4b0eeea185a2 + (Route &__route, unsigned __cut1, unsigned __cut2) + + + + PartRouteEval + classPartRouteEval.html + + + PartRouteEval + classPartRouteEval.html + a331566b29bc3227f377004232f05491 + (float __from, float __to) + + + void + operator() + classPartRouteEval.html + 965fab875fb601f17934a6ece761beae + (Route &__route) + + + float + from + classPartRouteEval.html + 5bde722e66378b2570ae6c4b4f8df58e + + + + float + to + classPartRouteEval.html + de53cc919faa498663f327b72c357da3 + + + + + RouteEval + classRouteEval.html + + void + operator() + classRouteEval.html + e10bbe6f792e6f44405953de4f703901 + (Route &__route) + + + + RouteInit + classRouteInit.html + + void + operator() + classRouteInit.html + b65a7137e114458faadb6a5510c001f7 + (Route &__route) + + + + TwoOpt + classTwoOpt.html + moMove + + void + operator() + classTwoOpt.html + ff87d1649a33d42a6d64e8d314ed1af0 + (Route &__route) + + + + TwoOptIncrEval + classTwoOptIncrEval.html + moMoveIncrEval< TwoOpt > + + int + operator() + classTwoOptIncrEval.html + 48500077e651c4c6152daef8a396be39 + (const TwoOpt &__move, const Route &__route) + + + + TwoOptInit + classTwoOptInit.html + moMoveInit< TwoOpt > + + void + operator() + classTwoOptInit.html + 5bf6af064d37ebd955ffb5a623e78e1b + (TwoOpt &__move, const Route &__route) + + + + TwoOptNext + classTwoOptNext.html + moNextMove< TwoOpt > + + bool + operator() + classTwoOptNext.html + baf229b2e056f39ab971cf2ac66a833e + (TwoOpt &__move, const Route &__route) + + + + TwoOptRand + classTwoOptRand.html + + void + operator() + classTwoOptRand.html + e2f362f359517c027f6f22fba0aab375 + (TwoOpt &__move, const Route &__route) + + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/paradiseo-peo-lsn.doxytag b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/paradiseo-peo-lsn.doxytag new file mode 100644 index 000000000..c15d20393 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/paradiseo-peo-lsn.doxytag @@ -0,0 +1,3 @@ + + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/docs/paradiseo-peo.doxyfile b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/paradiseo-peo.doxyfile new file mode 100644 index 000000000..703a94bbb --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/paradiseo-peo.doxyfile @@ -0,0 +1,239 @@ +# Doxyfile 1.4.7 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = ParadisEO-PEO +PROJECT_NUMBER = 0.1 +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 = peo +#--------------------------------------------------------------------------- +# 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 = YES +USE_PDFLATEX = YES +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-mo/docs/eo.doxytag=../../../paradiseo-mo/docs/html \ + ../../paradiseo-mo/docs/mo.doxytag=../../../paradiseo-mo/docs/html +GENERATE_TAGFILE = paradiseo-peo.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-i386-0.2/paradiseo-peo/docs/paradiseo-peo.doxytag b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/paradiseo-peo.doxytag new file mode 100644 index 000000000..61462c615 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/docs/paradiseo-peo.doxytag @@ -0,0 +1,1516 @@ + + + + main + The ParadisEO-PEO Framework + main + parallel_local_searches + parallel_metaheuristics + paradiseo_goals + hybridization + tutorials + intro + parallel_distributed + parallel_ls + architecture + local_searches + motivation + + + Communicable + classCommunicable.html + + + Communicable + classCommunicable.html + 8ae1827ecf7569b3db1ed386c7d8ad78 + () + + + virtual + ~Communicable + classCommunicable.html + 2280b0dfa0d3a515fccf62c2a9fd5f41 + () + + + COMM_ID + getKey + classCommunicable.html + db4307b69b9ccacff55fdbf84b8f50e4 + () + + + void + lock + classCommunicable.html + e1f8bd1ee810fd73d44315c95998d19d + () + + + void + unlock + classCommunicable.html + caa814847192e71f434fbf9479ede862 + () + + + void + stop + classCommunicable.html + cb53e6534b947bc889aa181d9dbbd13b + () + + + void + resume + classCommunicable.html + 3306a9adb11a0ab5af342c0db9f7bb2a + () + + + COMM_ID + key + classCommunicable.html + 605b0efeffe81326f216c9903f5bbf4c + + + + sem_t + sem_lock + classCommunicable.html + cf9639312f71a2f348bc1e7789ccbd9d + + + + sem_t + sem_stop + classCommunicable.html + 29c53b9191348e0505e3bcba6d8b82b1 + + + + static unsigned + num_comm + classCommunicable.html + 7a6acfdc781a67c9c0ec4f17893f86c3 + + + + + Communicator + classCommunicator.html + ReactiveThread + + + Communicator + classCommunicator.html + 7c9dce4ea92bd04d01d53f80c0ef08ee + (int *__argc, char ***__argv) + + + void + start + classCommunicator.html + 142fae13b16b166519315f248a513c62 + () + + + + Cooperative + classCooperative.html + Communicable + + Runner * + getOwner + classCooperative.html + 4012b4e8329e87d26ee266491e1a883e + () + + + void + setOwner + classCooperative.html + fe7b022567174c8305bc78d8c5749b12 + (Runner &__runner) + + + void + send + classCooperative.html + c609f2a1200da7d1ac96005602515fc6 + (Cooperative *__coop) + + + virtual void + notifySending + classCooperative.html + 4439ddeaa1246a2e44c003bfb781739b + () + + + Runner * + owner + classCooperative.html + 7604f094479d08154ede4996a45bf79e + + + + + Node + structNode.html + + RANK_ID + rk + structNode.html + 7de6f254b6b8c3f9f8287af0bb742e9b + + + + std::string + name + structNode.html + 3c4318d71ca9a44fe33edcf8b7f26863 + + + + unsigned + num_workers + structNode.html + 01fec86d75332858b158c810d57caee3 + + + + int + rk_sched + structNode.html + 98deed2036c3dd8fc0f4fe8dacf56a92 + + + + std::vector< RUNNER_ID > + id_run + structNode.html + a90013b890888d3d252a71cb4fe48934 + + + + + peoAggEvalFunc + classpeoAggEvalFunc.html + EOT + + + peoAsyncIslandMig + classpeoAsyncIslandMig.html + EOT + Cooperative + + + peoAsyncIslandMig + classpeoAsyncIslandMig.html + e0f706cbf4148d3ca327227a5c7a9fdf + (eoContinue< EOT > &__cont, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, Topology &__topology, eoPop< EOT > &__source, eoPop< EOT > &__destination) + + + void + operator() + classpeoAsyncIslandMig.html + 13581e54425727a7f785ca8a6df527b5 + () + + + void + pack + classpeoAsyncIslandMig.html + 6d790a5d0b6ac510cac4f61a1c0d8f16 + () + + + void + unpack + classpeoAsyncIslandMig.html + 455501aee5db2bbfbae15779c8429369 + () + + + void + emigrate + classpeoAsyncIslandMig.html + 87a4ef7d4bd30d349a801bf0f9e87c82 + () + + + void + immigrate + classpeoAsyncIslandMig.html + 5a9a64ba51a696e45f91b362c39c9a64 + () + + + eoContinue< EOT > & + cont + classpeoAsyncIslandMig.html + 2fc077d02ef9ea4595cfe883af0d4f83 + + + + eoSelect< EOT > & + select + classpeoAsyncIslandMig.html + b1fa045094c8a411323e75b5820c80c2 + + + + eoReplacement< EOT > & + replace + classpeoAsyncIslandMig.html + b761dbd880ee32e170741ecd78da6f48 + + + + Topology & + topology + classpeoAsyncIslandMig.html + e45e5a808a96f0853ab6ba42339fe679 + + + + eoPop< EOT > & + source + classpeoAsyncIslandMig.html + 8a502d82c773033e274dca932fc2d4ee + + + + eoPop< EOT > & + destination + classpeoAsyncIslandMig.html + e407f411d08ae7d96992603c145a7e43 + + + + std::queue< eoPop< EOT > > + imm + classpeoAsyncIslandMig.html + b8c76d98d9ae99dd930a77c12860519a + + + + std::queue< eoPop< EOT > > + em + classpeoAsyncIslandMig.html + a9cc0e2d61cac6e11647b141962adc89 + + + + std::queue< Cooperative * > + coop_em + classpeoAsyncIslandMig.html + 1a2c0004d23bc303420af137a8c8bd27 + + + + + peoEA + classpeoEA.html + EOT + Runner + + + peoEA + classpeoEA.html + dbfc4f8907bef234602149229f132371 + (eoContinue< EOT > &__cont, peoPopEval< EOT > &__pop_eval, eoSelect< EOT > &__select, peoTransform< EOT > &__trans, eoReplacement< EOT > &__replace) + + + void + run + classpeoEA.html + 6ab8c321d29350634143a2a01cf2ad24 + () + + + void + operator() + classpeoEA.html + 3c709e3b2491147d26fee36138644613 + (eoPop< EOT > &__pop) + + + eoContinue< EOT > & + cont + classpeoEA.html + 5f015eebf42f176b9fe322488c446c2a + + + + peoPopEval< EOT > & + pop_eval + classpeoEA.html + 9140259f50c9186edcb062b023624c96 + + + + eoSelect< EOT > & + select + classpeoEA.html + 2d8428d69fdd6aefefbaf543fdd46d19 + + + + peoTransform< EOT > & + trans + classpeoEA.html + 713c77935eb8aafebfb9488cfaa4a363 + + + + eoReplacement< EOT > & + replace + classpeoEA.html + 9bd2d4356cf7e69e3141dc269213aa8a + + + + eoPop< EOT > * + pop + classpeoEA.html + c0b110e410bc16283e8339f24b733772 + + + + + peoNoAggEvalFunc + classpeoNoAggEvalFunc.html + EOT + peoAggEvalFunc + + void + operator() + classpeoNoAggEvalFunc.html + 1a69ee1af8745ac75c864bf884436de5 + (EOT &__sol, const typename EOT::Fitness &__fit) + + + + peoParaPopEval + classpeoParaPopEval.html + EOT + peoPopEval + + + peoParaPopEval + classpeoParaPopEval.html + bcb540510a7038520bec41a7af332daf + (eoEvalFunc< EOT > &__eval_func) + + + + peoParaPopEval + classpeoParaPopEval.html + 1cc13a1ec366f95d219d682eccb455bc + (const std::vector< eoEvalFunc< EOT > * > &__funcs, peoAggEvalFunc< EOT > &__merge_eval) + + + void + operator() + classpeoParaPopEval.html + aeaa4fca4f8650e453e308838b4a2cb5 + (eoPop< EOT > &__pop) + + + void + packData + classpeoParaPopEval.html + fea632bd645ab11182782fd3c038d6d8 + () + + + void + unpackData + classpeoParaPopEval.html + 410bf4c173e2f36df82251cb16ce1b05 + () + + + void + execute + classpeoParaPopEval.html + 3af76378611eac5a36da9a0a00aeeb6c + () + + + void + packResult + classpeoParaPopEval.html + 24bb4ae84b0b9f64e7170e3d2b0e1223 + () + + + void + unpackResult + classpeoParaPopEval.html + fd7f0afe9cba30be39269d16097e190e + () + + + void + notifySendingData + classpeoParaPopEval.html + 1f78c3cec2940af08a059cc1aa96a9c8 + () + + + void + notifySendingAllResourceRequests + classpeoParaPopEval.html + b77031fc4807921ffaf7cf6b669a7665 + () + + + const std::vector< eoEvalFunc< EOT > * > & + funcs + classpeoParaPopEval.html + 6d69b8f73c0b5d72baf75d6e53f025b7 + + + + std::vector< eoEvalFunc< EOT > * > + one_func + classpeoParaPopEval.html + f0e8af3ee442d2b6baf0bd122226be3c + + + + peoAggEvalFunc< EOT > & + merge_eval + classpeoParaPopEval.html + b48bcd4e9f92f364118304535c089456 + + + + peoNoAggEvalFunc< EOT > + no_merge_eval + classpeoParaPopEval.html + bf255dd5861e27108c2abae7309d7690 + + + + std::queue< EOT * > + tasks + classpeoParaPopEval.html + af76cd18368a0f6185878f37f0b5f272 + + + + std::map< EOT *, std::pair< unsigned, unsigned > > + progression + classpeoParaPopEval.html + 80e7e34bb1bb2d12f1f2eed3feac6ecf + + + + unsigned + num_func + classpeoParaPopEval.html + 87abb090c0de39f0ccc36af1f07cca0c + + + + EOT + sol + classpeoParaPopEval.html + fb6941e0455515a908eb82342b995163 + + + + EOT * + ad_sol + classpeoParaPopEval.html + 60cafeab376262af675fdff43434c8d8 + + + + unsigned + total + classpeoParaPopEval.html + b528ad9dd9006c3dd57f149a3843e57d + + + + + peoParaSGATransform + classpeoParaSGATransform.html + EOT + peoTransform + + + peoParaSGATransform + classpeoParaSGATransform.html + 2052bca82fbbfe5455bf6f69246d4dbf + (eoQuadOp< EOT > &__cross, double __cross_rate, eoMonOp< EOT > &__mut, double __mut_rate) + + + void + operator() + classpeoParaSGATransform.html + 669de7f7c6316fa745a15b909efb6527 + (eoPop< EOT > &__pop) + + + void + packData + classpeoParaSGATransform.html + fd278bcde58d29c9a343d5cbead81a1e + () + + + void + unpackData + classpeoParaSGATransform.html + a43a487a6e81791c8bbf6ce30f4336ab + () + + + void + execute + classpeoParaSGATransform.html + c9de2100fb897177a401c634002f6dd9 + () + + + void + packResult + classpeoParaSGATransform.html + ba08e224ceaa4149e8e1a88694a2ccf2 + () + + + void + unpackResult + classpeoParaSGATransform.html + 257663dcdc6cc95b6183d472ffba1b2f + () + + + void + notifySendingData + classpeoParaSGATransform.html + 4e19dfc22b6f69fa8b93537226551866 + () + + + void + notifySendingAllResourceRequests + classpeoParaSGATransform.html + 8a0316e33897c395a81787f59ea7a1c8 + () + + + eoQuadOp< EOT > & + cross + classpeoParaSGATransform.html + c6f97deabe7502c84f5b6c479013f6dc + + + + double + cross_rate + classpeoParaSGATransform.html + dfcf216e2df05016db4d57a5ffb0b0e2 + + + + eoMonOp< EOT > & + mut + classpeoParaSGATransform.html + 34ff5f9d285ca4879cf8865fb425a311 + + + + double + mut_rate + classpeoParaSGATransform.html + b9d3a2094737d0bbd034aac942cc53e3 + + + + unsigned + idx + classpeoParaSGATransform.html + 03972feadc86626e58fe60bd4061b57e + + + + eoPop< EOT > * + pop + classpeoParaSGATransform.html + 94e10a1285e128aba6e71517c941f961 + + + + EOT + father + classpeoParaSGATransform.html + 9ef60190e2e3bd5961a93d1b52cb275d + + + + EOT + mother + classpeoParaSGATransform.html + e991ad2af6d116afd855de2db46e1d27 + + + + unsigned + num_term + classpeoParaSGATransform.html + 589ea7cd72d522ae51a07de4d8ffbf11 + + + + + peoPopEval + classpeoPopEval.html + EOT + Service + + virtual void + operator() + classpeoPopEval.html + 2f208067a5e39c3b26c1234050a41e8f + (eoPop< EOT > &__pop)=0 + + + + peoSeqPopEval + classpeoSeqPopEval.html + EOT + peoPopEval + + + peoSeqPopEval + classpeoSeqPopEval.html + a41f91ab4b2aeb325ff75feb66d4e003 + (eoEvalFunc< EOT > &__eval) + + + void + operator() + classpeoSeqPopEval.html + b2c88b9a3ad9091949acf741844eb02f + (eoPop< EOT > &__pop) + + + eoEvalFunc< EOT > & + eval + classpeoSeqPopEval.html + 5465f31386c6b96bc8f7fb9393a28a2f + + + + + peoSeqTransform + classpeoSeqTransform.html + EOT + peoTransform + + + peoSeqTransform + classpeoSeqTransform.html + 3b8e4ed19d9458938eb669d83a53c626 + (eoTransform< EOT > &__trans) + + + void + operator() + classpeoSeqTransform.html + 1ba63536abb6c4e1c369e0b7e066872e + (eoPop< EOT > &__pop) + + + virtual void + packData + classpeoSeqTransform.html + c4bf2724e9f6055f12bd169fad893be3 + () + + + virtual void + unpackData + classpeoSeqTransform.html + 24e6cf15ef230ed538031b522ddd4ae6 + () + + + virtual void + execute + classpeoSeqTransform.html + 0294a2f9d6b44ec74d22eaceccdffc2b + () + + + virtual void + packResult + classpeoSeqTransform.html + 4861c61f9e46d83964ea8a156a9a3ee0 + () + + + virtual void + unpackResult + classpeoSeqTransform.html + 5dd029fc011eb2a810ca1140025129b1 + () + + + eoTransform< EOT > & + trans + classpeoSeqTransform.html + ad3e16c59dd6c46dfc1baf7b88af30cf + + + + + peoSyncIslandMig + classpeoSyncIslandMig.html + EOT + Cooperative + + + peoSyncIslandMig + classpeoSyncIslandMig.html + 96b7b6de20b5e318a8b1cde76842305c + (unsigned __frequency, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, Topology &__topology, eoPop< EOT > &__source, eoPop< EOT > &__destination) + + + void + operator() + classpeoSyncIslandMig.html + 178476fd276f78b73607b33d19522c36 + () + + + void + pack + classpeoSyncIslandMig.html + e334188141eeba9f7b78bc6716f819ad + () + + + void + unpack + classpeoSyncIslandMig.html + 85777bd9f709c5d4107799e8619948d1 + () + + + void + notifySending + classpeoSyncIslandMig.html + 8c427b3f91c19ff85f86930366b96008 + () + + + void + emigrate + classpeoSyncIslandMig.html + 4c8416e3acce1a6e4c3b0a442d94b063 + () + + + void + immigrate + classpeoSyncIslandMig.html + 38dd72312a3d16808af1aa7beb9ed4a7 + () + + + eoPeriodicContinue< EOT > + cont + classpeoSyncIslandMig.html + 2d8ae9104376f3e073e0b250d9b425a2 + + + + eoSelect< EOT > & + select + classpeoSyncIslandMig.html + 5e9c9f5f65d6418ad46e647ee1804a3d + + + + eoReplacement< EOT > & + replace + classpeoSyncIslandMig.html + cb6d2d909503a86415912900d6e1d891 + + + + Topology & + topology + classpeoSyncIslandMig.html + ebfe6edb6be16d46bf6d71cb233fcace + + + + eoPop< EOT > & + source + classpeoSyncIslandMig.html + 33fde1f09faf2a3f772d8b8f6a2615c6 + + + + eoPop< EOT > & + destination + classpeoSyncIslandMig.html + a9bf4612c7c04da6cf69245c6617e6a6 + + + + std::queue< eoPop< EOT > > + imm + classpeoSyncIslandMig.html + 088c1623f32668dcd3683fceff9426c3 + + + + std::queue< eoPop< EOT > > + em + classpeoSyncIslandMig.html + 11d6dd3e4a6db710433f501af0988322 + + + + std::queue< Cooperative * > + coop_em + classpeoSyncIslandMig.html + 2f7ca18d67ab7fb47a9851ab3179eb7d + + + + sem_t + sync + classpeoSyncIslandMig.html + 91e0e1ea59c2a6a66eb496bddd60a18f + + + + + peoSyncMultiStart + classpeoSyncMultiStart.html + EOT + Service + + + peoSyncMultiStart + classpeoSyncMultiStart.html + d29f94aad3c1f443bfffc8b6aee0704c + (eoContinue< EOT > &__cont, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, moAlgo< EOT > &__ls, eoPop< EOT > &__pop) + + + void + operator() + classpeoSyncMultiStart.html + 76385b33fe514f91cb83f0fbecbeb3c2 + () + + + void + packData + classpeoSyncMultiStart.html + 8becfab1922b64708dca5a53e2932a5a + () + + + void + unpackData + classpeoSyncMultiStart.html + 2903a441b77cded266b5fb651e17a5b5 + () + + + void + execute + classpeoSyncMultiStart.html + a4d1c2943c290de540800087b54dc49b + () + + + void + packResult + classpeoSyncMultiStart.html + 6c48eb0dae741cff7203b65e226f9616 + () + + + void + unpackResult + classpeoSyncMultiStart.html + c3cbd1f10a89d1915c5ccf82a2c34a1d + () + + + void + notifySendingData + classpeoSyncMultiStart.html + 32ec0d01d3fd8a9932abd68f4781fc94 + () + + + void + notifySendingAllResourceRequests + classpeoSyncMultiStart.html + fc90282cc4e93cdea8f82fd52dd78fb0 + () + + + eoContinue< EOT > & + cont + classpeoSyncMultiStart.html + 43f4fa9b125baef6fc8b968dfd16f437 + + + + eoSelect< EOT > & + select + classpeoSyncMultiStart.html + 8fc9a3d046023ddd077defec3c23ab3b + + + + eoReplacement< EOT > & + replace + classpeoSyncMultiStart.html + a375ccea98e9bf2a0854dac27df4522f + + + + moAlgo< EOT > & + ls + classpeoSyncMultiStart.html + 4d317966de767dcc87eee0286ea7f95d + + + + eoPop< EOT > & + pop + classpeoSyncMultiStart.html + 391178bd6b8a97a08ab4e345f070e967 + + + + eoPop< EOT > + sel + classpeoSyncMultiStart.html + dbcc1a069ec72ecd8d40c392640d84b3 + + + + eoPop< EOT > + impr_sel + classpeoSyncMultiStart.html + ca10f6d258105e3c4f0d1660db5b7679 + + + + EOT + sol + classpeoSyncMultiStart.html + 2c2ebe46470d1425f0409897deab435b + + + + unsigned + idx + classpeoSyncMultiStart.html + 64191ef79b7b589964ac9c3e23ae6718 + + + + unsigned + num_term + classpeoSyncMultiStart.html + 773eb9097550d9444f25ca8f48997a30 + + + + + peoTransform + classpeoTransform.html + EOT + Service + + + ReactiveThread + classReactiveThread.html + Thread + + + ReactiveThread + classReactiveThread.html + 77381649429941c99a3e3d568113d6cf + () + + + void + sleep + classReactiveThread.html + 8263c2a32d8c99a49a05f1a7717d4262 + () + + + void + wakeUp + classReactiveThread.html + a724a54575de10f09cc03ab7aa4e59ce + () + + + sem_t + sem + classReactiveThread.html + 915e5a42dc8cb1bcf6738d5fe883a4e7 + + + + + RingTopology + classRingTopology.html + Topology + + void + setNeighbors + classRingTopology.html + 292a7746993788f96042f2f628cfcbc5 + (Cooperative *__mig, std::vector< Cooperative * > &__from, std::vector< Cooperative * > &__to) + + + + Runner + classRunner.html + Communicable + Thread + + + Runner + classRunner.html + 7acb8258c21da9daa62f9a177a2e5acd + () + + + void + start + classRunner.html + 7dc4419051fcc5cc9dadd54ecc9cd47d + () + + + void + waitStarting + classRunner.html + 5bc239db2be753b77369fa9a038769fd + () + + + bool + isLocal + classRunner.html + 40adbfb7d6944189b4fff60b02e669ca + () + + + void + terminate + classRunner.html + 0f133e75c28fb8264549814f80608e68 + () + + + RUNNER_ID + getID + classRunner.html + 5026c74eec184e3a15cb3c0ec4200a57 + () + + + void + packTermination + classRunner.html + 2ad6d199d684d6f34347fc202ffe2fa3 + () + + + void + notifySendingTermination + classRunner.html + 3591be473e0fcee1105fb57319b529aa + () + + + sem_t + sem_start + classRunner.html + 4b0827d5df2df632db4ab71dd55e81b2 + + + + unsigned + id + classRunner.html + 1989c1f8e0b0b54ad2e60a341007e59d + + + + + SEND_REQUEST + structSEND__REQUEST.html + + Communicable * + comm + structSEND__REQUEST.html + 1ad8f7233fa3ff13262e783a9153920f + + + + int + to + structSEND__REQUEST.html + 93e2a6a71d2a91aa2b7bdd050ee59b4d + + + + int + tag + structSEND__REQUEST.html + 3126b3ef9d6533d3086760e413a7f23f + + + + + Service + classService.html + Communicable + + void + setOwner + classService.html + 33b149b98498c0e7e401b0f0839d7f0d + (Thread &__owner) + + + Thread * + getOwner + classService.html + 0dae00309c51a7b7069788142aed799f + () + + + void + requestResourceRequest + classService.html + 7e2ae35a9070a05dcd46488df649896d + (unsigned __how_many=1) + + + void + packResourceRequest + classService.html + c4289f98d1cd9ed53e850efbb6a947bd + () + + + virtual void + packData + classService.html + aea4b8f7f8fb88e83862ee4bfd9ab207 + () + + + virtual void + unpackData + classService.html + 3bd87b444710813d30fd754d4d0b4df3 + () + + + virtual void + execute + classService.html + e4f2894e6121e60f38d41cfbd7447ae4 + () + + + virtual void + packResult + classService.html + e5e4f90b2315e15c2a2913bd370f4cf5 + () + + + virtual void + unpackResult + classService.html + 45c06344edbfa482b91f68e2035a6099 + () + + + virtual void + notifySendingData + classService.html + 81ad4d6ebb50045b8977e2ab74826f30 + () + + + virtual void + notifySendingResourceRequest + classService.html + 94e2012e76aaae3aa8199250f558d503 + () + + + virtual void + notifySendingAllResourceRequests + classService.html + f94cc8a5c2665d4574041737e61e9ffc + () + + + Thread * + owner + classService.html + 8b615c65c876f342fe8209eb7e36d7b2 + + + + unsigned + num_sent_rr + classService.html + a5b2ad9520bb3710b54348b99acebd58 + + + + + Thread + classThread.html + + + Thread + classThread.html + 95c703fb8f2f27cb64f475a8c940864a + () + + + virtual + ~Thread + classThread.html + 37d9edd3a1a776cbc27dedff949c9726 + () + + + void + setActive + classThread.html + e197c46f8f62ecce6d2a7fe95bdc5b38 + () + + + void + setPassive + classThread.html + 20632ffe9ddfa2a478afb0c84dc1096b + () + + + bool + act + classThread.html + 1b155d63bca3096ac4a1d039aea83c7c + + + + + Topology + classTopology.html + + virtual + ~Topology + classTopology.html + 3e447669757c8311c7f6f8edc705abf2 + () + + + void + add + classTopology.html + 62bc46d8c20fdc71dad9e7c7a0d7aded + (Cooperative &__mig) + + + std::vector< Cooperative * > + mig + classTopology.html + 247a2faa8568b678f0b7b11e62c7812c + + + + + Worker + classWorker.html + Communicable + ReactiveThread + + + Worker + classWorker.html + 3754817df06ffe220f7f0d903c78ccac + () + + + void + start + classWorker.html + abcbbace05c6113f1959c494b3577291 + () + + + void + packResult + classWorker.html + 83780920118e6c2b67d9477bdf8be248 + () + + + void + unpackData + classWorker.html + bff2bdcd64fe5400156cc78704c64953 + () + + + void + packTaskDone + classWorker.html + 60d2e8eba85b9ef403d94be54c391640 + () + + + void + notifySendingResult + classWorker.html + e2f487014766a73c5788bdcfd58ad863 + () + + + void + notifySendingTaskDone + classWorker.html + 13efd6a8e275745329a4a8e23a0eb0bb + () + + + void + setSource + classWorker.html + 5dab4ea663546b5a49d9398d7a624d27 + (int __rank) + + + WORKER_ID + id + classWorker.html + b5ffcb995e12fa71b9551e91729d6972 + + + + SERVICE_ID + serv_id + classWorker.html + d7dc76e301fd2bcf5d3a2088a59f1378 + + + + Service * + serv + classWorker.html + 454e1764ed165af733cc44a73e395692 + + + + int + src + classWorker.html + 895c3ebc198018ea3391c09bc802d2f6 + + + + bool + toto + classWorker.html + 7ba5a18b2918cf9e704536b763be37f7 + + + + + peo + namespacepeo.html + + void + finalize + namespacepeo.html + f90478489cc92d1e6abb222179163a30 + () + + + void + init + namespacepeo.html + 8184c3b1f7eecc68f69bb8e8b872a7d3 + (int &__argc, char **&__argv) + + + void + loadParameters + namespacepeo.html + 2b496ee9b81d9ae322ae6edb9a93dc71 + (int &__argc, char **&__argv) + + + void + run + namespacepeo.html + 10819b2d60b37477c6a89b60c595c67c + () + + + int * + argc + namespacepeo.html + 18a3998ce8b39c4e1143914fdd07b3d2 + + + + char *** + argv + namespacepeo.html + d07043237d4d923125e38860ba9bbe20 + + + + int * + argc + namespacepeo.html + 18a3998ce8b39c4e1143914fdd07b3d2 + + + + char *** + argv + namespacepeo.html + d07043237d4d923125e38860ba9bbe20 + + + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/Makefile.am new file mode 100644 index 000000000..f22564acb --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/Makefile.am @@ -0,0 +1,12 @@ +## Makefile.am for paradiseo/examples + + +SUBDIRS = shared lesson1 lesson2 + +doc: + mkdir ../docs/html/lsnshared; cd shared && doxygen paradiseo-peo-lsn-shared.doxyfile && cd .. + for ex in `ls | grep lesson`; do mkdir ../docs/html/$$ex; `cd $$ex && doxygen paradiseo-peo-lsn.doxyfile`; done + +clean-local: + rm -fr ../docs/html/lsnshared; cd shared && rm -fr html latex man && cd .. + for ex in `ls | grep lesson`; do rm -fr ../docs/html/$$ex; `cd $$ex && rm -fr html latex man`; done diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/Makefile.in b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/Makefile.in new file mode 100644 index 000000000..0bb86c5ad --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/Makefile.in @@ -0,0 +1,454 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = examples +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EO_DIR = @EO_DIR@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MOEO_DIR = @MOEO_DIR@ +MO_DIR = @MO_DIR@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +SUBDIRS = shared lesson1 lesson2 +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu examples/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-local mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ + clean clean-generic clean-local clean-recursive ctags \ + ctags-recursive distclean distclean-generic \ + distclean-recursive distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive \ + mostlyclean mostlyclean-generic mostlyclean-recursive pdf \ + pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-info-am + + +doc: + mkdir ../docs/html/lsnshared; cd shared && doxygen paradiseo-peo-lsn-shared.doxyfile && cd .. + for ex in `ls | grep lesson`; do mkdir ../docs/html/$$ex; `cd $$ex && doxygen paradiseo-peo-lsn.doxyfile`; done + +clean-local: + rm -fr ../docs/html/lsnshared; cd shared && rm -fr html latex man && cd .. + for ex in `ls | grep lesson`; do rm -fr ../docs/html/$$ex; `cd $$ex && rm -fr html latex man`; done +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/data/eil101.opt.tour b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/data/eil101.opt.tour new file mode 100644 index 000000000..1d3fece5a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/data/eil101.opt.tour @@ -0,0 +1,108 @@ +NAME : eil101.opt.tour +COMMENT : Optimum tour for eil101.tsp (Length 629) +TYPE : TOUR +DIMENSION : 101 +TOUR_SECTION +1 +69 +27 +101 +53 +28 +26 +12 +80 +68 +29 +24 +54 +55 +25 +4 +39 +67 +23 +56 +75 +41 +22 +74 +72 +73 +21 +40 +58 +13 +94 +95 +97 +87 +2 +57 +15 +43 +42 +14 +44 +38 +86 +16 +61 +85 +91 +100 +98 +37 +92 +59 +93 +99 +96 +6 +89 +52 +18 +83 +60 +5 +84 +17 +45 +8 +46 +47 +36 +49 +64 +63 +90 +32 +10 +62 +11 +19 +48 +82 +7 +88 +31 +70 +30 +20 +66 +71 +65 +35 +34 +78 +81 +9 +51 +33 +79 +3 +77 +76 +50 +-1 +EOF diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/data/eil101.tsp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/data/eil101.tsp new file mode 100644 index 000000000..9672f849e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/data/eil101.tsp @@ -0,0 +1,108 @@ +NAME : eil101 +COMMENT : 101-city problem (Christofides/Eilon) +TYPE : TSP +DIMENSION : 101 +EDGE_WEIGHT_TYPE : EUC_2D +NODE_COORD_SECTION +1 41 49 +2 35 17 +3 55 45 +4 55 20 +5 15 30 +6 25 30 +7 20 50 +8 10 43 +9 55 60 +10 30 60 +11 20 65 +12 50 35 +13 30 25 +14 15 10 +15 30 5 +16 10 20 +17 5 30 +18 20 40 +19 15 60 +20 45 65 +21 45 20 +22 45 10 +23 55 5 +24 65 35 +25 65 20 +26 45 30 +27 35 40 +28 41 37 +29 64 42 +30 40 60 +31 31 52 +32 35 69 +33 53 52 +34 65 55 +35 63 65 +36 2 60 +37 20 20 +38 5 5 +39 60 12 +40 40 25 +41 42 7 +42 24 12 +43 23 3 +44 11 14 +45 6 38 +46 2 48 +47 8 56 +48 13 52 +49 6 68 +50 47 47 +51 49 58 +52 27 43 +53 37 31 +54 57 29 +55 63 23 +56 53 12 +57 32 12 +58 36 26 +59 21 24 +60 17 34 +61 12 24 +62 24 58 +63 27 69 +64 15 77 +65 62 77 +66 49 73 +67 67 5 +68 56 39 +69 37 47 +70 37 56 +71 57 68 +72 47 16 +73 44 17 +74 46 13 +75 49 11 +76 49 42 +77 53 43 +78 61 52 +79 57 48 +80 56 37 +81 55 54 +82 15 47 +83 14 37 +84 11 31 +85 16 22 +86 4 18 +87 28 18 +88 26 52 +89 26 35 +90 31 67 +91 15 19 +92 22 22 +93 18 24 +94 26 27 +95 25 24 +96 22 27 +97 25 21 +98 19 21 +99 20 26 +100 18 18 +101 35 35 +EOF diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson1/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson1/Makefile.am new file mode 100755 index 000000000..30ebecce1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson1/Makefile.am @@ -0,0 +1,29 @@ +EXTRA_DIST = paradiseo-peo-lns.doxyfile foot.html + +CXX=mpicxx + +INCLUDES = \ + -I$(EO_DIR)/src/ \ + -I$(MO_DIR)/src/ \ + -I../../src/ \ + -I../shared/ + +AM_CXXFLAGS = \ + -Wall -g + +bin_PROGRAMS = \ + tspExample + +tspExample_SOURCES = \ + main.cpp + +tspExample_LDFLAGS = \ + -L$(EO_DIR)/src/ \ + -L$(EO_DIR)/src/utils \ + -L../../src/core \ + -L../../src/rmc/mpi/ \ + -L../shared/ \ + `xml2-config --libs` + +tspExample_LDADD = -lparadiseo -lrmc_mpi -leoutils -leo -ltsp_shared + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson1/Makefile.in b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson1/Makefile.in new file mode 100644 index 000000000..5922e8f56 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson1/Makefile.in @@ -0,0 +1,427 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +bin_PROGRAMS = tspExample$(EXEEXT) +subdir = examples/lesson1 +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am_tspExample_OBJECTS = main.$(OBJEXT) +tspExample_OBJECTS = $(am_tspExample_OBJECTS) +tspExample_DEPENDENCIES = +DEFAULT_INCLUDES = -I. -I$(srcdir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +SOURCES = $(tspExample_SOURCES) +DIST_SOURCES = $(tspExample_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = mpicxx +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EO_DIR = @EO_DIR@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MOEO_DIR = @MOEO_DIR@ +MO_DIR = @MO_DIR@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +EXTRA_DIST = paradiseo-peo-lns.doxyfile foot.html +INCLUDES = \ + -I$(EO_DIR)/src/ \ + -I$(MO_DIR)/src/ \ + -I../../src/ \ + -I../shared/ + +AM_CXXFLAGS = \ + -Wall -g + +tspExample_SOURCES = \ + main.cpp + +tspExample_LDFLAGS = \ + -L$(EO_DIR)/src/ \ + -L$(EO_DIR)/src/utils \ + -L../../src/ \ + -L../../src/rmc/mpi/ \ + -L../shared/ \ + `xml2-config --libs` + +tspExample_LDADD = -lparadiseo -lrmc_mpi -leoutils -leo -ltsp_shared +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/lesson1/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu examples/lesson1/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) +tspExample$(EXEEXT): $(tspExample_OBJECTS) $(tspExample_DEPENDENCIES) + @rm -f tspExample$(EXEEXT) + $(CXXLINK) $(tspExample_LDFLAGS) $(tspExample_OBJECTS) $(tspExample_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-binPROGRAMS + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-binPROGRAMS uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson1/doclsn.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson1/doclsn.h new file mode 100644 index 000000000..544edc583 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson1/doclsn.h @@ -0,0 +1,498 @@ +//! \mainpage Creating a simple ParadisEO-PEO Evolutionary Algorithm +//! +//! \section structure Introduction +//! +//! One of the first steps in designing an evolutionary algorithm using the ParadisEO-PEO framework +//! consists in having a clear overview of the implemented algorithm. A brief pseudo-code description is offered +//! bellow - the entire source code for the ParadisEO-PEO evolutionary algorithm is defined in the peoEA.h +//! header file. The main elements to be considered when building an evolutionary algorithm are the transformation +//! operators, i.e. crossover and mutation, the evaluation function, the continuation criterion and the selection +//! and replacement strategy. +//! +//! +//! +//! +//! +//! +//! +//! +//!
do {    
         select( population, offsprings );   // select the offsprings from the current population
         transform( offsprings );   // crossover and mutation operators are applied on the selected offsprings
         evaluate( offsprings );   // evaluation step of the resulting offsprings
         replace( population, offsprings );   // replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy
} while ( eaCheckpointContinue( population ) );   // checkpoint operators are applied on the current population
+//! +//! The peoEA class offers an elementary evolutionary algorithm implementation. The peoEA class has the underlying structure +//! for including parallel evaluation and parallel transformation operators, migration operators etc. Although there is +//! no restriction on using the algorithms provided by the EO framework, no parallelism is provided - the EO implementation is exclusively sequential. +//!
+//! +//! \section requirements Requirements +//! +//! You should have already installed the ParadisEO-PEO package - this requires several additional packages which should be already +//! included in the provided archive. The installation script has to be launched in order to configure and compile all the required +//! components. At the end of the installation phase you should end up having a directory tree resembling the following: +//! +//!
     ... +//!
     paradiseo-mo +//!
     paradiseo-moeo +//!
     paradiseo-peo +//!
            docs +//!
            examples +//!
                   lesson1 +//!
                   lesson2 +//!
                   ... +//!
                   shared +//!
                   ... +//!
            src +//!
            ... +//!
     ... +//!
+//!
+//! +//! The source-code for this tutorial may be found in the paradiseo-peo/examples/lesson1 directory, in the main.cpp file. +//! We strongly encourage creating a backup copy of the file if you consider modifying the source code. For a complete reference on the +//! TSP-related classes and definitions please refer to the files under the paradiseo-peo/examples/shared. After the installation +//! phase you should end up having an tspExample executable file in the paradiseo-peo/examples/lesson1 directory. +//! We will discuss testing and launching aspects later in the tutorial. +//! +//! You are supposed to be familiar with working in C/C++ (with an extensive use of templates) and you should have at least an introductory +//! background in working with the EO framework. +//! +//!
+//! NOTE: All the presented examples have as case study the Traveling Salesman Problem (TSP). All the presented tutorials rely +//! on a common shared source code defining transformation operators, +//! evaluation functions, etc. for the TSP problem. For a complete understanding of the presented tutorials please take your time for +//! consulting and for studying the additional underlying defined classes. +//!

+//! +//! \section problemDef Problem Definition and Representation +//! +//! As we are not directly concerned with the Traveling Salesman Problem, and to some extent out of scope, no in depth details are offered +//! for the TSP. The problem requires finding the shortest path connecting a given set of cities, while visiting each of +//! the specified cities only once and returning to the startpoint city. The problem is known to be NP-complete, i.e. no polynomial +//! time algorithm exists for solving the problem in exact manner. +//! +//! The construction of a ParadisEO-PEO evolutionary algorithm requires following a few simple steps - please take your time to study the signature +//! of the peoEA constructor: +//! +//! +//! +//! +//!
+//!      peoEA( +//!
            eoContinue< EOT >& __cont, +//!
            peoPopEval< EOT >& __pop_eval, +//!
            eoSelect< EOT >& __select, +//!
            peoTransform< EOT >& __trans, +//!
            eoReplacement< EOT >& __replace +//!
     ); +//!
+//! \image html peoEA.png +//!
+//! +//! A few remarks have to be made: while most of the parameters are passed as EO-specific types, the evaluation and the transformation objects have to be +//! derived from the ParadisEO-PEO peoPopEval and peoTransform classes. Derived classes like the peoParaPopEval and peoParaSGATransform classes allow +//! for parallel evaluation of the population and parallel transformation operators, respectively. Wrappers are provided thus allowing to make use +//! of the EO classes. +//! +//! In the followings, the main required elements for building an evolutionary algorithm are enumerated. For complete details regarding the +//! implementation aspects of each of the components, please refer to the common shared source code. +//! Each of the bellow referred header files may be found in the pardiseo-peo/examples/shared directory. +//! +//!
    +//!
  1. representation - the first decision to be taken concerns the representation of the individuals. You may create your +//! own representation or you may use/derive one of the predefined classes of the EO framework.
    +//! +//! For our case study, the TSP, each city is defined as a Node in the node.h header file - in fact an unsigned value defined +//! as typedef unsigned Node. Moreover, each individual (of the evolutionary algorithm) is represented as a Route object, a vector of Node objects, in +//! the route.h header file - typedef eoVector< int, Node > Route. The definition of the Route object implies two +//! elements: (1) a route is a vector of nodes, and (2) the fitness is an integer value (please refer to the eoVector +//! definition in the EO framework). +//! +//! In addition you should also take a look in the route_init.h header file which includes the RouteInit class, defined for +//! initializing in random manner Route objects. +//!
  2. +//!
  3. evaluation function - having a representation model, an evaluation object has to be defined, implementing a specific +//! fitness function. The designed class has to be derived (directly or indirectly) from the peoPopEval class - you have the choice of +//! using peoSeqPopEval or peoParaPopEval for sequential and parallel evaluation, respectively. These classes act as wrappers requiring +//! the specification of an EO evaluation object derived from the eoEvalFunc class - please refer to their respective documentation.
    +//! +//! The fitness function for our TSP case study is implemented in the route_eval.h header file. The class is derived from the eoEvalFunc +//! EO class, being defined as class RouteEval : public eoEvalFunc< Route >. +//!
  4. +//!
  5. transformation operators - in order to assure the evolution of the initial population, transformation operators have to be defined. +//! Depending on your problem, you may specify quadruple operators (two input individuals, two output resulting individuals), i.e. crossover operators, +//! binary operators (one input individual and one output resulting individual), i.e. mutation operators, or combination of both types. As for the +//! evaluation function, the signature of the peoEA constructor requires specifying a peoTransform derived object as transformation operator. +//! +//! The transform operators, crossover and mutation, for the herein presented example are defined in the order_xover.h and the city_swap.h +//! header files, respectively. +//!
  6. +//!
  7. continuation criterion - the evolutionary algorithm evolves in an iterative manner; a continuation criterion has to be specified. +//! One of the most common and simplest options considers a maximum number of generations. It is your choice whether to use +//! a predefined EO class for specifying the continuation criterion or using a custom defined class. In the later case you have to +//! make sure that your class derives the eoContinue class.
    +//!
  8. +//!
  9. selection strategy - at each iteration a set of individuals are selected for applying the transform operators, in order +//! to obtain the offspring population. As the specified parameter has to be derived from the eoSelect it is your option of whether using +//! the EO provided selection strategies or implementing your own, as long as it inherits the eoSelect class. +//! +//! For our example we chose to use the eoRankingSelect strategy, provided in the EO framework. +//!
  10. +//!
  11. replacement strategy - once the offspring population is obtained, the offsprings have to be integrated back into the initial +//! population, according to a given strategy. For custom defined strategies you have to inherit the eoReplacement EO class. We chose to +//! use an eoPlusReplacement as strategy (please review the EO documentation for details on the different strategies available). +//!
  12. +//!
+//!
+//! +//! \section example A simple example for constructing a peoEA object +//! +//! The source code for this example may be found in the main.cpp file, under the paradiseo-peo/examples/lesson1 directory. Please make sure you +//! At this point you have two options: (a) you can just follow the example without touching the main.cpp or, (b) you can start from scratch, +//! following the presented steps, in which case you are required make a backup copy of the main.cpp file and replace the original file with an +//! empty one. +//! +//!
    +//!
  1. include the necessary header files - as we will be using Route objects, we have to include the files +//! which define the Route type, the initializing functor and the evaluation functions. Furthermore, in order to make use of +//! transform operators, we require having the headers which define the crossover and the mutation operators. +//! All these files may be found in the shared directory that we mentioned in the beginning. At this point you +//! should have something like the following:
    +//! +//!
    +//!		##include "route.h"
    +//!		##include "route_init.h"
    +//!		##include "route_eval.h"
    +//!		
    +//!		##include "order_xover.h"
    +//!		##include "city_swap.h"
    +//!		
    +//! In addition we require having the paradiseo header file, in order to use the ParadisEO-PEO features, and a header specific +//! for our problem, dealing with processing command-line parameters - the param.h header file. The complete picture at this point +//! with all the required header files is as follows:
    +//! +//!
    +//!		##include "route.h"
    +//!		##include "route_init.h"
    +//!		##include "route_eval.h"
    +//!		
    +//!		##include "order_xover.h"
    +//!		##include "city_swap.h"
    +//!
    +//!		##include "param.h"
    +//!
    +//!		##include <paradiseo>
    +//!		
    +//! NOTE: the paradiseo header file is in fact a "super-header" - it includes all the esential ParadisEO-PEO header files. +//! It is at at your choice if you want use the paradiseo header file or to explicitly include different header files, +//! like the peoEA.h header file, for example. +//! +//!
  2. +//!
  3. define problem specific parameters - in our case we have to specify how many individuals we want to have in our population, the number +//! of generations for the evolutionary algorithm to iterate and the probabilities associated with the crossover and mutation operators.
    +//! +//!
    +//!		##include "route.h"
    +//!		##include "route_init.h"
    +//!		##include "route_eval.h"
    +//!		
    +//!		##include "order_xover.h"
    +//!		##include "city_swap.h"
    +//!
    +//!		##include "param.h"
    +//!
    +//!		##include <paradiseo>
    +//!
    +//!
    +//!		##define POP_SIZE 10
    +//!		##define NUM_GEN 100
    +//!		##define CROSS_RATE 1.0
    +//!		##define MUT_RATE 0.01
    +//!		
    +//!
  4. +//!
  5. construct the skeleton of a simple ParadisEO-PEO program - the main function including the code for initializing the ParadisEO-PEO +//! environment, for loading problem data and for shutting down the ParadisEO-PEO environment. From this point on we will make +//! abstraction of the previous part referring only to the main function.
    +//! +//!
    +//!		...
    +//!		
    +//!		int main( int __argc, char** __argv ) {
    +//!		
    +//!			// initializing the ParadisEO-PEO environment
    +//!			peo :: init( __argc, __argv );
    +//!		
    +//!			// processing the command line specified parameters
    +//!			loadParameters( __argc, __argv );
    +//!		
    +//!
    +//!			// EVOLUTIONARY ALGORITHM TO BE DEFINED
    +//!
    +//!		
    +//!			peo :: run( );
    +//!			peo :: finalize( );
    +//!			// shutting down the ParadisEO-PEO environment
    +//!		
    +//!			return 0;
    +//!		}
    +//!		
    +//!
  6. +//!
  7. initialization functors, evaluation function and transform operators - basically we only need to create instances for each of the +//! enumerated objects, to be passed later as parameters for higher-level components of the evolutionary algorithm.
    +//! +//!
    +//!		RouteInit route_init;	// random init object - creates random Route objects
    +//!		RouteEval full_eval;	// evaluator object - offers a fitness value for a specified Route object
    +//!
    +//!		OrderXover crossover;	// crossover operator - creates two offsprings out of two specified parents
    +//!		CitySwap mutation;	// mutation operator - randomly mutates one gene for a specified individual
    +//!		
    +//!
  8. +//!
  9. construct the components of the evolutionary algorithm - each of the components that has to be passed as parameter to the +//! peoEA constructor has to be defined along with the associated parameters. Except for the requirement to provide the +//! appropriate objects (for example, a peoPopEval derived object must be specified for the evaluation functor), there is no strict +//! path to follow. It is your option what elements to mix, depending on your problem - we aimed for simplicity in our example. +//! +//!
      +//!
    • an initial population has to be specified; the constructor accepts the specification of an initializing object. Further, +//! an evaluation object is required - the peoEA constructor requires a peoPopEval derived class. +//!
    • +//!
    +//!
    +//!		eoPop< Route > population( POP_SIZE, route_init );	// initial population for the algorithm having POP_SIZE individuals
    +//!		peoSeqPopEval< Route > eaPopEval( full_eval );		// evaluator object - to be applied at each iteration on the entire population
    +//!		
    +//!
      +//!
    • the evolutionary algorithm continues to iterate till a continuation criterion is not met. For our case we consider +//! a fixed number of generations. The continuation criterion has to be specified as a checkpoint object, thus requiring +//! the creation of an eoCheckPoint object in addition. +//!
    • +//!
    +//!
    +//!		eoGenContinue< Route > eaCont( NUM_GEN );		// continuation criterion - the algorithm will iterate for NUM_GEN generations
    +//!		eoCheckPoint< Route > eaCheckpointContinue( eaCont );	// checkpoint object - verify at each iteration if the continuation criterion is met
    +//!		
    +//!
      +//!
    • selection strategy - we are required to specify a selection strategy for extracting individuals out of the parent +//! population; in addition the number of individuals to be selected has to be specified. +//!
    • +//!
    +//!
    +//!		eoRankingSelect< Route > selectionStrategy;		// selection strategy - applied at each iteration for selecting parent individuals
    +//!		eoSelectNumber< Route > eaSelect( selectionStrategy, POP_SIZE ); // selection object - POP_SIZE individuals are selected at each iteration
    +//!		
    +//!
      +//!
    • transformation operators - we have to integrate the crossover and the mutation functors into an object which may be passed +//! as a parameter when creating the peoEA object. The constructor of peoEA requires a peoTransform derived +//! object. Associated probabilities have to be specified also. +//!
    • +//!
    +//!
    +//!		// transform operator - includes the crossover and the mutation operators with a specified associated rate
    +//!		eoSGATransform< Route > transform( crossover, CROSS_RATE, mutation, MUT_RATE );
    +//!		peoSeqTransform< Route > eaTransform( transform );	// ParadisEO transform operator (please remark the peo prefix) - wraps an e EO transform object
    +//!		
    +//!
      +//!
    • replacement strategy - required for defining the way for integrating the resulting offsprings into the initial population. +//! At your option whether you would like to chose one of the predefined replacement strategies that come with the EO framework +//! or if you want to define your own. +//!
    • +//!
    +//!
    +//!		eoPlusReplacement< Route > eaReplace;			// replacement strategy - for replacing the initial population with offspring individuals
    +//!		
    +//!
  10. +//!
  11. evolutionary algorithm - having defined all the previous components, we are ready for instanciating an evolutionary algorithm. +//! In the end we have to associate a population with the algorithm, which will serve as the initial population, to be iteratively evolved. +//! +//!
    +//!		peoEA< Route > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace );
    +//!
    +//!		eaAlg( population );	// specifying the initial population for the algorithm, to be iteratively evolved
    +//!		
    +//!
  12. +//!
+//! +//! If you have not missed any of the enumerated points, your program should be like the following: +//! +//!
+//! ##include "route.h"
+//! ##include "route_init.h"
+//! ##include "route_eval.h"
+//! 
+//! ##include "order_xover.h"
+//! ##include "city_swap.h"
+//! 
+//! ##include "param.h"
+//! 
+//! ##include 
+//! 
+//! 
+//! ##define POP_SIZE 10
+//! ##define NUM_GEN 100
+//! ##define CROSS_RATE 1.0
+//! ##define MUT_RATE 0.01
+//! 
+//! 
+//! int main( int __argc, char** __argv ) {
+//! 
+//! 	// initializing the ParadisEO-PEO environment
+//! 	peo :: init( __argc, __argv );
+//! 
+//! 
+//! 	// processing the command line specified parameters
+//! 	loadParameters( __argc, __argv );
+//! 
+//! 
+//! 	// init, eval operators, EA operators -------------------------------------------------------------------------------------------------------------
+//! 
+//! 	RouteInit route_init;	// random init object - creates random Route objects
+//! 	RouteEval full_eval;	// evaluator object - offers a fitness value for a specified Route object
+//! 
+//! 	OrderXover crossover;	// crossover operator - creates two offsprings out of two specified parents
+//! 	CitySwap mutation;	// mutation operator - randomly mutates one gene for a specified individual
+//! 	// ------------------------------------------------------------------------------------------------------------------------------------------------
+//! 
+//! 
+//! 	// evolutionary algorithm components --------------------------------------------------------------------------------------------------------------
+//! 
+//! 	eoPop< Route > population( POP_SIZE, route_init );	// initial population for the algorithm having POP_SIZE individuals
+//! 	peoSeqPopEval< Route > eaPopEval( full_eval );		// evaluator object - to be applied at each iteration on the entire population
+//! 
+//! 	eoGenContinue< Route > eaCont( NUM_GEN );		// continuation criterion - the algorithm will iterate for NUM_GEN generations
+//! 	eoCheckPoint< Route > eaCheckpointContinue( eaCont );	// checkpoint object - verify at each iteration if the continuation criterion is met
+//! 
+//! 	eoRankingSelect< Route > selectionStrategy;		// selection strategy - applied at each iteration for selecting parent individuals
+//! 	eoSelectNumber< Route > eaSelect( selectionStrategy, POP_SIZE ); // selection object - POP_SIZE individuals are selected at each iteration
+//! 
+//! 	// transform operator - includes the crossover and the mutation operators with a specified associated rate
+//! 	eoSGATransform< Route > transform( crossover, CROSS_RATE, mutation, MUT_RATE );
+//! 	peoSeqTransform< Route > eaTransform( transform );	// ParadisEO transform operator (please remark the peo prefix) - wraps an e EO transform object
+//! 
+//! 	eoPlusReplacement< Route > eaReplace;			// replacement strategy - for replacing the initial population with offspring individuals
+//! 	// ------------------------------------------------------------------------------------------------------------------------------------------------
+//! 
+//! 
+//! 	// ParadisEO-PEO evolutionary algorithm -----------------------------------------------------------------------------------------------------------
+//! 
+//! 	peoEA< Route > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace );
+//! 	
+//! 	eaAlg( population );	// specifying the initial population for the algorithm, to be iteratively evolved
+//! 	// ------------------------------------------------------------------------------------------------------------------------------------------------
+//! 
+//! 
+//! 	peo :: run( );
+//! 	peo :: finalize( );
+//! 	// shutting down the ParadisEO-PEO environment
+//! 
+//! 	return 0;
+//! }
+//! 
+//! +//! +//! \section testing Compilation and Execution +//! +//! First, please make sure that you followed all the previous steps in defining the evolutionary algorithm. Your file should be called main.cpp - please +//! make sure you do not rename the file (we will be using a pre-built makefile, thus you are required not to change the file names). Please make sure you +//! are in the paradiseo-peo/examples/lesson1 directory - you should open a console and you should change your current directory to the one of Lesson1. +//! +//! Compilation: being in the paradiseo-peo/examples/lesson1 directory, you have to type make. As a result the main.cpp file +//! will be compiled and you should obtain an executable file called tspExample. If you have errors, please verify any of the followings: +//! +//!
    +//!
  • you are under the right directory - you can verify by typing the pwd command - you should have something like .../paradiseo-peo/examples/lesson1
  • +//!
  • you saved your modifications in a file called main.cpp, in the paradiseo-peo/examples/lesson1 directory
  • +//!
  • there are no differences between the example presented above and your file
  • +//!
+//! +//! NOTE: in order to successfully compile your program you should already have installed an MPI distribution in your system. +//! +//! Execution: the execution of a ParadisEO-PEO program requires having already created an environment for launching MPI programs. For MPICH-2, +//! for example, this requires starting a ring of daemons. The implementation that we provided as an example is sequential and includes no parallelism - we +//! will see in the end how to include also parallelism. Executing a parallel program requires specifying a mapping of resources, in order to assing different +//! algorithms to different machines, define worker machines etc. This mapping is defined by an XML file called schema.xml, which, for our case, has +//! the following structure: +//! +//!
+//!	
+//!	
+//!	
+//!		
+//!			
+//!			
+//!			
+//!			
+//!			1
+//!			
+//!			
+//!			
+//!			
+//!			
+//!			
+//!		
+//!	
+//! 
+//! +//! Not going into details, the XML file presented above describes a mapping which includes four nodes, the first one having the role of scheduler, +//! the second one being the node on which the evolutionary algorithm is actually executed and the third and the fourth ones being slave nodes. Overall +//! the mapping says that we will be launching four processes, out of which only one will be executing the evolutionary algorithm. The other node entries +//! in the XML file have no real functionality as we have no parallelism in our program - the entries were created for you convenience, in order to provide +//! a smooth transition to creating a parallel program. +//! +//! Launching the program may be different, depending on your MPI distribution - for MPICH-2, in a console, in the paradiseo-peo/examples/lesson1 +//! directory you have to type the following command: +//! +//! mpiexec -n 4 ./tspExample @lesson.param +//! +//! NOTE: the "-n 4" indicates the number of processes to be launched. The last argument, "@lesson.param", indicates a file which specifies different +//! application specific parameters (the mapping file to be used, for example, whether to use logging or not, etc). +//! +//! The result of your execution should be similar to the following: +//!
+//! 	Loading '../data/eil101.tsp'.
+//! 	NAME: eil101.
+//! 	COMMENT: 101-city problem (Christofides/Eilon).
+//! 	TYPE: TSP.
+//! 	DIMENSION: 101.
+//! 	EDGE_WEIGHT_TYPE: EUC_2D.
+//! 	Loading '../data/eil101.tsp'.
+//! 	NAME: eil101.
+//! 	COMMENT: 101-city problem (Christofides/Eilon).
+//! 	EOF.
+//! 	TYPE: TSP.
+//! 	DIMENSION: 101.
+//! 	EDGE_WEIGHT_TYPE: EUC_2D.
+//! 	EOF.
+//! 	Loading '../data/eil101.tsp'.
+//! 	NAME: eil101.
+//! 	COMMENT: 101-city problem (Christofides/Eilon).
+//! 	TYPE: TSP.
+//! 	DIMENSION: 101.
+//! 	EDGE_WEIGHT_TYPE: EUC_2D.
+//! 	EOF.
+//! 	Loading '../data/eil101.tsp'.
+//! 	NAME: eil101.
+//! 	COMMENT: 101-city problem (Christofides/Eilon).
+//! 	TYPE: TSP.
+//! 	DIMENSION: 101.
+//! 	EDGE_WEIGHT_TYPE: EUC_2D.
+//! 	EOF.
+//! 	STOP in eoGenContinue: Reached maximum number of generations [100/100]
+//!	
+//! +//! +//! \section paraIntro Introducing parallelism +//! +//! Creating parallel programs with ParadisEO-PEO represents an easy task once you have the basic structure for your program. For experimentation, +//! in the main.cpp file, replace the line +//!
+//!	peoSeqPopEval< Route > eaPopEval( full_eval );
+//! 
+//! with +//!
+//!	peoParaPopEval< Route > eaPopEval( full_eval );
+//! 
+//! The second line only tells that we would like to evaluate individuals in parallel - this is very interesting if you have a time consuming fitness +//! evaluation function. If you take another look on the schema.xml XML file you will see the last two nodes being marked as slaves (the "num_workers" +//! attribute - these nodes will be used for computing the fitness of the individuals. +//! +//! At this point you only have to recompile your program and to launch it again - as we are not using a time consuming fitness fitness function, the +//! effects might not be visible - you may increase the number of individuals to experiment. diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson1/lesson.param b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson1/lesson.param new file mode 100644 index 000000000..3caca8ccf --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson1/lesson.param @@ -0,0 +1,12 @@ +## miscallenous parameters + +--debug=false + +## deployment schema + +--schema=schema.xml + +## parameters + +--inst=../data/eil101.tsp + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson1/main.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson1/main.cpp new file mode 100644 index 000000000..0658fa813 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson1/main.cpp @@ -0,0 +1,79 @@ +// "main.cpp" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "route.h" +#include "route_init.h" +#include "route_eval.h" + +#include "order_xover.h" +#include "city_swap.h" + +#include "param.h" + +#include + + +#define POP_SIZE 10 +#define NUM_GEN 100 +#define CROSS_RATE 1.0 +#define MUT_RATE 0.01 + + +int main( int __argc, char** __argv ) { + + // initializing the ParadisEO-PEO environment + peo :: init( __argc, __argv ); + + + // processing the command line specified parameters + loadParameters( __argc, __argv ); + + + // init, eval operators, EA operators ------------------------------------------------------------------------------------------------------------- + + RouteInit route_init; // random init object - creates random Route objects + RouteEval full_eval; // evaluator object - offers a fitness value for a specified Route object + + OrderXover crossover; // crossover operator - creates two offsprings out of two specified parents + CitySwap mutation; // mutation operator - randomly mutates one gene for a specified individual + // ------------------------------------------------------------------------------------------------------------------------------------------------ + + + // evolutionary algorithm components -------------------------------------------------------------------------------------------------------------- + + eoPop< Route > population( POP_SIZE, route_init ); // initial population for the algorithm having POP_SIZE individuals + peoSeqPopEval< Route > eaPopEval( full_eval ); // evaluator object - to be applied at each iteration on the entire population + + eoGenContinue< Route > eaCont( NUM_GEN ); // continuation criterion - the algorithm will iterate for NUM_GEN generations + eoCheckPoint< Route > eaCheckpointContinue( eaCont ); // checkpoint object - verify at each iteration if the continuation criterion is met + + eoRankingSelect< Route > selectionStrategy; // selection strategy - applied at each iteration for selecting parent individuals + eoSelectNumber< Route > eaSelect( selectionStrategy, POP_SIZE ); // selection object - POP_SIZE individuals are selected at each iteration + + // transform operator - includes the crossover and the mutation operators with a specified associated rate + eoSGATransform< Route > transform( crossover, CROSS_RATE, mutation, MUT_RATE ); + peoSeqTransform< Route > eaTransform( transform ); // ParadisEO transform operator (please remark the peo prefix) - wraps an e EO transform object + + eoPlusReplacement< Route > eaReplace; // replacement strategy - for replacing the initial population with offspring individuals + // ------------------------------------------------------------------------------------------------------------------------------------------------ + + + // ParadisEO-PEO evolutionary algorithm ----------------------------------------------------------------------------------------------------------- + + peoEA< Route > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace ); + + eaAlg( population ); // specifying the initial population for the algorithm, to be iteratively evolved + // ------------------------------------------------------------------------------------------------------------------------------------------------ + + + peo :: run( ); + peo :: finalize( ); + // shutting down the ParadisEO-PEO environment + + return 0; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson1/paradiseo-peo-lsn.doxyfile b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson1/paradiseo-peo-lsn.doxyfile new file mode 100644 index 000000000..9f9d15d8f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson1/paradiseo-peo-lsn.doxyfile @@ -0,0 +1,241 @@ +# Doxyfile 1.4.7 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = "ParadisEO-PEO Lesson1" +PROJECT_NUMBER = 0.1 +OUTPUT_DIRECTORY = ../../docs/html/lesson1 +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 = . +FILE_PATTERNS = *.cpp \ + *.h \ + NEWS \ + README +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = ../../docs/images +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 = peo +#--------------------------------------------------------------------------- +# 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 = YES +USE_PDFLATEX = YES +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-mo/docs/eo.doxytag=../../../../../paradiseo-mo/docs/html \ + ../../../paradiseo-mo/docs/mo.doxytag=../../../../../paradiseo-mo/docs/html \ + ../../docs/paradiseo-peo.doxytag=../../ \ + ../shared/paradiseo-peo-lsn-shared.doxytag=../../lsnshared/html +GENERATE_TAGFILE = ../../docs/paradiseo-peo-lsn.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-i386-0.2/paradiseo-peo/examples/lesson1/schema.xml b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson1/schema.xml new file mode 100644 index 000000000..3edea1488 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson1/schema.xml @@ -0,0 +1,18 @@ + + + + + + + + + 1 + + + + + + + + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson2/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson2/Makefile.am new file mode 100755 index 000000000..30ebecce1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson2/Makefile.am @@ -0,0 +1,29 @@ +EXTRA_DIST = paradiseo-peo-lns.doxyfile foot.html + +CXX=mpicxx + +INCLUDES = \ + -I$(EO_DIR)/src/ \ + -I$(MO_DIR)/src/ \ + -I../../src/ \ + -I../shared/ + +AM_CXXFLAGS = \ + -Wall -g + +bin_PROGRAMS = \ + tspExample + +tspExample_SOURCES = \ + main.cpp + +tspExample_LDFLAGS = \ + -L$(EO_DIR)/src/ \ + -L$(EO_DIR)/src/utils \ + -L../../src/core \ + -L../../src/rmc/mpi/ \ + -L../shared/ \ + `xml2-config --libs` + +tspExample_LDADD = -lparadiseo -lrmc_mpi -leoutils -leo -ltsp_shared + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson2/Makefile.in b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson2/Makefile.in new file mode 100644 index 000000000..d1f5975a0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson2/Makefile.in @@ -0,0 +1,427 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +bin_PROGRAMS = tspExample$(EXEEXT) +subdir = examples/lesson2 +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am_tspExample_OBJECTS = main.$(OBJEXT) +tspExample_OBJECTS = $(am_tspExample_OBJECTS) +tspExample_DEPENDENCIES = +DEFAULT_INCLUDES = -I. -I$(srcdir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +SOURCES = $(tspExample_SOURCES) +DIST_SOURCES = $(tspExample_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = mpicxx +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EO_DIR = @EO_DIR@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MOEO_DIR = @MOEO_DIR@ +MO_DIR = @MO_DIR@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +EXTRA_DIST = paradiseo-peo-lns.doxyfile foot.html +INCLUDES = \ + -I$(EO_DIR)/src/ \ + -I$(MO_DIR)/src/ \ + -I../../src/ \ + -I../shared/ + +AM_CXXFLAGS = \ + -Wall -g + +tspExample_SOURCES = \ + main.cpp + +tspExample_LDFLAGS = \ + -L$(EO_DIR)/src/ \ + -L$(EO_DIR)/src/utils \ + -L../../src/ \ + -L../../src/rmc/mpi/ \ + -L../shared/ \ + `xml2-config --libs` + +tspExample_LDADD = -lparadiseo -lrmc_mpi -leoutils -leo -ltsp_shared +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/lesson2/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu examples/lesson2/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) +tspExample$(EXEEXT): $(tspExample_OBJECTS) $(tspExample_DEPENDENCIES) + @rm -f tspExample$(EXEEXT) + $(CXXLINK) $(tspExample_LDFLAGS) $(tspExample_OBJECTS) $(tspExample_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-binPROGRAMS + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-binPROGRAMS uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson2/lesson.param b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson2/lesson.param new file mode 100644 index 000000000..3caca8ccf --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson2/lesson.param @@ -0,0 +1,12 @@ +## miscallenous parameters + +--debug=false + +## deployment schema + +--schema=schema.xml + +## parameters + +--inst=../data/eil101.tsp + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson2/main.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson2/main.cpp new file mode 100644 index 000000000..9b2c43538 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson2/main.cpp @@ -0,0 +1,162 @@ +// "main_ga.cpp" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "param.h" +#include "route_init.h" +#include "route_eval.h" + +#include "order_xover.h" +#include "edge_xover.h" +#include "partial_mapped_xover.h" +#include "city_swap.h" +#include "part_route_eval.h" +#include "merge_route_eval.h" +#include "two_opt_init.h" +#include "two_opt_next.h" +#include "two_opt_incr_eval.h" + +#include + +#define POP_SIZE 10 +#define NUM_GEN 100 +#define CROSS_RATE 1.0 +#define MUT_RATE 0.01 +#define NUM_PART_EVALS 2 + +#define MIG_FREQ 10 +#define MIG_SIZE 10 +#define HYBRID_SIZE 3 + +int main (int __argc, char * * __argv) { + + peo :: init (__argc, __argv); + + loadParameters (__argc, __argv); /* Processing some parameters relative to the tackled + problem (TSP) */ + + RouteInit route_init; /* Its builds random routes */ + RouteEval full_eval; /* Full route evaluator */ + + MergeRouteEval merge_eval; + + std :: vector *> part_eval; + for (unsigned i = 1 ; i <= NUM_PART_EVALS ; i ++) + part_eval.push_back (new PartRouteEval ((float) (i - 1) / NUM_PART_EVALS, (float) i / NUM_PART_EVALS)); + + OrderXover order_cross; /* Recombination */ + PartialMappedXover pm_cross; + EdgeXover edge_cross; + CitySwap city_swap_mut; /* Mutation */ + + RingTopology topo; + + /** The first EA **/ + + eoPop ox_pop (POP_SIZE, route_init); /* Population */ + + eoGenContinue ox_cont (NUM_GEN); /* A fixed number of iterations */ + eoCheckPoint ox_checkpoint (ox_cont); /* Checkpoint */ + peoParaPopEval ox_pop_eval (part_eval, merge_eval); + eoStochTournamentSelect ox_select_one; + eoSelectNumber ox_select (ox_select_one, POP_SIZE); + eoSGATransform ox_transform (order_cross, CROSS_RATE, city_swap_mut, MUT_RATE); + peoSeqTransform ox_para_transform (ox_transform); + eoEPReplacement ox_replace (2); + + /* The migration policy */ + eoPeriodicContinue ox_mig_cont (MIG_FREQ); /* Migration occurs periodically */ + eoRandomSelect ox_mig_select_one; /* Emigrants are randomly selected */ + eoSelectNumber ox_mig_select (ox_mig_select_one, MIG_SIZE); + eoPlusReplacement ox_mig_replace; /* Immigrants replace the worse individuals */ + + peoAsyncIslandMig ox_mig (ox_mig_cont, ox_mig_select, ox_mig_replace, topo, ox_pop, ox_pop); + //peoSyncIslandMig ox_mig (MIG_FREQ, ox_mig_select, ox_mig_replace, topo, ox_pop, ox_pop); + + ox_checkpoint.add (ox_mig); + + peoEA ox_ea (ox_checkpoint, ox_pop_eval, ox_select, ox_para_transform, ox_replace); + ox_mig.setOwner (ox_ea); + + ox_ea (ox_pop); /* Application to the given population */ + + /** The second EA **/ + + eoPop pmx_pop (POP_SIZE, route_init); /* Population */ + + eoGenContinue pmx_cont (NUM_GEN); /* A fixed number of iterations */ + eoCheckPoint pmx_checkpoint (pmx_cont); /* Checkpoint */ + peoSeqPopEval pmx_pop_eval (full_eval); + eoRankingSelect pmx_select_one; + eoSelectNumber pmx_select (pmx_select_one, POP_SIZE); + eoSGATransform pmx_transform (pm_cross, CROSS_RATE, city_swap_mut, MUT_RATE); + peoSeqTransform pmx_para_transform (pmx_transform); + eoPlusReplacement pmx_replace; + + /* The migration policy */ + eoPeriodicContinue pmx_mig_cont (MIG_FREQ); /* Migration occurs periodically */ + eoRandomSelect pmx_mig_select_one; /* Emigrants are randomly selected */ + eoSelectNumber pmx_mig_select (pmx_mig_select_one, MIG_SIZE); + eoPlusReplacement pmx_mig_replace; /* Immigrants replace the worse individuals */ + peoAsyncIslandMig pmx_mig (pmx_mig_cont, pmx_mig_select, pmx_mig_replace, topo, pmx_pop, pmx_pop); + //peoSyncIslandMig pmx_mig (MIG_FREQ, pmx_mig_select, pmx_mig_replace, topo, pmx_pop, pmx_pop); + pmx_checkpoint.add (pmx_mig); + + /* Hybridization with a Local Search */ + TwoOptInit pmx_two_opt_init; + TwoOptNext pmx_two_opt_next; + TwoOptIncrEval pmx_two_opt_incr_eval; + moBestImprSelect pmx_two_opt_move_select; + moHC hc (pmx_two_opt_init, pmx_two_opt_next, pmx_two_opt_incr_eval, pmx_two_opt_move_select, full_eval); + + eoPeriodicContinue pmx_ls_cont (MIG_FREQ); /* Hybridization occurs periodically */ + eoRandomSelect pmx_ls_select_one; /* ? */ + eoSelectNumber pmx_ls_select (pmx_ls_select_one, HYBRID_SIZE); + eoPlusReplacement pmx_ls_replace; + + peoSyncMultiStart pmx_ls (pmx_ls_cont, pmx_ls_select, pmx_ls_replace, hc, pmx_pop); + pmx_checkpoint.add (pmx_ls); + + peoEA pmx_ea (pmx_checkpoint, pmx_pop_eval, pmx_select, pmx_para_transform, pmx_replace); + pmx_mig.setOwner (pmx_ea); + pmx_ls.setOwner (pmx_ea); + + pmx_ea (pmx_pop); /* Application to the given population */ + + /** The third EA **/ + + eoPop edge_pop (POP_SIZE, route_init); /* Population */ + + eoGenContinue edge_cont (NUM_GEN); /* A fixed number of iterations */ + eoCheckPoint edge_checkpoint (edge_cont); /* Checkpoint */ + peoSeqPopEval edge_pop_eval (full_eval); + eoRankingSelect edge_select_one; + eoSelectNumber edge_select (edge_select_one, POP_SIZE); + peoParaSGATransform edge_para_transform (edge_cross, CROSS_RATE, city_swap_mut, MUT_RATE); + eoPlusReplacement edge_replace; + + /* The migration policy */ + eoPeriodicContinue edge_mig_cont (MIG_FREQ); /* Migration occurs periodically */ + eoRandomSelect edge_mig_select_one; /* Emigrants are randomly selected */ + eoSelectNumber edge_mig_select (edge_mig_select_one, MIG_SIZE); + eoPlusReplacement edge_mig_replace; /* Immigrants replace the worse individuals */ + peoAsyncIslandMig edge_mig (edge_mig_cont, edge_mig_select, edge_mig_replace, topo, edge_pop, edge_pop); + //peoSyncIslandMig edge_mig (MIG_FREQ, edge_mig_select, edge_mig_replace, topo, edge_pop, edge_pop); + edge_checkpoint.add (edge_mig); + + peoEA edge_ea (edge_checkpoint, edge_pop_eval, edge_select, edge_para_transform, edge_replace); + + edge_mig.setOwner (edge_ea); + + edge_ea (edge_pop); /* Application to the given population */ + + peo :: run (); + + peo :: finalize (); /* Termination */ + + return 0; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson2/paradiseo-peo-lsn.doxyfile b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson2/paradiseo-peo-lsn.doxyfile new file mode 100644 index 000000000..2fe39e4c8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson2/paradiseo-peo-lsn.doxyfile @@ -0,0 +1,241 @@ +# Doxyfile 1.4.7 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = "ParadisEO-PEO Lesson2" +PROJECT_NUMBER = 0.1 +OUTPUT_DIRECTORY = ../../docs/html/lesson2 +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 = . +FILE_PATTERNS = *.cpp \ + *.h \ + NEWS \ + README +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = ../../docs/images +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 = peo +#--------------------------------------------------------------------------- +# 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 = YES +USE_PDFLATEX = YES +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-mo/docs/eo.doxytag=../../../../../paradiseo-mo/docs/html \ + ../../../paradiseo-mo/docs/mo.doxytag=../../../../../paradiseo-mo/docs/html \ + ../../docs/paradiseo-peo.doxytag=../../ \ + ../shared/paradiseo-peo-lsn-shared.doxytag=../../lsnshared/html +GENERATE_TAGFILE = ../../docs/paradiseo-peo-lsn.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-i386-0.2/paradiseo-peo/examples/lesson2/schema.xml b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson2/schema.xml new file mode 100644 index 000000000..3edea1488 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/lesson2/schema.xml @@ -0,0 +1,18 @@ + + + + + + + + + 1 + + + + + + + + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/Makefile.am new file mode 100644 index 000000000..eb7c8cf45 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/Makefile.am @@ -0,0 +1,49 @@ +CXX=mpicxx + +INCLUDES = \ + -I$(EO_DIR)/src/ \ + -I$(MO_DIR)/src/ \ + -I$(MOEO_DIR)/src/ \ + -I../../src/ + +AM_CXXFLAGS = \ + -Wall -g + +lib_LIBRARIES = \ + libtsp_shared.a + +libtsp_shared_a_SOURCES = \ + data.h \ + data.cpp \ + opt_route.h \ + opt_route.cpp \ + param.h \ + param.cpp \ + node.h \ + node.cpp \ + route.h \ + route.cpp \ + route_init.h \ + route_init.cpp \ + route_eval.h \ + route_eval.cpp \ + two_opt.h \ + two_opt.cpp \ + two_opt_init.h \ + two_opt_init.cpp \ + two_opt_incr_eval.h \ + two_opt_incr_eval.cpp \ + two_opt_next.h \ + two_opt_next.cpp \ + order_xover.h \ + order_xover.cpp \ + partial_mapped_xover.h \ + partial_mapped_xover.cpp \ + edge_xover.h \ + edge_xover.cpp \ + city_swap.h \ + city_swap.cpp \ + part_route_eval.h \ + part_route_eval.cpp \ + merge_route_eval.h \ + merge_route_eval.cpp diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/Makefile.in b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/Makefile.in new file mode 100644 index 000000000..3a441bf88 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/Makefile.in @@ -0,0 +1,495 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = examples/shared +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" +libLIBRARIES_INSTALL = $(INSTALL_DATA) +LIBRARIES = $(lib_LIBRARIES) +AR = ar +ARFLAGS = cru +libtsp_shared_a_AR = $(AR) $(ARFLAGS) +libtsp_shared_a_LIBADD = +am_libtsp_shared_a_OBJECTS = data.$(OBJEXT) opt_route.$(OBJEXT) \ + param.$(OBJEXT) node.$(OBJEXT) route.$(OBJEXT) \ + route_init.$(OBJEXT) route_eval.$(OBJEXT) two_opt.$(OBJEXT) \ + two_opt_init.$(OBJEXT) two_opt_incr_eval.$(OBJEXT) \ + two_opt_next.$(OBJEXT) order_xover.$(OBJEXT) \ + partial_mapped_xover.$(OBJEXT) edge_xover.$(OBJEXT) \ + city_swap.$(OBJEXT) part_route_eval.$(OBJEXT) \ + merge_route_eval.$(OBJEXT) +libtsp_shared_a_OBJECTS = $(am_libtsp_shared_a_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(libtsp_shared_a_SOURCES) +DIST_SOURCES = $(libtsp_shared_a_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = mpicxx +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EO_DIR = @EO_DIR@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MOEO_DIR = @MOEO_DIR@ +MO_DIR = @MO_DIR@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +INCLUDES = \ + -I$(EO_DIR)/src/ \ + -I$(MO_DIR)/src/ \ + -I$(MOEO_DIR)/src/ \ + -I../../src/ + +AM_CXXFLAGS = \ + -Wall -g + +lib_LIBRARIES = \ + libtsp_shared.a + +libtsp_shared_a_SOURCES = \ + data.h \ + data.cpp \ + opt_route.h \ + opt_route.cpp \ + param.h \ + param.cpp \ + node.h \ + node.cpp \ + route.h \ + route.cpp \ + route_init.h \ + route_init.cpp \ + route_eval.h \ + route_eval.cpp \ + two_opt.h \ + two_opt.cpp \ + two_opt_init.h \ + two_opt_init.cpp \ + two_opt_incr_eval.h \ + two_opt_incr_eval.cpp \ + two_opt_next.h \ + two_opt_next.cpp \ + order_xover.h \ + order_xover.cpp \ + partial_mapped_xover.h \ + partial_mapped_xover.cpp \ + edge_xover.h \ + edge_xover.cpp \ + city_swap.h \ + city_swap.cpp \ + part_route_eval.h \ + part_route_eval.cpp \ + merge_route_eval.h \ + merge_route_eval.cpp + +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/shared/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu examples/shared/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-libLIBRARIES: $(lib_LIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + @$(POST_INSTALL) + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + p=$(am__strip_dir) \ + echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \ + $(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \ + else :; fi; \ + done + +uninstall-libLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLIBRARIES: + -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) +libtsp_shared.a: $(libtsp_shared_a_OBJECTS) $(libtsp_shared_a_DEPENDENCIES) + -rm -f libtsp_shared.a + $(libtsp_shared_a_AR) libtsp_shared.a $(libtsp_shared_a_OBJECTS) $(libtsp_shared_a_LIBADD) + $(RANLIB) libtsp_shared.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/city_swap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/data.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/edge_xover.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/merge_route_eval.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/node.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt_route.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/order_xover.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/param.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/part_route_eval.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/partial_mapped_xover.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/route.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/route_eval.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/route_init.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/two_opt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/two_opt_incr_eval.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/two_opt_init.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/two_opt_next.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(libdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-libLIBRARIES + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-libLIBRARIES + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-libLIBRARIES install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-info-am uninstall-libLIBRARIES + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/city_swap.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/city_swap.cpp new file mode 100644 index 000000000..cf5afae8a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/city_swap.cpp @@ -0,0 +1,21 @@ +// "city_swap.cpp" + +// (c) OPAC Team, LIFL, 2002 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "city_swap.h" + +bool CitySwap :: operator () (Route & __route) { + + std :: swap (__route [rng.random (__route.size ())], + __route [rng.random (__route.size ())]) ; + + __route.invalidate () ; + + return true ; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/city_swap.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/city_swap.h new file mode 100644 index 000000000..cd7a6aaaf --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/city_swap.h @@ -0,0 +1,26 @@ +// "city_swap.h" + +// (c) OPAC Team, LIFL, 2002 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef city_swap_h +#define city_swap_h + +#include + +#include "route.h" + +/** Its swaps two vertices + randomly choosen */ +class CitySwap : public eoMonOp { + +public : + + bool operator () (Route & __route) ; + +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/data.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/data.cpp new file mode 100644 index 000000000..415c30aa1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/data.cpp @@ -0,0 +1,98 @@ +// "data.cpp" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include +#include +#include + +#include + +#include "data.h" +#include "node.h" + +#define MAX_TRASH_LENGTH 1000 +#define MAX_FIELD_LENGTH 1000 +#define MAX_LINE_LENGTH 1000 + +static void getNextField (FILE * __f, char * __buff) { + + char trash [MAX_TRASH_LENGTH]; + + fscanf (__f, "%[ \t:\n]", trash); /* Discarding sep. */ + fscanf (__f, "%[^:\n]", __buff); /* Reading the field */ + fgetc (__f); +} + +static void getLine (FILE * __f, char * __buff) { + + char trash [MAX_TRASH_LENGTH]; + + fscanf (__f, "%[ \t:\n]", trash); /* Discarding sep. */ + fscanf (__f, "%[^\n]", __buff); /* Reading the line */ +} + +void loadData (const char * __filename) { + + FILE * f = fopen (__filename, "r"); + + if (f) { + + printf ("Loading '%s'.\n", __filename); + + char field [MAX_FIELD_LENGTH]; + + getNextField (f, field); /* Name */ + assert (strstr (field, "NAME")); + getNextField (f, field); + printf ("NAME: %s.\n", field); + + getNextField (f, field); /* Comment */ + assert (strstr (field, "COMMENT")); + getLine (f, field); + printf ("COMMENT: %s.\n", field); + + getNextField (f, field); /* Type */ + assert (strstr (field, "TYPE")); + getNextField (f, field); + printf ("TYPE: %s.\n", field); + + getNextField (f, field); /* Dimension */ + assert (strstr (field, "DIMENSION")); + getNextField (f, field); + printf ("DIMENSION: %s.\n", field); + numNodes = atoi (field); + + getNextField (f, field); /* Edge weight type */ + assert (strstr (field, "EDGE_WEIGHT_TYPE")); + getNextField (f, field); + printf ("EDGE_WEIGHT_TYPE: %s.\n", field); + + getNextField (f, field); /* Node coord section */ + assert (strstr (field, "NODE_COORD_SECTION")); + loadNodes (f); + + getNextField (f, field); /* End of file */ + assert (strstr (field, "EOF")); + printf ("EOF.\n"); + } + else { + + fprintf (stderr, "Can't open '%s'.\n", __filename); + exit (1); + } +} + +void loadData (eoParser & __parser) { + + /* Getting the path of the instance */ + + eoValueParam param ("", "inst", "Path of the instance") ; + __parser.processParam (param) ; + loadData (param.value ().c_str ()); +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/data.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/data.h new file mode 100644 index 000000000..c00c6edfb --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/data.h @@ -0,0 +1,18 @@ +// "data.h" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __data_h +#define __data_h + +#include + +extern void loadData (const char * __filename); + +extern void loadData (eoParser & __parser); + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/display.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/display.cpp new file mode 100644 index 000000000..0fbaad4b2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/display.cpp @@ -0,0 +1,117 @@ +// "display.cpp" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include + +#include + +#include "display.h" +#include "node.h" +#include "opt_route.h" + +#define BORDER 20 +#define RATIO 0.5 + +#define screen_width 1024 +#define screen_height 768 + +static const char * filename; + +/* Computed coordinates */ +static unsigned * X_new_coord, * Y_new_coord ; + +/* this variable will contain the handle to the returned graphics context. */ +static GC gc; + +/* this variable will contain the pointer to the Display structure */ +static Display* disp; + +/* this variable will store the ID of the newly created window. */ +static Window win; + +static int screen; + +/* Create a new backing pixmap of the appropriate size */ + + /* Best tour */ + /* + gdk_gc_set_line_attributes (gc, 2, GDK_LINE_ON_OFF_DASH, GDK_CAP_NOT_LAST, GDK_JOIN_MITER) ; + + gdk_gc_set_foreground (gc, & color_green) ; + + for (int i = 0 ; i < (int) numNodes ; i ++) { + + gdk_draw_line (pixmap, gc, + X_new_coord [opt_route [i]], + Y_new_coord [opt_route [i]], + X_new_coord [opt_route [(i + 1) % numNodes]], + Y_new_coord [opt_route [(i + 1) % numNodes]]); + + }*/ + +void openMainWindow (const char * __filename) { + + filename = __filename; + + /* Map */ + int map_width = (int) (X_max - X_min); + int map_height = (int) (Y_max - Y_min); + int map_side = std :: max (map_width, map_height); + + /* Calculate the window's width and height. */ + int win_width = (int) (screen_width * RATIO * map_width / map_side); + int win_height = (int) (screen_height * RATIO * map_height / map_side); + + /* Computing the coordinates */ + X_new_coord = new unsigned [numNodes]; + Y_new_coord = new unsigned [numNodes]; + + for (unsigned i = 0; i < numNodes; i ++) { + X_new_coord [i] = (unsigned) (win_width * (1.0 - (X_coord [i] - X_min) / map_width) + BORDER); + Y_new_coord [i] = (unsigned) (win_height * (1.0 - (Y_coord [i] - Y_min) / map_height) + BORDER); + } + + /* Initialisation */ + XGCValues val ; + + disp = XOpenDisplay (NULL) ; + screen = DefaultScreen (disp) ; + win = XCreateSimpleWindow (disp, RootWindow (disp, screen), 0, 0, win_width + 2 * BORDER, win_height + 2 * BORDER, 2, BlackPixel (disp, screen), WhitePixel (disp, screen)) ; + val.foreground = BlackPixel(disp, screen) ; + val.background = WhitePixel(disp, screen) ; + gc = XCreateGC (disp, win, GCForeground | GCBackground, & val) ; + + XMapWindow (disp, win) ; + XFlush (disp) ; + + while (true) { + XClearWindow (disp, win) ; + + /* Vertices as circles */ + for (unsigned i = 1 ; i < numNodes ; i ++) + XDrawArc (disp, win, gc, X_new_coord [i] - 1, Y_new_coord [i] - 1, 3, 3, 0, 364 * 64) ; + + /* New tour */ + std :: ifstream f (filename); + if (f) { + Route route; + f >> route; + f.close (); + + for (int i = 0; i < (int) numNodes; i ++) + XDrawLine (disp, win, gc, + X_new_coord [route [i]], + Y_new_coord [route [i]], + X_new_coord [route [(i + 1) % numNodes]], + Y_new_coord [route [(i + 1) % numNodes]]); + } + XFlush (disp) ; + sleep (1) ; + } +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/display.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/display.h new file mode 100644 index 000000000..f534943d6 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/display.h @@ -0,0 +1,16 @@ +// "display.h" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __display_h +#define __display_h + +#include "route.h" + +extern void openMainWindow (const char * __filename); + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/display_best_route.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/display_best_route.cpp new file mode 100644 index 000000000..14b1ba0a3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/display_best_route.cpp @@ -0,0 +1,22 @@ +// "display_best_route.cpp" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "display_best_route.h" +#include "display.h" + +DisplayBestRoute :: DisplayBestRoute (eoPop & __pop + ) : pop (__pop) { + + +} + +void DisplayBestRoute :: operator () () { + + displayRoute (pop.best_element ()); +} + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/display_best_route.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/display_best_route.h new file mode 100644 index 000000000..5571c35be --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/display_best_route.h @@ -0,0 +1,32 @@ +// "display_best_route.h" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __display_best_route_h +#define __display_best_route_h + +#include + +#include + +#include "route.h" + +class DisplayBestRoute : public eoUpdater { + +public : + + DisplayBestRoute (eoPop & __pop); + + void operator () (); + +private : + + eoPop & pop; + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/edge_xover.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/edge_xover.cpp new file mode 100644 index 000000000..441262e26 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/edge_xover.cpp @@ -0,0 +1,118 @@ +// "edge_xover.cpp" + +// (c) OPAC Team, LIFL, 2003 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include + +#include + +#include "edge_xover.h" + +void EdgeXover :: build_map (const Route & __par1, const Route & __par2) { + + unsigned len = __par1.size () ; + + /* Initialization */ + _map.clear () ; + _map.resize (len) ; + + for (unsigned i = 0 ; i < len ; i ++) { + _map [__par1 [i]].insert (__par1 [(i + 1) % len]) ; + _map [__par2 [i]].insert (__par2 [(i + 1) % len]) ; + _map [__par1 [i]].insert (__par1 [(i - 1 + len) % len]) ; + _map [__par2 [i]].insert (__par2 [(i - 1 + len) % len]) ; + } + + visited.clear () ; + visited.resize (len, false) ; +} + +void EdgeXover :: remove_entry (unsigned __vertex, std :: vector > & __map) { + + std :: set & neigh = __map [__vertex] ; + + for (std :: set :: iterator it = neigh.begin () ; + it != neigh.end () ; + it ++) + __map [* it].erase (__vertex) ; + +} + +void EdgeXover :: add_vertex (unsigned __vertex, Route & __child) { + + visited [__vertex] = true ; + __child.push_back (__vertex) ; + remove_entry (__vertex, _map) ; /* Removing entries */ +} + +void EdgeXover :: cross (const Route & __par1, const Route & __par2, Route & __child) { + + build_map (__par1, __par2) ; + + unsigned len = __par1.size () ; + + /* Go ! */ + __child.clear () ; + + unsigned cur_vertex = rng.random (len) ; + + add_vertex (cur_vertex, __child) ; + + for (unsigned i = 1 ; i < len ; i ++) { + + unsigned len_min_entry = MAXINT ; + + std :: set & neigh = _map [cur_vertex] ; + + for (std :: set :: iterator it = neigh.begin () ; + it != neigh.end () ; + it ++) { + unsigned l = _map [* it].size () ; + if (len_min_entry > l) + len_min_entry = l ; + } + + std :: vector cand ; /* Candidates */ + + for (std :: set :: iterator it = neigh.begin () ; + it != neigh.end () ; + it ++) { + unsigned l = _map [* it].size () ; + if (len_min_entry == l) + cand.push_back (* it) ; + } + + if (! cand.size ()) { + + /* Oh no ! Implicit mutation */ + for (unsigned j = 0 ; j < len ; j ++) + if (! visited [j]) + cand.push_back (j) ; + } + + cur_vertex = cand [rng.random (cand.size ())] ; + + add_vertex (cur_vertex, __child) ; + } +} + +bool EdgeXover :: operator () (Route & __route1, Route & __route2) { + + // Init. copy + Route par [2] ; + par [0] = __route1 ; + par [1] = __route2 ; + + cross (par [0], par [1], __route1) ; + cross (par [1], par [0], __route2) ; + + __route1.invalidate () ; + __route2.invalidate () ; + + return true ; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/edge_xover.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/edge_xover.h new file mode 100644 index 000000000..e8bb1f063 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/edge_xover.h @@ -0,0 +1,43 @@ +// "edge_xover.h" + +// (c) OPAC Team, LIFL, 2003 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef edge_xover_h +#define edge_xover_h + +#include +#include + +#include + +#include "route.h" + +/** Edge Crossover */ +class EdgeXover : public eoQuadOp { + +public : + + bool operator () (Route & __route1, Route & __route2) ; + +private : + + void cross (const Route & __par1, const Route & __par2, Route & __child) ; /* Binary */ + + void remove_entry (unsigned __vertex, std :: vector > & __map) ; + /* Updating the map of entries */ + + void build_map (const Route & __par1, const Route & __par2) ; + + void add_vertex (unsigned __vertex, Route & __child) ; + + std :: vector > _map ; /* The handled map */ + + std :: vector visited ; /* Vertices that are already visited */ + +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/merge_route_eval.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/merge_route_eval.cpp new file mode 100644 index 000000000..1c0d66870 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/merge_route_eval.cpp @@ -0,0 +1,17 @@ +// "merge_route_eval.cpp" + +// (c) OPAC Team, LIFL, 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "merge_route_eval.h" + +void MergeRouteEval :: operator () (Route & __route, const int & __part_fit) { + + int len = __route.fitness (); + len += __part_fit; + __route.fitness (len); +} + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/merge_route_eval.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/merge_route_eval.h new file mode 100644 index 000000000..dd4a9534d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/merge_route_eval.h @@ -0,0 +1,24 @@ +// "merge_route_eval.h" + +// (c) OPAC Team, LIFL, 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __merge_route_eval_h +#define __merge_route_eval_h + +#include + +#include "route.h" + +class MergeRouteEval : public peoAggEvalFunc { + +public : + + void operator () (Route & __route, const int & __part_fit) ; + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/mix.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/mix.h new file mode 100644 index 000000000..ce5d9bf9e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/mix.h @@ -0,0 +1,25 @@ + + +/* + file: 'mix.h' + author: S. CAHON + mail: paradiseo-help@lists.gforge.inria.fr + date: dec. 2005 +*/ + +#ifndef __mix_h +#define __mix_h + +#include + +#include + +template void mix (std :: vector & __v) { + + unsigned len = __v.size () ; + + for (unsigned i = 0 ; i < len ; i ++) + std :: swap (__v [i], __v [rng.random (len)]) ; +} + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/node.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/node.cpp new file mode 100644 index 000000000..cf0c0f523 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/node.cpp @@ -0,0 +1,77 @@ +// "node.cpp" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include + +#include "node.h" + +unsigned numNodes; /* Number of nodes */ + +//static unsigned * * dist; /* Square matrix of distances */ + +double * X_coord, * Y_coord; + +double X_min = MAXDOUBLE, X_max = MINDOUBLE, Y_min = MAXDOUBLE, Y_max = MINDOUBLE; + +void loadNodes (FILE * __f) { + + /* Coord */ + + X_coord = new double [numNodes]; + + Y_coord = new double [numNodes]; + + unsigned num; + + for (unsigned i = 0; i < numNodes; i ++) { + + fscanf (__f, "%u%lf%lf", & num, X_coord + i, Y_coord + i); + + if (X_coord [i] < X_min) + X_min = X_coord [i]; + if (X_coord [i] > X_max) + X_max = X_coord [i]; + if (Y_coord [i] < Y_min) + Y_min = Y_coord [i]; + if (Y_coord [i] > Y_max) + Y_max = Y_coord [i]; + } + + /* Allocation */ + /* + dist = new unsigned * [numNodes]; + + for (unsigned i = 0; i < numNodes; i ++) + dist [i] = new unsigned [numNodes]; + */ + /* Computation of the distances */ + + /* + for (unsigned i = 0; i < numNodes; i ++) { + + dist [i] [i] = 0; + + for (unsigned j = 0; j < numNodes; j ++) { + + double dx = X_coord [i] - X_coord [j], dy = Y_coord [i] - Y_coord [j]; + + dist [i] [j] = dist [j] [i] = (unsigned) (sqrt (dx * dx + dy * dy) + 0.5) ; + } + }*/ +} + +unsigned distance (Node __from, Node __to) { + + // return dist [__from] [__to]; + + double dx = X_coord [__from] - X_coord [__to], dy = Y_coord [__from] - Y_coord [__to]; + + return (unsigned) (sqrt (dx * dx + dy * dy) + 0.5) ; +} + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/node.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/node.h new file mode 100644 index 000000000..fe735361a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/node.h @@ -0,0 +1,26 @@ +// "node.h" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __node_h +#define __node_h + +#include + +typedef unsigned Node; + +extern double X_min, X_max, Y_min, Y_max; + +extern double * X_coord, * Y_coord; + +extern unsigned numNodes; /* Number of nodes */ + +extern void loadNodes (FILE * __f); + +extern unsigned distance (Node __from, Node __to); + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/opt_route.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/opt_route.cpp new file mode 100644 index 000000000..2ee739358 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/opt_route.cpp @@ -0,0 +1,107 @@ +// "opt_route.cpp" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "opt_route.h" + +#define MAX_TRASH_LENGTH 1000 +#define MAX_FIELD_LENGTH 1000 +#define MAX_LINE_LENGTH 1000 + +static void getNextField (FILE * __f, char * __buff) { + + char trash [MAX_TRASH_LENGTH]; + + fscanf (__f, "%[ \t:\n]", trash); /* Discarding sep. */ + fscanf (__f, "%[^:\n]", __buff); /* Reading the field */ + fgetc (__f); +} + +static void getLine (FILE * __f, char * __buff) { + + char trash [MAX_TRASH_LENGTH]; + + fscanf (__f, "%[ \t:\n]", trash); /* Discarding sep. */ + fscanf (__f, "%[^\n]", __buff); /* Reading the line */ +} + +static void loadBestRoute (FILE * __f) { + + opt_route.clear (); + + for (unsigned i = 0; i < numNodes; i ++) { + Node node; + fscanf (__f, "%u", & node); + opt_route.push_back (node - 1); + } + int d; /* -1 ! */ + fscanf (__f, "%d", & d); +} + +void loadOptimumRoute (const char * __filename) { + + FILE * f = fopen (__filename, "r"); + + if (f) { + + printf ("Loading '%s'.\n", __filename); + + char field [MAX_FIELD_LENGTH]; + + getNextField (f, field); /* Name */ + assert (strstr (field, "NAME")); + getNextField (f, field); + //printf ("NAME: %s.\n", field); + + getNextField (f, field); /* Comment */ + assert (strstr (field, "COMMENT")); + getLine (f, field); + // printf ("COMMENT: %s.\n", field); + + getNextField (f, field); /* Type */ + assert (strstr (field, "TYPE")); + getNextField (f, field); + //printf ("TYPE: %s.\n", field); + + getNextField (f, field); /* Dimension */ + assert (strstr (field, "DIMENSION")); + getNextField (f, field); + // printf ("DIMENSION: %s.\n", field); + numNodes = atoi (field); + + getNextField (f, field); /* Tour section */ + assert (strstr (field, "TOUR_SECTION")); + loadBestRoute (f); + + getNextField (f, field); /* End of file */ + assert (strstr (field, "EOF")); + //printf ("EOF.\n"); + + printf ("The length of the best route is %u.\n", length (opt_route)); + } + else { + + fprintf (stderr, "Can't open '%s'.\n", __filename); + exit (1); + } +} + +void loadOptimumRoute (eoParser & __parser) { + + /* Getting the path of the instance */ + + eoValueParam param ("", "optimumTour", "Optimum tour") ; + __parser.processParam (param) ; + if (strlen (param.value ().c_str ())) + loadOptimumRoute (param.value ().c_str ()); + else + opt_route.fitness (0); +} + +Route opt_route; /* Optimum route */ + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/opt_route.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/opt_route.h new file mode 100644 index 000000000..52df469de --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/opt_route.h @@ -0,0 +1,23 @@ +// "opt_route.h" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __opt_route_h +#define __opt_route_h + +#include +#include + +#include "route.h" + +extern void loadOptimumRoute (const char * __filename); + +extern void loadOptimumRoute (eoParser & __parser); + +extern Route opt_route; /* Optimum route */ + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/order_xover.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/order_xover.cpp new file mode 100644 index 000000000..5f8b3ba65 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/order_xover.cpp @@ -0,0 +1,64 @@ +// "order_xover.cpp" + +// (c) OPAC Team, LIFL, 2002 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include + +#include "order_xover.h" + +void OrderXover :: cross (const Route & __par1, const Route & __par2, Route & __child) { + + unsigned cut2 = 1 + rng.random (numNodes) ; + unsigned cut1 = rng.random (cut2); + unsigned l = 0; + + /* To store vertices that have already been crossed */ + std :: vector v (numNodes, false); + + /* Copy of the left partial route of the first parent */ + for (unsigned i = cut1 ; i < cut2 ; i ++) { + __child [l ++] = __par1 [i] ; + v [__par1 [i]] = true ; + } + + /* Searching the vertex of the second path, that ended the previous first one */ + unsigned from = 0 ; + for (unsigned i = 0; i < numNodes; i ++) + if (__par2 [i] == __child [cut2 - 1]) { + from = i ; + break ; + } + + /* Selecting a direction (Left or Right) */ + char direct = rng.flip () ? 1 : -1 ; + + for (unsigned i = 0; i < numNodes + 1; i ++) { + unsigned bidule = (direct * i + from + numNodes) % numNodes; + if (! v [__par2 [bidule]]) { + __child [l ++] = __par2 [bidule] ; + v [__par2 [bidule]] = true ; + } + } +} + +bool OrderXover :: operator () (Route & __route1, Route & __route2) { + + // Init. copy + Route par [2] ; + par [0] = __route1 ; + par [1] = __route2 ; + + cross (par [0], par [1], __route1) ; + cross (par [1], par [0], __route2) ; + + __route1.invalidate () ; + __route2.invalidate () ; + + return true ; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/order_xover.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/order_xover.h new file mode 100644 index 000000000..9fc1907d8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/order_xover.h @@ -0,0 +1,28 @@ +// "order_xover.h" + +// (c) OPAC Team, LIFL, 2003 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef order_xover_h +#define order_xover_h + +#include + +#include "route.h" + +/** Order Crossover */ +class OrderXover : public eoQuadOp { + +public : + + bool operator () (Route & __route1, Route & __route2) ; + +private : + + void cross (const Route & __par1, const Route & __par2, Route & __child) ; +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/paradiseo-peo-lsn-shared.doxyfile b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/paradiseo-peo-lsn-shared.doxyfile new file mode 100644 index 000000000..bd1a827a9 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/paradiseo-peo-lsn-shared.doxyfile @@ -0,0 +1,240 @@ +# Doxyfile 1.4.7 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = "ParadisEO-PEO - Lessons" +PROJECT_NUMBER = 0.1 +OUTPUT_DIRECTORY = ../../docs/html/lsnshared +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 = . +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 = peo +#--------------------------------------------------------------------------- +# 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 = YES +USE_PDFLATEX = YES +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-mo/docs/eo.doxytag=../../../../paradiseo-mo/docs/html \ + ../../../paradiseo-mo/docs/mo.doxytag=../../../../paradiseo-mo/docs/html \ + ../../docs/paradiseo-peo.doxytag=../../ +GENERATE_TAGFILE = ../../docs/paradiseo-peo-lsn-shared.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-i386-0.2/paradiseo-peo/examples/shared/param.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/param.cpp new file mode 100644 index 000000000..ba41c71d3 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/param.cpp @@ -0,0 +1,23 @@ +// "param.cpp" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "data.h" +#include "opt_route.h" + +void loadParameters (int __argc, char * * __argv) { + + eoParser parser (__argc, __argv); + + loadData (parser); + + loadOptimumRoute (parser); +} + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/param.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/param.h new file mode 100644 index 000000000..ee21bf4d8 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/param.h @@ -0,0 +1,14 @@ +// "param.h" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __param_h +#define __param_h + +extern void loadParameters (int __argc, char * * __argv); + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/part_route_eval.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/part_route_eval.cpp new file mode 100644 index 000000000..e2d362230 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/part_route_eval.cpp @@ -0,0 +1,30 @@ +// "part_route_eval.cpp" + +// (c) OPAC Team, LIFL, 2003 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "part_route_eval.h" +#include "node.h" + +PartRouteEval :: PartRouteEval (float __from, + float __to + ) : from (__from), + to (__to) { + +} + +void PartRouteEval :: operator () (Route & __route) { + + + unsigned len = 0 ; + + for (unsigned i = (unsigned) (__route.size () * from) ; + i < (unsigned) (__route.size () * to) ; + i ++) + len += distance (__route [i], __route [(i + 1) % numNodes]) ; + + __route.fitness (- (int) len) ; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/part_route_eval.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/part_route_eval.h new file mode 100644 index 000000000..891737760 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/part_route_eval.h @@ -0,0 +1,33 @@ +// "part_route_eval.h" + +// (c) OPAC Team, LIFL, 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __part_route_eval_h +#define __part_route_eval_h + +#include + +#include "route.h" + +/** Route Evaluator */ +class PartRouteEval : public eoEvalFunc { + +public : + + /** Constructor */ + PartRouteEval (float __from, float __to) ; + + void operator () (Route & __route) ; + +private : + + float from, to ; + +} ; + + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/partial_mapped_xover.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/partial_mapped_xover.cpp new file mode 100644 index 000000000..1ad819a2d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/partial_mapped_xover.cpp @@ -0,0 +1,61 @@ +// "partial_mapped_xover.cpp" + +// (c) OPAC Team, LIFL, 2003 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include + +#include "partial_mapped_xover.h" +#include "mix.h" + +void PartialMappedXover :: repair (Route & __route, unsigned __cut1, unsigned __cut2) { + + unsigned v [__route.size ()] ; // Number of times a cities are visited ... + + for (unsigned i = 0 ; i < __route.size () ; i ++) + v [i] = 0 ; + + for (unsigned i = 0 ; i < __route.size () ; i ++) + v [__route [i]] ++ ; + + std :: vector vert ; + + for (unsigned i = 0 ; i < __route.size () ; i ++) + if (! v [i]) + vert.push_back (i) ; + + mix (vert) ; + + for (unsigned i = 0 ; i < __route.size () ; i ++) + if (i < __cut1 || i >= __cut2) + if (v [__route [i]] > 1) { + __route [i] = vert.back () ; + vert.pop_back () ; + } +} + +bool PartialMappedXover :: operator () (Route & __route1, Route & __route2) { + + unsigned cut1 = rng.random (__route1.size ()), cut2 = rng.random (__route2.size ()) ; + + if (cut2 < cut1) + std :: swap (cut1, cut2) ; + + // Between the cuts + for (unsigned i = cut1 ; i < cut2 ; i ++) + std :: swap (__route1 [i], __route2 [i]) ; + + // Outside the cuts + repair (__route1, cut1, cut2) ; + repair (__route2, cut1, cut2) ; + + __route1.invalidate () ; + __route2.invalidate () ; + + return true ; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/partial_mapped_xover.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/partial_mapped_xover.h new file mode 100644 index 000000000..0c08531be --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/partial_mapped_xover.h @@ -0,0 +1,28 @@ +// "partial_mapped_xover.h" + +// (c) OPAC Team, LIFL, 2003 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef partial_mapped_xover_h +#define partial_mapped_xover_h + +#include + +#include "route.h" + +/** Partial Mapped Crossover */ +class PartialMappedXover : public eoQuadOp { + +public : + + bool operator () (Route & __route1, Route & __route2) ; + +private : + + void repair (Route & __route, unsigned __cut1, unsigned __cut2) ; +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/route.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/route.cpp new file mode 100644 index 000000000..eea64ab51 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/route.cpp @@ -0,0 +1,21 @@ +// "route.cpp" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "route.h" + +unsigned length (const Route & __route) { + + unsigned len = 0 ; + + for (unsigned i = 0; i < numNodes; i ++) + len += distance (__route [i], __route [(i + 1) % numNodes]) ; + + return len; +} + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/route.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/route.h new file mode 100644 index 000000000..0ba026675 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/route.h @@ -0,0 +1,20 @@ +// "route.h" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __route_h +#define __route_h + +#include + +#include "node.h" + +typedef eoVector Route; + +unsigned length (const Route & __route); + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/route_eval.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/route_eval.cpp new file mode 100644 index 000000000..0fed8d481 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/route_eval.cpp @@ -0,0 +1,14 @@ +// "route_eval.cpp" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "route_eval.h" + +void RouteEval :: operator () (Route & __route) { + + __route.fitness (- (int) length (__route)); +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/route_eval.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/route_eval.h new file mode 100644 index 000000000..295f9a39b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/route_eval.h @@ -0,0 +1,23 @@ +// "route_eval.h" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __route_eval_h +#define __route_eval_h + +#include + +#include "route.h" + +class RouteEval : public eoEvalFunc { + +public : + + void operator () (Route & __route) ; +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/route_init.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/route_init.cpp new file mode 100644 index 000000000..93733f210 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/route_init.cpp @@ -0,0 +1,23 @@ +// "route_init.cpp" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "route_init.h" +#include "node.h" + +void RouteInit :: operator () (Route & __route) { + + __route.clear (); + + for (unsigned i = 0 ; i < numNodes ; i ++) + __route.push_back (i); + + for (unsigned i = 0 ; i < numNodes ; i ++) + std :: swap (__route [i], __route [rng.random (numNodes)]); +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/route_init.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/route_init.h new file mode 100644 index 000000000..937b38265 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/route_init.h @@ -0,0 +1,23 @@ +// "route_init.h" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __route_init_h +#define __route_init_h + +#include + +#include "route.h" + +class RouteInit : public eoInit { + +public : + + void operator () (Route & __route); +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt.cpp new file mode 100644 index 000000000..8852ff910 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt.cpp @@ -0,0 +1,20 @@ +// "two_opt.cpp" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "two_opt.h" + +void TwoOpt :: operator () (Route & __route) { + + unsigned i = 0; + + while ((2 * i) < (second - first)) { + + std :: swap (__route [first + i], __route [second - i]); + i ++; + } +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt.h new file mode 100644 index 000000000..0989f5e6e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt.h @@ -0,0 +1,25 @@ +// "two_opt.h" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __two_opt_h +#define __two_opt_h + +#include +#include + +#include "route.h" + +class TwoOpt : public moMove , public std :: pair { + +public : + + void operator () (Route & __route); + +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_incr_eval.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_incr_eval.cpp new file mode 100644 index 000000000..b3985f66e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_incr_eval.cpp @@ -0,0 +1,24 @@ +// "TwoOptIncrEval.cpp" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "two_opt_incr_eval.h" +#include "node.h" + +int TwoOptIncrEval :: operator () (const TwoOpt & __move, const Route & __route) { + + /* From */ + Node v1 = __route [__move.first], v1_left = __route [(__move.first - 1 + numNodes) % numNodes]; + + /* To */ + Node v2 = __route [__move.second], v2_right = __route [(__move.second + 1) % numNodes]; + + if (v1 == v2 || v2_right == v1) + return __route.fitness (); + else + return __route.fitness () - distance (v1_left, v2) - distance (v1, v2_right) + distance (v1_left, v1) + distance (v2, v2_right); +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_incr_eval.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_incr_eval.h new file mode 100644 index 000000000..5f88496ed --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_incr_eval.h @@ -0,0 +1,23 @@ +// "TwoOptIncrEval.h" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __two_opt_incr_eval_h +#define __two_opt_incr_eval_h + +#include +#include "two_opt.h" + +class TwoOptIncrEval : public moMoveIncrEval { + +public : + + int operator () (const TwoOpt & __move, const Route & __route) ; + +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_init.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_init.cpp new file mode 100644 index 000000000..e19abc467 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_init.cpp @@ -0,0 +1,14 @@ +// "two_opt_init.cpp" + +// (c) OPAC Team, LIFL, 2003 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "two_opt_init.h" + +void TwoOptInit :: operator () (TwoOpt & __move, const Route & __route) { + + __move.first = __move.second = 0; +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_init.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_init.h new file mode 100644 index 000000000..9b4dd0bad --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_init.h @@ -0,0 +1,24 @@ +// "two_opt_init.h" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __two_opt_init_h +#define __two_opt_init_h + +#include + +#include "two_opt.h" + +class TwoOptInit : public moMoveInit { + +public : + + void operator () (TwoOpt & __move, const Route & __route) ; + +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_next.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_next.cpp new file mode 100644 index 000000000..9b7f8be16 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_next.cpp @@ -0,0 +1,27 @@ +// "two_opt_next.cpp" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "two_opt_next.h" +#include "node.h" + +bool TwoOptNext :: operator () (TwoOpt & __move, const Route & __route) { + + if (__move.first == numNodes - 1 && __move.second == numNodes - 1) + return false; + + else { + + __move.second ++; + if (__move.second == numNodes) { + + __move.first ++; + __move.second = __move.first; + } + return true ; + } +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_next.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_next.h new file mode 100644 index 000000000..cd6605a8d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_next.h @@ -0,0 +1,24 @@ +// "two_opt_next.h" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __two_opt_next_h +#define __two_opt_next_h + +#include + +#include "two_opt.h" + +class TwoOptNext : public moNextMove { + +public : + + bool operator () (TwoOpt & __move, const Route & __route); + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_rand.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_rand.cpp new file mode 100644 index 000000000..69d64879b --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_rand.cpp @@ -0,0 +1,21 @@ +// "two_opt_rand.cpp" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "two_opt_rand.h" +#include "node.h" + +void TwoOptRand :: operator () (TwoOpt & __move, const Route & __route) { + + __move.second = rng.random (numNodes); + + __move.first = rng.random (__move.second); +} + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_rand.h b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_rand.h new file mode 100644 index 000000000..44f602b53 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/examples/shared/two_opt_rand.h @@ -0,0 +1,24 @@ +// "two_opt_rand.h" + +// (c) OPAC Team, LIFL, January 2006 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __two_opt_rand_h +#define __two_opt_rand_h + +#include + +#include "two_opt.h" + +class TwoOptRand : public eoMoveRand { + +public : + + void operator () (TwoOpt & __move, const Route & __route) ; + +} ; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-peo/src/Makefile.am new file mode 100755 index 000000000..f3dd31795 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/Makefile.am @@ -0,0 +1,4 @@ +# Process this file with automake to produce Makefile.in + +SUBDIRS= core rmc + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/Makefile.in b/tags/paradiseo-i386-0.2/paradiseo-peo/src/Makefile.in new file mode 100644 index 000000000..65d1bdada --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/Makefile.in @@ -0,0 +1,781 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Process this file with automake to produce Makefile.in + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = src +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" +libLIBRARIES_INSTALL = $(INSTALL_DATA) +LIBRARIES = $(lib_LIBRARIES) +AR = ar +ARFLAGS = cru +libparadiseo_a_AR = $(AR) $(ARFLAGS) +libparadiseo_a_LIBADD = +am__objects_1 = peo_init.$(OBJEXT) peo_fin.$(OBJEXT) peo_run.$(OBJEXT) \ + peo_param.$(OBJEXT) peo_debug.$(OBJEXT) thread.$(OBJEXT) \ + reac_thread.$(OBJEXT) service.$(OBJEXT) runner.$(OBJEXT) \ + communicable.$(OBJEXT) topology.$(OBJEXT) ring_topo.$(OBJEXT) +am_libparadiseo_a_OBJECTS = $(am__objects_1) +libparadiseo_a_OBJECTS = $(am_libparadiseo_a_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(libparadiseo_a_SOURCES) +DIST_SOURCES = $(libparadiseo_a_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = g++ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EO_DIR = @EO_DIR@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MOEO_DIR = @MOEO_DIR@ +MO_DIR = @MO_DIR@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +INCLUDES = \ + -I$(EO_DIR)/src \ + -I$(MO_DIR)/src \ + -I$(MOEO_DIR)/src + +AM_CXXFLAGS = \ + -Wall\ + -g + +SUBDIRS = rmc +lib_LIBRARIES = libparadiseo.a + +#bin_PROGRAMS = peodeploy essai +shared_SOURCES = \ + paradiseo \ + paradiseo.h \ + core/peo_init.h \ + core/peo_init.cpp \ + core/peo_fin.h \ + core/peo_fin.cpp \ + core/peo_run.h \ + core/peo_run.cpp \ + core/peo_param.h \ + core/peo_param.cpp \ + core/peo_debug.h \ + core/peo_debug.cpp \ + core/thread.h \ + core/thread.cpp \ + core/reac_thread.h \ + core/reac_thread.cpp \ + core/service.h \ + core/service.cpp \ + core/runner.h \ + core/runner.cpp \ + core/communicable.h \ + core/communicable.cpp \ + core/cooperative.h \ + core/rmc.h \ + core/messaging.h \ + core/topology.h \ + core/topology.cpp \ + core/ring_topo.h \ + core/ring_topo.cpp \ + core/eoPop_comm.h \ + peoEA.h \ + peoTransform.h \ + peoSeqTransform.h \ + peoParaTransform.h \ + peoPopEval.h\ + peoSeqPopEval.h \ + peoAggEvalFunc.h \ + peoParaPopEval.h + +libparadiseo_a_SOURCES = \ + $(shared_SOURCES) + +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .cpp .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-libLIBRARIES: $(lib_LIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + @$(POST_INSTALL) + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + p=$(am__strip_dir) \ + echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \ + $(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \ + else :; fi; \ + done + +uninstall-libLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLIBRARIES: + -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) +libparadiseo.a: $(libparadiseo_a_OBJECTS) $(libparadiseo_a_DEPENDENCIES) + -rm -f libparadiseo.a + $(libparadiseo_a_AR) libparadiseo.a $(libparadiseo_a_OBJECTS) $(libparadiseo_a_LIBADD) + $(RANLIB) libparadiseo.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/communicable.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peo_debug.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peo_fin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peo_init.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peo_param.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peo_run.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reac_thread.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ring_topo.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runner.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/service.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thread.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/topology.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +peo_init.o: core/peo_init.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_init.o -MD -MP -MF "$(DEPDIR)/peo_init.Tpo" -c -o peo_init.o `test -f 'core/peo_init.cpp' || echo '$(srcdir)/'`core/peo_init.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_init.Tpo" "$(DEPDIR)/peo_init.Po"; else rm -f "$(DEPDIR)/peo_init.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_init.cpp' object='peo_init.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_init.o `test -f 'core/peo_init.cpp' || echo '$(srcdir)/'`core/peo_init.cpp + +peo_init.obj: core/peo_init.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_init.obj -MD -MP -MF "$(DEPDIR)/peo_init.Tpo" -c -o peo_init.obj `if test -f 'core/peo_init.cpp'; then $(CYGPATH_W) 'core/peo_init.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_init.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_init.Tpo" "$(DEPDIR)/peo_init.Po"; else rm -f "$(DEPDIR)/peo_init.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_init.cpp' object='peo_init.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_init.obj `if test -f 'core/peo_init.cpp'; then $(CYGPATH_W) 'core/peo_init.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_init.cpp'; fi` + +peo_fin.o: core/peo_fin.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_fin.o -MD -MP -MF "$(DEPDIR)/peo_fin.Tpo" -c -o peo_fin.o `test -f 'core/peo_fin.cpp' || echo '$(srcdir)/'`core/peo_fin.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_fin.Tpo" "$(DEPDIR)/peo_fin.Po"; else rm -f "$(DEPDIR)/peo_fin.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_fin.cpp' object='peo_fin.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_fin.o `test -f 'core/peo_fin.cpp' || echo '$(srcdir)/'`core/peo_fin.cpp + +peo_fin.obj: core/peo_fin.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_fin.obj -MD -MP -MF "$(DEPDIR)/peo_fin.Tpo" -c -o peo_fin.obj `if test -f 'core/peo_fin.cpp'; then $(CYGPATH_W) 'core/peo_fin.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_fin.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_fin.Tpo" "$(DEPDIR)/peo_fin.Po"; else rm -f "$(DEPDIR)/peo_fin.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_fin.cpp' object='peo_fin.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_fin.obj `if test -f 'core/peo_fin.cpp'; then $(CYGPATH_W) 'core/peo_fin.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_fin.cpp'; fi` + +peo_run.o: core/peo_run.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_run.o -MD -MP -MF "$(DEPDIR)/peo_run.Tpo" -c -o peo_run.o `test -f 'core/peo_run.cpp' || echo '$(srcdir)/'`core/peo_run.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_run.Tpo" "$(DEPDIR)/peo_run.Po"; else rm -f "$(DEPDIR)/peo_run.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_run.cpp' object='peo_run.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_run.o `test -f 'core/peo_run.cpp' || echo '$(srcdir)/'`core/peo_run.cpp + +peo_run.obj: core/peo_run.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_run.obj -MD -MP -MF "$(DEPDIR)/peo_run.Tpo" -c -o peo_run.obj `if test -f 'core/peo_run.cpp'; then $(CYGPATH_W) 'core/peo_run.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_run.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_run.Tpo" "$(DEPDIR)/peo_run.Po"; else rm -f "$(DEPDIR)/peo_run.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_run.cpp' object='peo_run.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_run.obj `if test -f 'core/peo_run.cpp'; then $(CYGPATH_W) 'core/peo_run.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_run.cpp'; fi` + +peo_param.o: core/peo_param.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_param.o -MD -MP -MF "$(DEPDIR)/peo_param.Tpo" -c -o peo_param.o `test -f 'core/peo_param.cpp' || echo '$(srcdir)/'`core/peo_param.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_param.Tpo" "$(DEPDIR)/peo_param.Po"; else rm -f "$(DEPDIR)/peo_param.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_param.cpp' object='peo_param.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_param.o `test -f 'core/peo_param.cpp' || echo '$(srcdir)/'`core/peo_param.cpp + +peo_param.obj: core/peo_param.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_param.obj -MD -MP -MF "$(DEPDIR)/peo_param.Tpo" -c -o peo_param.obj `if test -f 'core/peo_param.cpp'; then $(CYGPATH_W) 'core/peo_param.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_param.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_param.Tpo" "$(DEPDIR)/peo_param.Po"; else rm -f "$(DEPDIR)/peo_param.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_param.cpp' object='peo_param.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_param.obj `if test -f 'core/peo_param.cpp'; then $(CYGPATH_W) 'core/peo_param.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_param.cpp'; fi` + +peo_debug.o: core/peo_debug.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_debug.o -MD -MP -MF "$(DEPDIR)/peo_debug.Tpo" -c -o peo_debug.o `test -f 'core/peo_debug.cpp' || echo '$(srcdir)/'`core/peo_debug.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_debug.Tpo" "$(DEPDIR)/peo_debug.Po"; else rm -f "$(DEPDIR)/peo_debug.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_debug.cpp' object='peo_debug.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_debug.o `test -f 'core/peo_debug.cpp' || echo '$(srcdir)/'`core/peo_debug.cpp + +peo_debug.obj: core/peo_debug.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_debug.obj -MD -MP -MF "$(DEPDIR)/peo_debug.Tpo" -c -o peo_debug.obj `if test -f 'core/peo_debug.cpp'; then $(CYGPATH_W) 'core/peo_debug.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_debug.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_debug.Tpo" "$(DEPDIR)/peo_debug.Po"; else rm -f "$(DEPDIR)/peo_debug.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_debug.cpp' object='peo_debug.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_debug.obj `if test -f 'core/peo_debug.cpp'; then $(CYGPATH_W) 'core/peo_debug.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_debug.cpp'; fi` + +thread.o: core/thread.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT thread.o -MD -MP -MF "$(DEPDIR)/thread.Tpo" -c -o thread.o `test -f 'core/thread.cpp' || echo '$(srcdir)/'`core/thread.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/thread.Tpo" "$(DEPDIR)/thread.Po"; else rm -f "$(DEPDIR)/thread.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/thread.cpp' object='thread.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o thread.o `test -f 'core/thread.cpp' || echo '$(srcdir)/'`core/thread.cpp + +thread.obj: core/thread.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT thread.obj -MD -MP -MF "$(DEPDIR)/thread.Tpo" -c -o thread.obj `if test -f 'core/thread.cpp'; then $(CYGPATH_W) 'core/thread.cpp'; else $(CYGPATH_W) '$(srcdir)/core/thread.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/thread.Tpo" "$(DEPDIR)/thread.Po"; else rm -f "$(DEPDIR)/thread.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/thread.cpp' object='thread.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o thread.obj `if test -f 'core/thread.cpp'; then $(CYGPATH_W) 'core/thread.cpp'; else $(CYGPATH_W) '$(srcdir)/core/thread.cpp'; fi` + +reac_thread.o: core/reac_thread.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT reac_thread.o -MD -MP -MF "$(DEPDIR)/reac_thread.Tpo" -c -o reac_thread.o `test -f 'core/reac_thread.cpp' || echo '$(srcdir)/'`core/reac_thread.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/reac_thread.Tpo" "$(DEPDIR)/reac_thread.Po"; else rm -f "$(DEPDIR)/reac_thread.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/reac_thread.cpp' object='reac_thread.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o reac_thread.o `test -f 'core/reac_thread.cpp' || echo '$(srcdir)/'`core/reac_thread.cpp + +reac_thread.obj: core/reac_thread.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT reac_thread.obj -MD -MP -MF "$(DEPDIR)/reac_thread.Tpo" -c -o reac_thread.obj `if test -f 'core/reac_thread.cpp'; then $(CYGPATH_W) 'core/reac_thread.cpp'; else $(CYGPATH_W) '$(srcdir)/core/reac_thread.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/reac_thread.Tpo" "$(DEPDIR)/reac_thread.Po"; else rm -f "$(DEPDIR)/reac_thread.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/reac_thread.cpp' object='reac_thread.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o reac_thread.obj `if test -f 'core/reac_thread.cpp'; then $(CYGPATH_W) 'core/reac_thread.cpp'; else $(CYGPATH_W) '$(srcdir)/core/reac_thread.cpp'; fi` + +service.o: core/service.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT service.o -MD -MP -MF "$(DEPDIR)/service.Tpo" -c -o service.o `test -f 'core/service.cpp' || echo '$(srcdir)/'`core/service.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/service.Tpo" "$(DEPDIR)/service.Po"; else rm -f "$(DEPDIR)/service.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/service.cpp' object='service.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o service.o `test -f 'core/service.cpp' || echo '$(srcdir)/'`core/service.cpp + +service.obj: core/service.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT service.obj -MD -MP -MF "$(DEPDIR)/service.Tpo" -c -o service.obj `if test -f 'core/service.cpp'; then $(CYGPATH_W) 'core/service.cpp'; else $(CYGPATH_W) '$(srcdir)/core/service.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/service.Tpo" "$(DEPDIR)/service.Po"; else rm -f "$(DEPDIR)/service.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/service.cpp' object='service.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o service.obj `if test -f 'core/service.cpp'; then $(CYGPATH_W) 'core/service.cpp'; else $(CYGPATH_W) '$(srcdir)/core/service.cpp'; fi` + +runner.o: core/runner.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT runner.o -MD -MP -MF "$(DEPDIR)/runner.Tpo" -c -o runner.o `test -f 'core/runner.cpp' || echo '$(srcdir)/'`core/runner.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/runner.Tpo" "$(DEPDIR)/runner.Po"; else rm -f "$(DEPDIR)/runner.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/runner.cpp' object='runner.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o runner.o `test -f 'core/runner.cpp' || echo '$(srcdir)/'`core/runner.cpp + +runner.obj: core/runner.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT runner.obj -MD -MP -MF "$(DEPDIR)/runner.Tpo" -c -o runner.obj `if test -f 'core/runner.cpp'; then $(CYGPATH_W) 'core/runner.cpp'; else $(CYGPATH_W) '$(srcdir)/core/runner.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/runner.Tpo" "$(DEPDIR)/runner.Po"; else rm -f "$(DEPDIR)/runner.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/runner.cpp' object='runner.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o runner.obj `if test -f 'core/runner.cpp'; then $(CYGPATH_W) 'core/runner.cpp'; else $(CYGPATH_W) '$(srcdir)/core/runner.cpp'; fi` + +communicable.o: core/communicable.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT communicable.o -MD -MP -MF "$(DEPDIR)/communicable.Tpo" -c -o communicable.o `test -f 'core/communicable.cpp' || echo '$(srcdir)/'`core/communicable.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/communicable.Tpo" "$(DEPDIR)/communicable.Po"; else rm -f "$(DEPDIR)/communicable.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/communicable.cpp' object='communicable.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o communicable.o `test -f 'core/communicable.cpp' || echo '$(srcdir)/'`core/communicable.cpp + +communicable.obj: core/communicable.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT communicable.obj -MD -MP -MF "$(DEPDIR)/communicable.Tpo" -c -o communicable.obj `if test -f 'core/communicable.cpp'; then $(CYGPATH_W) 'core/communicable.cpp'; else $(CYGPATH_W) '$(srcdir)/core/communicable.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/communicable.Tpo" "$(DEPDIR)/communicable.Po"; else rm -f "$(DEPDIR)/communicable.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/communicable.cpp' object='communicable.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o communicable.obj `if test -f 'core/communicable.cpp'; then $(CYGPATH_W) 'core/communicable.cpp'; else $(CYGPATH_W) '$(srcdir)/core/communicable.cpp'; fi` + +topology.o: core/topology.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT topology.o -MD -MP -MF "$(DEPDIR)/topology.Tpo" -c -o topology.o `test -f 'core/topology.cpp' || echo '$(srcdir)/'`core/topology.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/topology.Tpo" "$(DEPDIR)/topology.Po"; else rm -f "$(DEPDIR)/topology.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/topology.cpp' object='topology.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o topology.o `test -f 'core/topology.cpp' || echo '$(srcdir)/'`core/topology.cpp + +topology.obj: core/topology.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT topology.obj -MD -MP -MF "$(DEPDIR)/topology.Tpo" -c -o topology.obj `if test -f 'core/topology.cpp'; then $(CYGPATH_W) 'core/topology.cpp'; else $(CYGPATH_W) '$(srcdir)/core/topology.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/topology.Tpo" "$(DEPDIR)/topology.Po"; else rm -f "$(DEPDIR)/topology.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/topology.cpp' object='topology.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o topology.obj `if test -f 'core/topology.cpp'; then $(CYGPATH_W) 'core/topology.cpp'; else $(CYGPATH_W) '$(srcdir)/core/topology.cpp'; fi` + +ring_topo.o: core/ring_topo.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ring_topo.o -MD -MP -MF "$(DEPDIR)/ring_topo.Tpo" -c -o ring_topo.o `test -f 'core/ring_topo.cpp' || echo '$(srcdir)/'`core/ring_topo.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ring_topo.Tpo" "$(DEPDIR)/ring_topo.Po"; else rm -f "$(DEPDIR)/ring_topo.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/ring_topo.cpp' object='ring_topo.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ring_topo.o `test -f 'core/ring_topo.cpp' || echo '$(srcdir)/'`core/ring_topo.cpp + +ring_topo.obj: core/ring_topo.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ring_topo.obj -MD -MP -MF "$(DEPDIR)/ring_topo.Tpo" -c -o ring_topo.obj `if test -f 'core/ring_topo.cpp'; then $(CYGPATH_W) 'core/ring_topo.cpp'; else $(CYGPATH_W) '$(srcdir)/core/ring_topo.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ring_topo.Tpo" "$(DEPDIR)/ring_topo.Po"; else rm -f "$(DEPDIR)/ring_topo.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/ring_topo.cpp' object='ring_topo.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ring_topo.obj `if test -f 'core/ring_topo.cpp'; then $(CYGPATH_W) 'core/ring_topo.cpp'; else $(CYGPATH_W) '$(srcdir)/core/ring_topo.cpp'; fi` +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(LIBRARIES) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(libdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libLIBRARIES mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: install-libLIBRARIES + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am uninstall-libLIBRARIES + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ + clean clean-generic clean-libLIBRARIES clean-recursive ctags \ + ctags-recursive distclean distclean-compile distclean-generic \ + distclean-recursive distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-libLIBRARIES install-man install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-recursive pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am uninstall-info-am \ + uninstall-libLIBRARIES + + +#libparadiseo_a_LIBADD = + +# peodeploy +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/Makefile.am new file mode 100644 index 000000000..2d811caa9 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/Makefile.am @@ -0,0 +1,44 @@ +# Process this file with automake to produce Makefile.in + +CXX=g++ + +INCLUDES = \ + -I$(EO_DIR)/src \ + -I$(MO_DIR)/src \ + -I$(MOEO_DIR)/src + +AM_CXXFLAGS =\ + -Wall\ + -g + +lib_LIBRARIES = libparadiseo.a + +#bin_PROGRAMS = peodeploy essai + +## Shared sources + +shared_SOURCES = \ + peo_init.cpp \ + peo_fin.cpp \ + peo_run.cpp \ + peo_param.cpp \ + peo_debug.cpp \ + thread.cpp \ + reac_thread.cpp \ + service.cpp \ + runner.cpp \ + communicable.cpp \ + topology.cpp \ + ring_topo.cpp + + +## Main library + +libparadiseo_a_SOURCES = \ + $(shared_SOURCES) + +#libparadiseo_a_LIBADD = + +## Miscellaneous Tools + +# peodeploy diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/communicable.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/communicable.cpp new file mode 100644 index 000000000..36f04eaa0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/communicable.cpp @@ -0,0 +1,70 @@ +// "comm.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include +#include + +#include "communicable.h" + +static std :: vector key_to_comm (1); /* Vector of registered cooperators */ + +static std :: map comm_to_key; /* Map of registered cooperators */ + +unsigned Communicable :: num_comm = 0; + +Communicable :: Communicable () { + + comm_to_key [this] = key = ++ num_comm; + key_to_comm.push_back (this); + sem_init (& sem_lock, 0, 1); + sem_init (& sem_stop, 0, 0); +} + +Communicable :: ~ Communicable () { + +} + +COMM_ID Communicable :: getKey () { + + return key; +} + +Communicable * getCommunicable (COMM_ID __key) { + + assert (__key < key_to_comm.size ()); + return key_to_comm [__key]; +} + +COMM_ID getKey (const Communicable * __comm) { + + return comm_to_key [__comm]; +} + +void Communicable :: lock () { + + sem_wait (& sem_lock); +} + +void Communicable :: unlock () { + + sem_post (& sem_lock); +} + +void Communicable :: stop () { + + sem_wait (& sem_stop); +} + +void Communicable :: resume () { + + sem_post (& sem_stop); +} + + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/communicable.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/communicable.h new file mode 100644 index 000000000..cdd5c0c1d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/communicable.h @@ -0,0 +1,47 @@ +// "communicable.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __communicable_h +#define __communicable_h + +#include + +typedef unsigned COMM_ID; + +class Communicable { + +public : + + Communicable (); + + virtual ~ Communicable (); + + COMM_ID getKey (); + + void lock (); /* It suspends the current process if the semaphore is locked */ + void unlock (); /* It unlocks the shared semaphore */ + + void stop (); /* It suspends the current process */ + void resume (); /* It resumes ___________ */ + +protected : + + COMM_ID key; + + sem_t sem_lock; + + sem_t sem_stop; + + static unsigned num_comm; +}; + +extern Communicable * getCommunicable (COMM_ID __key); + +//extern COMM_ID getKey (const Communicable * __comm); + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/cooperative.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/cooperative.h new file mode 100644 index 000000000..e05997b9c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/cooperative.h @@ -0,0 +1,41 @@ +// "cooperative.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __cooperative_h +#define __cooperative_h + +#include "communicable.h" +#include "runner.h" + +typedef unsigned COOP_ID; + +class Cooperative : public Communicable { + +public : + + Runner * getOwner (); + + void setOwner (Runner & __runner); + + virtual void pack () = 0; + + virtual void unpack () = 0; + + void send (Cooperative * __coop); + + virtual void notifySending (); + +private : + + Runner * owner; + +}; + +extern Cooperative * getCooperative (COOP_ID __key); + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/eoPop_comm.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/eoPop_comm.h new file mode 100644 index 000000000..c9366c22e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/eoPop_comm.h @@ -0,0 +1,32 @@ +// "eoPop_comm.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __eoPop_comm_h +#define __eoPop_comm_h + +#include + +#include "messaging.h" + +template void pack (const eoPop & __pop) { + + pack ((unsigned) __pop.size ()); + for (unsigned i = 0; i < __pop.size (); i ++) + pack (__pop [i]); +} + +template void unpack (eoPop & __pop) { + + unsigned n; + + unpack (n); + __pop.resize (n); + for (unsigned i = 0; i < n; i ++) + unpack (__pop [i]); +} +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/eoVector_comm.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/eoVector_comm.h new file mode 100644 index 000000000..27cb3fbee --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/eoVector_comm.h @@ -0,0 +1,38 @@ +// "eoVector_comm.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __eoVector_comm_h +#define __eoVector_comm_h + +#include + +#include "messaging.h" + +template void pack (const eoVector & __v) { + + pack (__v.fitness ()) ; + unsigned len = __v.size (); + pack (len); + for (unsigned i = 0 ; i < len; i ++) + pack (__v [i]); +} + +template void unpack (eoVector & __v) { + + F fit; + unpack (fit); + __v.fitness (fit); + + unsigned len; + unpack (len); + __v.resize (len); + for (unsigned i = 0 ; i < len; i ++) + unpack (__v [i]); +} + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/messaging.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/messaging.h new file mode 100644 index 000000000..573375020 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/messaging.h @@ -0,0 +1,104 @@ +// "messaging.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __mess_h +#define __mess_h + +#include + +/* Char */ +extern void pack (const char & __c); + +/* Float */ +extern void pack (const float & __f, int __nitem = 1); + +/* Double */ +extern void pack (const double & __d, int __nitem = 1); + +/* Integer */ +extern void pack (const int & __i, int __nitem = 1); + +/* Unsigned int. */ +extern void pack (const unsigned int & __ui, int __nitem = 1); + +/* Short int. */ +extern void pack (const short & __sh, int __nitem = 1); + +/* Unsigned short */ +extern void pack (const unsigned short & __ush, int __nitem = 1); + +/* Long */ +extern void pack (const long & __l, int __nitem = 1); + +/* Unsigned long */ +extern void pack (const unsigned long & __ul, int __nitem = 1); + +/* String */ +extern void pack (const char * __str); + +/* Pointer */ +template void pack (const T * __ptr) { + + pack ((unsigned long) __ptr); +} + +/* Pair */ +template void pack (const std :: pair & __pair) { + + pack (__pair.first); + pack (__pair.second); +} + +// + +/* Float */ +extern void unpack (char & __c); + +/* Float */ +extern void unpack (float & __f, int __nitem = 1); + +/* Double */ +extern void unpack (double & __d, int __nitem = 1); + +/* Integer */ +extern void unpack (int & __i, int __nitem = 1); + +/* Unsigned int. */ +extern void unpack (unsigned int & __ui, int __nitem = 1); + +/* Short int. */ +extern void unpack (short & __sh, int __nitem = 1); + +/* Unsigned short */ +extern void unpack (unsigned short & __ush, int __nitem = 1); + +/* Long */ +extern void unpack (long & __l, int __nitem = 1); + +/* Unsigned long */ +extern void unpack (unsigned long & __ul, int __nitem = 1); + +/* String */ +extern void unpack (char * __str); + +/* Pointer */ +template void unpack (T * & __ptr) { + + unsigned long p; + unpack (p); + __ptr = (T *) p; +} + +/* Pair */ +template void unpack (std :: pair & __pair) { + + unpack (__pair.first); + unpack (__pair.second); +} + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_debug.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_debug.cpp new file mode 100644 index 000000000..998a5fb25 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_debug.cpp @@ -0,0 +1,77 @@ +// "peo_debug.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "peo_debug.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "peo_debug.h" + +#define MAX_BUFF_SIZE 1000 + +#define DEBUG_PATH "./log/" + +static bool debug = true; + +static char host [MAX_BUFF_SIZE]; + +std :: vector files; + +void setDebugMode (bool __dbg) { + + debug = __dbg; + gethostname (host, MAX_BUFF_SIZE); +} + +extern int getNodeRank (); + +void initDebugging () { + + mkdir (DEBUG_PATH, S_IRWXU); + // files.push_back (stdout); + char buff [MAX_BUFF_SIZE]; + sprintf (buff, "%s/%d", DEBUG_PATH, getNodeRank ()); + files.push_back (fopen (buff, "w")); +} + +void endDebugging () { + + for (unsigned i = 0; i < files.size (); i ++) + if (files [i] != stdout) + fclose (files [i]); +} + +void printDebugMessage (const char * __mess) { + + if (debug) { + + char buff [MAX_BUFF_SIZE]; + time_t t = time (0); + + /* Date */ + sprintf (buff, "[%s][%s: ", host, ctime (& t)); + * strchr (buff, '\n') = ']'; + for (unsigned i = 0; i < files.size (); i ++) + fprintf (files [i], buff); + + /* Message */ + sprintf (buff, "%s", __mess); + + for (unsigned i = 0; i < files.size (); i ++) { + fputs (buff, files [i]); + fputs ("\n", files [i]); + fflush (files [i]); + } + } +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_debug.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_debug.h new file mode 100644 index 000000000..90e830717 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_debug.h @@ -0,0 +1,22 @@ +// "peo_debug.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peo_debug_h +#define __peo_debug_h + +extern void initDebugging (); + +extern void endDebugging (); + +extern void setDebugMode (bool __dbg = true); /* (Des)activating the Debugging mode */ + +extern void printDebugMessage (const char * __mess); /* Print a new message both on the + standard output and a target + text-file in a subdirectory) */ + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_fin.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_fin.cpp new file mode 100644 index 000000000..c5d0971ec --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_fin.cpp @@ -0,0 +1,24 @@ +// "peo_finalize.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "peo_fin.h" +#include "peo_debug.h" +#include "runner.h" +#include "rmc.h" + +void peo :: finalize () { + + printDebugMessage ("waiting for the termination of all threads"); + + joinRunners (); + + finalizeRMC (); + + printDebugMessage ("this is the end"); + endDebugging (); +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_fin.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_fin.h new file mode 100644 index 000000000..22521fa90 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_fin.h @@ -0,0 +1,17 @@ +// "peo_finalize.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peo_finalize_h +#define __peo_finalize_h + +namespace peo { + + extern void finalize (); +} + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_init.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_init.cpp new file mode 100644 index 000000000..f182bfe4f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_init.cpp @@ -0,0 +1,37 @@ +// "peo_init.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "peo_init.h" +#include "peo_param.h" +#include "peo_debug.h" +#include "rmc.h" + +namespace peo { + + int * argc; + + char * * * argv; + + void init (int & __argc, char * * & __argv) { + + argc = & __argc; + + argv = & __argv; + + /* Initializing the the Resource Management and Communication */ + initRMC (__argc, __argv); + + /* Loading the common parameters */ + loadParameters (__argc, __argv); + + /* */ + initDebugging (); + } +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_init.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_init.h new file mode 100644 index 000000000..f4d8527d1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_init.h @@ -0,0 +1,21 @@ +// "peo_init.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peo_init_h +#define __peo_init_h + +namespace peo { + + extern int * argc; + + extern char * * * argv; + + extern void init (int & __argc, char * * & __argv); +} + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_param.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_param.cpp new file mode 100644 index 000000000..235f89701 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_param.cpp @@ -0,0 +1,25 @@ +// "peo_param.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "peo_param.h" +#include "peo_debug.h" + + + +void peo :: loadParameters (int & __argc, char * * & __argv) { + + eoParser parser (__argc, __argv); + + /* Debug */ + eoValueParam debug_param ("false", "debug", "?"); + parser.processParam (debug_param); + if (debug_param.value () == "true") + setDebugMode (); +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_param.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_param.h new file mode 100644 index 000000000..1f3c55c59 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_param.h @@ -0,0 +1,17 @@ +// "peo_param.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peo_param_h +#define __peo_param_h + +namespace peo { + + extern void loadParameters (int & __argc, char * * & __argv); +} + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_run.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_run.cpp new file mode 100644 index 000000000..7dc523b55 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_run.cpp @@ -0,0 +1,19 @@ +// "peo_run.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "peo_init.h" +#include "peo_run.h" +#include "rmc.h" +#include "runner.h" + +void peo :: run () { + + startRunners (); + + runRMC (); +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_run.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_run.h new file mode 100644 index 000000000..0c4734078 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/peo_run.h @@ -0,0 +1,17 @@ +// "peo_run.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peo_run_h +#define __peo_run_h + +namespace peo { + + extern void run (); +} + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/reac_thread.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/reac_thread.cpp new file mode 100644 index 000000000..e6f02e9cb --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/reac_thread.cpp @@ -0,0 +1,36 @@ +// "reac_thread.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "reac_thread.h" + +static bool the_end = false; + +static std :: vector reac_threads; + +ReactiveThread :: ReactiveThread () { + + reac_threads.push_back (this); + sem_init (& sem, 0, 0); +} + +void ReactiveThread :: sleep () { + + sem_wait (& sem); +} + +void ReactiveThread :: wakeUp () { + + sem_post (& sem); +} + +void stopReactiveThreads () { + + the_end = true; + for (unsigned i = 0; i < reac_threads.size (); i ++) + reac_threads [i] -> wakeUp (); +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/reac_thread.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/reac_thread.h new file mode 100644 index 000000000..ac9fc79d0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/reac_thread.h @@ -0,0 +1,35 @@ +// "reac_thread.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef REAC_THREAD_H_ +#define REAC_THREAD_H_ + +#include + +#include "thread.h" + +class ReactiveThread : public Thread { + +public: + + /* Ctor */ + ReactiveThread (); + + void sleep (); + + void wakeUp (); + +private: + + sem_t sem; + +}; + +extern void stopReactiveThreads (); + +#endif /*THREAD_H_*/ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/ring_topo.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/ring_topo.cpp new file mode 100644 index 000000000..1fa1351d4 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/ring_topo.cpp @@ -0,0 +1,25 @@ +// "ring_topo.cpp" + +// (c) OPAC Team, LIFL, September 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "ring_topo.h" + +void RingTopology :: setNeighbors (Cooperative * __mig, + std :: vector & __from, + std :: vector & __to) { + __from.clear () ; + __to.clear () ; + + int len = mig.size () ; + + for (int i = 0 ; i < len ; i ++) + if (mig [i] == __mig) { + __from.push_back (mig [(i - 1 + len) % len]) ; + __to.push_back (mig [(i + 1) % len]) ; + break; + } +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/ring_topo.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/ring_topo.h new file mode 100644 index 000000000..d473d300a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/ring_topo.h @@ -0,0 +1,24 @@ +// "ring_topo.h" + +// (c) OPAC Team, LIFL, September 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __ring_topo_h +#define __ring_topo_h + +#include "topology.h" + +class RingTopology : public Topology { + +public : + + void setNeighbors (Cooperative * __mig, + std :: vector & __from, + std :: vector & __to); + +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/rmc.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/rmc.h new file mode 100644 index 000000000..cf32292e7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/rmc.h @@ -0,0 +1,18 @@ +// "rmc.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __rmc_h +#define __rmc_h + +extern void initRMC (int & __argc, char * * & __argv); + +extern void runRMC (); /* Resource Management and Communication */ + +extern void finalizeRMC (); + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/runner.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/runner.cpp new file mode 100644 index 000000000..6f8fee9de --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/runner.cpp @@ -0,0 +1,104 @@ +// "runner.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "runner.h" +#include "reac_thread.h" +#include "peo_debug.h" +#include "messaging.h" + +static unsigned num_act = 0; /* Number of active runners */ + +static std :: vector ll_threads; /* Low-level runner threads */ + +static std :: vector the_runners; + +static unsigned num_runners = 0; + +Runner :: Runner () { + + id = ++ num_runners; + the_runners.push_back (this); + sem_init (& sem_start, 0, 0); + num_act ++; +} + +extern int getNodeRank (); + +extern int getNumberOfNodes (); + +void unpackTerminationOfRunner () { + + RUNNER_ID id; + unpack (id); + num_act --; + printDebugMessage ("I'm noticed of the termination of a runner"); + if (! num_act) { + printDebugMessage ("all the runners have terminated. Now stopping the reactive threads."); + stopReactiveThreads (); + } +} + +bool atLeastOneActiveRunner () { + + return num_act; +} + +RUNNER_ID Runner :: getID () { + + return id; +} + +void Runner :: start () { + + setActive (); + sem_post (& sem_start); + run (); + terminate (); +} + +void Runner :: notifySendingTermination () { + + /* + char b [1000]; + sprintf (b, "Il reste encore %d !!!!!!!!!!!!", n); + printDebugMessage (b); + */ + printDebugMessage ("je suis informe que tout le monde a recu ma terminaison"); + setPassive (); + +} + +void Runner :: waitStarting () { + + sem_wait (& sem_start); +} + +Runner * getRunner (RUNNER_ID __key) { + + return dynamic_cast (getCommunicable (__key)); +} + +void startRunners () { + + /* Runners */ + for (unsigned i = 0; i < the_runners.size (); i ++) + if (the_runners [i] -> isLocal ()) { + addThread (the_runners [i], ll_threads); + the_runners [i] -> waitStarting (); + } + printDebugMessage ("launched the parallel runners"); +} + + +void joinRunners () { + + + joinThreads (ll_threads); +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/runner.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/runner.h new file mode 100644 index 000000000..3c7864449 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/runner.h @@ -0,0 +1,58 @@ +// "runner.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __runner_h +#define __runner_h + +#include + +#include "communicable.h" +#include "thread.h" + +typedef unsigned RUNNER_ID; + +class Runner : public Communicable, public Thread { + +public : + + Runner (); + + void start (); + + void waitStarting (); + + bool isLocal (); + + void terminate (); + + virtual void run () = 0; + + RUNNER_ID getID (); + + void packTermination (); + + void notifySendingTermination (); + +private : + + sem_t sem_start; + + unsigned id; +}; + +extern bool atLeastOneActiveRunner (); + +extern void unpackTerminationOfRunner (); + +extern Runner * getRunner (RUNNER_ID __key); + +extern void startRunners (); + +extern void joinRunners (); + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/service.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/service.cpp new file mode 100644 index 000000000..4496e0274 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/service.cpp @@ -0,0 +1,58 @@ +// "service.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "service.h" + +void Service :: setOwner (Thread & __owner) { + + owner = & __owner; +} + +Thread * Service :: getOwner () { + + return owner; +} + +Service * getService (SERVICE_ID __key) { + + return dynamic_cast (getCommunicable (__key)); +} + +void Service :: notifySendingData () { + +} +void Service :: notifySendingResourceRequest () { + + num_sent_rr --; + if (! num_sent_rr) + notifySendingAllResourceRequests (); +} + +void Service :: notifySendingAllResourceRequests () { + +} + +void Service :: packData () { + +} + +void Service :: unpackData () { + +} + +void Service :: execute () { + +} + +void Service :: packResult () { + +} + +void Service :: unpackResult () { + +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/service.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/service.h new file mode 100644 index 000000000..16f75d830 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/service.h @@ -0,0 +1,50 @@ +// "service.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __service_h +#define __service_h + +#include "communicable.h" +#include "thread.h" + +typedef unsigned SERVICE_ID; + +class Service : public Communicable { + +public : + + void setOwner (Thread & __owner); + + Thread * getOwner (); + + void requestResourceRequest (unsigned __how_many = 1); + void packResourceRequest (); + + virtual void packData (); + virtual void unpackData (); + + virtual void execute (); + + virtual void packResult (); + virtual void unpackResult (); + + virtual void notifySendingData (); + virtual void notifySendingResourceRequest (); + virtual void notifySendingAllResourceRequests (); + +private : + + Thread * owner; /* Owner thread (i.e. 'uses' that service) */ + + unsigned num_sent_rr; /* Number of RR not really sent (i.e. still in the sending queue)*/ + +}; + +extern Service * getService (SERVICE_ID __key); + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/thread.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/thread.cpp new file mode 100644 index 000000000..5445fe58e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/thread.cpp @@ -0,0 +1,81 @@ +// "thread.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "thread.h" + +static std :: vector threads; + +unsigned num_act = 0; + +Thread :: Thread () { + + threads.push_back (this); + act = false; +} + +Thread :: ~ Thread () { + + /* Nothing ! */ +} + +extern int getNodeRank (); + +void Thread :: setActive () { + + if (! act ) { + + act = true; + num_act ++; + // if (getNodeRank () == 1) + // printf ("On passe a %d\n", num_act); + } +} + +void Thread :: setPassive () { + + if (act) { + + act = false; + num_act --; + // if (getNodeRank () == 1) + // printf ("On passe a %d\n", num_act); + + } +} + +bool atLeastOneActiveThread () { + + return num_act; +} + +unsigned numberOfActiveThreads () { + + return num_act; +} + +static void * launch (void * __arg) { + + Thread * thr = (Thread *) __arg; + thr -> start (); + return 0; +} + +void addThread (Thread * __hl_thread, std :: vector & __ll_threads) { + + pthread_t * ll_thr = new pthread_t; + __ll_threads.push_back (ll_thr); + pthread_create (ll_thr, 0, launch, __hl_thread); +} + +void joinThreads (std :: vector & __threads) { + + for (unsigned i = 0; i < __threads.size (); i ++) + pthread_join (* __threads [i], 0); +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/thread.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/thread.h new file mode 100644 index 000000000..db6caa26a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/thread.h @@ -0,0 +1,48 @@ +// "thread.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef THREAD_H_ +#define THREAD_H_ + +#include + +/* A high-level thread */ + +class Thread { + +public: + + /* Ctor */ + Thread (); + + /* Dtor */ + virtual ~ Thread (); + + /* Go ! */ + virtual void start () = 0; + + void setActive ();/* It means the current process is going to send messages soon */ + void setPassive ();/* The current process is not going to perform send operations + (but it may receive messages) */ + +private : + + bool act; +}; + +extern void addThread (Thread * __hl_thread, std :: vector & __ll_threads); + +extern void joinThreads (std :: vector & __ll_threads); + +extern bool atLeastOneActiveThread (); /* It returns 'true' iff at least one process is going + to send messages */ + +extern unsigned numberOfActiveThreads (); + + +#endif /*THREAD_H_*/ diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/topology.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/topology.cpp new file mode 100644 index 000000000..46df4c3bc --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/topology.cpp @@ -0,0 +1,20 @@ +// "topo.cpp" + +// (c) OPAC Team, LIFL, September 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "topology.h" + +Topology :: ~ Topology () { + + /* Nothing ! */ +} + +void Topology :: add (Cooperative & __mig) { + + mig.push_back (& __mig) ; +} + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/topology.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/topology.h new file mode 100644 index 000000000..602e899dd --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/core/topology.h @@ -0,0 +1,33 @@ +// "topology.h" + +// (c) OPAC Team, LIFL, September 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __topology_h +#define __topology_h + +#include + +#include "cooperative.h" + +class Topology { + +public: + + virtual ~Topology (); + + void add (Cooperative & __mig); + + virtual void setNeighbors (Cooperative * __mig, + std :: vector & __from, + std :: vector & __to) = 0; + +protected: + + std :: vector mig ; +}; + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/paradiseo b/tags/paradiseo-i386-0.2/paradiseo-peo/src/paradiseo new file mode 100644 index 000000000..960f721a1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/paradiseo @@ -0,0 +1,14 @@ +// "paradiseo" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __paradiseo_ +#define __paradiseo_ + +#include "paradiseo.h" + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/paradiseo.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/paradiseo.h new file mode 100644 index 000000000..17f28765a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/paradiseo.h @@ -0,0 +1,285 @@ +// "paradiseo.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __paradiseo_h_ +#define __paradiseo_h_ + +#include +#include + + +//! \mainpage The ParadisEO-PEO Framework +//! +//! \section intro Introduction +//! +//! ParadisEO is a white-box object-oriented framework dedicated to the reusable design +//! of parallel and distributed metaheuristics (PDM). ParadisEO provides a broad range of features including evolutionary +//! algorithms (EA), local searches (LS), the most common parallel and distributed models and hybridization +//! mechanisms, etc. This high content and utility encourages its use at European level. ParadisEO is based on a +//! clear conceptual separation of the solution methods from the problems they are intended to solve. This separation +//! confers to the user a maximum code and design reuse. Furthermore, the fine-grained nature of the classes +//! provided by the framework allow a higher flexibility compared to other frameworks. ParadisEO is one of the rare +//! frameworks that provide the most common parallel and distributed models. Their implementation is portable on +//! distributed-memory machines as well as on shared-memory multiprocessors, as it uses standard libraries such as +//! MPI, PVM and PThreads. The models can be exploited in a transparent way, one has just to instantiate their associated +//! provided classes. Their experimentation on the radio network design real-world application demonstrate their +//! efficiency. +//! +//! In practice, combinatorial optimization problems are often NP-hard, CPU time-consuming, +//! and evolve over time. Unlike exact methods, metaheuristics allow to tackle large-size problems +//! instances by delivering satisfactory solutions in a reasonable time. Metaheuristics are +//! general-purpose heuristics that split in two categories: evolutionary algorithms (EA) and local +//! search methods (LS). These two families have complementary characteristics: EA allow +//! a better exploration of the search space, while LS have the power to intensify the search in +//! promising regions. Their hybridization allows to deliver robust and better solutions +//! +//! Although serial metaheuristics have a polynomial temporal complexity, they remain +//! unsatisfactory for industrial problems. Parallel and distributed computing is a powerful way +//! to deal with the performance issue of these problems. Numerous parallel and distributed +//! metaheuristics (PDM) and their implementations have been proposed, and are available on +//! theWeb. They can be reused and adapted to his/her own problems. However, the user has to +//! deeply examine the code and rewrite its problem-specific sections. The task is tedious, errorprone, +//! takes along time and makes harder the produced code maintenance. A better way to +//! reuse the code of existing PDM is the reuse through libraries. These are often +//! more reliable as they are more tested and documented. They allow a better maintainability +//! and efficiency. However, libraries do not allow the reuse of design. +//! +//! \section parallel_metaheuristics Parallel and distributed metaheuristics +//! +//! \subsection parallel_distributed Parallel distributed evolutionary algorithms +//! +//! Evolutionary Algorithms (EA) are based on the iterative improvement of a +//! population of solutions. At each step, individuals are selected, paired and recombined in order +//! to generate new solutions that replace other ones, and so on. As the algorithm converges, +//! the population is mainly composed of individuals well adapted to the "environment", for +//! instance the problem. The main features that characterize EA are the way the population is +//! initialized, the selection strategy (deterministic/stochastic) by fostering "good" solutions, +//! the replacement strategy that discards individuals, and the continuation/stopping criterion +//! to decide whether the evolution should go on or not. +//! +//! Basically, three major parallel and distributed models for EA can been distinguished: +//! the island (a)synchronous cooperative model, the parallel evaluation of the +//! population, and the distributed evaluation of a single solution. +//!
    +//!
  • Island (a)synchronous cooperative model. Different EA are simultaneously deployed to +//! cooperate for computing better and robust solutions. They exchange in an asynchronous +//! way genetic stuff to diversify the search. The objective is to allow to delay the global +//! convergence, especially when theEAare heterogeneous regarding the variation operators. +//! The migration of individuals follows a policy defined by few parameters: the migration +//! decision criterion, the exchange topology, the number of emigrants, the emigrants selection +//! policy, and the replacement/integration policy.
  • +//! +//!
  • Parallel evaluation of the population. It is required as it is in general the most timeconsuming. +//! The parallel evaluation follows the centralized model. The farmer applies +//! the following operations: selection, transformation and replacement as they require a +//! global management of the population. At each generation, it distributes the set of new +//! solutions between differentworkers. These evaluate and return back the solutions and their +//! quality values. An efficient execution is often obtained particularly when the evaluation +//! of each solution is costly. The two main advantages of an asynchronous model over +//! the synchronous model are: (1) the fault tolerance of the asynchronous model; (2) the +//! robustness in case the fitness computation can take very different computation times (e.g. +//! for nonlinear numerical optimization). Whereas some time-out detection can be used to +//! address the former issue, the latter one can be partially overcome if the grain is set to very +//! small values, as individuals will be sent out for evaluations upon request of the workers.
  • +//! +//!
  • Distributed evaluation of a single solution. The quality of each solution is evaluated in +//! a parallel centralized way. That model is particularly interesting when the evaluation +//! function can be itself parallelized as it is CPU time-consuming and/or IO intensive. In +//! that case, the function can be viewed as an aggregation of a certain number of partial +//! functions. The partial functions could also be identical if for example the problem to deal +//! with is a data mining one. The evaluation is thus data parallel and the accesses to data +//! base are performed in parallel. Furthermore, a reduction operation is performed on the +//! results returned by the partial functions. As a summary, for this model the user has to +//! indicate a set of partial functions and an aggregation operator of these.
  • +//!
+//! +//! \subsection parallel_ls Parallel distributed local searches +//! +//! \subsubsection local_searches Local searches +//! +//! All metaheuristics dedicated to the improvement of a single solution +//! are based on the concept of neighborhood. They start from a solution randomly generated or +//! obtained from another optimization algorithm, and update it, step by step, by replacing the +//! current solution by one of its neighboring candidates. Some criterion have been identified to +//! differentiate such searches: the heuristic internal memory, the choice of the initial solution, +//! the candidate solutions generator, and the selection strategy of candidate moves. Three main +//! algorithms of local search stand out: Hill Climbing (HC), Simulated +//! Annealing (SA) and Tabu Search (TS). +//! +//! \subsubsection parallel_local_searches Parallel local searches +//! +//! Two parallel distributed models are commonly used in the literature: the parallel distributed +//! exploration of neighboring candidate solutions model, and the multi-start model. +//!
    +//!
  • Parallel exploration of neighboring candidates. It is a low-level Farmer-Worker model +//! that does not alter the behavior of the heuristic. A sequential search computes the same +//! results slower.At the beginning of each iteration, the farmer duplicates the current solution +//! between distributed nodes. Each one manages some candidates and the results are returned to the farmer. +//! The model is efficient if the evaluation of a each solution is time-consuming and/or there are a great +//! deal of candidate neighbors to evaluate. This is obviously not applicable to SA since only one candidate +//! is evaluated at each iteration. Likewise, the efficiency of the model for HC is not always guaranteed as +//! the number of neighboring solutions to process before finding one that improves the current objective function may +//! be highly variable.
  • +//! +//!
  • Multi-start model. It consists in simultaneously launching several local searches. They +//! may be heterogeneous, but no information is exchanged between them. The resultswould +//! be identical as if the algorithms were sequentially run.Very often deterministic algorithms +//! differ by the supplied initial solution and/or some other parameters. This trivial model is +//! convenient for low-speed networks of workstations.
  • +//!
+//! +//! \section hybridization Hybridization +//! +//! Recently, hybrid metaheuristics have gained a considerable interest. For many +//! practical or academic optimization problems, the best found solutions are obtained by +//! hybrid algorithms. Combinations of different metaheuristics have provided very powerful +//! search methods. Two levels and two modes +//! of hybridization have been distinguished: Low and High levels, and Relay and Cooperative modes. +//! The low-level hybridization addresses the functional composition of a single optimization +//! method. A function of a given metaheuristic is replaced by another metaheuristic. On the +//! contrary, for high-level hybrid algorithms the different metaheuristics are self-containing, +//! meaning no direct relationship to their internal working is considered. On the other hand, +//! relay hybridization means a set of metaheuristics is applied in a pipeline way. The output +//! of a metaheuristic (except the last) is the input of the following one (except the first). +//! Conversely, co-evolutionist hybridization is a cooperative optimization model. Each metaheuristic +//! performs a search in a solution space, and exchange solutions with others. +//! +//! \section paradiseo_goals Paradiseo goals and architecture +//! +//! The "EO" part of ParadisEO means Evolving Objects. EO is a C++ LGPL open source +//! framework and includes a paradigm-free Evolutionary Computation library (EOlib) +//! dedicated to the flexible design of EA through evolving objects superseding the most common +//! dialects (Genetic Algorithms, Evolution Strategies, Evolutionary Programming and +//! Genetic Programming). Furthermore, EO integrates several services including visualization +//! facilities, on-line definition of parameters, application check-pointing, etc. ParadisEO is an +//! extended version of the EO framework. The extensions include local search methods, hybridization +//! mechanisms, parallelism and distribution mechanisms, and other features that +//! are not addressed in this paper such as multi-objective optimization and grid computing. In +//! the next sections, we present the motivations and goals of ParadisEO, its architecture and +//! some of its main implementation details and issues. +//! +//! \subsection motivation Motivations and goals +//! +//! A framework is normally intended to be exploited by as many users as possible. Therefore, +//! its exploitation could be successful only if some important user criteria are satisfied. The +//! following criteria are the major of them and constitute the main objectives of the ParadisEO +//! framework: +//! +//!
    +//!
  • Maximum design and code reuse. The framework must provide for the user a whole +//! architecture design of his/her solution method. Moreover, the programmer may redo as +//! little code as possible. This objective requires a clear and maximal conceptual separation +//! between the solution methods and the problems to be solved, and thus a deep domain +//! analysis. The user might therefore develop only the minimal problem-specific code.
  • +//! +//!
  • Flexibility and adaptability. It must be possible for the user to easily add new features/ +//! metaheuristics or change existing ones without implicating other components. Furthermore, +//! as in practice existing problems evolve and new others arise these have to be +//! tackled by specializing/adapting the framework components.
  • +//! +//!
  • Utility. The framework must allow the user to cover a broad range of metaheuristics, +//! problems, parallel distributed models, hybridization mechanisms, etc.
  • +//! +//!
  • Transparent and easy access to performance and robustness. As the optimization applications +//! are often time-consuming the performance issue is crucial. Parallelism and +//! distribution are two important ways to achieve high performance execution. In order to +//! facilitate its use it is implemented so that the user can deploy his/her parallel algorithms in +//! a transparent manner. Moreover, the execution of the algorithms must be robust to guarantee +//! the reliability and the quality of the results. The hybridization mechanism allows +//! to obtain robust and better solutions.
  • +//! +//!
  • Portability. In order to satisfy a large number of users the framework must support +//! different material architectures and their associated operating systems.
  • +//!
+//! +//! \subsection architecture ParadisEO architecture +//! +//! The architecture of ParadisEO is multi-layer and modular allowing to achieve the objectives +//! quoted above. This allows particularly a high flexibility and adaptability, an +//! easier hybridization, and more code and design reuse. The architecture has three layers +//! identifying three major categories of classes: Solvers, Runners and Helpers. +//!
    +//!
  • Helpers. Helpers are low-level classes that perform specific actions related to the evolution +//! or search process. They are split in two categories: Evolutionary helpers (EH) +//! and Local search helpers (LSH). EH include mainly the transformation, selection and +//! replacement operations, the evaluation function and the stopping criterion. LSH can be +//! generic such as the neighborhood explorer class, or specific to the local search metaheuristic +//! like the tabu list manager class in the Tabu Search solution method. On the +//! other hand, there are some special helpers dedicated to the management of parallel and +//! distributed models 2 and 3, such as the communicators that embody the communication +//! services. +//! +//! Helpers cooperate between them and interact with the components of the upper layer +//! i.e. the runners. The runners invoke the helpers through function parameters. Indeed, +//! helpers have not their own data, but they work on the internal data of the runners.
  • +//! +//!
  • Runners. The Runners layer contains a set of classes that implement the metaheuristics +//! themselves. They perform the run of the metaheuristics from the initial state or +//! population to the final one. One can distinguish the Evolutionary runners (ER) such as +//! genetic algorithms, evolution strategies, etc., and Local search runners (LSR) like tabu +//! search, simulated annealing and hill climbing. Runners invoke the helpers to perform +//! specific actions on their data. For instance, an ER may ask the fitness function evaluation +//! helper to evaluate its population. An LSR asks the movement helper to perform +//! a given movement on the current state. Furthermore, runners can be serial or parallel +//! distributed.
  • +//! +//!
  • Solvers. Solvers are devoted to control the evolution process and/or the search. They +//! generate the initial state (solution or population) and define the strategy for combining +//! and sequencing different metaheuristics. Two types of solvers can be distinguished. +//! Single metaheuristic solvers (SMS) and Multiple metaheuristics solvers (MMS). SMSs +//! are dedicated to the execution of only one metaheuristic.MMS are more complex as they +//! control and sequence several metaheuristics that can be heterogeneous. Solvers interact with +//! the user by getting the input data and delivering the output (best solution, statistics, +//! etc).
  • +//!
+//! +//! According to the generality of their embedded features, the classes of the architecture split +//! in two major categories: Provided classes and Required classes. Provided classes embody +//! the factored out part of the metaheuristics. They are generic, implemented in the framework, +//! and ensure the control at run time. Required classes are those that must be supplied by the +//! user. They encapsulate the problem-specific aspects of the application. These classes are +//! fixed but not implemented in ParadisEO. The programmer has the burden to develop them +//! using the OO specialization mechanism. +//! +//! \section tutorials ParadisEO-PEO Tutorials +//! +//! The basisc of the ParadisEO framework philosophy are exposed in a few simple tutorials: +//! +//! All the presented examples have as case study the traveling salesman problem (TSP). Different operators and auxiliary objects were designed, +//! standing as a common shared source code base. While not being +//! part of the ParadisEO-PEO framework, it may represent a startpoint for a better understanding of the presented tutorials. + + + +#include "core/peo_init.h" +#include "core/peo_run.h" +#include "core/peo_fin.h" + +#include "core/eoVector_comm.h" + +#include "peoEA.h" + +/* Parallel steps of the E.A. */ +#include "peoSeqTransform.h" +#include "peoParaSGATransform.h" +#include "peoSeqPopEval.h" +#include "peoParaPopEval.h" + +/* Cooperative island model */ +#include "core/ring_topo.h" +#include "peoAsyncIslandMig.h" +#include "peoSyncIslandMig.h" + +/* Synchronous multi-start model */ +#include "peoSyncMultiStart.h" + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoAggEvalFunc.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoAggEvalFunc.h new file mode 100644 index 000000000..c7f492305 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoAggEvalFunc.h @@ -0,0 +1,30 @@ +// "peoAggEvalFunc.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoAggEvalFunc_h +#define __peoAggEvalFunc_h + +#include + +//! Interface class for creating an aggregate evaluation function. + +//! The peoAggEvalFunc class offers only the interface for creating aggregate evaluation functions - there +//! are no direct internal functions provided. The class inherits public eoBF< EOT&, const typename EOT :: Fitness&, void > +//! thus requiring, for the derived classes, the creation of a function having the following signature: +//! +//! +//! +//!
void operator()( EOT& __eot, const typename EOT :: Fitness& __partial_fittness );    
+//! +//! The aggregation object is called in an iterative manner for each of the results obtained by applying partial evaluation functions. +template< class EOT > class peoAggEvalFunc : public eoBF< EOT&, const typename EOT :: Fitness&, void > { + +}; + + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoAsyncIslandMig.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoAsyncIslandMig.h new file mode 100644 index 000000000..8c82e2f5f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoAsyncIslandMig.h @@ -0,0 +1,258 @@ +// "peoAsyncIslandMig.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoAsyncIslandMig_h +#define __peoAsyncIslandMig_h + + +#include + +#include + +#include +#include +#include +#include + +#include "core/topology.h" +#include "core/cooperative.h" +#include "core/eoPop_comm.h" +#include "core/peo_debug.h" + + +//! Class providing the basis for the asynchronous island migration model. + +//! The peoAsyncIslandMig class offers the elementary basis for implementating an +//! asynchronous island migration model - requires the specification of several basic +//! parameters, i.e. continuation criterion, selection and replacement strategies, +//! a topological model and the source and destination population for the migrating individuals. +//! As opposed to the synchronous migration model, in the asynchronous migration approach, there is +//! no synchronization step between islands after performing the emigration phase. +//! +//! The migration operator is called at the end of each generation of an evolutionary algorithms +//! as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm: +//! +//! +//! +//! +//! +//! +//! +//! +//!
do {    
         select( population, offsprings );   // select the offsprings from the current population
         transform( offsprings );   // crossover and mutation operators are applied on the selected offsprings
         evaluate( offsprings );   // evaluation step of the resulting offsprings
         replace( population, offsprings );   // replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy
} while ( eaCheckpointContinue( population ) );   // checkpoint operators are applied on the current population, including the migration operator, if any specified
+//! +//! Constructing an asynchronous island migration model requires having defined (1) a topological migration model, +//! (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, +//! and (4) an owner object must be set. The owner object must be derived from the Runner class (for example +//! a peoEA object represents a possible owner). +//! A simple example is offered bellow: +//! +//!
    +//!
  1. topological model to be followed when performing migrations:
    +//!
    +//! +//! +//!
    RingTopology migTopology;   // a simple ring topological model - each island communicates with two other islands
    +//!
  2. +//! +//!
  3. the continuation criterion, selection and replacement strategy etc. are defined:
    +//!
    +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//!
    eoPop< EOT > population( POP_SIZE, popInitializer );   // population of individuals to be used for the evolutionary algorithm
       
    eoPeriodicContinue< EOT > migCont( MIG_FREQ );   // migrations occur periodically at MIG_FREQ iterations
    eoRandomSelect< EOT > migSelectStrategy;   // selection strategy - in this case a random selection is applied
    eoSelectNumber< EOT > migSelect( migSelectStrategy, MIG_SIZE );   // number of individuals to be selected using the specified strategy
    eoPlusReplacement< EOT > migReplace;   // immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals
       
    peoAsyncIslandMig< EOT > asyncMigration( +//!
             migCont, migSelect, migReplace, migTopology, +//!
             population, population +//!
    );  
    // asynchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated
    +//!
  4. +//! +//!
  5. creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope):
    +//!
    +//! +//! +//! +//! +//! +//! +//! +//!
    ...    
    eoGenContinue< EOT > eaCont( NUM_GEN );   // the evolutionary algorithm will stop after NUM_GEN generations
    eoCheckPoint< EOT > eaCheckpointContinue( eaCont );   // number of individuals to be selected using the specified strategy
    ...    
    eaCheckpointContinue.add( asyncMigration );   // adding the migration operator as checkpoint element
    ...    
    +//!
  6. +//! +//!
  7. definition of an owner evolutionary algorithm (an object inheriting the Runner class):
    +//!
    +//! +//! +//! +//! +//!
    peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace);   // evolutionary algorithm having as checkpoint the eaCheckpointContinue object defined above
    asyncMigration.setOwner( eaAlg );   // setting the evolutionary algorithm as owner of the migration object
    eaAlg( population );   // applying the evolutionary algorithm on a given population
    +//!
  8. +//!
+//! +//! The source and the destination population for the migration object were specified as being the same, in step no. 2, +//! as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique +//! population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations +//! as source and destination for the emigrant and immigrant individuals respectively. +//! +//! The above steps only create an asynchronous migration object associated to an evolutionary algorithm. The creation of several +//! islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and +//! the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 +//! (the same C++ migTopology object has to be passed as parameter for all the migration objects, in order to interconnect them). +template< class EOT > class peoAsyncIslandMig : public Cooperative, public eoUpdater { + +public: + + //! Constructor for the peoAsyncIslandMig class; the characteristics of the migration model are defined + //! through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. + //! + //! @param eoContinue< EOT >& __cont - continuation criterion specifying whether the migration is performed or not; + //! @param eoSelect< EOT >& __select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population; + //! @param eoReplacement< EOT >& __replace - replacement strategy used for integrating the immigrant individuals in the destination population; + //! @param Topology& __topology - topological model to be followed when performing migrations; + //! @param eoPop< EOT >& __source - source population from which the emigrant individuals are selected; + //! @param eoPop< EOT >& __destination - destination population in which the immigrant population are integrated. + peoAsyncIslandMig( + eoContinue< EOT >& __cont, + eoSelect< EOT >& __select, + eoReplacement< EOT >& __replace, + Topology& __topology, + eoPop< EOT >& __source, + eoPop< EOT >& __destination + ); + + //! Function operator to be called as checkpoint for performing the migration step. The emigrant individuals are selected + //! from the source population and sent to the next island (defined by the topology object) while the immigrant + //! individuals are integrated in the destination population. There is no need to explicitly call the function - the + //! wrapper checkpoint object (please refer to the above example) will perform the call when required. + void operator()(); + + //! Auxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function. + void pack(); + //! Auxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function. + void unpack(); + + +private: + + void emigrate(); + void immigrate(); + + +private: + + eoContinue< EOT >& cont; // continuator + eoSelect< EOT >& select; // the selection strategy + eoReplacement< EOT >& replace; // the replacement strategy + Topology& topology; // the neighboring topology + + // source and destination populations + eoPop< EOT >& source; + eoPop< EOT >& destination; + + // immigrants & emigrants in the queue + std :: queue< eoPop< EOT > > imm; + std :: queue< eoPop< EOT > > em; + + std :: queue< Cooperative* > coop_em; +}; + + +template< class EOT > peoAsyncIslandMig< EOT > :: peoAsyncIslandMig( + + eoContinue< EOT >& __cont, + eoSelect< EOT >& __select, + eoReplacement< EOT >& __replace, + Topology& __topology, + eoPop< EOT >& __source, + eoPop< EOT >& __destination + + ) : cont( __cont ), select( __select ), replace( __replace ), topology( __topology ), source( __source ), destination( __destination ) +{ + + __topology.add( *this ); +} + + +template< class EOT > void peoAsyncIslandMig< EOT > :: pack() +{ + + lock(); { + + :: pack( coop_em.front()->getKey() ); + :: pack( em.front() ); + coop_em.pop(); + em.pop(); + } + unlock(); +} + + +template< class EOT > void peoAsyncIslandMig< EOT > :: unpack() +{ + + lock(); { + + eoPop< EOT > mig; + :: unpack( mig ); + imm.push( mig ); + } + unlock(); +} + + +template< class EOT > void peoAsyncIslandMig< EOT > :: emigrate() +{ + + std :: vector< Cooperative* >in, out; + topology.setNeighbors( this, in, out ); + + for ( unsigned i = 0; i < out.size(); i++ ) { + + eoPop< EOT > mig; + select( source, mig ); + em.push( mig ); + coop_em.push( out[i] ); + send( out[i] ); + printDebugMessage( "sending some emigrants." ); + } +} + + +template< class EOT > void peoAsyncIslandMig< EOT > :: immigrate() +{ + + lock(); { + + while ( !imm.empty() ) { + + replace( destination, imm.front() ); + imm.pop(); + printDebugMessage( "receiving some immigrants." ); + } + } + unlock(); +} + + +template< class EOT > void peoAsyncIslandMig< EOT > :: operator()() { + + if ( !cont( source ) ) { + + emigrate(); // sending emigrants + immigrate(); // receiving immigrants + } +} + + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoEA.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoEA.h new file mode 100644 index 000000000..516b70af9 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoEA.h @@ -0,0 +1,145 @@ +// "peoEA.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoEA_h +#define __peoEA_h + +#include +#include +#include +#include +#include + +#include "peoPopEval.h" +#include "peoTransform.h" +#include "core/runner.h" +#include "core/peo_debug.h" + +//! Class providing an elementary ParadisEO evolutionary algorithm. + +//! The peoEA class offers an elementary evolutionary algorithm implementation. In addition, as compared +//! with the algorithms provided by the EO framework, the peoEA class has the underlying necessary structure +//! for including, for example, parallel evaluation and parallel transformation operators, migration operators +//! etc. Although there is no restriction on using the algorithms provided by the EO framework, the drawback resides +//! in the fact that the EO implementation is exclusively sequential and, in consequence, no parallelism is provided. +//! A simple example for constructing a peoEA object: +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//!
...    
eoPop< EOT > population( POP_SIZE, popInitializer );   // creation of a population with POP_SIZE individuals - the popInitializer is a functor to be called for each individual
   
eoGenContinue< EOT > eaCont( NUM_GEN );   // number of generations for the evolutionary algorithm
eoCheckPoint< EOT > eaCheckpointContinue( eaCont );   // checkpoint incorporating the continuation criterion - startpoint for adding other checkpoint objects
   
peoSeqPopEval< EOT > eaPopEval( evalFunction );   // sequential evaluation functor wrapper - evalFunction represents the actual evaluation functor
   
eoRankingSelect< EOT > selectionStrategy;   // selection strategy for creating the offspring population - a simple ranking selection in this case
eoSelectNumber< EOT > eaSelect( selectionStrategy, POP_SIZE );   // the number of individuals to be selected for creating the offspring population
eoRankingSelect< EOT > selectionStrategy;   // selection strategy for creating the offspring population - a simple ranking selection in this case
   
eoSGATransform< EOT > transform( crossover, CROSS_RATE, mutation, MUT_RATE );   // transformation operator - crossover and mutation operators with their associated probabilities
peoSeqTransform< EOT > eaTransform( transform );   // ParadisEO specific sequential operator - a parallel version may be specified in the same manner
   
eoPlusReplacement< EOT > eaReplace;   // replacement strategy - for integrating the offspring resulting individuals in the initial population
   
peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace );   // ParadisEO evolutionary algorithm integrating the above defined objects
eaAlg( population );   // specifying the initial population for the algorithm
...    
+template < class EOT > class peoEA : public Runner { + +public: + + //! Constructor for the evolutionary algorithm object - several basic parameters have to be specified, + //! allowing for different levels of parallelism. Depending on the requirements, a sequential or a parallel + //! evaluation operator may be specified or, in the same manner, a sequential or a parallel transformation + //! operator may be given as parameter. Out of the box objects may be provided, from the EO package, for example, + //! or custom defined ones may be specified, provided that they are derived from the correct base classes. + //! + //! @param eoContinue< EOT >& __cont - continuation criterion specifying whether the algorithm should continue or not; + //! @param peoPopEval< EOT >& __pop_eval - evaluation operator; it allows the specification of parallel evaluation operators, aggregate evaluation functions, etc.; + //! @param eoSelect< EOT >& __select - selection strategy to be applied for constructing a list of offspring individuals; + //! @param peoTransform< EOT >& __trans - transformation operator, i.e. crossover and mutation; allows for sequential or parallel transform; + //! @param eoReplacement< EOT >& __replace - replacement strategy for integrating the offspring individuals in the initial population; + peoEA( + eoContinue< EOT >& __cont, + peoPopEval< EOT >& __pop_eval, + eoSelect< EOT >& __select, + peoTransform< EOT >& __trans, + eoReplacement< EOT >& __replace + ); + + //! Evolutionary algorithm function - a side effect of the fact that the class is derived from the Runner class, + //! thus requiring the existence of a run function, the algorithm being executed on a distinct thread. + void run(); + + //! Function operator for specifying the population to be associated with the algorithm. + //! + //! @param eoPop< EOT >& __pop - initial population of the algorithm, to be iteratively evolved; + void operator()( eoPop< EOT >& __pop ); + +private: + + + eoContinue< EOT >& cont; + peoPopEval< EOT >& pop_eval; + eoSelect< EOT >& select; + peoTransform< EOT >& trans; + eoReplacement< EOT >& replace; + eoPop< EOT >* pop; +}; + + +template < class EOT > peoEA< EOT > :: peoEA( + + eoContinue< EOT >& __cont, + peoPopEval< EOT >& __pop_eval, + eoSelect< EOT >& __select, + peoTransform< EOT >& __trans, + eoReplacement< EOT >& __replace + + ) : cont( __cont ), pop_eval( __pop_eval ), select( __select ), trans( __trans ), replace( __replace ) +{ + + trans.setOwner( *this ); + pop_eval.setOwner( *this ); +} + + +template< class EOT > void peoEA< EOT > :: operator ()( eoPop< EOT >& __pop ) { + + pop = &__pop; +} + + +template< class EOT > void peoEA< EOT > :: run() { + + printDebugMessage( "performing the first evaluation of the population." ); + pop_eval( *pop ); + + do { + + eoPop< EOT > off; + + printDebugMessage( "performing the selection step." ); + select( *pop, off ); + trans( off ); + + printDebugMessage( "performing the evaluation of the population." ); + pop_eval( off ); + + printDebugMessage( "performing the replacement of the population." ); + replace( *pop, off ); + + printDebugMessage( "deciding of the continuation." ); + + } while ( cont( *pop ) ); +} + + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoNoAggEvalFunc.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoNoAggEvalFunc.h new file mode 100644 index 000000000..d3a701123 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoNoAggEvalFunc.h @@ -0,0 +1,34 @@ +// "peoNoAggEvalFunc.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoNoAggEvalFunc_h +#define __peoNoAggEvalFunc_h + +#include "peoAggEvalFunc.h" + +//! Class providing a simple interface for associating a fitness value to a specified individual. + +//! The peoNoAggEvalFunc class does nothing more than an association between a fitness value and a specified individual. +//! The class is provided as a mean of declaring that no aggregation is required for the evaluation function - the fitness +//! value is explicitly specified. +template< class EOT > class peoNoAggEvalFunc : public peoAggEvalFunc< EOT > { + +public : + + //! Operator which sets as fitness the __fit value for the __sol individual + void operator()( EOT& __sol, const typename EOT :: Fitness& __fit ); +}; + + +template< class EOT > void peoNoAggEvalFunc< EOT > :: operator()( EOT& __sol, const typename EOT :: Fitness& __fit ) { + + __sol.fitness( __fit ); +} + + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoParaPopEval.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoParaPopEval.h new file mode 100644 index 000000000..8e9760d89 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoParaPopEval.h @@ -0,0 +1,225 @@ +// "peoParaPopEval.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoParaPopEval_h +#define __peoParaPopEval_h + +#include +#include + +#include "core/messaging.h" +#include "core/peo_debug.h" +#include "peoAggEvalFunc.h" +#include "peoNoAggEvalFunc.h" + + +//! Parallel evaluation functor wrapper. + +//! The peoParaPopEval represents a wrapper for creating a functor capable of applying in parallel +//! an EO-derived evaluation functor. The class offers the possibility of chosing between a single-function evaluation +//! and an aggregate evaluation function, including several sub-evalution functions. +template< class EOT > class peoParaPopEval : public peoPopEval< EOT > { + +public: + + using peoPopEval< EOT > :: requestResourceRequest; + using peoPopEval< EOT > :: resume; + using peoPopEval< EOT > :: stop; + using peoPopEval< EOT > :: getOwner; + + //! Constructor function - an EO-derived evaluation functor has to be specified; an internal reference + //! is set towards the specified evaluation functor. + //! + //! @param eoEvalFunc< EOT >& __eval_func - EO-derived evaluation functor to be applied in parallel on each individual of a specified population + peoParaPopEval( eoEvalFunc< EOT >& __eval_func ); + + //! Constructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function. + //! + //! @param const std :: vector< eoEvalFunc < EOT >* >& __funcs - vector of EO-derived partial evaluation functors; + //! @param peoAggEvalFunc< EOT >& __merge_eval - aggregation functor for creating a fitness value out of the partial fitness values. + peoParaPopEval( const std :: vector< eoEvalFunc < EOT >* >& __funcs, peoAggEvalFunc< EOT >& __merge_eval ); + + //! Operator for applying the evaluation functor (direct or aggregate) for each individual of the specified population. + //! + //! @param eoPop< EOT >& __pop - population to be evaluated by applying the evaluation functor specified in the constructor. + void operator()( eoPop< EOT >& __pop ); + + //! Auxiliary function for transferring data between the process requesting an evaluation operation and the process that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void packData(); + + //! Auxiliary function for transferring data between the process requesting an evaluation operation and the process that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void unpackData(); + + //! Auxiliary function - it calls the specified evaluation functor(s). There is no need to explicitly call the function. + void execute(); + + //! Auxiliary function for transferring data between the process requesting an evaluation operation and the process that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void packResult(); + + //! Auxiliary function for transferring data between the process requesting an evaluation operation and the process that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void unpackResult(); + + //! Auxiliary function for notifications between the process requesting an evaluation operation and the processes that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void notifySendingData(); + + //! Auxiliary function for notifications between the process requesting an evaluation operation and the processes that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void notifySendingAllResourceRequests(); + +private: + + + const std :: vector< eoEvalFunc < EOT >* >& funcs; + std :: vector< eoEvalFunc < EOT >* > one_func; + + peoAggEvalFunc< EOT >& merge_eval; + peoNoAggEvalFunc< EOT > no_merge_eval; + + std :: queue< EOT* >tasks; + + std :: map< EOT*, std :: pair< unsigned, unsigned > > progression; + + unsigned num_func; + + EOT sol; + + EOT *ad_sol; + + unsigned total; +}; + + +template< class EOT > peoParaPopEval< EOT > :: peoParaPopEval( eoEvalFunc< EOT >& __eval_func ) : + + funcs( one_func ), merge_eval( no_merge_eval ) +{ + + one_func.push_back( &__eval_func ); +} + + +template< class EOT > peoParaPopEval< EOT > :: peoParaPopEval( + + const std :: vector< eoEvalFunc< EOT >* >& __funcs, + peoAggEvalFunc< EOT >& __merge_eval + + ) : funcs( __funcs ), merge_eval( __merge_eval ) +{ + +} + + +template< class EOT > void peoParaPopEval< EOT >::operator()( eoPop< EOT >& __pop ) { + + for ( unsigned i = 0; i < __pop.size(); i++ ) { + + __pop[ i ].fitness( typename EOT :: Fitness() ); + + progression[ &__pop[ i ] ].first = funcs.size() - 1; + progression[ &__pop[ i ] ].second = funcs.size(); + + for ( unsigned j = 0; j < funcs.size(); j++ ) { + /* Queuing the 'invalid' solution and its associated owner */ + tasks.push( &__pop[ i ] ); + } + } + + total = funcs.size() * __pop.size(); + requestResourceRequest( funcs.size() * __pop.size() ); + stop(); +} + + +template< class EOT > void peoParaPopEval< EOT > :: packData() { + + // printDebugMessage ("debut pakc data"); + pack( progression[ tasks.front() ].first-- ); + + /* Packing the contents :-) of the solution */ + pack( *tasks.front() ); + + /* Packing the addresses of both the solution and the owner */ + pack( tasks.front() ); + tasks.pop( ); +} + + +template< class EOT > void peoParaPopEval< EOT > :: unpackData() { + + unpack( num_func ); + /* Unpacking the solution */ + unpack( sol ); + /* Unpacking the @ of that one */ + unpack( ad_sol ); +} + + +template< class EOT > void peoParaPopEval< EOT > :: execute() { + + /* Computing the fitness of the solution */ + funcs[ num_func ]->operator()( sol ); +} + + +template< class EOT > void peoParaPopEval< EOT > :: packResult() { + + /* Packing the fitness of the solution */ + pack( sol.fitness() ); + /* Packing the @ of the individual */ + pack( ad_sol ); +} + + +template< class EOT > void peoParaPopEval< EOT > :: unpackResult() { + + typename EOT :: Fitness fit; + + /* Unpacking the computed fitness */ + unpack( fit ); + + /* Unpacking the @ of the associated individual */ + unpack( ad_sol ); + + + /* Associating the fitness the local solution */ + merge_eval( *ad_sol, fit ); + + progression[ ad_sol ].second--; + + /* Notifying the container of the termination of the evaluation */ + if ( !progression[ ad_sol ].second ) { + + progression.erase( ad_sol ); + } + + total--; + if ( !total ) { + + getOwner()->setActive(); + resume(); + } +} + + +template< class EOT > void peoParaPopEval< EOT > :: notifySendingData() { + +} + + +template< class EOT > void peoParaPopEval< EOT > :: notifySendingAllResourceRequests() { + + getOwner()->setPassive(); +} + + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoParaSGATransform.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoParaSGATransform.h new file mode 100644 index 000000000..6e64a25b2 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoParaSGATransform.h @@ -0,0 +1,155 @@ +// "peoParaSGATransform.h" + +//(c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoParaSGATransform_h +#define __peoParaSGATransform_h + +#include "peoTransform.h" +#include "core/thread.h" +#include "core/messaging.h" +#include "core/peo_debug.h" + + +extern int getNodeRank(); + + +template< class EOT > class peoParaSGATransform : public peoTransform< EOT > { + +public: + + using peoTransform< EOT > :: requestResourceRequest; + using peoTransform< EOT > :: resume; + using peoTransform< EOT > :: stop; + using peoTransform< EOT > :: getOwner; + + peoParaSGATransform( + + eoQuadOp< EOT >& __cross, + double __cross_rate, + eoMonOp< EOT >& __mut, + double __mut_rate + ); + + void operator()( eoPop< EOT >& __pop ); + + void packData(); + + void unpackData(); + + void execute(); + + void packResult(); + + void unpackResult(); + + void notifySendingData(); + void notifySendingAllResourceRequests(); + +private: + + eoQuadOp< EOT >& cross; + double cross_rate; + + eoMonOp< EOT >& mut; + double mut_rate; + + unsigned idx; + + eoPop< EOT >* pop; + + EOT father, mother; + + unsigned num_term; +}; + +template< class EOT > peoParaSGATransform< EOT > :: peoParaSGATransform( + + eoQuadOp< EOT >& __cross, + double __cross_rate, + eoMonOp < EOT >& __mut, + double __mut_rate + + ) : cross( __cross ), cross_rate( __cross_rate ), mut( __mut ), mut_rate( __mut_rate ) +{ + +} + + +template< class EOT > void peoParaSGATransform< EOT > :: packData() { + + pack( idx ); + :: pack( pop->operator[]( idx++ ) ); + :: pack( pop->operator[]( idx++ ) ); +} + + +template< class EOT > void peoParaSGATransform< EOT > :: unpackData() { + + unpack( idx ); + :: unpack( father ); + :: unpack( mother ); +} + + +template< class EOT > void peoParaSGATransform< EOT > :: execute() { + + if( rng.uniform() < cross_rate ) cross( mother, father ); + + if( rng.uniform() < mut_rate ) mut( mother ); + if( rng.uniform() < mut_rate ) mut( father ); +} + + +template< class EOT > void peoParaSGATransform< EOT > :: packResult() { + + pack( idx ); + :: pack( father ); + :: pack( mother ); +} + + +template< class EOT > void peoParaSGATransform< EOT > :: unpackResult() { + + unsigned sidx; + + unpack( sidx ); + :: unpack( pop->operator[]( sidx++ ) ); + :: unpack( pop->operator[]( sidx ) ); + num_term += 2; + + if( num_term == pop->size() ) { + + getOwner()->setActive(); + resume(); + } +} + + +template< class EOT > void peoParaSGATransform< EOT > :: operator()( eoPop < EOT >& __pop ) { + + printDebugMessage( "performing the parallel transformation step." ); + pop = &__pop; + idx = 0; + num_term = 0; + requestResourceRequest( __pop.size() / 2 ); + stop(); +} + + +template< class EOT > void peoParaSGATransform< EOT > :: notifySendingData() { + +} + + +template< class EOT > void peoParaSGATransform< EOT > :: notifySendingAllResourceRequests() { + + getOwner()->setPassive(); +} + + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoPopEval.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoPopEval.h new file mode 100644 index 000000000..440d638ae --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoPopEval.h @@ -0,0 +1,28 @@ +// "peoPopEval.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoPopEval_h +#define __peoPopEval_h + +#include "core/service.h" + +//! Interface for ParadisEO specific evaluation functors. + +//! The peoPopEval class provides the interface for constructing ParadisEO specific evaluation functors. +//! The derived classes may be used as wrappers for EO-derived evaluation functors. In order to have an example, +//! please refer to the implementation of the peoSeqPopEval and peoParaPopEval classes. +template< class EOT > class peoPopEval : public Service { + +public: + + //! Interface function providing the signature for constructing an evaluation functor. + virtual void operator()( eoPop< EOT >& __pop ) = 0; +}; + + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoSeqPopEval.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoSeqPopEval.h new file mode 100644 index 000000000..769c4f891 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoSeqPopEval.h @@ -0,0 +1,53 @@ +// "peoSeqPopEval.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoSeqPopEval_h +#define __peoSeqPopEval_h + +#include + +#include "peoPopEval.h" + +//! Sequential evaluation functor wrapper. + +//! The peoSeqPopEval class acts only as a ParadisEO specific sequential evaluation functor - a wrapper for incorporating +//! an eoEvalFunc< EOT >-derived class as evaluation functor. The specified EO evaluation object is applyied in an +//! iterative manner to each individual of a specified population. +template< class EOT > class peoSeqPopEval : public peoPopEval< EOT > { + +public: + + //! Constructor function - it only sets an internal reference to point to the specified evaluation object. + //! + //! @param eoEvalFunc< EOT >& __eval - evaluation object to be applied for each individual of a specified population + peoSeqPopEval( eoEvalFunc< EOT >& __eval ); + + //! Operator for evaluating all the individuals of a given population - in a sequential iterative manner. + //! + //! @param eoPop< EOT >& __pop - population to be evaluated. + void operator()( eoPop< EOT >& __pop ); + +private: + + eoEvalFunc< EOT >& eval; +}; + + +template< class EOT > peoSeqPopEval< EOT > :: peoSeqPopEval( eoEvalFunc< EOT >& __eval ) : eval( __eval ) { + +} + + +template< class EOT > void peoSeqPopEval< EOT > :: operator()( eoPop< EOT >& __pop ) { + + for ( unsigned i = 0; i < __pop.size(); i++ ) + eval( __pop[i] ); +} + + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoSeqTransform.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoSeqTransform.h new file mode 100644 index 000000000..6834f550d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoSeqTransform.h @@ -0,0 +1,66 @@ +// "peoSeqTransform.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoSeqTransform_h +#define __peoSeqTransform_h + +#include "peoTransform.h" + + +//! ParadisEO specific wrapper class offering the possibility of using EO derived transform operators. + +//! The peoSeqTransform represent a wrapper for offering the possibility of using EO derived transform operators +//! along with the ParadisEO evolutionary algorithms. A minimal set of interface functions is also provided for creating the +//! link with the parallel architecture of the ParadisEO framework. +template< class EOT > class peoSeqTransform : public peoTransform< EOT > { + +public: + + //! Constructor function - sets an internal reference towards the specified EO-derived transform object. + //! + //! @param eoTransform< EOT >& __trans - EO-derived transform object including crossover and mutation operators. + peoSeqTransform( eoTransform< EOT >& __trans ); + + //! Operator for applying the specified transform operators on each individual of the given population. + //! + //! @param eoPop< EOT >& __pop - population to be transformed by applying the crossover and mutation operators. + void operator()( eoPop< EOT >& __pop ); + + //! Interface function for providing a link with the parallel architecture of the ParadisEO framework. + virtual void packData() { } + + //! Interface function for providing a link with the parallel architecture of the ParadisEO framework. + virtual void unpackData() { } + + //! Interface function for providing a link with the parallel architecture of the ParadisEO framework. + virtual void execute() { } + + //! Interface function for providing a link with the parallel architecture of the ParadisEO framework. + virtual void packResult() { } + + //! Interface function for providing a link with the parallel architecture of the ParadisEO framework. + virtual void unpackResult() { } + +private: + + eoTransform< EOT >& trans; +}; + + +template< class EOT > peoSeqTransform< EOT > :: peoSeqTransform( eoTransform< EOT >& __trans ) : trans( __trans ) { + +} + + +template< class EOT > void peoSeqTransform< EOT > :: operator()( eoPop< EOT >& __pop ) { + + trans( __pop ); +} + + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoSyncIslandMig.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoSyncIslandMig.h new file mode 100644 index 000000000..a6b0b13b1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoSyncIslandMig.h @@ -0,0 +1,286 @@ +// "peoSyncIslandMig.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoSyncIslandMig_h +#define __peoSyncIslandMig_h + + +#include +#include + +#include + +#include + +#include +#include +#include +#include + +#include "core/topology.h" +#include "core/thread.h" +#include "core/eoPop_comm.h" +#include "core/peo_debug.h" + + +//! Class providing the basis for the synchronous island migration model. + +//! The peoSyncIslandMig class offers the elementary basis for implementating a +//! synchronous island migration model - requires the specification of several basic +//! parameters, i.e. frequency of the migrations, selection and replacement strategies, +//! a topological model and the source and destination population for the migrating individuals. +//! The main difference as opposed to the asynchronous migration model is the synchronization step +//! performed after selecting and sending the emigrant individuals. +//! +//! The migration operator is called at the end of each generation of an evolutionary algorithms +//! as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm: +//! +//! +//! +//! +//! +//! +//! +//! +//!
do {    
         select( population, offsprings );   // select the offsprings from the current population
         transform( offsprings );   // crossover and mutation operators are applied on the selected offsprings
         evaluate( offsprings );   // evaluation step of the resulting offspring
         replace( population, offsprings );   // replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy
} while ( eaCheckpointContinue( population ) );   // checkpoint operators are applied on the current population, including the migration operator, if any specified
+//! +//! Constructing a synchronous island migration model requires having defined (1) a topological migration model, +//! (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, +//! and (4) an owner object must be set. The owner object must be derived from the Runner class (for example +//! a peoEA object represents a possible owner). +//! A simple example is offered bellow: +//! +//!
    +//!
  1. topological model to be followed when performing migrations:
    +//!
    +//! +//! +//!
    RingTopology migTopology;   // a simple ring topological model - each island communicates with two other islands
    +//!
  2. +//! +//!
  3. the continuation criterion, selection and replacement strategy etc. are defined:
    +//!
    +//! +//! +//! +//! +//! +//! +//! +//! +//! +//!
    eoPop< EOT > population( POP_SIZE, popInitializer );   // population of individuals to be used for the evolutionary algorithm
       
    eoRandomSelect< EOT > migSelectStrategy;   // selection strategy - in this case a random selection is applied
    eoSelectNumber< EOT > migSelect( migSelectStrategy, MIG_SIZE );   // number of individuals to be selected using the specified strategy
    eoPlusReplacement< EOT > migReplace;   // immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals
       
    peoSyncIslandMig< EOT > syncMigration( +//!
             MIG_FREQ, migSelect, migReplace, migTopology, +//!
             population, population +//!
    );  
    // synchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated
    +//!
  4. +//! +//!
  5. creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope):
    +//!
    +//! +//! +//! +//! +//! +//! +//! +//!
    ...    
    eoGenContinue< EOT > eaCont( NUM_GEN );   // the evolutionary algorithm will stop after NUM_GEN generations
    eoCheckPoint< EOT > eaCheckpointContinue( eaCont );   // number of individuals to be selected using the specified strategy
    ...    
    eaCheckpointContinue.add( syncMigration );   // adding the migration operator as checkpoint element
    ...    
    +//!
  6. +//! +//!
  7. definition of an owner evolutionary algorithm (an object inheriting the Runner class):
    +//!
    +//! +//! +//! +//! +//!
    peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace);   // evolutionary algorithm having as checkpoint the eaCheckpointContinue object defined above
    syncMigration.setOwner( eaAlg );   // setting the evolutionary algorithm as owner of the migration object
    eaAlg( population );   // applying the evolutionary algorithm on a given population
    +//!
  8. +//!
+//! +//! The source and the destination population for the migration object were specified as being the same, in step no. 2, +//! as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique +//! population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations +//! as source and destination for the emigrant and immigrant individuals respectively. +//! +//! The above steps only create a synchronous migration object associated to an evolutionary algorithm. The creation of several +//! islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and +//! the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 +//! (the same C++ migTopology object has to be passed as parameter for all the migration objects, in order to interconnect them). +template< class EOT > class peoSyncIslandMig : public Cooperative, public eoUpdater { + +public: + + //! Constructor for the peoSyncIslandMig class; the characteristics of the migration model are defined + //! through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. + //! + //! @param unsigned __frequency - frequency of the migrations - the migrations occur periodically; + //! @param eoSelect< EOT >& __select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population; + //! @param eoReplacement< EOT >& __replace - replacement strategy used for integrating the immigrant individuals in the destination population; + //! @param Topology& __topology - topological model to be followed when performing migrations; + //! @param eoPop< EOT >& __source - source population from which the emigrant individuals are selected; + //! @param eoPop< EOT >& __destination - destination population in which the immigrant population are integrated. + peoSyncIslandMig( + unsigned __frequency, + eoSelect< EOT >& __select, + eoReplacement< EOT >& __replace, + Topology& __topology, + eoPop< EOT >& __source, + eoPop< EOT >& __destination + ); + + //! Function operator to be called as checkpoint for performing the migration step. The emigrant individuals are selected + //! from the source population and sent to the next island (defined by the topology object) while the immigrant + //! individuals are integrated in the destination population. There is no need to explicitly call the function - the + //! wrapper checkpoint object (please refer to the above example) will perform the call when required. + void operator()(); + + //! Auxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function. + void pack(); + //! Auxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function. + void unpack(); + + //! Auxiliary function dealing with migration notifications. There is no need to explicitly call the function. + void notifySending(); + + +private: + + void emigrate(); + void immigrate(); + + +private: + + eoPeriodicContinue< EOT > cont; + eoSelect< EOT >& select; // selection strategy + eoReplacement< EOT >& replace; // replacement strategy + Topology& topology; // neighboring topology + + // source and target populations + eoPop< EOT >& source; + eoPop< EOT >& destination; + + // immigrants & emigrants in the queue + std :: queue< eoPop< EOT > > imm; + std :: queue< eoPop< EOT > > em; + + std :: queue< Cooperative* > coop_em; + + sem_t sync; +}; + + +template< class EOT > peoSyncIslandMig< EOT > :: peoSyncIslandMig( + + unsigned __frequency, + eoSelect< EOT >& __select, + eoReplacement< EOT >& __replace, + Topology& __topology, + eoPop< EOT >& __source, + eoPop< EOT >& __destination + + ) : cont( __frequency ), select( __select ), replace( __replace ), topology( __topology ), source( __source ), destination( __destination ) +{ + + __topology.add( *this ); + sem_init( &sync, 0, 0 ); +} + + +template< class EOT > void peoSyncIslandMig< EOT > :: pack() { + + lock(); { + + :: pack( coop_em.front()->getKey() ); + :: pack( em.front() ); + coop_em.pop(); + em.pop(); + } + unlock(); +} + + +template< class EOT > void peoSyncIslandMig< EOT > :: unpack() { + + lock(); { + + eoPop< EOT > mig; + :: unpack( mig ); + imm.push( mig ); + } + unlock(); + + sem_post( &sync ); +} + + +template< class EOT > void peoSyncIslandMig< EOT > :: emigrate() { + + std :: vector< Cooperative* > in, out; + topology.setNeighbors( this, in, out ); + + for ( unsigned i = 0; i < out.size(); i ++ ) { + + eoPop< EOT > mig; + select( source, mig ); + em.push( mig ); + coop_em.push( out[ i ] ); + send( out[ i ] ); + printDebugMessage( "sending some emigrants." ); + } +} + + +template< class EOT > void peoSyncIslandMig< EOT > :: immigrate() { + + lock(); { + + assert( imm.size() ); + replace( destination, imm.front() ) ; + imm.pop(); + printDebugMessage( "receiving some immigrants." ); + } + unlock(); +} + + +template< class EOT > void peoSyncIslandMig< EOT > :: operator()() { + + if ( !cont( source ) ) { + + // sending emigrants + emigrate(); + stop(); + + // synchronizing + sem_wait( &sync ); + getOwner()->setActive(); + + // receiving immigrants + immigrate(); + } +} + + +template< class EOT > void peoSyncIslandMig< EOT > :: notifySending() { + + lock(); { + + if ( imm.empty() ) { + + printDebugMessage( "entering pasive mode\n" ); + getOwner()->setPassive(); + } + } + unlock(); + + resume(); +} + + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoSyncMultiStart.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoSyncMultiStart.h new file mode 100644 index 000000000..bfeb5aa6e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoSyncMultiStart.h @@ -0,0 +1,183 @@ +// "peoSyncMultiStart.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoSyncMultiStart_h +#define __peoSyncMultiStart_h + +#include +#include + +#include +#include +#include + +#include "core/service.h" +#include "core/messaging.h" +#include "core/peo_debug.h" + + +extern int getNodeRank(); + + +//! Class providing the basis for the synchronous multi-start model. + +//! The peoSyncMultiStart class provides the basis for implementing the synchronous multi-start model, +//! for launching several solution-based algorithms in parallel on a specified initial population. As a simple +//! example, several hill climbing algorithms may be synchronously launched on the specified population, each +//! algorithm acting upon one individual only, the final result being integrated back in the population. A +//! peoSyncMultiStart object can be specified as checkpoint object for a classic ParadisEO evolutionary algorithm +//! thus allowing for simple hybridization schemes which combine the evolutionary approach with a local search approach, +//! for example, executed at the end of each generation. +template< class EOT > class peoSyncMultiStart : public Service, public eoUpdater { + +public: + + //! Constructor function - several simple parameters are required for defining the characteristics of the multi-start model. + //! + //! @param eoContinue< EOT >& __cont - defined for including further functionality - no semantics associated at this time; + //! @param eoSelect< EOT >& __select - selection strategy for obtaining a subset of the initial population on which to apply the specified algorithm; + //! @param eoReplacement< EOT >& __replace - replacement strategy for integrating the resulting individuals in the initial population; + //! @param moAlgo< EOT >& __ls - algorithm to be applied on each of the selected individuals - a moAlgo< EOT >-derived object must be specified; + //! @param eoPop< EOT >& __pop - the initial population from which the individuals are selected for applying the specified algorithm. + peoSyncMultiStart( + + eoContinue< EOT >& __cont, + eoSelect< EOT >& __select, + eoReplacement< EOT >& __replace, + moAlgo< EOT >& __ls, + eoPop< EOT >& __pop + ); + + //! Operator which synchronously executes the specified algorithm on the individuals selected from the initial population. + //! There is no need to explicitly call the operator - automatically called as checkpoint operator. + void operator()(); + + //! Auxiliary function for transferring data between the process requesting the synchronous execution of the specified + //! algorithm and the process which actually executes the algorithm. There is no need to explicitly call the function. + void packData(); + + //! Auxiliary function for transferring data between the process requesting the synchronous execution of the specified + //! algorithm and the process which actually executes the algorithm. There is no need to explicitly call the function. + void unpackData(); + + //! Auxiliary function for actually executing the specified algorithm on one assigned individual. There is no need to + //! explicitly call the function. + void execute(); + + //! Auxiliary function for transferring data between the process requesting the synchronous execution of the specified + //! algorithm and the process which actually executes the algorithm. There is no need to explicitly call the function. + void packResult(); + + //! Auxiliary function for transferring data between the process requesting the synchronous execution of the specified + //! algorithm and the process which actually executes the algorithm. There is no need to explicitly call the function. + void unpackResult(); + + //! Auxiliary function for notifications between the process requesting the synchronous multi-start execution + //! and the processes that performs the actual execution phase. There is no need to explicitly call the function. + void notifySendingData(); + + //! Auxiliary function for notifications between the process requesting the synchronous multi-start execution + //! and the processes that performs the actual execution phase. There is no need to explicitly call the function. + void notifySendingAllResourceRequests(); + +private: + + eoContinue< EOT >& cont; + eoSelect< EOT >& select; + eoReplacement< EOT >& replace; + + moAlgo< EOT >& ls; + + eoPop< EOT >& pop; + eoPop< EOT > sel; + eoPop< EOT > impr_sel; + + EOT sol; + unsigned idx; + unsigned num_term; +}; + + +template< class EOT > peoSyncMultiStart< EOT > :: peoSyncMultiStart( + + eoContinue < EOT >& __cont, + eoSelect< EOT >& __select, + eoReplacement< EOT >& __replace, + moAlgo < EOT >& __ls, + eoPop< EOT >& __pop + + ) : cont( __cont ), select( __select ), replace( __replace ), ls( __ls ), pop( __pop ) +{ + +} + + +template< class EOT > void peoSyncMultiStart< EOT > :: packData() { + + :: pack( sel[ idx++ ] ); +} + + +template< class EOT > void peoSyncMultiStart< EOT > :: unpackData() { + + unpack( sol ); +} + + +template< class EOT > void peoSyncMultiStart< EOT > :: execute() { + + ls( sol ); +} + + +template< class EOT > void peoSyncMultiStart< EOT > :: packResult() { + + pack( sol ); +} + + +template< class EOT > void peoSyncMultiStart< EOT > :: unpackResult() { + + unpack( sol ); + impr_sel.push_back( sol ); + num_term++; + + if ( num_term == sel.size() ) { + + getOwner()->setActive(); + replace( pop, impr_sel ); + + printDebugMessage( "replacing the improved individuals in the population." ); + resume(); + } +} + + +template< class EOT > void peoSyncMultiStart< EOT > :: operator()() { + + printDebugMessage( "performing the parallel multi-start hybridization." ); + select( pop, sel ); + impr_sel.clear(); + idx = num_term = 0; + requestResourceRequest( sel.size() ); + stop(); +} + + +template< class EOT > void peoSyncMultiStart< EOT > :: notifySendingData() { + +} + + +template< class EOT > void peoSyncMultiStart< EOT > :: notifySendingAllResourceRequests() { + + getOwner()->setPassive(); +} + + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoTransform.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoTransform.h new file mode 100644 index 000000000..fd07f9d3a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/peoTransform.h @@ -0,0 +1,25 @@ +// "peoTransform.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoTransform_h +#define __peoTransform_h + +#include + +#include "core/service.h" + +//! Interface class for constructing more complex transformation operators. + +//! The peoTransform class acts only as an interface for creating transform operators - for an example +//! please refer to the peoSeqTransform and the peoParaSGATransform classes. +template< class EOT > class peoTransform : public Service, public eoTransform< EOT > { + +}; + + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/Makefile.am new file mode 100755 index 000000000..c9ed98209 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/Makefile.am @@ -0,0 +1 @@ +SUBDIRS= mpi diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/Makefile.in b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/Makefile.in new file mode 100644 index 000000000..0faa1b870 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/Makefile.in @@ -0,0 +1,445 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = src/rmc +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EO_DIR = @EO_DIR@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MOEO_DIR = @MOEO_DIR@ +MO_DIR = @MO_DIR@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +SUBDIRS = mpi +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/rmc/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/rmc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ + clean clean-generic clean-recursive ctags ctags-recursive \ + distclean distclean-generic distclean-recursive distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/Makefile.am b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/Makefile.am new file mode 100755 index 000000000..f26f2c413 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/Makefile.am @@ -0,0 +1,39 @@ +CXX=mpicxx + +INCLUDES = \ + `xml2-config --cflags` \ + -I$(EO_DIR)/src + +AM_CXXFLAGS =\ + -g \ + -Wall + +lib_LIBRARIES = librmc_mpi.a + +librmc_mpi_a_SOURCES = \ + node.h \ + node.cpp \ + param.h \ + param.cpp \ + comm.h \ + comm.cpp \ + coop.h \ + coop.cpp \ + mess.h \ + mess.cpp \ + rmc.cpp \ + scheduler.h \ + scheduler.cpp \ + worker.h \ + worker.cpp \ + send.h \ + send.cpp \ + recv.h \ + recv.cpp \ + xml_parser.h \ + xml_parser.cpp \ + schema.h \ + schema.cpp \ + runner.cpp \ + service.h \ + service.cpp diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/Makefile.in b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/Makefile.in new file mode 100644 index 000000000..6f972de7c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/Makefile.in @@ -0,0 +1,478 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = src/rmc/mpi +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" +libLIBRARIES_INSTALL = $(INSTALL_DATA) +LIBRARIES = $(lib_LIBRARIES) +AR = ar +ARFLAGS = cru +librmc_mpi_a_AR = $(AR) $(ARFLAGS) +librmc_mpi_a_LIBADD = +am_librmc_mpi_a_OBJECTS = node.$(OBJEXT) param.$(OBJEXT) \ + comm.$(OBJEXT) coop.$(OBJEXT) mess.$(OBJEXT) rmc.$(OBJEXT) \ + scheduler.$(OBJEXT) worker.$(OBJEXT) send.$(OBJEXT) \ + recv.$(OBJEXT) xml_parser.$(OBJEXT) schema.$(OBJEXT) \ + runner.$(OBJEXT) service.$(OBJEXT) +librmc_mpi_a_OBJECTS = $(am_librmc_mpi_a_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(librmc_mpi_a_SOURCES) +DIST_SOURCES = $(librmc_mpi_a_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = mpicxx +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EO_DIR = @EO_DIR@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MOEO_DIR = @MOEO_DIR@ +MO_DIR = @MO_DIR@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +INCLUDES = \ + `xml2-config --cflags` \ + -I$(EO_DIR)/src + +AM_CXXFLAGS = \ + -g \ + -Wall + +lib_LIBRARIES = librmc_mpi.a +librmc_mpi_a_SOURCES = \ + node.h \ + node.cpp \ + param.h \ + param.cpp \ + comm.h \ + comm.cpp \ + coop.h \ + coop.cpp \ + mess.h \ + mess.cpp \ + rmc.cpp \ + scheduler.h \ + scheduler.cpp \ + worker.h \ + worker.cpp \ + send.h \ + send.cpp \ + recv.h \ + recv.cpp \ + xml_parser.h \ + xml_parser.cpp \ + schema.h \ + schema.cpp \ + runner.cpp \ + service.h \ + service.cpp + +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/rmc/mpi/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/rmc/mpi/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-libLIBRARIES: $(lib_LIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + @$(POST_INSTALL) + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + p=$(am__strip_dir) \ + echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \ + $(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \ + else :; fi; \ + done + +uninstall-libLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLIBRARIES: + -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) +librmc_mpi.a: $(librmc_mpi_a_OBJECTS) $(librmc_mpi_a_DEPENDENCIES) + -rm -f librmc_mpi.a + $(librmc_mpi_a_AR) librmc_mpi.a $(librmc_mpi_a_OBJECTS) $(librmc_mpi_a_LIBADD) + $(RANLIB) librmc_mpi.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coop.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mess.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/node.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/param.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rmc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runner.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scheduler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/schema.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/send.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/service.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/worker.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml_parser.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(libdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-libLIBRARIES + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-libLIBRARIES + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-libLIBRARIES install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-info-am uninstall-libLIBRARIES + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/comm.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/comm.cpp new file mode 100644 index 000000000..1352c66fb --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/comm.cpp @@ -0,0 +1,67 @@ +// "comm.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + + +#include + +#include "comm.h" +#include "mess.h" +#include "node.h" +#include "param.h" +#include "../../core/peo_debug.h" +#include "../../core/runner.h" +#include "send.h" +#include "recv.h" +#include "scheduler.h" + +static sem_t sem_comm_init; + +static Communicator * the_thread; + +Communicator :: Communicator (int * __argc, char * * * __argv) { + + the_thread = this; + initNode (__argc, __argv); + loadRMCParameters (* __argc, * __argv); + sem_post (& sem_comm_init); +} + +void Communicator :: start () { + + while (true) { + + /* Zzz Zzz Zzz :-))) */ + sleep (); + sendMessages (); + + if (! atLeastOneActiveRunner ()) + break; + receiveMessages (); + } + waitBuffers (); + printDebugMessage ("finalizing"); + MPI_Finalize (); +} + +void initCommunication () { + + sem_init (& sem_comm_init, 0, 0); +} + +void waitNodeInitialization () { + + sem_wait (& sem_comm_init); +} + +void wakeUpCommunicator () { + + the_thread -> wakeUp (); +} + + + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/comm.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/comm.h new file mode 100644 index 000000000..1ecf4b89a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/comm.h @@ -0,0 +1,31 @@ +// "comm.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __comm_mpi_h +#define __comm_mpi_h + +#include "../../core/communicable.h" +#include "../../core/reac_thread.h" + +class Communicator : public ReactiveThread { + +public : + + /* Ctor */ + Communicator (int * __argc, char * * * __argv); + + void start (); +}; + +extern void initCommunication (); + +extern void waitNodeInitialization (); + +extern void wakeUpCommunicator (); + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/coop.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/coop.cpp new file mode 100644 index 000000000..f24ffea1c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/coop.cpp @@ -0,0 +1,42 @@ +// "coop.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "../../core/cooperative.h" +#include "send.h" +#include "tags.h" +#include "schema.h" +#include "mess.h" +#include "../../core/peo_debug.h" + +Runner * Cooperative :: getOwner () { + + return owner; +} + +void Cooperative :: setOwner (Runner & __runner) { + + owner = & __runner; +} + +void Cooperative :: send (Cooperative * __coop) { + + :: send (this, getRankOfRunner (__coop -> getOwner () -> getID ()), COOP_TAG); + // stop (); +} + +Cooperative * getCooperative (COOP_ID __key) { + + return dynamic_cast (getCommunicable (__key)); +} + +void Cooperative :: notifySending () { + + //getOwner -> setPassive (); + // resume (); + // printDebugMessage (b); +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/mess.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/mess.cpp new file mode 100644 index 000000000..1ccedb51e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/mess.cpp @@ -0,0 +1,237 @@ +// "mess.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include + +#include "mess.h" +#include "../../core/peo_debug.h" +#include "node.h" + +#define MPI_BUF_SIZE 1024*64 + +static char mpi_buf [MPI_BUF_SIZE]; + +static int pos_buf ; + +static std :: vector act_buf; /* Active buffers */ + +static std :: vector act_req; /* Active requests */ + +void cleanBuffers () { + + for (unsigned i = 0; i < act_req.size ();) { + + MPI_Status stat ; + int flag ; + MPI_Test (act_req [i], & flag, & stat) ; + if (flag) { + + delete act_buf [i] ; + delete act_req [i] ; + + act_buf [i] = act_buf.back () ; + act_buf.pop_back () ; + + act_req [i] = act_req.back () ; + act_req.pop_back () ; + } + else + i ++; + } +} + +void waitBuffers () { + + printDebugMessage ("waiting the termination of the asynchronous operations to complete"); + + for (unsigned i = 0; i < act_req.size (); i ++) { + + MPI_Status stat ; + + MPI_Wait (act_req [i], & stat) ; + + delete act_buf [i] ; + delete act_req [i] ; + } +} + +bool probeMessage (int & __src, int & __tag) { + + int flag; + + MPI_Status stat; + + MPI_Iprobe (MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, & flag, & stat); + + __src = stat.MPI_SOURCE; + __tag = stat.MPI_TAG; + + return flag; +} + +void waitMessage () { + + MPI_Status stat; + + MPI_Probe (MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, & stat); +} + +void initMessage () { + + pos_buf = 0; +} + +void sendMessage (int __to, int __tag) { + + cleanBuffers (); + act_buf.push_back (new char [pos_buf]); + act_req.push_back (new MPI_Request); + memcpy (act_buf.back (), mpi_buf, pos_buf); + MPI_Isend (act_buf.back (), pos_buf, MPI_PACKED, __to, __tag, MPI_COMM_WORLD, act_req.back ()); +} + +void sendMessageToAll (int __tag) { + + for (int i = 0; i < getNumberOfNodes (); i ++) + sendMessage (i, __tag); +} + +void receiveMessage (int __from, int __tag) { + + MPI_Status stat; + MPI_Request req; + + MPI_Irecv (mpi_buf, MPI_BUF_SIZE, MPI_PACKED, __from, __tag, MPI_COMM_WORLD, & req) ; + MPI_Wait (& req, & stat) ; +} + +/* Char */ +void pack (const char & __c) { + + MPI_Pack ((void *) & __c, 1, MPI_CHAR, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Float */ +void pack (const float & __f, int __nitem) { + + MPI_Pack ((void *) & __f, __nitem, MPI_FLOAT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Double */ +void pack (const double & __d, int __nitem) { + + MPI_Pack ((void *) & __d, __nitem, MPI_DOUBLE, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Integer */ +void pack (const int & __i, int __nitem) { + + MPI_Pack ((void *) & __i, __nitem, MPI_INT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Unsigned int. */ +void pack (const unsigned int & __ui, int __nitem) { + + MPI_Pack ((void *) & __ui, __nitem, MPI_UNSIGNED, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Short int. */ +void pack (const short & __sh, int __nitem) { + + MPI_Pack ((void *) & __sh, __nitem, MPI_SHORT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Unsigned short */ +void pack (const unsigned short & __ush, int __nitem) { + + MPI_Pack ((void *) & __ush, __nitem, MPI_UNSIGNED_SHORT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Long */ +void pack (const long & __l, int __nitem) { + + MPI_Pack ((void *) & __l, __nitem, MPI_LONG, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Unsigned long */ +void pack (const unsigned long & __ul, int __nitem) { + + MPI_Pack ((void *) & __ul, __nitem, MPI_UNSIGNED_LONG, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* String */ +void pack (const char * __str) { + + int len = strlen (__str) + 1; + MPI_Pack (& len, 1, MPI_INT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); + MPI_Pack ((void *) __str, len, MPI_CHAR, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Char */ +void unpack (char & __c) { + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __c, 1, MPI_CHAR, MPI_COMM_WORLD); +} + +/* Float */ +void unpack (float & __f, int __nitem) { + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __f, __nitem, MPI_FLOAT, MPI_COMM_WORLD); +} + +/* Double */ +void unpack (double & __d, int __nitem) { + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __d, __nitem, MPI_DOUBLE, MPI_COMM_WORLD); +} + +/* Integer */ +void unpack (int & __i, int __nitem) { + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __i, __nitem, MPI_INT, MPI_COMM_WORLD); +} + +/* Unsigned int. */ +void unpack (unsigned int & __ui, int __nitem) { + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ui, __nitem, MPI_UNSIGNED, MPI_COMM_WORLD); +} + +/* Short int. */ +void unpack (short & __sh, int __nitem) { + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __sh, __nitem, MPI_SHORT, MPI_COMM_WORLD); +} + +/* Unsigned short */ +void unpack (unsigned short & __ush, int __nitem) { + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ush, __nitem, MPI_UNSIGNED_SHORT, MPI_COMM_WORLD); +} + +/* Long */ +void unpack (long & __l, int __nitem) { + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __l, __nitem, MPI_LONG, MPI_COMM_WORLD); +} + +/* Unsigned long */ +void unpack (unsigned long & __ul, int __nitem) { + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ul, __nitem, MPI_UNSIGNED_LONG, MPI_COMM_WORLD); +} + +/* String */ +void unpack (char * __str) { + + int len; + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & len, 1, MPI_INT, MPI_COMM_WORLD); + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, __str, len, MPI_CHAR, MPI_COMM_WORLD); +} + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/mess.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/mess.h new file mode 100644 index 000000000..6e40a154a --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/mess.h @@ -0,0 +1,31 @@ +// "mess.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __mess_rmc_h +#define __mess_rmc_h + +#include "../../core/messaging.h" + +extern void initMessage (); + +extern void sendMessage (int __to, int __tag); + +extern void sendMessageToAll (int __tag); + +extern void receiveMessage (int __from, int __tag); + +extern void cleanBuffers (); + +extern void waitBuffers (); + +extern bool probeMessage (int & __src, int & __tag); + +extern void waitMessage (); + +#endif + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/node.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/node.cpp new file mode 100644 index 000000000..b17b032bf --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/node.cpp @@ -0,0 +1,58 @@ +// "node.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include +#include +#include +#include + +static int rk, sz; /* Rank & size */ + +static std :: map name_to_rk; + +static std :: vector rk_to_name; + +int getNodeRank () { + + return rk; +} + +int getNumberOfNodes () { + + return sz; +} + +int getRankFromName (const std :: string & __name) { + + return atoi (__name.c_str ()); +} + +void initNode (int * __argc, char * * * __argv) { + + int provided; + MPI_Init_thread (__argc, __argv, MPI_THREAD_FUNNELED, & provided); + assert (provided == MPI_THREAD_FUNNELED); /* The MPI implementation must be multi-threaded. + Yet, only one thread performs the comm. + operations */ + MPI_Comm_rank (MPI_COMM_WORLD, & rk); /* Who ? */ + MPI_Comm_size (MPI_COMM_WORLD, & sz); /* How many ? */ + + char names [sz] [MPI_MAX_PROCESSOR_NAME]; + int len; + + /* Processor names */ + MPI_Get_processor_name (names [0], & len); /* Me */ + MPI_Allgather (names, MPI_MAX_PROCESSOR_NAME, MPI_CHAR, names, MPI_MAX_PROCESSOR_NAME, MPI_CHAR, MPI_COMM_WORLD); /* Broadcast */ + + for (int i = 0; i < sz; i ++) { + rk_to_name.push_back (names [i]); + name_to_rk [names [i]] = i; + } +} + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/node.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/node.h new file mode 100644 index 000000000..3fc345c8d --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/node.h @@ -0,0 +1,24 @@ +// "node.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __node_h +#define __node_h + +#include +#include + +extern int getNodeRank (); /* It gives the rank of the calling process */ + +extern int getNumberOfNodes (); /* It gives the size of the environment (Total number of nodes) */ + +extern int getRankFromName (const std :: string & __name); /* It gives the rank of the process + expressed by its name */ + +extern void initNode (int * __argc, char * * * __argv); + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/param.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/param.cpp new file mode 100644 index 000000000..22d387ad0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/param.cpp @@ -0,0 +1,21 @@ +// "param.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "schema.h" + +void loadRMCParameters (int & __argc, char * * & __argv) { + + eoParser parser (__argc, __argv); + + /* Schema */ + eoValueParam schema_param ("schema.xml", "schema", "?"); + parser.processParam (schema_param); + loadSchema (schema_param.value ().c_str ()); +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/param.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/param.h new file mode 100644 index 000000000..9fdc99e59 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/param.h @@ -0,0 +1,14 @@ +// "param.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __rmc_param_h +#define __rmc_param_h + +extern void loadRMCParameters (int & __argc, char * * & __argv); + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/recv.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/recv.cpp new file mode 100644 index 000000000..a2d12795c --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/recv.cpp @@ -0,0 +1,112 @@ +// "recv.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "comm.h" +#include "tags.h" +#include "worker.h" +#include "scheduler.h" +#include "mess.h" +#include "node.h" +#include "../../core/runner.h" +#include "../../core/cooperative.h" +#include "../../core/peo_debug.h" + +void receiveMessages () { + + cleanBuffers (); + + do { + + if (! atLeastOneActiveThread ()) { + // printDebugMessage ("debut wait"); + waitMessage (); + //printDebugMessage ("fin wait"); + } + + int src, tag; + + while (probeMessage (src, tag)) { + + receiveMessage (src, tag); + initMessage (); + /* + char b [1000]; + sprintf (b, "traitement recv %d\n", tag); + printDebugMessage (b); + */ + + switch (tag) { + + case RUNNER_STOP_TAG: + unpackTerminationOfRunner (); + wakeUpCommunicator (); + break; + + case COOP_TAG: + // printDebugMessage ("reception de message de cooperation"); + COOP_ID coop_id; + unpack (coop_id); + getCooperative (coop_id) -> unpack (); + break; + + case SCHED_REQUEST_TAG: + unpackResourceRequest (); + break; + + case SCHED_RESULT_TAG: + { + /* Unpacking the resource */ + SERVICE_ID serv_id; + unpack (serv_id); + Service * serv = getService (serv_id); + int dest; + unpack (dest); + WORKER_ID worker_id; + unpack (worker_id); + + /* Going back ... */ + initMessage (); + pack (worker_id); + pack (serv_id); + serv -> packData (); + serv -> notifySendingData (); + sendMessage (dest, TASK_DATA_TAG); + break; + } + + case TASK_DATA_TAG: + { + WORKER_ID worker_id; + unpack (worker_id); + Worker * worker = getWorker (worker_id); + worker -> setSource (src); + worker -> unpackData (); + worker -> wakeUp (); + break; + } + + case TASK_RESULT_TAG: + { + SERVICE_ID serv_id; + unpack (serv_id); + Service * serv = getService (serv_id); + serv -> unpackResult (); + break; + } + + case TASK_DONE_TAG: + unpackTaskDone (); + break; + + default: + ; + }; + } + + } while (! atLeastOneActiveThread () && atLeastOneActiveRunner () /*&& ! allResourcesFree ()*/); +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/recv.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/recv.h new file mode 100644 index 000000000..5832a7584 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/recv.h @@ -0,0 +1,14 @@ +// "recv.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __recv_h +#define __recv_h + +extern void receiveMessages (); + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/rmc.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/rmc.cpp new file mode 100644 index 000000000..5730f837f --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/rmc.cpp @@ -0,0 +1,47 @@ +// "rmc.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "send.h" +#include "worker.h" +#include "schema.h" +#include "comm.h" +#include "scheduler.h" +#include "../../core/peo_debug.h" + +static std :: vector ll_threads; /* Low level threads */ + +void runRMC () { + + /* Worker(s) ? */ + for (unsigned i = 0; i < my_node -> num_workers; i ++) + addThread (new Worker, ll_threads); + + wakeUpCommunicator (); +} + +void initRMC (int & __argc, char * * & __argv) { + + /* Communication */ + initCommunication (); + addThread (new Communicator (& __argc, & __argv), ll_threads); + waitNodeInitialization (); + initSending (); + + /* Scheduler */ + if (isScheduleNode ()) + initScheduler (); + + /// +} + +void finalizeRMC () { + + printDebugMessage ("before join threads RMC"); + joinThreads (ll_threads); + printDebugMessage ("after join threads RMC"); +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/runner.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/runner.cpp new file mode 100644 index 000000000..7fe7673e0 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/runner.cpp @@ -0,0 +1,33 @@ +// "runner.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "../../core/messaging.h" +#include "../../core/runner.h" +#include "node.h" +#include "send.h" +#include "tags.h" +#include "schema.h" + +bool Runner :: isLocal () { + + for (unsigned i = 0; i < my_node -> id_run.size (); i ++) + if (my_node -> id_run [i] == id) + return true; + return false; +} + +void Runner :: packTermination () { + + pack (id); +} + +void Runner :: terminate () { + + sendToAll (this, RUNNER_STOP_TAG); +} + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/scheduler.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/scheduler.cpp new file mode 100644 index 000000000..40de0e3f7 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/scheduler.cpp @@ -0,0 +1,78 @@ +// "sched_thread.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "scheduler.h" +#include "tags.h" +#include "mess.h" +#include "../../core/peo_debug.h" + +static std :: queue resources; /* Free resources */ + +static std :: queue requests; /* Requests */ + +static unsigned initNumberOfRes = 0; + +void initScheduler () { + + for (unsigned i = 0; i < the_schema.size (); i ++) { + + const Node & node = the_schema [i]; + + if (node.rk_sched == my_node -> rk) + for (unsigned j = 0; j < node.num_workers; j ++) + resources.push (std :: pair (i, j + 1)); + } + initNumberOfRes = resources.size (); +} + +bool allResourcesFree () { + + return resources.size () == initNumberOfRes; +} + +static void update () { + + unsigned num_alloc = std :: min (resources.size (), requests.size ()); + + for (unsigned i = 0; i < num_alloc; i ++) { + + SCHED_REQUEST req = requests.front (); + requests.pop (); + + SCHED_RESOURCE res = resources.front (); + resources.pop (); + + printDebugMessage ("allocating a resource."); + initMessage (); + pack (req.second); + pack (res); + sendMessage (req.first, SCHED_RESULT_TAG); + } +} + +void unpackResourceRequest () { + + printDebugMessage ("queuing a resource request."); + SCHED_REQUEST req; + unpack (req); + requests.push (req); + update (); +} + +void unpackTaskDone () { + + printDebugMessage ("I'm notified a worker is now idle."); + SCHED_RESOURCE res; + unpack (res); + resources.push (res); + if (resources.size () == initNumberOfRes) + printDebugMessage ("all the resources are now free."); + update (); +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/scheduler.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/scheduler.h new file mode 100644 index 000000000..2bae123ff --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/scheduler.h @@ -0,0 +1,32 @@ +// "scheduler.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __scheduler_h +#define __scheduler_h + +#include + +#include "schema.h" +#include "worker.h" + +typedef std :: pair SCHED_RESOURCE; + +typedef std :: pair SCHED_REQUEST; + +/* Initializing the list of available workers */ +extern void initScheduler (); + +/* Processing a resource request from a service */ +extern void unpackResourceRequest (); + +/* Being known a worker is now idle :-) */ +extern void unpackTaskDone (); + +extern bool allResourcesFree (); + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/schema.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/schema.cpp new file mode 100644 index 000000000..fa202b462 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/schema.cpp @@ -0,0 +1,135 @@ +// "schema.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include + +#include "schema.h" +#include "xml_parser.h" +#include "comm.h" +#include "node.h" +#include "../../core/peo_debug.h" + +std :: vector the_schema; + +Node * my_node; + +RANK_ID getRankOfRunner (RUNNER_ID __key) { + + for (unsigned i = 0; i < the_schema.size (); i ++) + for (unsigned j = 0; j < the_schema [i].id_run.size (); j ++) + if (the_schema [i].id_run [j] == __key) + return the_schema [i].rk; + assert (false); + return 0; +} + +static void loadNode (int __rk_sched) { + + Node node; + + node.rk_sched = __rk_sched; + + /* ATT: name*/ + node.rk = getRankFromName (getAttributeValue ("name")); + /* ATT: num_workers */ + node.num_workers = atoi (getAttributeValue ("num_workers").c_str ()); + + while (true) { + + /* TAG: | */ + std :: string name = getNextNode (); + assert (name == "runner" || name == "node"); + if (name == "runner") { + /* TAG: */ + node.id_run.push_back (atoi (getNextNode ().c_str ())); + /* TAG:
*/ + assert (getNextNode () == "runner"); + } + else { + /* TAG: */ + the_schema.push_back (node); + break; + } + } +} + +static void loadGroup () { + + std :: string name; + + /* ATT: scheduler*/ + int rk_sched = getRankFromName (getAttributeValue ("scheduler")); + + while (true) { + + /* TAG: | */ + name = getNextNode (); + assert (name == "node" || name == "group"); + if (name == "node") + /* TAG: */ + loadNode (rk_sched); + else + /* TAG: */ + break; + } +} + +bool isScheduleNode () { + + return my_node -> rk == my_node -> rk_sched; +} + +void loadSchema (const char * __filename) { + + openXMLDocument (__filename); + + std :: string name; + + /* TAG: */ + name = getNextNode (); + assert (name == "schema"); + + while (true) { + + /* TAG: | */ + name = getNextNode (); + assert (name == "group" || name == "schema"); + if (name == "group") + /* TAG: */ + loadGroup (); + else + /* TAG: */ + break; + } + + /* Looking for my node */ + for (unsigned i = 0; i < the_schema.size (); i ++) + if (the_schema [i].rk == getNodeRank ()) + my_node = & (the_schema [i]); + + /* About me */ + char mess [1000]; + + sprintf (mess, "my rank is %d", my_node -> rk); + printDebugMessage (mess); + if (isScheduleNode ()) + printDebugMessage ("I'am a scheduler"); + for (unsigned i = 0; i < my_node -> id_run.size (); i ++) { + sprintf (mess, "I manage the runner %d", my_node -> id_run [i]); + printDebugMessage (mess); + } + if (my_node -> num_workers) { + + sprintf (mess, "I manage %d worker(s)", my_node -> num_workers); + printDebugMessage (mess); + } + + closeXMLDocument (); +} + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/schema.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/schema.h new file mode 100644 index 000000000..4a16ce15e --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/schema.h @@ -0,0 +1,39 @@ +// "schema.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __schema_h +#define __schema_h + +#include +#include +#include + +#include "../../core/runner.h" + +typedef int RANK_ID; + +struct Node { + + RANK_ID rk; /* Rank */ + std :: string name; /* Host name */ + unsigned num_workers; /* Number of parallel workers */ + int rk_sched; /* rank of the scheduler */ + std :: vector id_run; /* List of runners */ +}; + +extern std :: vector the_schema; + +extern Node * my_node; + +extern void loadSchema (const char * __filename); + +extern RANK_ID getRankOfRunner (RUNNER_ID __key); + +extern bool isScheduleNode (); + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/send.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/send.cpp new file mode 100644 index 000000000..a6c7288af --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/send.cpp @@ -0,0 +1,116 @@ +// "send.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include +#include + +#include "tags.h" +#include "comm.h" +#include "worker.h" +#include "scheduler.h" +#include "mess.h" +#include "node.h" +#include "../../core/cooperative.h" +#include "../../core/peo_debug.h" + +#define TO_ALL -1 + +typedef struct { + + Communicable * comm; + int to; + int tag; + +} SEND_REQUEST; + +static std :: queue mess; + +static sem_t sem_send; + +void initSending () { + + sem_init (& sem_send, 0, 1); +} + +void send (Communicable * __comm, int __to, int __tag) { + + SEND_REQUEST req; + req.comm = __comm; + req.to = __to; + req.tag = __tag; + + sem_wait (& sem_send); + mess.push (req); + sem_post (& sem_send); + wakeUpCommunicator (); +} + +void sendToAll (Communicable * __comm, int __tag) { + + send (__comm, TO_ALL, __tag); +} + +void sendMessages () { + + sem_wait (& sem_send); + + while (! mess.empty ()) { + + SEND_REQUEST req = mess.front (); + /* + char b [1000]; + sprintf (b, "traitement send %d\n", req.tag); + printDebugMessage (b); + */ + + Communicable * comm = req.comm; + + initMessage (); + + switch (req.tag) { + + case RUNNER_STOP_TAG: + dynamic_cast (comm) -> packTermination (); + dynamic_cast (comm) -> notifySendingTermination (); + break; + + case COOP_TAG: + dynamic_cast (comm) -> pack (); + dynamic_cast (comm) -> notifySending (); + break; + + case SCHED_REQUEST_TAG: + dynamic_cast (comm) -> packResourceRequest (); + dynamic_cast (comm) -> notifySendingResourceRequest (); + break; + + case TASK_RESULT_TAG: + dynamic_cast (comm) -> packResult (); + dynamic_cast (comm) -> notifySendingResult (); + break; + + case TASK_DONE_TAG: + dynamic_cast (comm) -> packTaskDone (); + dynamic_cast (comm) -> notifySendingTaskDone (); + break; + + default : + break; + + }; + + if (req.to == TO_ALL) + sendMessageToAll (req.tag); + else + sendMessage (req.to, req.tag); + mess.pop (); + } + + sem_post (& sem_send); +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/send.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/send.h new file mode 100644 index 000000000..ddf264440 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/send.h @@ -0,0 +1,22 @@ +// "send.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __send_h +#define __send_h + +#include "../../core/communicable.h" + +extern void initSending (); + +extern void send (Communicable * __comm, int __to, int __tag); + +extern void sendToAll (Communicable * __comm, int __tag); + +extern void sendMessages (); + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/service.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/service.cpp new file mode 100644 index 000000000..93647f035 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/service.cpp @@ -0,0 +1,30 @@ +// "service.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "../../core/service.h" +#include "../../core/messaging.h" +#include "node.h" +#include "tags.h" +#include "send.h" +#include "scheduler.h" + +void Service :: requestResourceRequest (unsigned __how_many) { + + num_sent_rr = __how_many; + for (unsigned i = 0; i < __how_many; i ++) + send (this, my_node -> rk_sched, SCHED_REQUEST_TAG); +} + +void Service :: packResourceRequest () { + + SCHED_REQUEST req; + req.first = getNodeRank (); + req.second = getKey (); + // printf ("demande de ressource pour %d\n", req.second); + :: pack (req); +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/tags.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/tags.h new file mode 100644 index 000000000..ce29a7b80 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/tags.h @@ -0,0 +1,24 @@ +// "tags.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __tags_h +#define __tags_h + +#define RUNNER_STOP_TAG 13 + +#define COOP_TAG 14 + +#define SCHED_REQUEST_TAG 16 + +#define SCHED_RESULT_TAG 17 +#define TASK_DATA_TAG 18 + +#define TASK_RESULT_TAG 19 +#define TASK_DONE_TAG 20 + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/worker.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/worker.cpp new file mode 100644 index 000000000..3fc4218e1 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/worker.cpp @@ -0,0 +1,93 @@ +// "worker.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "tags.h" +#include "send.h" +#include "node.h" +#include "schema.h" +#include "worker.h" +#include "mess.h" +#include "../../core/peo_debug.h" + +static std :: vector key_to_worker (1); /* Vector of registered workers */ + +Worker * getWorker (WORKER_ID __key) { + + return key_to_worker [__key]; +} + +Worker :: Worker () { + + toto = false; + id = key_to_worker.size (); + key_to_worker.push_back (this); +} + +void Worker :: packResult () { + + pack (serv_id); + serv -> packResult (); +} + +void Worker :: unpackData () { + + printDebugMessage ("unpacking the ID. of the service."); + unpack (serv_id); + serv = getService (serv_id); + printDebugMessage ("found the service."); + serv -> unpackData (); + printDebugMessage ("unpacking the data."); + setActive (); +} + +void Worker :: packTaskDone () { + + pack (getNodeRank ()); + pack (id); +} + +void Worker :: notifySendingResult () { + + /* Notifying the scheduler of the termination */ + toto = true; + wakeUp (); +} + +void Worker :: notifySendingTaskDone () { + + setPassive (); +} + +void Worker :: setSource (int __rank) { + + src = __rank; +} + +void Worker :: start () { + + while (true) { + + sleep (); + + if (! atLeastOneActiveRunner ()) + break; + + if (toto) { + send (this, my_node -> rk_sched, TASK_DONE_TAG); + toto = false; + } + else { + + printDebugMessage ("executing the task."); + serv -> execute (); + send (this, src, TASK_RESULT_TAG); + } + } +} diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/worker.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/worker.h new file mode 100644 index 000000000..e47d5cc35 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/worker.h @@ -0,0 +1,50 @@ +// "worker.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __worker_h +#define __worker_h + +#include "../../core/communicable.h" +#include "../../core/reac_thread.h" +#include "../../core/service.h" + +typedef unsigned WORKER_ID; + +class Worker : public Communicable, public ReactiveThread { + +public : + + Worker (); + + void start (); + + void packResult (); + + void unpackData (); + + void packTaskDone (); + + void notifySendingResult (); + + void notifySendingTaskDone (); + + void setSource (int __rank); + +private : + + WORKER_ID id; + SERVICE_ID serv_id; + Service * serv; + int src; + + bool toto; +}; + +extern Worker * getWorker (WORKER_ID __key); + +#endif diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/xml_parser.cpp b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/xml_parser.cpp new file mode 100644 index 000000000..75436c477 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/xml_parser.cpp @@ -0,0 +1,75 @@ +// "xml_parser.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "xml_parser.h" + +static xmlTextReaderPtr reader; + +void openXMLDocument (const char * __filename) { + + reader = xmlNewTextReaderFilename (__filename); + + if (! reader) { + + fprintf (stderr, "unable to open '%s'.\n", __filename); + exit (1); + } +} + +void closeXMLDocument () { + + xmlFreeTextReader (reader); +} + +std :: string getAttributeValue (const std :: string & __attr) { + + xmlChar * value = xmlTextReaderGetAttribute (reader, (const xmlChar *) __attr.c_str ()); + + std :: string str ((const char *) value); + + xmlFree (value); + + return str; +} + +static bool isSep (const xmlChar * __text) { + + for (unsigned i = 0; i < strlen ((char *) __text); i ++) + if (__text [i] != ' ' && __text [i] != '\t' && __text [i] != '\n') + return false; + return true; +} + +std :: string getNextNode () { + + xmlChar * name, * value; + + do { + xmlTextReaderRead (reader); + name = xmlTextReaderName (reader); + value = xmlTextReaderValue (reader); + // printf ("value = %s\n", value); + } while (! strcmp ((char *) name, "#text") && isSep (value)); + + std :: string str; + + if (strcmp ((char *) name, "#text")) + str.assign ((char *) name); + else + str.assign ((char *) value); + + if (name) + xmlFree (name); + if (value) + xmlFree (value); + + return str; +} + diff --git a/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/xml_parser.h b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/xml_parser.h new file mode 100644 index 000000000..169bb0288 --- /dev/null +++ b/tags/paradiseo-i386-0.2/paradiseo-peo/src/rmc/mpi/xml_parser.h @@ -0,0 +1,22 @@ +// "xml_parser.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __xml_parser_h +#define __xml_parser_h + +#include + +extern void openXMLDocument (const char * __filename); + +extern void closeXMLDocument (); + +extern std :: string getAttributeValue (const std :: string & __attr); + +extern std :: string getNextNode (); + +#endif