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_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 と同等になります。これは交叉結果の いずれか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