evox.algorithms.mo.moead

Module Contents

Classes

MOEAD

Implementation of the Original MOEA/D algorithm.

Functions

pbi

API

evox.algorithms.mo.moead.pbi(f: torch.Tensor, w: torch.Tensor, z: torch.Tensor)[source]
class evox.algorithms.mo.moead.MOEAD(pop_size: int, n_objs: int, lb: torch.Tensor, ub: torch.Tensor, selection_op: Optional[Callable] = None, mutation_op: Optional[Callable] = None, crossover_op: Optional[Callable] = None, device: torch.device | None = None)[source]

Bases: evox.core.Algorithm

Implementation of the Original MOEA/D algorithm.

References:

[1] Q. Zhang and H. Li, “MOEA/D: A Multiobjective Evolutionary Algorithm Based on Decomposition,” IEEE Transactions on Evolutionary Computation, vol. 11, no. 6, pp. 712-731, 2007. Available: https://ieeexplore.ieee.org/document/4358754

Note

This implementation closely follows the original paper and reference code. It is not optimized for tensorized computation and may therefore be less efficient on GPU.

Initialization

Initializes the MOEA/D algorithm.

Parameters:
  • pop_size – The size of the population.

  • n_objs – The number of objective functions in the optimization problem.

  • lb – The lower bounds for the decision variables (1D tensor).

  • ub – The upper bounds for the decision variables (1D tensor).

  • selection_op – The selection operation for evolutionary strategy (optional).

  • mutation_op – The mutation operation, defaults to polynomial_mutation if not provided (optional).

  • crossover_op – The crossover operation, defaults to simulated_binary_half if not provided (optional).

  • device – The device on which computations should run (optional). Defaults to PyTorch’s default device.

init_step()[source]

Perform the initialization step of the workflow.

Calls the init_step of the algorithm if overwritten; otherwise, its step method will be invoked.

step()[source]

Perform a single optimization step of the workflow.