テトリスに似たゲームを学ぶ遺伝的アルゴリズムをコーディングしたいと思います。 ゲーム自体は比較的シンプルです。私はそれの完全な振る舞いを以下に書いた。この遺伝的アルゴリズムをどのようにコーディングするのですか?
ゲーム:ベース
- グリッド、12x16。
- グリッドからブロックをクリアする必要があります。
- 新しいブロックの行が5ティックごとに下に追加され、ブロックが上に移動します。
- 同じタイプブロックのクラスタのみをクリアできます。
- ブロックの種類の数は、ゲームが進行するにつれて増加します。
- 3以上のクラスターのみをクリアできます。
- すべてのクラスタがクリアされると、
(CLUSTER_SIZE - 3)^2
がBLOCK_SCOREに追加されます。 - クラスタがグリッドから削除された後、上記のブロックがギャップを埋めるようにスライドし、この後に水平ギャップ(最下行)がある場合、ギャップの左側がそれを埋めるように移動します。
- このゲームの目標はできるだけ長く生き残ることです。時間は、ティック、またはあなたが作った動きの数で測定されます。
- スコア(またはフィットネス)は、
(TIME_ALIVE * BLOCK_SCORE)
によって決定されます。 - ブロックがグリッドの一番上に到達すると、ゲームは終了します。
このゲームのスコアは、長寿と効率の両方を取り入れています。クリアするクラスタが大きければ大きいほど、適応度は高くなります。
私は現在いくつかのGAをコーディングしていますが、地元の競技、収集目標などのもの、VS他の個人に基づいています。 私の問題は、私がこの問題に近づく方法を知らないということです。この新しいGAの各個人は、現在のグリッドのみを入力として処理する必要があります。 (少なくとも、それは私が必要と考えているものです)
どうすればこのためのGAをコーディングすることができますか?私は私の人生はそれを動作させることはできません。
。すべて、あなたの人口の
ステファン「Ruirize」ジェームズは
あなたの行動から、個々のプレイヤーがゲームをプレイし、他のプレイヤーと比較できるスコアが得られます。問題は何か分かりません。 –
問題はこれをコードで設定しています。どんな種類の形質が必要でしょうか。 –
「動き」とは何ですか?どんな種類のブロックが追加されるのか、ちょうど追加されたブロックを動かすことができるのか、それとも何を選択できるのですか? –