次の設置可能な盤面をすべて予想し、ニューラルネットワークでその盤面の評価値を算出し最も評価が高い物を次の行動として採用する。 ニューラルネットワークの各バイアスを遺伝的アルゴリズムで調整し、学習させる。
- TetrisCore
テトリスのコア部分 TetrisPlayer
Windows .Formsを使用したシングルプレイ用のプレイヤー
TetrisPlayerWPFに移行- TetrisPlayerWPF
WPFを使用したプレイヤー シングルプレイ AIプレイ リプレイ(バグあり)を実装済み - TetrisDXControl
Windows.FormsのDXを使ったテトリスコントロール TetrisPlayerWPFでも使用 - TetrisAI
テトリスAIの基本部分 ニューラルネット - TetrisAI-Trainer
テトリスAIの学習部分 遺伝的アルゴリズム - TetrisTest
単体テストプロジェクト
機械学習の実装は時間がかかるのでライブラリを利用する。
- フィールドから特徴量を抽出して評価値を算出する。
- フィールド上の穴の数
- 穴のある列の数
- 穴の上のブロックの数
- 入り組んだスペースの数
- 設置したオブジェクトの高さ
- 消されたラインの数
- 設置したオブジェクトから消えたブロックの数
- X方向のブロックの変化の合計
- Y方向のブロックの変化の合計
- KelpNetを使用
- 入力層:9 中間層:5 出力層:1
- 活性化関数: 恒等関数
- ニューラルネットワークの各バイアスを適切に調整する。
- GeneticSharpを使用
- 数試合の平均スコアを適応度とする
- 遺伝子 TetrisChromosomes
- 適応度 TetrisFitness
- 交叉 TetrisCrossover
- 突然変異 均一