heal-research / HeuristicLab

HeuristicLab - An environment for heuristic and evolutionary optimization
https://dev.heuristiclab.com
GNU General Public License v3.0
38 stars 16 forks source link

Implement MOEA/D algorithm in HeuristicLab #2987

Open HeuristicLab-Trac-Bot opened 5 years ago

HeuristicLab-Trac-Bot commented 5 years ago

Issue migrated from trac ticket # 2987

milestone: HeuristicLab 3.3.x Backlog | component: Algorithms.DataAnalysis | priority: medium

2019-01-25 10:31:05: @foolnotion created the issue


The MOEA/D algorithm is a capable metaheuristic for multi-objective optimization. It would be nice to have it in HeuristicLab.

-*Publication**

MOEA/D: A Multiobjective Evolutionary Algorithm Based on Decomposition

-* Features for HeuristicLab Implementation **

  • should work with any encoding
  • extends BasicAlgorithm, supports Pause
  • can use existing operators and analyzers out of the box
  • can be extended to implement different flavours (MOEA/D-DRA, MOEA/D-STM, etc.)
HeuristicLab-Trac-Bot commented 5 years ago

2019-01-25 10:31:27: @foolnotion changed status from new to accepted

HeuristicLab-Trac-Bot commented 5 years ago

2019-01-25 10:31:27: @foolnotion changed type from defect to feature request

HeuristicLab-Trac-Bot commented 5 years ago

2019-01-25 10:51:57: @foolnotion commented


r16557: Branch HeuristicLab.Algorithms.DataAnalysis and add initial implementation adapted from jMetal.

r16560: Create separate plugin for MOEA/D

r16561: Store the population as a List, so it can be cleared when the algorithm is finished in order to save memory. Unversion generated files (Plugin.cs and AssemblyInfo.cs)

r16583: Implement better uniform weight generation, objective scaling, algorithm Pause support.

-* TODO **

  • support all encodings (currently only Symbolic Expressions)

  • proper wiring (+ handle all events)

  • support more than 2 dimensions (implement weight generation - original implementation reads weights from resource files)

  • adapt design to HeuristicLab (eg, maybe use scopes, replace utility code with HeuristicLab extensions/utility methods) (partially done)

HeuristicLab-Trac-Bot commented 5 years ago

2019-01-25 10:51:57: @foolnotion

HeuristicLab-Trac-Bot commented 5 years ago

2019-01-25 10:51:57: @foolnotion

HeuristicLab-Trac-Bot commented 5 years ago

2019-01-25 10:51:57: @foolnotion

HeuristicLab-Trac-Bot commented 5 years ago

2019-02-01 11:20:50: @foolnotion

HeuristicLab-Trac-Bot commented 5 years ago

2019-02-28 14:23:43: @foolnotion commented


r16630: Migrate to new persistence. Add support for objective scaling.

HeuristicLab-Trac-Bot commented 5 years ago

2019-03-01 12:52:32: @foolnotion commented


r16649:

  • Prevent updating the Ideal and Nadir points with NaN or Infinity values.
  • Simplify algorithm code (use arrays instead of lists).
  • Add missing StorableType attributes.
  • Add hypervolume analysis for the pareto fronts.
HeuristicLab-Trac-Bot commented 5 years ago

2019-03-07 16:15:15: @foolnotion commented


r16657: Improve performance by caching parameter values. Fix plugin dependencies in Plugin.cs.frame

HeuristicLab-Trac-Bot commented 5 years ago

2019-03-15 12:48:38: @foolnotion commented


r16688: Eliminate unnecessary cloning. Update to HEAL.Attic-pre4, fix AssemblyTitle

HeuristicLab-Trac-Bot commented 5 years ago

2019-03-26 11:53:09: @foolnotion commented


r16714: Reference HEAL.Attic dll from HL bin folder and add HeuristicLab.Attic to plugin dependencies.

HeuristicLab-Trac-Bot commented 4 years ago

2019-12-20 10:43:10: @kfyang commented


EMOA/D may stuck in a specific region (objective space) without any updates:

  1. DTLZ3: Only explore the region within $f_2 \in (0,0.1)$
  2. DTLZ7: Only explore the region within $f_2 \in (0,0.8)$
HeuristicLab-Trac-Bot commented 3 years ago

2021-07-13 10:49:17: @gkronber commented


@bburlacu please prepare the branch for trunk merge

HeuristicLab-Trac-Bot commented 3 years ago

2021-07-14 13:15:57: @foolnotion commented


Replying to [comment:10 gkronber]:

@bburlacu please prepare the branch for trunk merge

I had a look at this branch and it looks ok to be merged. I am not aware of any outstanding issues with the algorithm.