遺伝的アルゴリズムを使用して Tetris プレーヤーを作成し、いくつかの問題に直面しています。私は多くの関連作品を読みましたが、GA について十分な詳細が得られません。
問題は、私のエージェントが非常に速く動けなくなることです...評価関数を使用して、高さ、覆われた穴、平坦度、およびクリアされた行の数の 4 つの機能をカバーしています。同じ評価を使用し、何千行も実行できる論文を読みました。
600 世代後、100 エージェントの人口で、最高のエージェントは平均で 260 行しか実行できません。これは不十分です。すべてのエージェントが同じ曲のシークエンスを演奏しています。
私のGAの詳細:
世代:600 人口:100
遺伝子: 0 から 1 までの 4 つの float 値の配列。
一様交叉は一定の確率で起こり、一定の確率で 2 つの親の間で遺伝子を交換します。
突然変異は特定の確率で発生します。ここでは、遺伝子を交換する、遺伝子をランダムな値に置き換える、または遺伝子にノイズ値を追加するという 3 つの異なるアプローチを試しました。
私は 50% のエリート率を持っていますが、一部の優れたエージェントが選択されて、より悪いエージェントを生み出し、人口を汚染していることに気付きました。
選択はルーレット…
誰かがクロスオーバーと突然変異の最良の方法について詳しく教えてくれたら、感謝します!
ありがとう、そして長い投稿でごめんなさい!