evox.algorithms.mo.nsga2

Module Contents

Classes

NSGA2

A tensorized implementation of the Non-dominated Sorting Genetic Algorithm II (NSGA-II) for multi-objective optimization problems.

API

class evox.algorithms.mo.nsga2.NSGA2(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

A tensorized implementation of the Non-dominated Sorting Genetic Algorithm II (NSGA-II) for multi-objective optimization problems.

References:

[1] K. Deb, A. Pratap, S. Agarwal, and T. Meyarivan, “A fast and elitist multiobjective genetic algorithm: NSGA-II,” IEEE Transactions on Evolutionary Computation, vol. 6, no. 2, pp. 182-197, 2002. Available: https://ieeexplore.ieee.org/document/996017

[2] Z. Liang, H. Li, N. Yu, K. Sun, and R. Cheng, “Bridging Evolutionary Multiobjective Optimization and GPU Acceleration via Tensorization,” IEEE Transactions on Evolutionary Computation, 2025. Available: https://ieeexplore.ieee.org/document/10944658

Initialization

Initializes the NSGA-II 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 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 the optimization step of the workflow.