遺伝的アルゴリズムには、親から子への染色体の交配を選択する段階があります。
バイナリ形式で簡単に実行できます。
しかし、値のエンコーディングを使用して染色体をエンコードするとどうなるでしょうか?
私の染色体の 1 ビットが DOUBLE 型の値であるとしましょう。0.99 としましょう。確率を表すため、その範囲は (0-1) です。
この DOUBLE 数をクロスオーバーするには?
バイナリに変換してクロスオーバーしてから元に戻す...?
遺伝的アルゴリズムには、親から子への染色体の交配を選択する段階があります。
バイナリ形式で簡単に実行できます。
しかし、値のエンコーディングを使用して染色体をエンコードするとどうなるでしょうか?
私の染色体の 1 ビットが DOUBLE 型の値であるとしましょう。0.99 としましょう。確率を表すため、その範囲は (0-1) です。
この DOUBLE 数をクロスオーバーするには?
バイナリに変換してクロスオーバーしてから元に戻す...?
ブレンド クロスオーバー オペレーター(α = 0 のバリアント) を使用できます。
p1 first parent
p2 second parent
u random number in [0, 1]
offspring = (1 - u) * p1 + u * p2
と仮定するとp1 < p2
、この交差演算子は範囲内でランダムな解を作成します[p1, p2]
。
混合交差演算子には、親の差が小さい場合、子と親の解の差も小さいという興味深い特性があります。したがって、現在の母集団の広がりは、結果として得られる母集団における解の広がりを決定します (これは の形式ですadaptation
)。
ブレンド交差演算子 (BLX-α) のより高度なバージョンと別のよく知られている演算子 (Simulated Binary Crossover) については、Kalyanmoy Deb と Hans-Georg Beyer によるSelf-Adaptive Genetic Algorithms with Simulated Binary Crossover で説明されています(短い要約はこちら) 。 .
差分進化は別の可能性です。