Opened 19 months ago

Closed 3 months ago

#2592 closed feature request (done)

MO-CMA-ES for Realnumbered Problem

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

Description

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

Change History (38)

comment:1 Changed 19 months ago by bwerth

r13730 create new branch folder r13731 initial branch r13732 rename folder

comment:2 Changed 18 months ago by bwerth

r13793 first unfinished implementation similiar to Shark – Machine Learning 3.1

comment:3 Changed 16 months ago by bwerth

r13909 added analysiation and CrowdingIndicator

comment:4 Changed 16 months ago by mkommend

  • Milestone changed from HeuristicLab 3.3.14 to HeuristicLab 3.3.15

comment:5 Changed 16 months ago by bwerth

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

comment:6 Changed 16 months ago by bwerth

r13990 reimplemented Indicators

comment:7 Changed 14 months ago by bwerth

r14269 code cleanup + project refactored

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

comment:8 Changed 11 months ago by bwerth

  • Status changed from new to assigned

comment:9 Changed 11 months ago by bwerth

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

comment:10 Changed 11 months ago by bwerth

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

comment:11 Changed 11 months ago by mkommend

  • Owner changed from mkommend to pfleck

comment:12 Changed 9 months ago by bwerth

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

comment:13 Changed 9 months ago by bwerth

r14612 made initialization solutionspace-scaling invariant

comment:14 Changed 9 months ago by pfleck

r14614

  • 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 follow-up: Changed 4 months 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 4 months 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

comment:17 in reply to: ↑ 15 Changed 4 months ago by abeham

Replying to pfleck:

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.

As of r15080 (#2782) there's a class DominationCalculator in HeuristicLab.Optimization. It's generic over the type of the solution. Please use this class in the future. If you have further stuff, please add it to the MultiObjective folder in that plugin.

Last edited 4 months ago by abeham (previous) (diff)

comment:18 Changed 4 months ago by bwerth

r15089

  • removed effectively unused field "rank" from Individual
  • removed non-dominated sorting in favor of DominationCalculator

comment:19 Changed 4 months ago by bwerth

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

comment:20 Changed 3 months ago by bwerth

r15175 fixed .csproj and typo in IIndicator

comment:21 Changed 3 months ago by bwerth

r15176 formatting & removed unreferenced enum

comment:22 Changed 3 months ago by bwerth

r15177 removed GUID from MOCMAEvolutionStrategy

comment:23 Changed 3 months ago by pfleck

  • Status changed from reviewing to assigned

comment:24 Changed 3 months ago by pfleck

r15178: Merged from branch to trunk

comment:25 Changed 3 months ago by pfleck

r15179: Added missing reference

comment:26 Changed 3 months ago by pfleck

r15180: Added another missing reference.

comment:27 Changed 3 months ago by pfleck

r15203

  • Renamed ScatterPlotContent to ParetoFrontScatterPlot (also renamed corresponding view).
  • Refactored ParetoFrontScatterPlotView (use ScatterPlot internally).

Backwardscompatability was not considered because the old ScatterPlotContent is so new that there is very little chance someone already stored it.

comment:28 Changed 3 months ago by pfleck

r15205 Speed-up MOCMAES by batch-incrementing Evaluations to reduce update-overhead

comment:29 Changed 3 months ago by bwerth

r15206 removed redundant paused/stopped check

comment:30 Changed 3 months ago by pfleck

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

Please review r15203. The rest is already reviewed and ready to release.

comment:31 Changed 3 months ago by abeham

  • Owner changed from abeham to pfleck

r15203 looks good. However, I'd like to suggest a slightly different ItemName for the algorithm: "Multi-objective CMA Evolution Strategy (MOCMAES)". Otherwise we just repeat MOCMA and it doesn't become any clearer what it means.

r15221: changed item image of pareto front scatter plot

comment:32 Changed 3 months ago by pfleck

r15226 Changed item name as suggested by abeham.

comment:33 Changed 3 months ago by jkarder

r15236: fixed project file

  • switched target framework from .NET 4.5.2 to 4.5
  • added pre build event for mono builds

comment:34 Changed 3 months ago by pfleck

Reviewed r15221, r15236: ok

comment:35 Changed 3 months ago by pfleck

  • Status changed from reviewing to readytorelease

comment:36 Changed 3 months ago by pfleck

r15244: merged 15178-15180,15203,15205-15206,15221,15226,15236 to stable

comment:37 Changed 3 months ago by pfleck

r15245 deleted branch

comment:38 Changed 3 months ago by gkronber

  • Resolution set to done
  • Status changed from readytorelease to closed
Note: See TracTickets for help on using tickets.