第3回人狼知能大会 プロトコル部門の出場エージェントです。
社会人の個人参加チームです。(twitter: @m_cre)
仕事ではAzureやAWSでの大規模データ分析システムの開発とか運用をやっています。 趣味ではウェブサービスつくったりしています。
- McrePlayer.jar
- クラスは
net.mchs_u.mc.aiwolf.dokin.McrePlayerを指定してください。
- クラスは
-
net.mchs_u.mc.aiwolf.dokin.McrePlayer
- 今回の出場エージェント
-
net.mchs_u.mc.aiwolf.eclair.McrePlayer
- 作りかけで諦めたエージェント
いわゆる饂飩さん孫です。
人狼知能プレ大会@GAT2017の出場エージェントをベースにしています。 人狼知能プレ大会@GAT2017の出場エージェントについてはhttps://github.com/mcre/aiwolf-gat2017をご覧ください。 そこからの変更点は以下のとおりです。
-
バグ修正
- 予備予選でぬるぽ発生していた箇所を回避
- 「狂人が人狼に黒出し・人狼が狂人に黒出し・人狼が人狼に黒出し」での確率調整について、白出しでも同様な調整をするようになっていたバクを修正
-
占CO ⇒ 村CO を占CO取消として認識するようにした
本エージェントは、自然言語部門出場エージェントの内部でも使用しています。
-
GAT2016のチームcashさんのアルゴリズム(下記)をベースにしています。
- ゲーム開始時に人狼と狂人の可能な組み合わせ(15人の場合5,460通り)を列挙し相対比を1とする
- ゲーム進行に伴い各パターンの相対比を調整
- 条件を満たすパターンの相対比の和/全パターンの相対比の和 で確率が計算できるので、「自分目線」「客観目線」「自分が村人と思い込んだ目線」の確率をそれぞれ計算し、それによって行動を決める
-
調整パターンやパラメータは
net.mchs_u.mc.aiwolf.dokin.Estimateを参照してください。
-
人狼
- COしない
- 客観目線で人狼らしくない人を襲撃。襲撃対象はWisperで宣言(毎Wisperタイミング計算し対象が変わるたびに宣言し直す)
+「自分を村人と思い込んだ目線」で仲間の人狼らしさを0.5倍したときに、最も人狼らしい人に投票。投票対象はTalkで事前宣言(毎Talkタイミング計算し対象が変わるたびに宣言し直す。(以下全ての役職で同様))
- 再投票は1回目投票で最高票数だった中から1回目と同じ優先度で投票(以下全ての役職で同様)
- PP可能状態(自分目線で"人狼 + 狂人 > 村人側"と確信できる状態)であれば人狼CO
- 別の人狼からの投票依頼がなければ、自分目線で一番村人らしい人に投票依頼をする
- 別の人狼から投票依頼された相手に投票、投票依頼がなければ自分目線で一番村人らしい人に投票
-
狂人
- 0日目第一声占い師CO
- 自分目線で最も人間らしい人を占い黒出し(1日1回3人まで)
- 「自分を村人と思い込んだ目線」で最も人狼らしい人に投票。投票対象はTalkで事前宣言
- PP可能状態であれば狂人CO
- 人狼からの投票依頼にしたがって投票、投票依頼がなければ自分目線で一番村人らしい人に投票
-
村人
- 「客観目線」で最も人狼らしい人に投票。投票対象はTalkで事前宣言
-
占い師
- 0日目第一声CO
- 「自分目線」で最も人狼らしい人を占う。ただし占い師COした人は他に対象がいない場合を除き占わない
- 占い結果があれば朝一で報告
- ほかは村人と同様
-
霊能
- 0日目第一声CO
- 霊能結果があれば朝一で報告
- ほかは村人と同様
-
狩人
- 「自分目線」で最も人間らしい人を護衛
- COしない
- ほかは村人と同様
net.mchs_u.mc.aiwolf.eclair.McrePlayer についてです。
予備予選のログを集計し、「2人占CO、1人霊能CO」の状況での「占COの人の(人狼|狂人|村陣営)確率」などが集計できたので、
推定アルゴリズムのCO認識部分をそれベースの計算に置き換えようとしました。
しかし、決勝エージェント提出に完成が間に合わなかったため、作成途中の状態になっています。
なお、使用したログ集計コードはhttps://github.com/mcre/aiwolf-logreaderに置いてあります。
- MIT
- see LICENSE