optuna.samplers.nsgaii.SBXCrossover
- class optuna.samplers.nsgaii.SBXCrossover(eta=None, uniform_crossover_prob=0.5, use_child_gene_prob=0.5)[source]
NSGAIISamplerで使用されるシミュレーテッドバイナリ交叉操作。多項式確率分布に従って、2つの親個体から子個体を生成します。
原論文ではSBXは単一の引数
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と同等になります。これは交叉結果の いずれか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