physbo.search.unify package

Submodules

Module contents

class physbo.search.unify.NDS(num_objectives: int, rank_max: int = 10)[ソース]

ベースクラス: object

Unified objective function based on the Non-Dominated Sorting (NDS) method.

The unified objective function of original objectives t is defined as: t_unified = 1 / rank where rank is the Pareto rank of the solution. Solutions with the rank 1 are the Pareto solutions of the original set. Solutions with the rank 2 are the Pareto solutions of the set where the solutions with the rank 1 are removed. Solutions with the rank r are the Pareto solutions of the set where the solutions with the rank 1, 2, ..., r-1 are removed.

パラメータ:

num_objectives (int) -- Number of objectives

Initialize NDS unified objective function

パラメータ:
  • num_objectives (int) -- Number of objectives

  • rank_max (int) -- Maximum rank of the NDS

num_objectives: int

Number of objectives

rank_max: int

Maximum rank of the NDS

class physbo.search.unify.ParEGO(num_objectives: int, weight_sum: float = 0.05, weight_max: float = 1.0, weights: ndarray | None = None, weights_discrete: int = 0)[ソース]

ベースクラス: object

ParEGO unified objective function

The unified objective function of original objectives t is defined as: t_unified = weight_max * max(weights * t) + weight_sum * sum(weights * t)

Before calculating the unified objective function, the original objectives are normalized to 0 and 1 using min-max scaling.

パラメータ:
  • num_objectives (int) -- Number of objectives

  • weight_sum (float) -- Weight of the sum of objectives, default is 0.05

  • weight_max (float) -- Weight of the max of objectives, default is 1.0

  • weights (np.ndarray) -- Weights for the objectives. Weights are automatically normalized to sum to 1. If None (default), random weights are used for each call.

  • weights_discrete (int) -- Number of discrete points \(s\) to generate random weights. The weights are generated as \(w_i = \frac{a_i}{s}\), where \(a_i\) is random integer in \([0, s)\) such that \(\sum_{i=1}^{num_objectives} a_i = s\). (See Equation (1) in [1] for details.) If 0 (default), each weight is generated randomly from \([0, 1)\) and normalized to sum to 1.

参考文献

[1] J. Knowles, ParEGO: a hybrid algorithm with on-line landscape approximation for expensive multiobjective optimization problems, IEEE Trans. Evol. Comput. 10, 50 (2006) (doi:10.1109/tevc.2005.851274).

num_objectives: int

Number of objectives

weight_max: float

Weight of the max of objectives

weight_sum: float

Weight of the sum of objectives

weights: ndarray | None

Weights for the objectives. Weights are automatically normalized to sum to 1. If None, random weights are used for each call.

weights_discrete: int

Number of discrete points to generate random weights