モンテカルロ将棋(2)

昨日のはバグってました(汗
局面を戻す部分が間違いで、むちゃくちゃなコードでした。
あと、末端まで指すだけで戻す必要がないので、打ちっ放しで最後にまた戻す
というのを、速いかな?と思ってやってました。
でも、bitboardの初期設定などが重くて、undoで戻す方が遙かに高速でした。

▼v銀v金
 9 8 7 6 5 4 3 2 1
---------------------------+
 ・v王 ・ ・ ・v桂v銀v桂v香|一a
 ・ ・ ・ ・ ・ ・ ・ ・ ・|二b
 金 ・ ・ ・v歩v歩v歩v歩 ・|三c
 歩 ・ ・v歩v角 ・v角v飛v歩|四d
 ・ ・ ・ ・ ・ ・ ・ ・v金|五e
 ・ ・ ・ ・ ・ ・ ・ ・ ・|六f
 歩 歩 歩 歩 歩 歩 歩 歩 玉|七g
 ・ ・ 飛 ・ ・ ・ ・ 銀 香|八h
 香 桂 銀 ・ ・ ・ ・ 桂 香|九i
---------------------------+
△ 歩三 金
qui: △82金打(29999) △92金打(-782) △92金(-1140) △82金(-1345) △91金打(-1414)
△71金打(-1748) △72金打(-1835) △26金打(-29997) △16金打(-29998) △39銀(-29998)
 △16歩打(-29998) △83金(-29999) △86歩(-29999) △76歩(-29999) △38飛(-29999) △
48飛(-29999) △58飛(-29999) △68飛(-29999) △88飛(-29999) △98飛(-29999) △98香(
-29999) △69金打(-29999) △59金打(-29999) △49金打(-29999) △39金打(-29999) △98
金打(-29999) △88金打(-29999) △68金打(-29999) △58金打(-29999) △48金打(-29999)
 △38金打(-29999) △96金打(-29999) △86金打(-29999) △76金打(-29999) △66金打(-2
9999) △56金打(-29999) △46金打(-29999) △36金打(-29999) △66歩(-29999) △56歩(-
29999) △46歩(-29999) △95金打(-29999) △85金打(-29999) △75金打(-29999) △65金
打(-29999) △55金打(-29999) △45金打(-29999) △35金打(-29999) △25金打(-29999)
△84金打(-29999) △74金打(-29999) △44金打(-29999) △83金打(-29999) △73金打(-29
999) △63金打(-29999) △13歩打(-29999) △13金打(-29999) △36歩(-29999) △26歩(-2
9999) △88銀(-29999) △62金打(-29999) △52金打(-29999) △42金打(-29999) △32金打
(-29999) △22金打(-29999) △12歩打(-29999) △12金打(-29999) △68銀(-29999) △96
歩(-29999) △61金打(-29999) △51金打(-29999)

GoSimulation!
△82金打=100% playout=1300 node=0 mateHash=0 checkMateOne=0 time=0.0秒
△92金打=1% playout=1300 node=10637 mateHash=0 checkMateOne=1238 time=0.1秒
△92金=1% playout=1300 node=9825 mateHash=0 checkMateOne=1258 time=0.1秒
△82金=2% playout=1300 node=8810 mateHash=0 checkMateOne=1261 time=0.1秒
△91金打=2% playout=1300 node=9252 mateHash=0 checkMateOne=1263 time=0.1秒
△71金打=2% playout=1300 node=8430 mateHash=0 checkMateOne=1261 time=0.0秒
△72金打=5% playout=1300 node=8707 mateHash=0 checkMateOne=1231 time=0.1秒
△26金打=43% playout=1300 node=51284 mateHash=0 checkMateOne=1049 time=0.3秒
△16金打=49% playout=1300 node=66331 mateHash=0 checkMateOne=935 time=0.4秒
△39銀=90% playout=1300 node=9547 mateHash=0 checkMateOne=1219 time=0.1秒
△16歩打=93% playout=1300 node=10153 mateHash=0 checkMateOne=1220 time=0.1秒
△83金=0% playout=1300 node=0 mateHash=0 checkMateOne=1300 time=0.0秒
△86歩=0% playout=1300 node=0 mateHash=0 checkMateOne=1300 time=0.0秒
△76歩=0% playout=1300 node=0 mateHash=0 checkMateOne=1300 time=0.0秒
△38飛=0% playout=1300 node=0 mateHash=0 checkMateOne=1300 time=0.0秒


詰めろで、82金なら先手詰みなんですが、さすがにそれは判るとして、
後手はランダム打なんで、手番が回ってきても詰められるかは判らないのは仕方ない。
1手詰めを呼ぶようにしたので、後手が1手で詰ませられる場合は判る。
でも、遅くなるかも。
これがUCB1なら、先手が外せば後手が必勝というのが判るのかな?
ちゃんと39銀で退路を作れば詰まないことを認識しているw


現在、だいたい 1300playout/sec