saealib.PBIDecomposition#
- class saealib.PBIDecomposition(theta=5.0)[source]#
Bases:
DecompositionPenalty-Based Boundary Intersection (PBI) scalarization.
score_i = d1_i + theta * d2_iwhere:
d1_i = |(f_i - z*) · (w / ‖w‖)|— distance along the weight vector.d2_i = ‖(f_i - z*) - d1_i * (w / ‖w‖)‖— perpendicular distance.
theta(default5.0) penalizes deviation from the weight vector direction, controlling the trade-off between convergence and diversity.- Parameters:
theta (float) – Penalty weight for the perpendicular component. The original MOEA/D paper (Zhang & Li, 2007) uses
theta = 5.
References
[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
Method Details
- PBIDecomposition.aggregate(f, weights, ideal_point)[source]#
Compute the PBI scalar score.
- Parameters:
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,).
- Returns:
Scores, shape
(N,). Lower is better.- Return type:
np.ndarray
- PBIDecomposition.contract()#
Return the decomposition contract.
- Return type: