Water: A Multi-Objective Benchmark Problem



This is a write-up that really should go into the documentation of PGAPack but I was unable to include plotly graphics into a github README.rst file, even using the proxy-site raw.githack.com (which is a page that serves html and javascript files with the correct content type so that it can be displayed in a web browser – github choses to serve these files with content-type text/plain). Github refuses to render an iframe inside a github page.

The "Water Resource Planning" problem [RTS01] is an engineering problem that has been used as a benchmark for multi-objective optimization in the literature including classical papers like the original article on NSGA_II [DPAM02]. The problem consists of seven constraints and a five-dimensional objective function.

I have used this for quite some time to test my NSGA-II implementation in PGAPack. It is in the examples/nsgaii directory and can (after compilation) be called with test-problem index 12:

examples/nsgaii/optimize 12

The output of this program can also be found in the file

test/nsgaii_optimize_12.data

For testing I'm shipping a script called crowdingplot to plot objectives in a multi-objective problem. It is in the same directory as the code for the example.

The "water" problem has strong correlation between objectives 0 and 2 (as also found by Singh et. al. [SIR11]), we can see this when we plot the two objectives using:

crowdingplot -x=0 -y=2 test/nsgaii_optimize_12.data

The call to crowdingplot above will use the matplotlib backend, if you want the plotly backend (as in the graphics above), you can specify the -S option.

We see in this plot that getting a better evaluation for objective 0 also gets a better evaluation of objective 2 and vice-versa, i.e. the objectives are not contradictory. Furthermore objective 3 is redundant [SIR11] with the other objectives and can be left out when plotting objectives. So the 5-dimensional pareto front can be reduced to a 3-dimensional front and can be plotted with crowdingplot in three dimensions showing quite similar results when scaled to the same visible range:

crowdingplot -3 -x=0 -y=1 -z=4 test/nsgaii_optimize_12.data
crowdingplot -3 -x=2 -y=1 -z=4 test/nsgaii_optimize_12.data

On the one hand this means that this example is not really a five dimensional problem – on the other hand it is nice that we can visualize the data which is not so easy for five dimensions.

[DPAM02]

Kalyanmoy Deb, Amrit Pratap, Sameer Agarwal, and T. Meyarivan. A fast and elitist multiobjective genetic algorithm: NSGA-II. IEEE Transactions on Evolutionary Computation, 6(2):182–197, April 2002.

[RTS01]

Tapabrata Ray, Kang Tai, and Kin Chye Seow. Multiobjective design optimization by an evolutionary algorithm. Engineering Optimization, 33(4):399–424, 2001.

[SIR11] (1,2)

Hemant Kumar Singh, Amitay Isaacs, and Tapabrata Ray. A pareto corner search evolutionary algorithm and dimensionality reduction in many-objective optimization problems. IEEE Transactions on Evolutionary Computation, 15(4):539–556, August 2011.