I am working on multi-objective optimization in Matlab, and am using the fiminimax
in the Optimization toolbox. I want to know if fminimax
applies Pareto optimization, and if not, why? Also, can you suggest a multi-objective optimization package in Matlab or Python that does use Pareto?
For python, DEAP may be the one you're looking for. Extensive documentation with a lot of real life examples, and a really helpful Google Groups forum. It implements two robust MO algorithms: NSGA-II and SPEA-II.
Edit (as requested)
I am using DEAP for my MSc thesis, so I will let you know how we are using Pareto optimality. Setting DEAP up is pretty straight-forward, as you will see in the examples. Use this one as a starting point. This is the short version , which uses the built-in algorithms and operators. Read both and then follow these guidelines.
As the OneMax example is single-objective, it doesn't use MO algorithms. However, it's easy to implement them:
return sum(individual), numpy.std(individual)
would work. weights
parameter of the base.Fitness
object so it matches that returned n-tuple. A positive float means maximization, while a negative one means minimization. You can use any real number, but I would stick with 1.0
and -1.0
for the sake of simplicity. cxSimulatedBinaryBounded()
, mutPolynomialBounded()
and selNSGA2()
, for crossover, mutation and selection operations, respectively. These are the suggested methods, as they were developed by the NSGA-II authors. MuPlusLambda()
. halloffame
parameter from HallOfFame()
to ParetoFront()
. This will return all non-dominated individuals, instead of the best lexicographically sorted "best individuals in all generations". Then you can resolve your Pareto Front as desired: weighted sum, custom lexicographic sorting, etc. I hope that helps. Take into account that there's also a full, somehow more advanced, NSGA2 example available here .
For fminimax
and fgoalattain
it looks like the answer is no . However, the genetic algorithm solver, gamultiobj
, is Pareto set-based, though I'm not sure if it's the kind of multi-objective optimization function you want to use. gamultiobj
implements the NGSA-II evolutionary algorithm. There's also this package that implements the Strengthen Pareto Evolutionary Algorithm 2 (SPEA-II) in C with a Matlab mex
interface. It's a bit old so you might want to recompile it (you'll need to anyways if you're not on Windows 32-bit).
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.