1000 個の円の配置、サイズ変更、および色付けによって特定の画像を再作成する遺伝的アルゴリズムを実装しようとしています。ただし、フィットネスが特定の値 (私の場合は約 0.37) に達すると、増加が止まることがわかりました。つまり、値に収束するだけです。
これを改善する方法が思いつかない
いくつかの詳細
人口規模: 50
突然変異率: 0.025
各子の遺伝子は、要素 type の 1000 要素配列でCircleData
あり、円のサイズ、色、および位置が含まれています
フィットネス機能
ターゲット画像とアルゴリズムが描いたキャンバスのすべてのピクセルをループします。ピクセルごとに、RGB 値を 3D 空間内のポイントにマッピングし、2 つのポイント間の距離を計算します。次に、ピクセルごとに距離が合計され、正規化されて [0, 1] のフィットネス値が取得されます。ここで、1 は各ピクセルが同一であることを意味します。最後にpow(fitness, 2)
、最終的なフィットネス値として の値を取得します。
選択
私は子供たちをフィットネスに基づいて分類し、悪い 2/3 を削除します。残りの子供については、フィットネス比例選択を使用して 2 人の親を選択します。
クロスオーバー
ランダムクロスオーバーポイントでワンポイントクロスオーバーを使用します
アップデート
問題はlocal maximumによるものと思われますが、まだ修正中です...
GA の極大値に関するいくつかの SO の質問:
プログラムが極大値で動かなくなるのを防ぐにはどうすればよいですか (フィード フォワード人工ニューラル ネットワークと遺伝的アルゴリズム)