aichallange発表資料
DESCRIPTION
本位田研(東大),大須賀・田原研(電通大)が合同で行ったプログラミングコンテストにおける,チームC(優勝)の発表資料です.TRANSCRIPT
2012年 7月 7日
1
本位田研(東大)-大須賀・田原研(電通大)合同 プログラミングコンテスト: チームC発表資料 題材: HTTP://AICHALLENGE.ORG/
(ただし,一対一対戦に限定) 発表時間: 5-10分程度
背景:様々なタスクを考慮する必要
視野を広げる
敵と戦う
敵蟻塚を占領する
餌を集める
自分の蟻塚を守る
2
様々な目的の実現方法と,
どの蟻に割り振るかということを考える必要
方針:陣取りゲームだと考える
3
自陣が広ければ 視野を確保できる
餌を集めやすい
自分の蟻塚を守れる
やがて敵蟻塚を占領できる
目的
4
1. 効率良く蟻が広がる
2. 敵陣との境界線で,
うまく戦闘する
1. 蟻を効率良く広げる
5
どの蟻がどのタイルに一番早く到達可能かを計算
●
●
●
広い方へ動く
2. うまく戦闘する(1/2)
6
次のターン戦闘しうる蟻をグループ化
→ 探索状態数の削減
各グループ中の蟻に対して,min-max法
2. うまく戦闘する(2/2)
7
Min-maxでは探索可能な蟻の数に限界
→ α-β法の実装
(たいして改善しなかった...)
ヒューリスティックによる戦闘で対応
まとめ
8
1. 効率良く蟻が広がる
2. うまく戦闘する
→グルーピングしてα-β
→広い方へ動く
その他ヒューリスティックス
デモ(1/2)
9
1「蟻を効率良く広げる」実装後 http://daisy-lab.sakura.ne.jp/ants-demo/game_logs/vs_champion_0_spreading.htm
○0~50ターンあたり
チャンピオンと比べても遜色ない速度で効率良く広がり,
餌を集めることが出来た
×100ターン以降
戦闘をうまく行うことが出来ず,
徐々に自軍の数を減らされてしまった
青: 公式チャンピオン(Xathis)のBot https://github.com/xathis/AI-Challenge-2011-bot
赤: CチームのBot
デモ(2/2)
10
2「うまく戦闘する」実装後 http://daisy-lab.sakura.ne.jp/ants-demo/game_logs/vs_champion_1_battling.htm
○100-200ターン
拡散をつづけながらも,不利な戦闘は避け,
チャンピオンよりも自軍の数を増やすことに成功した
× 300ターンあたり
均等に拡散する我々のBotと,
戦闘地帯に蟻を集めるチャンピオンとの戦略の違いにより,
不利な戦いもしくは退却を余儀なくされてしまった
青: 公式チャンピオン(Xathis)のBot
赤: CチームのBot
補足
11
α-β法がうまく行かなかった理由(推測) 評価値として,「戦闘の結果による敵味方の死者数の差」を用いたが,
敵味方が賢いとすると,たいていの場合引き分け(評価値0)になると予想され
枝刈りが十分に出来なかった?
考えられる改善例 - 十分拡散した後は戦略を替える(領域境界に集まるなど?) - 行動決定時に,明示的に仲間蟻のグルーピングを行い, 2:1などを積極的に作りに行く - 敵の蟻塚を攻める戦略を追加する