Which C++ Multi-objective Optimization libraries allows the addition of custom problems and custom algorithms?

I'm working on a custom discrete and constrained multi-objective optimization problem and I'd like to know which libraries or platforms that implement algorithms like SPEA2 and NSGA in C++ and that allow the addition of custom algorithms.

I'd like it to be easily customizable to my problem, efficient, cross-platform and possibly easy to use. Some of them (like EO, MOMH or Open beagle don't seem to maintained any more).

PISA (written in C) doesn't seem to fit my needs since I wish to add a method using multiple populations for the optimization process.

Thank you for your help (Propositions of other platforms are welcome)

• Does this code cover what you are looking for? – ar2015 Feb 7 '17 at 8:11

Look at the jMetal library 1 it is in Java, which is very similar to C++. It is very extensive and has several, and rather recent, multi objective methods. It is probably the best MO library I have found out there in any language.

Also I remember some professor had a C++ implementation of NSGA III. He could not reproduce the paper that proposed the algorithm , but it may perfectly fit your needs.

EDIT: I added a thread that discusses NSGA III implementations. Also, I would like to comment that I have used the variation of NSGA II implemented in Matlab with many objectives ( >10) and binary variables, and it worked pretty well for my application. So it is always good to try, even if people say that it is limited to a certain number of objectives. You also have to use you parameters intelligently (population size, mutation rate, etc.)

References

1. J.J. Durillo, A.J. Nebro jMetal: a Java Framework for Multi-Objective Optimization. Advances in Engineering Software 42 (2011) 760-771.
2. A.J. Nebro, J.J. Durillo, M. Vergne Redesigning the jMetal Multi-Objective Optimization Framework. GECCO (Companion) 2015, pp: 1093-1100. July 2015.
• Please let us know what code ends up working for you, and what type of problem you are solving. – Septimus G Sep 19 '16 at 23:00

Would the COCO framework be useful? See the competitions at GECCO 2016 (and earlier conferences). http://gecco-2016.sigevo.org/index.html/HomePage#&panel1-1

• The [COCO][1] seems to only tackle continuous. I precised my problem is discrete. [1]: coco.gforge.inria.fr – dev93 Apr 16 '16 at 17:20

I'm not sure if it exactly has SPEA2 or NSGA, but check out DAKOTA. It has all manner of genetic algorithms that can tackle discrete and continuous optimization problems. You can either link to it directly, or use it as a driver which calls your programs as a black box. It's all open source so I'm sure you could add your own custom algorithms, though I can't speak to how easy that is.

Overall it's a fantastic and very capable program for optimization (and many other related problems).