optuna.samplers.nsgaii.VSBXCrossover

class optuna.samplers.nsgaii.VSBXCrossover(eta=None, uniform_crossover_prob=0.5, use_child_gene_prob=0.5)[source]

NSGAIISampler で使用される改良版 Simulated Binary Crossover 操作。

vSBX は SBX の優れた特性を維持しつつ、パラメータ空間のどの領域も除外することなく 子個体を生成します。

論文では vSBX は eta という単一の引数を持ち、 2 つの子個体を生成します。 しかし、Optuna では 1 回の交叉操作で 1 つの子個体しか返せないため、 uniform_crossover_probuse_child_gene_prob 引数を使用して 2 個体を 1 個体に統合します。

Parameters:
  • eta (float | None) – 分布指数。eta の値が小さいほど、遠い解が子個体として選択されやすくなります。 指定しない場合、単一目的関数では 2、多目的関数では 20 がデフォルト値となります。

  • uniform_crossover_prob (float) – 候補子個体として選択された 2 個体間の一様交叉の確率。 この引数は 2 個体が交叉して 1 個体を生成するかどうかを決定します。 uniform_crossover_prob が 0.5 を超える場合、 結果は 1-uniform_crossover_prob と同等になります。 これは交叉結果の 2 個体のうち 1 つを返すためです。 指定しない場合、デフォルト値は 0.5 です。 値の範囲は [0.0, 1.0] です。

  • use_child_gene_prob (float) – 親個体の値ではなく生成された子個体の値を使用する確率。 この確率は各変数に個別に適用されます。 1-use_child_gene_prob は親個体の値をそのまま使用する確率です。 指定しない場合、デフォルト値は 0.5 です。 値の範囲は (0.0, 1.0] です。

Note

v3.0.0 で実験的機能として追加されました。インターフェースは予告なく変更される可能性があります。 詳細は https://github.com/optuna/optuna/releases/tag/v3.0.0 を参照してください。

メソッド

crossover(parents_params, rng, study, ...)

Perform crossover of selected parent individuals.

属性

n_parents

crossover(parents_params, rng, study, search_space_bounds)[source]

選択された親個体の交叉を実行します。

このメソッドは sample_relative() で呼び出されます。

Parameters:
  • parents_params (np.ndarray) – numpy.ndarray 型で、次元は num_parents x num_parameters。 各親個体のパラメータ空間を表します。この空間は数値パラメータに対して連続的です。

  • rng (np.random.RandomState) – numpy.random.RandomState のインスタンス。

  • study (Study) – 対象のスタディオブジェクト。

  • search_space_bounds (np.ndarray) – 変換された探索空間から構築された数値分布の範囲を表す numpy.ndarray 型で、次元は len_search_space x 2

Returns:

新しいパラメータ組み合わせを含む 1 次元 numpy.ndarray

Return type:

np.ndarray