GA についてもっと学びたいという欲求が再び燃え上がり、たくさん読んで何もしないのではなく、逆の方法で始めることにしました。問題を選んで、それを解決しようとします。
私は魔方陣問題を選びました。染色体をエンコードするために、私はPermutation Encodingを使用しており、 Mutation()およびNewChild(parent1, parent2, pivot) には次のメソッドを使用しています。
私の選択アルゴリズムは少し奇妙で、インターネットで見つかった例を基にしています。
スコアは、次のように、行/列/対角線の合計と魔法の定数の差の 2 乗に基づいて計算されます。
私が気付いたのは、収束が非常に速く、スコアが 1..7 (少ないほど良い) に達すると改善が止まるということです。
私はこれを次のように見ています:それは局所最適、潜在的な井戸に到達し、そのように呼ぶことができれば、突然変異が十分に異なっていないため、近くの丘を飛び越えませんか?
突然変異率を 5 ~ 80% に変更して、染色体集団に 10 ~ 20% のエリート グループを残し、集団サイズを 16 ~ 32 染色体から変更しようとしましたが、うまくいきませんでした。
私は何を間違っていますか?人口スコアをゼロに収束させるには、どのような改善を使用できますか?
必要に応じて、完全なソース コードを投稿することができます。
更新:サイズ 5 の立方体の収束率は次のようになります。交差率は 60%、突然変異率は 10% です。