- GitHub Wiki Home : https://github.com/mct-procon/procon2018-Protocol/wiki/Procon2018-Home
- GitHub Repository(AI(production version)): https://github.com/mct-procon/procon2018-AI-A
- GitHub Repository(AI(experiment)): https://github.com/mct-procon/procon2018-AI-B
- GitHub Repository(AI(experiment)): https://github.com/mct-procon/procon2018-AI-C
- GitHub Repository(Interface): https://github.com/mct-procon/procon2018-Interface
- GitHub Repository(Protocol): https://github.com/mct-procon/procon2018-protocol
全国高等専門学校プログラミングコンテスト2018 競技部門に参加しました. 徳島県徳島市で開催され,1回戦敗退でした.(どうでもいいところで手間かかってるの草)
ルール概要
陣取りゲームで,2プレイヤーがそれぞれの2つのエージェントを2プレイヤー同時に動かしていきます.
Rule
エージェントは8方向に動くことができます. エージェントが動いた後のマスは陣地となります. 陣地となったマスは相手チームのエージェントは入ることができません. 1ターン消費して.そのマスを陣地から解放する作業が必要になります. 得点としては2種類あって,まずは「占有得点」について説明します. 占有得点は,エージェントが通った後,陣地になったマスがそのまま得点となります. それぞれのマスに最大16点,最低-16点割り振られています. 一方,「包囲得点」は,陣地によってマスを囲むと,そのマスの絶対値が得点となります. つまり,-16のマスを占有で得点すると,16点引かれてしまうのに対して,囲って得点すると,16点もらえるということになります. 囲むときに,頂点の部分は陣地でなくても大丈夫です. エージェントの人と,司令塔は違う人です.エージェントの人とはトランプ通信でやり取りしなければなりません.
Image
詳しくは,オープンソースサロンの記事をご覧になると良いでしょう.
コンポーネント全体
フィールド情報がQRコードで渡されます. QRコードを読み取ったり,AIの手を表示したりするInterfaceと,思考するAIに分かれます. 私はすべてに関わりました.
IPC
前回,WCFを用いていましたが,.NET Coreでは使えないので,TCPソケット通信を用いたIPCをしました.
Interface
QRコードの読み取り,手の表示をしたりします. .Net Framework 4.7, WPF, ZXing.Netを用いました.
AI
交互ゲームとみなし,minimax法を用いました. 評価値の工夫として,そのままゲームの得点を使うのではなく,包囲得点を減点したり,自陣の分散度合いを吟味したりしました.
裏プロコン
本番がクソゲーだったので,学生間で裏プロコンが開催されました.(北九州高専さん呼びかけ)
vs 北九州
勝ち 19点差
相手は,ビームサーチでした.
vs Kitakyushu
vs 久留米
勝ち 53点差
相手は,ビームサーチでした.
vs Kurume
vs 茨城
負け 7点差
相手は,モンテカルロ+UCBでした.
vs Ibaraki
観想した感想
ゲームは良かったのになぁ…
ビームサーチにはとても勝てる,モンテカルロとは互角なのかなぁ…?といった感じでした. 茨城と100回ぐらい戦ってみたい.