Opened 2 years ago

Last modified 10 days ago

#2987 accepted feature request

Implement MOEA/D algorithm in HeuristicLab

Reported by: bburlacu Owned by: bburlacu
Priority: medium Milestone: HeuristicLab 3.3.x Backlog
Component: Algorithms.DataAnalysis Version: branch
Keywords: Cc:


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


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.)

Change History (11)

comment:1 Changed 2 years ago by bburlacu

  • Status changed from new to accepted
  • Type changed from defect to feature request

comment:2 Changed 2 years ago by bburlacu

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.


  • 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)
Last edited 2 years ago by bburlacu (previous) (diff)

comment:3 Changed 2 years ago by bburlacu

Last edited 2 years ago by bburlacu (previous) (diff)

comment:4 Changed 2 years ago by bburlacu

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

comment:5 Changed 2 years ago by bburlacu


  • 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.

comment:6 Changed 2 years ago by bburlacu

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

comment:7 Changed 2 years ago by bburlacu

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

comment:8 Changed 2 years ago by bburlacu

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

comment:9 Changed 19 months ago by kyang

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)$

comment:10 follow-up: Changed 12 days ago by gkronber

@bburlacu please prepare the branch for trunk merge

comment:11 in reply to: ↑ 10 Changed 10 days ago by bburlacu

Replying to 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.

Note: See TracTickets for help on using tickets.