Associate Professor Tsung-Che Chiang

Department of Computer Science and Information Engineering
National Taiwan Normal University

Tel: +886-2-77346692    Fax: +886-2-29322378    Email


¡@
¡@

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.

¡@

¡@

¡@ ¡@
¡@

¡@

¡@