n
各変数が範囲内になるように、変数の関数を最大化するための遺伝的アルゴリズムを実装しようとしています[-n, n]
。
クロスオーバーの複雑さを軽減するために、最初の母集団を生成する際に から0
までの数値のみを生成し2n
、適合度を評価する際にそれらのそれぞれから n を減算します。小さい可能性があるためn
、染色体を表すために整数配列の代わりにビット文字列を使用することにしました。
2n
ここでの問題は、クロスオーバーとミューテーション中に不正な値 (より大きい) が生成されることです。1 つの方法は、クロスオーバーとミューテーションの両方で、不正な値を正当な値に置き換えることです。ただし、これは少し複雑になり、パフォーマンスにも影響を与える可能性があります。
そこで交叉と突然変異の際のチェックと置換を残して、両方が終わった後に行うことができないかと考えています.文字列とフィットネスを計算します。また、不正なビット列を置き換えずに逃げることは可能ですか?