saealib.PBIDecomposition#

class saealib.PBIDecomposition(theta=5.0)[ソース]#

ベースクラス: Decomposition

Penalty-Based Boundary Intersection (PBI) scalarization.

score_i = d1_i + theta * d2_i

where:

  • d1_i = |(f_i - z*) · (w / ‖w‖)| — distance along the weight vector.

  • d2_i = ‖(f_i - z*) - d1_i * (w / ‖w‖)‖ — perpendicular distance.

theta (default 5.0) penalizes deviation from the weight vector direction, controlling the trade-off between convergence and diversity.

パラメータ:

theta (float) -- Penalty weight for the perpendicular component. The original MOEA/D paper (Zhang & Li, 2007) uses theta = 5.

参照

[9]: Zhang, Q., & Li, H. (2007). MOEA/D: A multiobjective evolutionary algorithm based on decomposition. IEEE Transactions on Evolutionary Computation, 11(6), 712-731.

Methods

__init__

aggregate

Compute the PBI scalar score.

contract

Return the decomposition contract.

Method Details

PBIDecomposition.__init__(theta=5.0)[ソース]#
パラメータ:

theta (float)

戻り値の型:

None

PBIDecomposition.aggregate(f, weights, ideal_point)[ソース]#

Compute the PBI scalar score.

パラメータ:
  • f (np.ndarray) -- Objective matrix, shape (N, n_obj).

  • weights (np.ndarray) -- Non-negative weight vector, shape (n_obj,).

  • ideal_point (np.ndarray) -- Ideal (reference minimum) point, shape (n_obj,).

戻り値:

Scores, shape (N,). Lower is better.

戻り値の型:

np.ndarray

PBIDecomposition.contract()#

Return the decomposition contract.

戻り値の型:

ComponentContract