0) About the program

desmsd implements several evolutionary algorithms and test problems. It was developed to efficiently run many test runs, so it is hopefully fast even for many function evaluations but not very well designed from a software architects point of view. I tried hard to avoid any significant memleaks. Among the implemented algorithms are:

* NSGA-II
* SMS-EMOA
* GDE3
* all the algorithms proposed in my diploma thesis.
* there might be traces of additional algorithms I dismissed.


1) Legal stuff (License)

This program is licensed under the terms of the GPL V3 (see LICENSE for details)


2) Requirements

* GCC (both gcc and g++) version 4.3 (4.x versions probably work as well)
* boost library (also: boost_filesystem) [1]


3) Used 3rd party software/libraries (cluster, shark). The following 3rd party code is integrated into this program:

* C clustering library [2]
* Shark library [3]


4) Compiling

On Unix systems a simple "make" will do the trick. In theory the code should also compile on Windows (with MS VC++), though I have never tested it, feel free to try (whether or not you succeed will largely depend on the code sections from 3rd parties).


5) Program options

Program options an algorithm/test problem does not require are ignored. It is highly recommended to always set all required options even though there are default values for most options.

-F	<float>	step size factor: parameter F (differential evolution)

-L	<float>	local search probability: parameter C

-X	<float>	crossover probability per decision variable

-a	<str>	which algorithm to use. Choose from desmsc,desmscd,desmsp,desmspd,gde3,gde3sms,gde3smsd,gde3d,nsga2,smsemoa,smsemoade.

-c	<int>	number of clusters. Either absolute number or number/popsize (float)

-d	<int>	number of dimensions for the test problem

-e	<int>	number of function evaluations to run. Do not use this on steady-state algorithms (use -g instead).

-ec	<int>	distribution index (etac) for SBX

-em	<int>	distribution index (etam) for PM

-g	<int>	number of generations to run

-m	<float>	mutation probability (pm) for PM

-n	<int>	populations size (parameter mu)

-o	<int>	number of objective functions for the test problem

-p	<int>	write approx. n intermediate generations to separate files

-s	<int>	random seed (current timestamp is used otherwise)
		on Linux you can obtain good seeds via: $(printf %i 0x$(head -c 128 /dev/urandom|sha256sum|cut -c-15)|cut -c-9)

-t	<str>	test function to use. Choose from oka2, rzdt4, szdt1, szdt2, szdt4, zdt4 (untested), szdt6, rdtlz2, sdtlz2, sdtlz3, msdtlz2, mszdt1, mszdt2, sympart.

-h		display this help and exit

-v or --version	output version information and exit


5) Results of invocation

Given the correct program options are supplied, the results are stored in separate files in the folder

<current dir>/<test function>/<algorithm string>/<seed>/

The algorithm string contains information on the parameters as well, to keep separate runs structured. The following files are created per run:

* decision_solution.txt contains the decision space vector of the final generation (separated by blanks, one individual per line).
* fitness_solution.txt stores the fitness vector (separated by blanks, one individual per line).
* settings.txt holds information on which options where used in this run.

Both fitness and decision space vector are stored in the same line number for the same individual.


6) Other documentation

If you want to know more about the algorithms, look at my diploma thesis "Surface reconstruction with diversity-preserving multi-objective differential evolution". In case you are unable to find it via your favorite search engine, send me an e-mail [4] and I will provide you with a copy for personal use (PDF file).


References:
[1] Boost library		http://www.boost.org
[2] C clustering library	http://bonsai.ims.u-tokyo.ac.jp/~mdehoon/software/cluster/software.htm
[3] Shark library		http://shark-project.sourceforge.net/
[4] My mailadress*:		matthias.jung@tu-dortmund.de

* I still use a mailaddress from TU Dortmund but I am no longer affilated with the
university in any way. I only graduated there.
