8

私は、約16個の浮動小数点「定数」に依存する競技用のゲームプレイプログラムを作成しました。定数を変更すると、プレイスタイルと成功率に劇的な影響を与える可能性があります。

また、定数の最適値を生成するための簡単な遺伝的アルゴリズムを作成しました。ただし、アルゴリズムは「最適な」定数を生成しません。

考えられる理由:

  • アルゴリズムにエラーがあります(当面はこれを除外してください!)
  • 人口が少ない
  • 変異率が高すぎる
  • 配偶者率はもっと良いかもしれません

アルゴリズムは次のようになります。

  • 最初に初期母集団が作成されます
  • 各メンバーの初期定数が割り当てられます(私のバイアスに0.75から1.25の間のランダムな係数を掛けたものに基づいて)
  • 世代ごとに、人口のメンバーはゲームの試合のためにペアになります
  • ドロー両方が1回クローンされる場合、勝者は2回クローンされます。
  • random()が変異率よりも小さい場合、クローニングは1つの遺伝子を変異させます
  • 突然変異は、ランダム定数を0.75〜1.25のランダム係数で乗算します
  • 一定の間隔で、交尾率に応じて、メンバーはペアになり、遺伝子は混合されます

私の現在の設定:

  • 母集団:40(低)
  • 変異率0.10(10%)
  • 交配率0.20(5世代ごと)

個体数の大きさ、突然変異率、配偶者率のより良い値は何でしょうか?

推測は大歓迎です、正確な値は期待されていません!また、同様の遺伝的アルゴリズムに関する洞察がある場合は、共有したいと思います。そうしてください。

PS:誰かが興味を持っているなら、問題のゲームプレイ競争:http: //ai-contest.com/

4

2 に答える 2

2

あなたの突然変異の大きさは驚くほど大きいと私は思います。それに固有のバイアスも少しあります-現在の値が大きいほど、突然変異は大きくなります。

あなたは考えるかもしれません

  1. (はるかに!)小さな突然変異を持っている
  2. 突然変異に固定範囲を与える
  3. 突然変異のサイズを異なる方法で分布します。たとえば、平均が1の正規分布を使用できます。

RAフィッシャーはかつて突然変異の大きさを顕微鏡の焦点を合わせるのと比較しました。フォーカスを変更すると、正しい方向または間違った方向に進んでいる可能性があります。ただし、最適にかなり近づき、それを大きく回すと、間違った方向に進むか、ターゲットをオーバーシュートします。したがって、一般的には、より微妙な調整の方が適しています。

于 2010-11-12T11:49:47.840 に答える
2

GAULフレームワークを使用すると、非常に簡単なので、目的関数を抽出してGAULにプラグインできます。マルチコアマシンを使用している場合は、コンパイル時にomp(openMP)を使用して評価を並列化することをお勧めします(時間のかかる作業だと思います)。このようにして、より大きな人口サイズを持つことができます。http://gaul.sourceforge.net/

通常、それらは高クロスオーバーと低突然変異を使用します。あなたは創造性を求めているので、私はあなたに高い突然変異と低いクロスオーバーを提案します。http://games.slashdot.org/story/10/11/02/0211249/Developing-emStarCraft-2em-Build-Orders-With-Genetic-Algorithms?from=rss

スペース検索(0.75、1.25内)にとどまるように、ミューテーション関数に本当に注意してください。random_double(min、max)などのGAULランダム関数を使用します。彼らは本当にうまく設計されています。独自の突然変異関数を作成します。親が死ぬことを確認してください!

次に、これをGAULに含まれるシンプレックス(ネルダーミード)と組み合わせることをお勧めします。これは、クロスオーバーの少ない遺伝的プログラミングでは最適でないソリューションが見つかるためです。

于 2010-11-12T14:21:51.870 に答える