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_prob
とuse_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