Class BaseMOEAD<S extends org.uma.jmetal.solution.Solution<?>>

java.lang.Object
org.uma.evolver.algorithm.base.moead.BaseMOEAD<S>
Type Parameters:
S - the type of solutions handled by this algorithm, must extend Solution
All Implemented Interfaces:
BaseLevelAlgorithm<S>
Direct Known Subclasses:
BinaryMOEAD, DoubleMOEAD, PermutationMOEAD

public abstract class BaseMOEAD<S extends org.uma.jmetal.solution.Solution<?>> extends Object implements BaseLevelAlgorithm<S>
Abstract base class for configurable implementations of the MOEA/D (Multi-Objective Evolutionary Algorithm based on Decomposition) algorithm.

This class provides a flexible and extensible implementation of the MOEA/D framework, supporting various decomposition-based multi-objective optimization approaches. It manages the configuration and assembly of the main algorithm components through a parameter space.

Key features include:

  • Decomposition-based optimization using weight vectors
  • Configurable aggregation functions
  • Neighborhood-based mating and replacement
  • Support for external archives
  • Flexible termination conditions

Example usage:


 // Create a problem instance
 Problem<DoubleSolution> problem = new MyMultiObjectiveProblem();

 // Configure the algorithm
 int populationSize = 100;
 int maxEvaluations = 25000;
 String weightVectorsDir = "src/main/resources/weightVectors";
 ParameterSpace parameterSpace = new MOEADCommonParameterSpace<>();

 // Create and run the algorithm
 BaseMOEAD<DoubleSolution> moead = new MOEADDouble(problem, populationSize, maxEvaluations,
                                                  weightVectorsDir, parameterSpace);
 EvolutionaryAlgorithm<DoubleSolution> algorithm = moead.build();
 algorithm.run();

 // Get results
 List<DoubleSolution> population = algorithm.result();
 

Subclasses must implement the setNonConfigurableParameters() method to set any parameters that are fixed or derived from the problem instance. If no such parameters exist, the implementation can be left empty.

Since:
version
See Also: