ボードゲームプログラム開発の記録(2014〜)
- Sunset_Yuhi
- 5847
- 3
- 0
- 0
@DraughtsPlyrJpn ボードゲームのプログラムには割とテクニックがあって、自分の場合は黒キングを-2、黒ポーンを-1、空きマスを0、白ポーンを1、白キングを2で表現しています。そうすると8×8の表で局面を数値化することができます。
2018-02-25 15:33:24チェッカープログラムへのαβ探索組み込み、オセロで作ったやつを移植できたからもっと早くできたはずなんだけど、やる気が出ず実行するのに1年近くかかってしまった。しかも、少し忙しい時に現実逃避のように。テスト週間前に漫画とかが読みたくなるアレだ。
2018-02-26 07:44:15将棋に慣れてると、チェスのメイトの形が分かりづらすぎるな。移動範囲が広い駒が多いし、ポーンも前方2マスに効きがあるので、キングの周囲8マスがスカスカでもメイトになりやすい。頭金みたいにベタベタ駒を貼り付けて勝つことばかり考えてると、1手メイトすら見えない。
2018-02-26 18:41:05【入門リバーシ】ken1shogi.sakura.ne.jp/bbs/board_rev?… 自作プログラムでLv13を倒した
2018-03-02 00:56:20自作オセロプログラム、最初は1手読みしかできなくて作者より弱かったし、人と戦わせてもいい勝負だったけど、探索を入れて色々調整した最近は、打つ所無くして隅を取り、場合によっては全滅させたりするので、対戦させるのが申し訳なくなって秘密の存在になってしまった
2018-03-02 18:58:14チェスの駒は足が長いから、プロでもこういうことが起きやすいのかな。 twitter.com/tucc_chess/sta…
2018-03-09 20:08:27【解説】 白がKf4?? と指すと、黒のQb8#で一手メイトが決まります。互角の盤面から、唯一の一手メイトが決まる手筋を指してしまう、というのはGMでもやってしまうことなので、気を落とさずにいきましょう。 Beliavsky vs Johannessen(2002)より pic.twitter.com/2I0QuHu7Sm
2018-02-06 21:23:20探索プログラムでは普通、1手読むごとに探索深さを1減らすけど、強制飛びや連続飛びの時だけ探査深さを減らさないようにしたら、局所的に長めに読んで評価値が安定した。下手に評価関数を追加するより、探索部を工夫した方がよさそう。これはワンチャン、オセロより作りこむのが簡単かもしれない。
2018-03-10 03:33:09自作オセロプログラムで、終盤用の石数を完全読み切りするαβ探索には、Move Orderingが効かないと勝手に思い込んでたけど、やってみたらめっちゃ有効だった。13手読み切りの手数を伸ばして15手くらいでも余裕。これは惜しいことをしてた。多分チェッカーでも使えるな。
2018-03-12 01:36:45チェッカーで終盤の探索プログラムとかどう発動すればええねんと思ってたけど、両者とも駒数が3枚以下になったら終盤の探索プログラム発動、とかでイケそうな気がした。駒数や合法手数でMove Orderingしたαβ探索を使い、強制飛びや連続飛びになったら探索深さを減らさずに読み切るイメージ。
2018-03-13 01:26:246手読みしてる現状だと、2vs1とかになっても隅での攻防には不十分で、隅から駒を追い出して仕留める所まで読めないことが多い。駒が3枚あると1局面の合法手数の平均は約10手だと思うけど、10手読みくらいならできると予想。
2018-03-13 01:30:59チェッカープログラムをある程度作ったら、チェスプログラムにさっさと移行したいけど、道のりは長い。機械学習までやる気はないけど、遺伝的アルゴリズムやディープラーニング自体の勉強は、そのうちやりたい願望はある。
2018-03-14 01:16:18Move Orderingしてもほとんど速度変わらんかむしろ悪くなってる説。オセロなら1手読みでも開放度で大体当たるけど、チェッカーは探索しないと好手か分かりづらいということか。でも終盤読み切りなら短期的な駒数変化の影響が大きいと思うので、上手く枝刈りされるはず。
2018-03-14 02:36:36そう言えば、Qiitaとかでニューラルネットを使ったオセロAIをたまに見るけど、自分でも勝ててしまうくらいのものしか見たことないな。ゲーム木の枝が比較的少ないから、モンテカルロ木探索よりαβ探索の方が効果的ということなのか。 twitter.com/ken1shogi/stat…
2018-03-14 07:29:28AlphaGo Zeroの方式でリバーシを作っているプロジェクトを定期的にチェックしてる。スマホアプリ(リバーシLv99)と対戦した結果を載せてるんだけど中々苦戦しているみたいだ。 github.com/mokemokechicke…
2018-03-14 02:48:53将棋AIで学ぶディープラーニング 山岡 忠夫 amazon.co.jp/dp/4839965412/… @amazonJP ついにこんな本が出た。隔世の感があるな……
2018-03-14 20:18:52駒数差の評価方法を少し変えただけで、めっちゃ強くなったかもしれん。単に差を取るだけだと「3対2」と「2対1」の局面に違いが出ないので、指数関数を使って「3対2」より「2対1」の局面を大差と評価するようにした。結果、1駒でも差が出れば、互いに1駒ずつ消費していく手を積極的に指すようになった。
2018-03-14 23:26:58@Sunset_Yuhi それは、理にかなってるかもしれません。不利な方はなるべくコマ交換をしないまま、複雑な形に持ち込もうとしますので。ただ、あまり数を減らすと(例えば、2vs1だと)引分に持ち込まれる確率がたかくなる感じがしています。
2018-03-14 23:41:42@Sunset_Yuhi このあたりは、私ではうまく説明できないです。「5vs4くらいにしといて、自分の4コマで中央に防御ラインを引き、相手の4コマと相対させる。そうしておいて、残った1コマを後方で動かしていると、相手は動かすコマがなくて自滅せざるをえない。」っていうのが割と勝ちやすいかも
2018-03-14 23:44:44@Sunset_Yuhi 3vs2とか2vs1とかになると、うまくオポジッションで相手の進路を妨害できないと、通り過ぎてキングを作り合う展開になって、引分になりやすい印象を持っています。あくまで、そんなに強くないプレーヤーの感覚ですが
2018-03-14 23:46:17@DraughtsPlyrJpn 少し考えなおして、駒数の平方根で比べることにしました。白の駒数をnw、黒の駒数をnbとすると、√nw-√nbを評価値として使うイメージです。ひとまずそれで3vs2<2vs1<4vs2みたいな評価をさせることにします。 自滅する局面については、探索を使わずに判断できればいいですがパッと思いつきません……
2018-03-15 00:41:42@DraughtsPlyrJpn オポジッションとかもよく分からなくて申し訳ないのですが、2vs1になったら基本的に、1駒の方が打ち取られるものだと思っていました。1vs1に持ち込めれば引き分けにしやすいと思いますが。
2018-03-15 01:04:44【入門リバーシ】ken1shogi.sakura.ne.jp/bbs/board_rev?… 50手辺りの時点では負けてたけど、入門リバーシはLv13でも完全読み切りはしないようで、自作プログラムが逆転勝ちできた。
2018-03-15 02:06:32チェスや将棋のモンテカルロ木探索でプレイアウトとかどうやるねんと思ってたけど、噂によると何百手かで上限を設けてそこで打ち切ってるらしい。単純だけどなるほどという感じ。
2018-03-15 20:38:49チェッカープログラムの知見を活かして、オセロプログラムでも合法手が少ない場合に探索深さを伸ばすようにした。序盤や終盤など、差が付きそうな局面で探索を打ち切らず、ポカが減ることを期待。
2018-03-16 22:43:59軽い気持ちで探索延長すると組み合わせ爆発にすぐ行き当たるので怖い。あとプログラミングで、ド・モルガンの法則が初めて役に立ったぜ。
2018-03-16 23:49:07