简体   繁体   中英

Does Matlab's fminimax apply Pareto optimality?

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:

  • Change your evaluation function so it returns a n-tuple with the desired scores. If you want to minimize standard deviation too, something like return sum(individual), numpy.std(individual) would work.
  • Also, modify the 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.
  • Change your genetic operators to 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.
  • If you want to use one of the embedded ready-to-go algorithms in DEAP, choose MuPlusLambda() .
  • When calling the algorithm, remember to change the 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM