- aoi_no_oheya
- 3324
- 8
- 0
- 1
作業時間:12.5時間 進捗: ■占い先 ・自分と、自分の占い済みPLを除く ■CO ・0日目はCOしない ・初日は、対抗の初手黒を待ってからCO ・自分がまだ占いCOしてなければ、占いCO ■投票 ・自分の黒がいたら、そこを投票 ・自分の黒がいなければ、自分と自分の白を外す
2016-10-16 03:39:40作業:6h 進捗:狂人作成 ■CO ・100%占いCO ・初日白結果を出すときは1拍待つ。黒結果は即結果からCO ■占い先 ・自分と、自分の占い済みPLを除く ・白50%、黒50%(破綻する場合は反転する) ■投票 ・自分の黒がいたらそこを投票、いなければ自分と自分の白を外す
2016-10-16 20:07:39作業:4h 進捗: Udonがどのようにしてその日の投票先、占い先、噛み先等を決定しているかの解読(途中)。 PL毎にスコアをつけ、その日一番スコアの高かったPLに対して行動しているようだ。 次回は、スコアの付け方、集計の仕方等をもう少し深掘りする
2016-10-20 00:15:20作業:5.5h 進捗: 村人作成。投票先を占い結果やCO数からスコアリングして決定する。 次回は占い師と狂人の投票の改良と、霊能を作成する。 行く行くは、占い結果やCO数から適切な吊り位置、占い位置、噛み位置、護衛位置を決めるにはどのようなスコアリングが良いかを、大局的に考える
2016-10-23 03:43:58作業:1.5h 進捗: 占い師と狂人の投票の改良(COしてるPL、片白のPLは投票を控える等)、霊能の作成(投票は今までと同じ)。 初日の霊COは2拍待ってからする。 次は狼を作るため、Udonの狼を解析する
2016-10-23 23:38:16【人狼知能 途中報告^ー^】 作業:2.5h 進捗: 狼の作成と、第二回人狼知能大会 優勝者である、Udonニキのソースコードを大解剖!^ー^ Udonニキの各役職クラスは、"AbstractBaseStrategyPlayer" を継承します pic.twitter.com/Vr9KFpqQVg
2016-10-25 01:55:18"AbstractBaseStrategyPlayer" は "AbstractRole" を継承し、initialize, dayStart, update, whisper, vote, divine, guard, attack, finish関数をOverrideします
2016-10-25 01:55:52Udonニキの脳ミソは、initialize内で読み込む『各strategy』と、update内の『execGuess』と『execActionReserve』の2関数であるように見えるので、次回はここを更に解剖します。 具体的には、視点整理とスコアリングの仕方に注目します
2016-10-25 01:56:08作業:4.0h 進捗: execActionReserve, FixInfo, AnalysisOfRequestの解剖。 execActionReserveで各strategy(FixInfo等)のgetRequestを呼び出し、村の状況からPLのスコアを複数算出する pic.twitter.com/UnRAX5DfHi
2016-10-28 00:35:45例えばFixInfoでは、死亡済の全てPLのスコアを0にする、自分が占い済のPLのinspect(占い先)スコアを限りなく0にする等。 最後にAnalysisOfRequestを呼び、算出した各PLの複数のスコアを掛け算し、その日一番スコアの高かった者に投票等を実行する
2016-10-28 00:36:07僕からUdonへの問題提起は、いわゆる『正しい進行』をとるのが難しいこと。 例えば、初手黒と霊2CO出たときに霊ロラを選択したいとき、各PLのスコアを掛け算した結果、この状況では必ず霊PLのvoteスコアを最大にする必要あるが、その調整が難しいと思う(現在のUdonコードはこれ) pic.twitter.com/2xmNEFwpWt
2016-10-28 00:36:32そこで『正しい進行とは』を考えたが、様々な仮定を踏んだ結果、人狼の正しい進行を定義することは難しく、人狼とは『駆け引き』であるという結論に至った(つまり正しい進行をとっても、狼が裏をかいたら高確率で村が負けるので、狼が裏をかいてるか否かを見極めるゲームである) pic.twitter.com/M4XwMocff7
2016-10-28 00:36:59まずは『駆け引き』を定義するために、『詰み進行』=『吊り数 >= 人外候補数』 となる進行を定義する。 そのために、次回はある盤面における『吊り数』と『人外候補数』を考察する
2016-10-28 00:37:16作業:4.0h 進捗:Udonニキの内訳整理方法を解読。 PLを「村陣営」か「狼」か「狂人」のどれかに分類すると、12A欠け無しだと全部で495パターンとなる。 その内、例えば占い結果が出たら、その結果にそぐわないパターンは削除していく #aiwolf
2016-10-29 04:11:50そしてあるPL視点で『2狼存在するパターン』が無くなったら、おそらくそのPLを『破綻』としている。 尚、『残り吊り数』=『(残り人数 - 1) / 2 ※端数切り捨て』にて表される。 次回は、Udonニキの『灰数の数え方』を解読し、『詰み進行』について考える #aiwolf
2016-10-29 04:12:12(参考)12A欠け無しで、PLを「村陣営」か「狼」か「狂人」のどれかに分類したときの組み合わせは: ・2狼の組み合わせ = 11C2 = 55 ・村陣営9人の内、狂人が1人いるので 55 * 9 = 495 つまり全部で495パターンとなる。 ちなみに欠けありだと550パターン
2016-10-29 04:16:20例えば各PLに1~11の番号を振り、各役職を「村陣営 = 0」、「狼 = 1」、「狂人 = 2」と表して、PL番号の小さい順に役職番号を表示すると「00101002000」のようになる(これはPL1が村陣営0、PL3とPL5が狼1、PL8が狂人2の例) #aiwolf
2016-10-29 04:34:15初日例えば、PL1が霊COして「村陣営 = 0」が確定した場合、全パターンの内、PL1が「狼 = 1」と「狂人 = 2」のパターンを全て削除する。 また、PL3が「狼 = 1」が確定した場合、残ってるパターンからPL3が「村陣営 = 0」と「狂人 = 2」のパターンを全て削除する
2016-10-29 04:34:29Udonニキはこのような作業をListで行っており、各PL番号をListのIndexにしている。 おそらく、だからUdonニキはAgentではなく、agentNoで色々なものを操作、管理しているのだろう #aiwolf
2016-10-29 04:39:41作業:7.0h 進捗: Udonニキのソースから、各視点の「確定村リスト」、「確定人外リスト」、「村/人外 不明リスト」の取得方法を理解。 ここぞとばかりに俺が考える最強の進行を組もうとしたが、ある盤面からの勝率計算が予想以上に難しい #aiwolf
2016-10-30 23:05:07作業:1.0h 進捗: ある日の吊り位置、占い位置はやはり各PLの『スコアリング』が必要という前提で、そのためにはスコアリングの『基準』が必要と考え、その基準を『その日、あるPLが狼である確率』としてみたが、そもそも人狼は確率では表せなさそうと感じた。 #aiwolf
2016-11-01 01:38:03どのように場合分けして確率を出そうか考えたところ、まずは『どちらの占い師が真か』で分けてみたが、例えば真占いがその日白を『引く』確率はある程度すぐ計算出来るが、狂人がその日白を『出す』確率は、狂人の『意思』が混ざるため、容易には計算出来なそう #aiwolf
2016-11-01 01:38:18たぶん「真占いならこう」と考えて「でも狂人なのでこう」とか、その上で「真占いなのでこう」とか、でも更に「狂人だからこう」…みたいな感じで『自分の確率は自分の確率に依存』するんだと思う。 この確率の極限が収束するなら安定行動は存在するが、発散するならいよいよ正しい進行など存在しない
2016-11-01 01:50:44もし確率が発散するなら正しい進行など存在しないのだが、あたかも「正しい進行がある」みたいな、いわゆる『環境メタ・人メタ』が存在している場合、それを取り入れ、学習し、その人の裏をかく、というのが人狼の強さとなるだろう。 つまり、もしかしたら初日に片白を吊るのもアリかもしれない
2016-11-01 01:56:58