[過去ログ]
【オセロ,将棋】ボードゲーム【囲碁,War】 (1002レス)
【オセロ,将棋】ボードゲーム【囲碁,War】 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
310: 名前は開発中のものです。 [sage] 2015/08/18(火) 16:59:55.72 ID:QcCJSSMl どなたか教えていただけますか? 最近、オセロAIのプログラミングをCで行っています。 今は、探索ロジックの勉強のため、終盤の完全読みを作っています。 置換表付negaMax、置換表付PVSは通常の探索ではきちんと動作しています。 現在MTD(f)にとりかかりました。MTD(f)では、ドライバは擬似コードそのまま。 テスト関数は置換表付negaMaxを流用していますが、そのままだとFail-LowとminMax値 の区別がつかずに、Fail-Lowの指し手を返してしまうので、初段のみαを-1する事で、 内部的に区別できるようにしています。 動作確認にいくつかテストケースでテストしましたが、FFO#40の時におかしな事がおきます。 (FFO:http://www.radagast.se/othello/ffotest.html) 問題)本来の評価値は+38(A2B1C1…)なのに、+30が返る。 以下、判明している状況です。 1)置換表を使用せずにMTD(f)を動作させる。 −>正解 2)単体でNull Window Searchを行う。 −>正解 3)置換表を使用してMTD(f)を動作させる。 −>少なくともFFO#40では誤答する 4)FFO#40で失敗する条件は、fにminMAX値より幾分小さい値(黒+30未満)を設定したとき。 5)negaMax初段でαを-1するロジックを入れなくても、同じ事になります。 デバッグで確認したところ、Fail-Highになるべき条件(黒+30や黒+36の時)で、下限値を 返しています。同一条件で、下限をさらに-1してテストしたところ、α<g<βである事が確認 できましたので、minMax値として間違った値が返っていることになります。 どうも原因は置換表にあり、Null Window Searchの中で、何回も再利用していることに あるように思います。とはいえ、MTD(f)といえば置換法を再利用する事が前提です。 どこかに誤りがあるのではないかと思います。 同じような問題に遭遇した人はいますか? http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/310
311: 310 [sage] 2015/08/18(火) 17:06:51.32 ID:QcCJSSMl ちなみに、置換表のキーは、盤面と手番です。 ハッシュ値を使用し、衝突した場合は、チェーンで下につなげています。 今のところ、メモリーの上限等は設定しておらず、領域も足りています。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/311
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.722s*