[過去ログ] 【オセロ,将棋】ボードゲーム【囲碁,War】 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
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
642: 535 2016/10/31(月)00:37 ID:KdjBytFw(1/3) AAS
なかなかいい感じのルーチンが書けた。
まだ結果に結びついてないけどこれはあと一捻りいれればかなりいい線行くんじゃないか?
643: 535 2016/10/31(月)21:35 ID:KdjBytFw(2/3) AAS
おかしいな。
石の流れは良くなってるのになかなか勝利に結びつかない。
644: 535 2016/10/31(月)22:47 ID:KdjBytFw(3/3) AAS
パラメータ微調整地獄w
機械学習に切り替えないと限界が…
645: 535 2016/11/01(火)21:33 ID:pQxzEPLf(1) AAS
あかん。
完全にバランスを失った。
一から出直しだな。orz
646: 2016/11/03(木)03:15 ID:x7yDYWU2(1) AAS
ボードゲームのオリジナルオーダー制作
外部リンク[html]:www.logygames.com
簡単に本格自作ボードゲームが作れる時代到来!!
外部リンク:jellyjellycafe.com
100円ショップでボードゲームを自作しよう
外部リンク:sites.google.com
ノーアイデアでボードゲームを作ろう第1回「100円ショップで物を買う」
外部リンク:boardgamelove.com
ボードゲーム市場がクラウドファンディングの出現で急成長を遂げ市場規模を拡大中
外部リンク:gigazine.net
647: 310 2016/11/04(金)15:36 ID:zGiY9OSz(1) AAS
長考の結果、もう一度作り直し(笑)していたら、混乱の原因がわかりまして。
勝敗の持ち方を逆にしたらすっきりしました。
あと、終盤の手順の前後で、あと3手粘れるのに1手で負けるという現象を調べた
結果、ツリー部で負けと判定している以上、何手先に負けるか関係ないというプロ
グラムになっていた事も判明。バグじゃありませんでした。とはいえ気持ちが悪いので、
なるべく長く粘るようにしてみました。
そこでわかったのは、Perfect Solverの数字は、42手21ターン目の引分から何ターン
前に勝負がつくのかを表していて、プラスは勝ち、マイナスは負けという事です。先手で
+1と出たら最善を尽くせば41手目の自分の着手で勝つという事のようです。
つまりスコアを勝敗決定ターンにしたmin-Maxで、速度考えるとDB化してるんでしょう。
で、MCTSですが、まあやはりモンテカルロなので間違えます。試しに10手目程度
の間違えた局面から、シミュレーションを続行してみたところ、億単位の探索(プレイ
アウトとしては10倍)で、間違えた手が本当は悪かった事に気づいた様子で、そこから
正しい答えに向かって行きました。なので、まあプログラムは間違っていない模様です(汗。
DAG対応とか、自殺手禁止プレイアウトとか、色々やった結果、選択手のばらつきが
減って、「たまたま正解手順を引く」事がなくなって、自信満々に間違えるようになっ
た印象です。それでも、時間をかけて探索を続けると、いつかは正しい答えにたどり着くと。
今となってはあまり意味が無いですが、せっかくなので、ここまで積み上げて来た
ノウハウで、今一度Solver作ってみようかなと。
648: 535 2016/11/04(金)23:52 ID:lKhN7bKh(1) AAS
色々ぐちゃぐちゃやってたら計算時間がとてつもないことになってしまった。
649: 310 2016/11/06(日)13:49 ID:Z4kqE5wB(1) AAS
Solver作りました。
PerfectSolverにならって評価値を、42手目から何手手前で勝敗がついたかにしました。
お蔭さまで、null window searchが使えるようになり、mtd(f)で高速化しました。
あと、初段のみ単純な並列して、残り28手で6秒強となりました。
そろそろオセロに戻ります。
650: 535 2016/11/06(日)17:53 ID:B23WCzGo(1) AAS
終盤28手読み6秒とか凄い
こっちはというとそろそろαβ刈りを習得しなければ…
651: 535 2016/11/07(月)00:12 ID:vL8wkeAF(1/2) AAS
αβできたっぽいです。
というかwikiの疑似コードを完コピしたらうごいたっぽい?という感じで
理解したとはいいがたいですが。
652: 535 2016/11/07(月)22:06 ID:vL8wkeAF(2/2) AAS
え、もしかしてminmaxに比べてαβめちゃめちゃ速い?
なんか間違ってんのかな…
653: 310 2016/11/08(火)00:02 ID:CUgV7Bvg(1) AAS
安心してください。めちゃ早いですよw
後ろ向き枝刈系のアルゴリズムはほとんどがαβを前提にしています。
自分の最初は擬似コードコピペしました。
すぐ忘れちゃいますが、1回は真剣に動作を追っておくと良いですよ。
654: 535 2016/11/08(火)22:35 ID:BlAmLHY6(1) AAS
評価関数が致命的に狂ってる気がする。
手動で直すのは限界があるから機械学習したいがさてどうするか。
655: 310 2016/11/10(木)20:55 ID:gpSCAC4W(1) AAS
オセロでUCTをしてます。コピペでちょいちょいと思っていたらパスの処理が面倒で、
思った以上に動作速度が落ちてしまいました。
その後、デバッグしてたらおかしな現象を発見。探索ツリーでプラスになるべき数字が
マイナスに。しかも1か所だけ。発生条件を絞り込めず、なんだかんだと数日間。
原因は整数のオーバーフローでした。設定時間におけるプレイアウト回数でのスコア合計
がちょうど境目にきて、本当に微妙にオーバーフローしていたので、スコアの正負がひっく
りかえったように見えていたのでした。
俺の時間を返せorz
終盤5手読みくらいならすぐにUCTのツリーが終局まで達して、完全読み同等の答えを
返してくれるのですが、10手だと結構時間がかかり、20手だと全く歯が立たない。
評価関数を使った中盤探索の置き換えに使えないかと想定しているのですが、やはり
簡単に精度は出ない感じです。
プレイアウトでありがちな手を優先的に着手するように、ヒューリスティックな評価関数を
用意して、プレイアウトの精度を高められるか試してみたいと思います。あと、スピード
アップもしないと・・・。
656: 535 2016/11/10(木)23:14 ID:4tjjzH07(1) AAS
Zenは治勲と三番勝負か〜
Zen勝ちそうw
657: 535 2016/11/13(日)00:19 ID:otFLKKMJ(1) AAS
doubleの有効桁数が足りなくておかしくなってたorz
評価値に差をつけようとして極端にデカい数値を設定してたら
小さい数値が無視されてた
658: 310 2016/11/13(日)00:47 ID:Be0ooFvL(1/2) AAS
DeepZenGo楽しみですね。
ポストアルファ碁の今となってはZenが2勝できなかったらちょっと悲しいかな。
こちらはオセロのモンテカルロツリー探索がほぼできました。
当初かなり速度ダウンしていたのですが、何とか改良できました。vectorが遅かった。
数か所工夫して、テストデータで正解を早く導けるようにしてみましたが、調整が面倒そう。
とりあえずネタ切れなので、次は探索済ツリーを再利用できるようにして、対戦できるよう
にする予定です。で、今一度終盤読み切りルーチンと、序盤の定石DBつけて完成としたい。
しかし、相変わらず評価値をどう計算したら良いのかわからない。
単純に、着手する手の平均スコアだと、探索の進み具合によってあなりブレてしまい
意味がある数字になりそうにない。アルファ碁はDCNNの評価値を使ってるのかなぁ。
659: 310 2016/11/13(日)20:49 ID:Be0ooFvL(2/2) AAS
ちょっと疑念が湧いてきたので数か所工夫したところを全てコメントアウトしてみたところ
やらない方が遥かにマシという結論に(汗。下手な考え休むに至りでした。
全部外してしまうと一旦最善手から外れてまた戻ってくるような事もなくなり、探索時間が
長い方が良いと単純に言えるようになります。
また、評価値ですが、モンテカルロならやはり点差を考慮しない「勝率」であるべきでは
ないかと思い始めています。今は、「点差」を返しています。「勝率」で選ぶ手は、「もっと
良い手があった」となりますし、「点差」で選ぶ手は「欲張りすぎた」となりそうです。
探索済ツリーの再利用の仕組みができました。まだパスがらみのテストはしてませんが、
多分大丈夫でしょう。
ボード関連のクラスをかなり作り直してしまったので、終盤読み切りルーチンや序盤定石
処理を作り直さないといけません。というか、評価関数を持ってないので、終盤探索は
オーダリングの仕方を変えないといけません。
あと、人間側入力待ちの間も探索を継続できるようにしてみたいと思っています。
モンテカルロだと、いつでも停止したり再開できるので、ぜひとも導入したいものです。
上下前次1-新書関写板覧索設栞歴
あと 343 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.028s