evomo.algorithms.moead_de#
Attributes#
Classes#
Initialize the MOEADDE population and optimization state. |
Module Contents#
- class evomo.algorithms.moead_de.MOEADDE(pop_size: int, n_objs: int, lb: torch.Tensor, ub: torch.Tensor, delta: float = 0.9, nr: int = 2, F: float = 0.5, CR: float = 1.0, **kwargs)#
Bases:
evox.core.AlgorithmInitialize the MOEADDE population and optimization state.
- Parameters:
pop_size (int) – Required. Requested number of candidate solutions. Use a positive integer; algorithm-specific minimums and reference-vector sampling are described below.
n_objs (int) – Required. Number of objectives, matching the second dimension of the problem’s objective tensor. Objectives are minimized; this library targets two or more objectives.
lb (torch.Tensor) – Required. Lower decision bounds of shape
(D,), whereDis the number of decision variables. Use floating-point bounds with the same shape, dtype and device asub, andlb <= ubelementwise.ub (torch.Tensor) – Required. Upper decision bounds of shape
(D,). The decision dimension is inferred from the bounds, rather than passed separately. Matchlbin shape, dtype and device.delta (float) – Default:
0.9. Probability in[0, 1]of drawing mating parents from the current subproblem’s neighborhood. The remaining draws use the full population. This controls mating, not the replacement limit.nr (int) – Default:
2. Maximum number of incumbent solutions replaced by one offspring during decomposition-based updating. Use a positive integer; the number actually replaced also depends on fitness comparisons.F (float) – Default:
0.5. Differential-evolution scale multiplying a difference between parent decision vectors. Use a positive value; larger values produce larger differential steps before bound repair.CR (float) – Default:
1.0. Accepted and stored, but not used by the current variation step. The implementation forms differential offspring and applies polynomial mutation without binomial crossover, so changing this value has no effect.kwargs (dict) – Default:
{}. Extra keyword arguments are accepted for constructor compatibility but are not read by this implementation. In particular, passingdevice=...here does not move tensors; place both bounds on the intended device before construction.
Note
Use this algorithm through a workflow that connects the problem’s evaluation method. Call
workflow.init_step()beforeworkflow.step()or compiling the step. The current evaluation path expects an objective tensor of shape(B, n_objs). It does not consume a(fitness, constraint_violation)tuple.Reference-vector sampling can change the requested population size. Read
self.pop.shape[0]for the actual size.Tensor allocation uses
lb.device. There is no explicit device parameter; prepare both bounds on the intended device.- init_step() None#
Evaluate the initial population and initialize algorithm state.
Invoke through
workflow.init_step()before the first optimization step.- Returns:
None; results are stored in algorithm state.
- step() None#
Advance optimization and update population and fitness state in place.
Invoke through
workflow.step()after initialization. The caller controls termination.- Returns:
None; results are stored in algorithm state.
- evomo.algorithms.moead_de.algo#