Opened 15 months ago

Last modified 5 days ago

#2592 assigned feature request

MO-CMA-ES for Realnumbered Problem

Reported by: bwerth Owned by: bwerth
Priority: medium Milestone: HeuristicLab 3.3.15
Component: Algorithms.CMAEvolutionStrategy Version: 3.3.13
Keywords: Cc:


A multiobjective CMA-ES variant for realnumbered multiobjective problems should be created.

Change History (16)

comment:1 Changed 15 months ago by bwerth

r13730 create new branch folder r13731 initial branch r13732 rename folder

comment:2 Changed 14 months ago by bwerth

r13793 first unfinished implementation similiar to Shark – Machine Learning 3.1

comment:3 Changed 13 months ago by bwerth

r13909 added analysiation and CrowdingIndicator

comment:4 Changed 12 months ago by mkommend

  • Milestone changed from HeuristicLab 3.3.14 to HeuristicLab 3.3.15

comment:5 Changed 12 months ago by bwerth

Last edited 12 months ago by bwerth (previous) (diff)

comment:6 Changed 12 months ago by bwerth

r13990 reimplemented Indicators

comment:7 Changed 10 months ago by bwerth

r14269 code cleanup + project refactored

Last edited 10 months ago by bwerth (previous) (diff)

comment:8 Changed 8 months ago by bwerth

  • Status changed from new to assigned

comment:9 Changed 8 months ago by bwerth

  • Owner changed from bwerth to mkommend
  • Status changed from assigned to reviewing

comment:10 Changed 7 months ago by bwerth

r14404 several fixes and cleanups to adapt a more HeuristicLab-Code-Style + renaming of folders and Plugin

comment:11 Changed 7 months ago by mkommend

  • Owner changed from mkommend to pfleck

comment:12 Changed 5 months ago by bwerth

r14577 made MOCMAES compatible with MultiObjectiveBasicProblem instead of MultiObjectiveTestfunction, fixed Bug in CrowdingIndicator

comment:13 Changed 5 months ago by bwerth

r14612 made initialization solutionspace-scaling invariant

comment:14 Changed 5 months ago by pfleck


  • Fixed scale invariant initialization by changing the initial sigma to a DoubleArray for initializing the covariance matrix (similar to the CMA-ES).
  • Made the MO-CMA-ES pausable (although the algorithm state is not yet storable when paused).

comment:15 Changed 5 days ago by pfleck

  • Owner changed from pfleck to bwerth
  • Status changed from reviewing to assigned

Reviewed the current state of the branch:

General Structure

  • Add license information header in all files.
  • Put all Indicator implementations into a separate folder called Indicators (however, they should not be in a new namespace). The interface should stay in the root of the project.
  • The plugin is called MOCMAColutionStrategy, the algorithm is called MOCMASEvolutionStrategy. Use a consistent name.
  • Get rid of the MOCMAESParameters class (e.g. store the values in the MOCMAEvolutionStrategy and pass the whole class into the MOCMAESIndividual).
  • Rename the MOCMAESIndividual to Individual (also rename the file).

Code Improvements

  • Make the state of the MOCMAEvolutionStrategy storable (the internal variables?) so that it can be paused, stored, reopened and resumed.
    • Be careful that all stored fields are storable types as well (e.g. MOCMAESIndividual)
  • Remove the Utilities.cs, if possible
    • Use DoubleMatrix.CloneAsMatrix instead of the ToArray
      • If not possible, create an internal static helper class DoubleMatrixHelper with a extension method CloneAsArray
    • Use Linq instead of the ArgMin/Max of the Utilities.cs
      • e.g. xxx.OrderBy(x=>x.value).First(x=>x.argument))

I would also suggest to move all multi-objective related stuff into a separate plugin. But this should be done in another ticket since it will also effect some other existing plugins.

comment:16 Changed 5 days ago by bwerth

r15045 improvements/changes as requested:

  • Licence headers added
  • Indicators moved to folder
  • Typo MOCMAS <-> MOCMA corrected
  • MOCMAESParameters removed
  • MOCMAESIndividual renamed
  • Fixed bug in Individual where updates due to unsuccessful children were ignored
  • MOCMAEvolutionStrategy is now storable and pausable
  • Replaced ArgMin/Max as suggested
  • Renamed Utilities to DoubleMatrixHelper and changed both conversion methods to extensions
  • Fixed bug where updates in the ReferencePoint were ignored by MOCMAEvolutionStrategy and HypervolumeIndicator
  • Some code reordering
  • Minor improvement in HypervolumeIndicatoras the overall HV is no longer calculated
Note: See TracTickets for help on using tickets.