1
$\begingroup$

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)

$\endgroup$
1
  • $\begingroup$ Does this code cover what you are looking for? $\endgroup$
    – ar2015
    Feb 7, 2017 at 8:11

4 Answers 4

1
$\begingroup$

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.
$\endgroup$
1
  • $\begingroup$ Please let us know what code ends up working for you, and what type of problem you are solving. $\endgroup$
    – Septimus G
    Sep 19, 2016 at 23:00
0
$\begingroup$

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

$\endgroup$
1
  • $\begingroup$ The [COCO][1] seems to only tackle continuous. I precised my problem is discrete. [1]: coco.gforge.inria.fr $\endgroup$
    – dev93
    Apr 16, 2016 at 17:20
0
$\begingroup$

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).

$\endgroup$
0
$\begingroup$

Despite late response, I believe openGA is the library that fits your requirements.

It is supporting multi-objective problems with NSGA-III. It is based on C++ and supports Linux, Windows and OSX. The templated structure of openGA requires you to define the solution by yourself and manage it however, this means you have maximum customization on it and you can even implement genetic programming with it. Even though it was not originally planning for GP.

You can apply any constraint you want on the solutions and these constraints can act at the beginning, during it or at the end of the cost function.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.