evox.algorithms.mo.nsga3

Module Contents

Classes

NSGA3

An implementation of the tensorized NSGA-III for many-objective optimization problems.

Functions

Data

API

evox.algorithms.mo.nsga3._get_table_row_inner(bool_ref_candidate: torch.Tensor, upper_bound: torch.Tensor)[source]
evox.algorithms.mo.nsga3.vmap_get_table_row

‘vmap(…)’

evox.algorithms.mo.nsga3._select_from_index_by_min_inner(group_id: torch.Tensor, group_dist: torch.Tensor, idx: torch.Tensor)[source]
evox.algorithms.mo.nsga3.vmap_select_from_index_by_min

‘vmap(…)’

evox.algorithms.mo.nsga3._get_extreme_inner(norm_fit: torch.Tensor, w: torch.Tensor)[source]
evox.algorithms.mo.nsga3.vmap_get_extreme

‘vmap(…)’

class evox.algorithms.mo.nsga3.NSGA3(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, data_type: Optional[torch.dtype] = None, device: torch.device | None = None)[source]

Bases: evox.core.Algorithm

An implementation of the tensorized NSGA-III for many-objective optimization problems.

References:

[1] K. Deb and H. Jain, “An Evolutionary Many-Objective Optimization Algorithm Using Reference-Point-Based Nondominated Sorting Approach, Part I: Solving Problems With Box Constraints,” IEEE Transactions on Evolutionary Computation, vol. 18, no. 4, pp. 577-601, 2014. Available: https://ieeexplore.ieee.org/document/6600851

[2] H. Li, Z. Liang, and R. Cheng, “GPU-accelerated Evolutionary Many-objective Optimization Using Tensorized NSGA-III,” in 2025 IEEE Congress on Evolutionary Computation, 2025.

Initialization

Initializes the NSGA-III 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).

  • data_type – The data type for the decision variables (optional). Defaults to torch.float32.

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

_get_extreme(norm_fit: torch.Tensor, w: torch.Tensor)[source]
_compute_distances(fit: torch.Tensor, ref: torch.Tensor)[source]