¡@ |
Tsung-Che Chiang,
nsga3cpp: A C++
implementation of NSGA-III, 2014.
Installation & Execution
-
Directories & Files: The
package includes four directories: src/Results/Experiments/PF.
-
src:
It contains the source files. Contents of each file can be easily
identified by the file name.
- Experiments:
Configuration files of experiments are stored here.
- Results:
The final population of each run will be stored here.
- PF:
The Pareto fronts of DTLZ1-4 are stored here. The source code for
generating them is also included.
There is also an important file,
explist.ini.
It defines the experiments to be carried out.
¡@
-
Installation
- Recommended environment:
Windows + Visual Studio +
gunplot
- If you want to build it with Code::Blocks,
please add "-U__STRICT_ANSI__" in
build options of the project.
- If gnuplot is installed, please set the path
appropriately so that nsga3cpp can call it.
- If gnuplot is not installed, fine, just
#define DO_NOT_HAVE_GNUPLOT
in gnuplot_interface.cpp.
¡@
-
Execution
- Before running the
program, you need to setup experiments. You can do this through
explist.ini
and expDTLZx(y).ini
in the Experiments
directory.
explist.ini |
Experiments/expDTLZx(y).ini |
expDTLZ1(3).ini
expDTLZ2(3).ini
expDTLZ3(3).ini
expDTLZ4(3).ini
expDTLZ1(5).ini
expDTLZ2(5).ini
expDTLZ3(5).ini
expDTLZ4(5).ini |
algorithm.name =
NSGAIII
objective.division.p = 12
generation.number = 400
crossover.rate = 1.0
crossover.eta = 30
mutation.eta = 20
problem.name = DTLZ1
problem.objectives = 3 |
- After running the
program, the raw results of all runs of all experiments are stored
in the Results
directory. The file name is like
NSGAIII-DTLZ1(3)-Run0.txt.
Files recording the IGD values for each experiment are also
generated with the file name like
NSGAIII-DTLZ1(3)-IGD.txt.
Results/NSGAIII-DTLZ1(3)-Run0.txt |
NSGAIII-DTLZ1(3)-IGD.txt |
0.167265 0.0420097
0.293013
0.211081 0.25112 0.0405228
0.0427483 0.251813 0.207985
0.209398 0.209558 0.0832274
0.208227 0.29356 0.000579598
0.0839305 0.0421164 0.376508
0.0834202 0.208936 0.210077
0.376666 6.77192e-006 0.125773
0.168201 0.209003 0.125253
... |
0.00202296
0.0168659
0.00173308
0.00176916
0.00300788
0.00630118
0.00255531
0.00242503
0.00877276
... |
- If you run nsga3cpp
successfully with gnuplot, you can
view the distribution of the
final population on the objective space for each run. To
observe
the evolutionary progress please call
ShowPopulation()
in alg_nsgaiii.cpp.
¡@
-
Extension (Add your own
problem)
- If you want to add your
own problem, you can define it in
problem_self.h/.cpp.
You need to give it a name, define the number of
variables/objectives, provide the domains of variables, and define
the evaluation function.
- Next, create the appropriate experiment setup file (say,
expSelf.ini)
in the directory of
Experiments.
- Finally, modify the generator in
problem_factory.cpp
so that it can recognize how to create an instance of your problem.
¡@
¡@
|