[過去ログ] 【オセロ,将棋】ボードゲーム【囲碁,War】 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
612: 535 2016/10/15(土)21:54 ID:jn3cHMWR(2/4) AAS
秒速40万プレイアウト!?すげぇぇぇぇ
1プレイアウト=1手てことですか?
1プレイアウト=1局てことですか?
613: 535 2016/10/15(土)22:17 ID:jn3cHMWR(3/4) AAS
460氏もオセロで10000Knps〜15000Knpsとか言ってるし、まじか〜
やっぱ本気でやってる人達は違うのかな…
614: 535 2016/10/15(土)23:46 ID:jn3cHMWR(4/4) AAS
NPSは20メガって書いてありますね…
すいません。
615: 310 2016/10/16(日)01:32 ID:KTdXBWLt(1/4) AAS
プレイアウトなので1局です。色々ごにょごにょはありますが、ランダム着手で、
とりあえず勝負がつくまで打ちます。これで1プレイアウト。
速度が出るのはビットマップとBMI命令などのX64命令を使ってるからだと思います。
が、Perfect Solverに先手で勝てません(汗。5手目に必ず間違えます。
評価値を眺めても、当たり前のように、正解(真ん中列)が最下位になります。
パラメータをそこそこいじってみましたが、状況は変わらないです。
一本道には弱いって事かなぁ。
とはいえ、自分がやると、さっくりと負けてしまいます(汗
616: 310 2016/10/16(日)13:25 ID:KTdXBWLt(2/4) AAS
mobility周りにバグがあって直したところ、1秒読みでPerfect Solverに先手で勝ちました。
昨夜は120秒読みでも同じ手順で負けていました。
とはいえ、乱数が絡むので引き分ける事もあります。
まだ若干問題があります。1本道を交互に着手していくと自動的に勝ちが確定する盤面
なのに、評価が引き分けになっています。プレイアウトの終局判定で何かの条件が抜け
ていて、勝ちと判定されていない感じです。
直したらまた勝てなくなったりして(汗
C++の診断ツールを今回初めて使ってみました。
関数ごとの使用時間がわかるようで、速度アップの検討に重宝します。
が、どうもUCB1の計算で使うsqrtとlogを使ってる箇所でCPUを9割くらい使っている
感じです。見方が良くわからないけど、多分そういう状況。速度アップ難しい。
617: 535 2016/10/16(日)16:43 ID:Ts0NTtMt(1/2) AAS
一秒読みで完全ソルバに勝とかまじか〜
やっぱ積み上げてきた基礎力が違うんだろうな〜
618: 310 2016/10/16(日)17:19 ID:KTdXBWLt(3/4) AAS
どもです。評価値問題は治りました。
乱数じゃなくて、ある手順で引き分けな手を選んでしまう事が判明したので探索時間
を延ばしてみたら、逆に序盤で負け手順を選んでしまうようになりました(汗。
ツリー部の地平線臭い感じなのかなぁ。
というわけで、たまたま選んだ1秒が良かっただけかも知れませんorz
MCTSも理論的には探索回数を∞にすると、最善手を必ず導き出す事は保証されて
いるらしいのですが、中途半端な回数の時は保証されていないんですよね。
619: 535 2016/10/16(日)21:36 ID:Ts0NTtMt(2/2) AAS
なんか将棋で評価値を深く探索した時の評価値に近づけるっていう学習方法があるみたいですね。
ちょっと興味あります。
620: 310 2016/10/16(日)22:45 ID:KTdXBWLt(4/4) AAS
なんか、デバッグ報告みたいな状況になってすみません。
地平線臭い状況を調べていたら、負ける寸前なのに評価値が勝ちになってます。
つまり負けを認識していない。
着手を間違えるのはこの辺も原因かも知れません。
ぱっと思いつく原因が見当たらないので、しばし長考します。
621: 535 2016/10/17(月)22:03 ID:B9d5KHtX(1) AAS
connect 4序盤ブック作ってみようかな。
完全ソルバ丸パクリでw
622: 310 2016/10/18(火)00:57 ID:k8M1GDOc(1) AAS
色々直して、ほぼバグは取れたと思います。
で・・・強くなったはずですが・・・PerfectSolverに先手で勝てなくなりました。
かつて勝てたのはたまたま上手くバグっていたという事みたいです。
1秒設定は途中で間違えて引き分け、10秒設定は初手で負け確定(真ん中以外に着手)。
1秒設定で初手真ん中を選択するのはたまたまかもしれません。
初手だけ調べると150万プレイアウトくらいで間違えはじめ、15億プレイアウトまで確認
しましたが、雰囲気的には当分正しい答えに戻ってこないようです。
評価値の推移を見ると、一本道問題に引っかかっているように見えます。
DAG問題がやっぱり気になるので、ハッシュと組み合わせて合流できるようにしてみます。
多少は改善するかも知れないし、逆にもっと早く真ん中から外れるかも。
623: 2016/10/18(火)17:50 ID:7idTlLLA(1) AAS
読めば読むほど弱くなるとは不思議
ucbの計算間違えてるとかでは?
624: 2016/10/18(火)19:31 ID:4bRvdGb+(1) AAS
ボードゲームのオリジナルオーダー制作
外部リンク[html]:www.logygames.com
簡単に本格自作ボードゲームが作れる時代到来!!
外部リンク:jellyjellycafe.com
100円ショップでボードゲームを自作しよう
外部リンク:sites.google.com
ノーアイデアでボードゲームを作ろう第1回「100円ショップで物を買う」
外部リンク:boardgamelove.com
自作ゲームをゲームマーケットで売って来た
外部リンク[htm]:portal.nifty.com
「街コロ」はカードゲームに興味ありな初心者の入門用に最適、サイコロを振って
カードを集めどんどん自分の街を発展させて勝利を目指せ
外部リンク:news.livedoor.com
ようこそ「男の世界」へ。『ダンジョン オブ マンダム』試されるカードゲーム
外部リンク:www.moguragames.com
かわいいひつじを増やして増やして増やしまくれ! “一人用”カードゲーム『シェフィ』
外部リンク:www.moguragames.com
625: 535 2016/10/18(火)22:30 ID:5rT5zFZw(1/2) AAS
完全ソルバから定石パクるの意外とめんどくさいな。
クローラーみたいにして自動でパクれるようにしようかな。
でも迷惑かかるかな?
626: 535 2016/10/18(火)23:07 ID:5rT5zFZw(2/2) AAS
なんか本末転倒だからやめとくかw
627: 310 2016/10/19(水)02:53 ID:YWnebdEb(1) AAS
まさかの場所にバグ発見。
プレイアウトでランダムに1手選ぶところがバグってました。
良く動いていたものだと思う反面、MCTSってそういう所がある事も薄々感じてます。
が、状況はほぼ変わらず。初手真ん中と、5手目真ん中。この2か所が鬼門。
まだバグがあるのかも知れない。やっぱり自分が一番信用できないですね。
DAG問題対策でノードの合流を実装しました。枝とノードを分離して、ノードをハッシュ
にして、ノードの下に次の枝をぶら下げました。同時に、ハッシュキーに細工して、
左右同形も合流させてます。あまり変化はない気が。
速度低下が酷いです。
628: 310 2016/10/20(木)00:37 ID:yz39woaL(1) AAS
5手目真ん中以後どうなるのか1秒探索検証。6手目2列目に対しては、勝利(全て
最善着手)。6手目1列目に対しては、5列目着手で引き分け進行に入り、引分終了。
この時の手順では、全箇所が最善手という盤面ばかり通っていくように感じています。
つまり、MCTS的に勝利期待値が最大になりやすい手です。という事で、まあ、そんな
に間違った手は打っていないかなと。
また、プレイアウトを繰り返して手がどう変遷するのか見ていくと、最善手である真ん中
は、ある一定数からほとんど選択されなくなっています。結果、その手で枝の分岐が起き
ない事から、いつまでたっても評価が更新されず正解に戻らないと推測できます。
そこで、試行回数に圧倒的な差ができても、下位の手も一定回数は試行されるように
できないかと、手の選択基準をucb1の大きい順から、ソフトマックス関数を通して確率
分布に変えて、乱数で選択してみました。
結果は・・・。expの計算がある事からか、速度が激減。PVに割り当てられる試行回数は
2/3程度になり、その時点の最悪手でもそれなりに試行されるようになりましたが、それ
でも手の選択は微妙な感じです。この程度の効果なら、他のパラメータいじった方が
速度低下も無く良かったかも(汗
というわけで、本日のトライアルも失敗。
気が進まなかったけど、やっぱりucb1計算の検算をしてみます。
あと、部分的にmin-Maxを適用するとか。
629: 310 2016/10/23(日)09:58 ID:qEEwIK82(1) AAS
UCB1の計算は合ってました。
プログラムがC++的に美しくない事が気になりだし始めて、全部書き直ししてました。
書いた端から美しくないのが気になりだしましたが(笑)
UCTで後方枝刈というか、小枝の勝敗が確定していたら、ツリーを縮小していく処理を
追加。一本道問題が多少緩和するかと期待。対戦はちゃんと動いているっぽい。
デバッグ情報をファイル出力する処理書いて確認。
間違え方はあまり変わっていないのが残念というか、安心というか(汗
モンテカルロで1手目から最善手順が確実にわかったら、それはそれでゲームが
簡単すぎるって事になっちゃうので、大きく間違えないんなら、それで仕方ないかな。
というわけで、COM1手目は真ん中に固定。
プレイアウト部を高速化できる気がしていますが、やってみないとわかりません。
プレイアウトの末端部分に完全読みを数段入れるのも良いかと思っています。
DAG問題対応と左右対称チェックを入れて毎秒20万プレイアウトくらい。
評価値の算出方法でちょっと悩み中。
そこそこ落ち着いたらオセロの中盤探索に応用してみます。
630: 310 2016/10/26(水)20:47 ID:H5ji3apJ(1) AAS
また美しくない病が出て、書き直したところ、びっくりするほど弱くなってしまった。
しばらくデバッグで悩みそうです。
631: 535 2016/10/26(水)20:59 ID:+YpzcPTO(1) AAS
Connect 4は一旦休止して別のゲームのAI書いてます。
マイナーゲームですが囲連星というゲームで囲碁と五目並べを混ぜたようなゲームです。
簡単に言うと、七目並べれば勝ち、囲った石は取れるというルールです。
ついさっき黒番で公式AIのLV0に1勝できました。
(;SZ[19]
;B[jj];W[kj];B[jl];W[ji];B[ik];W[km];B[kk];W[ki]
;B[ii];W[lj];B[ll];W[mm];B[hh];W[gg];B[im];W[ih]
;B[ig];W[jh];B[ij];W[in];B[lk];W[gi];B[hk];W[gk]
;B[mk];W[nk];B[hn];W[hl];B[jn];W[io];B[lm];W[jo]
;B[go];W[fp];B[gh];W[hi];B[fg];W[ko];B[gf];W[ln]
;B[hg];W[jg];B[ff];W[gj];B[gg])
囲連星AIはこちらで配布されてます。
外部リンク[html]:www.vector.co.jp
632: 535 2016/10/27(木)22:26 ID:CgNWWTgQ(1/3) AAS
LV2からも黒番で一本取りました。
キセキが起きたw
(;SZ[19]
;B[jj];W[ik];B[ji];W[hj];B[jh];W[jk];B[kk];W[jl]
;B[gi];W[il];B[ll];W[hm];B[ii];W[hh];B[hi];W[ki]
;B[mm];W[nn];B[li];W[in];B[kh];W[fi];B[mi];W[io]
;B[kj];W[lj];B[ki])
633: 535 2016/10/27(木)22:53 ID:CgNWWTgQ(2/3) AAS
黒番でLV3からも一本取りました。
なかなかいい感じ。
ここからどう高めるか。
(;SZ[19]
;B[jj];W[ji];B[ij];W[kj];B[kk];W[ii];B[ki];W[lj]
;B[lk];W[jk];B[ik];W[kh];B[li];W[mj];B[lh];W[hl]
;B[mk];W[hj];B[jl];W[hk];B[ok];W[nk];B[nj];W[hh]
;B[nl];W[km];B[jk];W[lm];B[nk])
634: 310 2016/10/27(木)23:41 ID:KUg+LQ1A(1) AAS
バグ取れました。わかればどうという事はないですねorz
左右対称はデバッグが面倒くさいので省きました。どうせ序盤でした
意味がありませんので。
初手真ん中は、多分モンテカルロでは答えを出すのが相当厳しいです。
5手目真ん中は、乱数次第みたいな感じで、100万プレイアウトくらいまでに
出るか、1億プレイアウトしても出ないかみたいな感じになります。
一応、DOS窓ベースでプレイできるようにして、途中でMTCSのツリーを
色々と確認したり、追加のプレイアウトをしたりできるようにしましたが、
本質的にモンテカルロなので、完全に近いけど完全じゃないし、乱数の
具合によって着手する手もバラつくという事で勝手に納得してしまいまして、
せっかく作ったデバッグルーチンも禄に活用していません。
高速化も、一時期は40万プレイアウト毎秒くらいまで出たように感じて
ましたが、最終的に20万くらいで落ち着いてしまいました。
次のステップでオセロに応用と思ったのですが、その前に並列処理化を
してみようかと思います。上手くやれば探索ノード数は3倍強(自分のPC
では)くらいにはなりますが・・・数段深く読んだとて、結論にはあんまり大差
が無いのかなと。まあ練習ですな。
というか、min-Maxとモンテカルロのノウハウ、仕事で使えそうだなぁ。
635: 2016/10/27(木)23:46 ID:CgNWWTgQ(3/3) AAS
>>310氏はプロのプログラマなのか。
まあ納得。
636: 310 2016/10/28(金)10:50 ID:/58y3Hfc(1) AAS
いや。趣味の深夜プログラマです。
物流業務改善の会議で提案してみて、わからんと言われたら
ソース見せて動作検証してやろうかなと。
システム屋さんからすると、とてつもなく面倒くさいクライアント
だと自覚しておりまするorz
637: 535 2016/10/29(土)21:09 ID:4znFYNwN(1) AAS
囲連星、公式AIとガッツリ対戦してみました。
LV0はdll化されてないので対戦できませんでしたが。。。
結果はLV1には大きく勝ち越しましたがLV2,LV3には敵わなかったです。
airandom.dllが私のAIです。
50局目
黒(airandom.dll)の勝利回数: 44
白(ai-lv1.dll)の勝利回数: 6
50局目
黒(ai-lv1.dll)の勝利回数: 10
白(airandom.dll)の勝利回数: 40
50局目
黒(airandom.dll)の勝利回数: 20
白(ai-lv2.dll)の勝利回数: 30
50局目
黒(ai-lv2.dll)の勝利回数: 41
白(airandom.dll)の勝利回数: 9
50局目
黒(airandom.dll)の勝利回数: 15
白(ai-lv3.dll)の勝利回数: 35
50局目
黒(ai-lv3.dll)の勝利回数: 44
白(airandom.dll)の勝利回数: 6
私のAIが長考するのでこの対戦するのに丸一日以上かかってしまいましたw
638: 310 2016/10/29(土)21:13 ID:hyv6QOjp(1/2) AAS
並列化してみました。
色々やり方ありますが、まあ順当なやり方という事で、ツリー単位の並列化です。
が、4コアに対して4並列でむしろ速度低下。排他で怪しいところを色々変えてみて
ようやく若干(10〜20%程度)の速度アップにしかなりません。並列数を減らすと
速度低下していくので、排他待ちが原因ではなく、並列化オーバーヘッドの模様。
ノード&ツリーの構造で複雑な分、オーバーヘッドが大きくなっているのか、オセロの
時の効果には大きくおよびません。
ルート単位の並列化で、一定時間ごとにツリー統合(合算)というやり方もあるような
ので、次はこちらを試してみます。
もしかしたら、一番効果が無さそうな、プレイアウトのみ並列化の方が効果出たりして。
639: 310 2016/10/29(土)21:14 ID:hyv6QOjp(2/2) AAS
MTCSは並列化と相性が良いとは思えないなぁ。
640: 535 2016/10/30(日)23:47 ID:11nwLD7b(1) AAS
return文忘れててめちゃくちゃな値返してた。
この不可解なバグ潰すのに3時間かかったorz.
関数の終わりでreturn文無かったら警告だしてよコンパイラ(泣
まあコンパイラオプション付けてない俺が悪いんだがwww
641: 310 2016/10/30(日)23:54 ID:vT6Vi1L+(1) AAS
結局ツリー部の並列化はやめてプレイアウトだけを並列化しました。
ツリー統合も気になりますが、とりあえずこれで末端の評価が正確になります。
プレイアウト部分は処理時間が短いので、プレイアウト回数は大幅に増えます。
MCTSは面倒でも、モンテカルロは並列化向きです。
100回プレイアウトして、そのスコアでまとめて更新。
ところが、バグを発見してしまいました。
勝ち手順で進めていたのに、最後の最後に1手間違えて引分。
もうプレイアウトではなくツリーの勝敗が確定している状態で、間違えるはずがない。
勝敗確定時のフラグ設定がおかしいようです。
そこから色々見直しを始めたら、negaMax的な処理の扱いに完全に混乱して
しまいまして…。これだと思って修正すると、おかしくなってしまいます。
どこか根本的に勘違いしているみたいなので、しばし長考に入りますorz
上下前次1-新書関写板覧索設栞歴
あと 361 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.018s