問題タブ [fitness]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 遺伝的アルゴリズムのフィットネスは、ある時点で増加を停止します
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 の質問:
プログラムが極大値で動かなくなるのを防ぐにはどうすればよいですか (フィード フォワード人工ニューラル ネットワークと遺伝的アルゴリズム)
java - Java シミュレーテッド アニーリングの受け入れ確率
シミュレートされたアニーリングを実装するプログラムがあります。おそらく、オイラー数を (エネルギー - エネルギー ') 乗することが有用な理由を理解していないため、受け入れ確率に問題があります。
気温が非常に低い場合でも、確率は常に 1.0 (100%) を超えているため、実質的にランダム検索になります。受け入れ確率を sA の通常のレートに固定するにはどうすればよいですか (最初は悪い解決策を受け入れる可能性が高く、最後に低くなる可能性があります)。
メソッドコードは次のとおりです。
そして、ここに数回の出力があります:
python - メタ ヒューリスティック アルゴリズムからの適合度関数の翻訳 [LOA]
Lion Optimization Algorithm (LOA)は、Maziar Yazdani と Fariborz Jolai によって新たに提案されたメタ ヒューリスティック アルゴリズムです。
numpyまたはscipyライブラリをインポートする必要があるか、そのようなインポートなしで手動でコーディングする必要があるかどうかを事前に知らなかったため、python3でフィットネス関数を変換する際に問題が発生しました。
これが私が理解するのに苦労している機能です:
ライオンの適応度 = f(Lion) = f( x 1 ,x 2 ,x 3 ,...,x N Var )
関数として扱う必要があるのか、コード行として扱う必要があるのか 疑問に思っています。私をアイデアに導く助けをいただければ幸いです!ありがとうございました。
genetic-algorithm - 遺伝的アルゴリズム: フィットネス関数が複雑すぎることはありますか?
遺伝的アルゴリズムでは、フィットネス関数を数学的エキュエーション以外のものにすることは正しいでしょうか? 内部に再帰関数とループを含めることはできますか?
問題は、論文で遺伝的アルゴリズムを使用できるかどうかを評価していることです。私が考えているこのフィットネス関数は、少し複雑になる可能性があります。しかし、そうではないかもしれません。プログラムがそのような機能を処理でき、ボトルネックが発生しないことを確認する必要がありますよね? .
基本的な考え方: