コンピューター将棋の構造 - 検索エンジン 「浅読みくん」 ④ 修正

「覚える」浅読みくんのコードに誤りがあることに気付いたので修正して再ベンチマークです。

 『(注・なんか怪しい…良過ぎる!!!バグっているかもしれません)』

…疑惑は的中しました。

「元祖」浅読みくん(標準ミニマックス装備)

 5手読み 15.214000秒
 6手読み 418.015000秒
 7手読み 12、000秒 = 200分 (推定)

「覚える」浅読みくん - 3手目、4手目の局面評価値を記憶

 5手読み 19.838000秒 5.845000秒
 6手読み 63.879000秒 121.164000秒
 7手読み 1265.344000秒 = 約21分

((観察))

①読みの深度が浅いと「局面を覚える」事に費やす時間のほうが「そのまま読む」より掛かるので5手読みの時には遅くなったみたいです。

①5手読みは約2.5倍速となりました。効果でています。

②6手読みは約7倍速約3.5倍速なので効果は十分かと思われます。

③「3手目、4手目の局面評価値を記憶」…なので深度が増すと②の効果が薄れ時間がえらく掛かりました(それでも「元祖」浅読みくんより速いですが)。これに対応するには「5手目、6手目…を記憶」すればよいのですが爆発的に増える局面を考慮すると得策ではないかな?…と思ってみました。

((修正の修正))

「3手目、4手目の局面評価値を記憶」するつもりが実際には「4手目、5手目」を記憶していました。ベンチマークをやり直しました。

したがって「7手読み ... 約21分」の記録は「4手目、5手目」を記憶したときの記録としては有効です。

「ベンチマーク補足」コメントは「4手目、5手目、6手目の局面評価値を記憶」で再実験...となります。

投稿者: 紫外線 投稿日時: 日, 08/02/2009 - 11:16 categories [ ]

コメントの表示オプション

お好みの表示方法を選択し、「設定の保存」をクリックすると、表示方法を変更することができます。

「覚える」浅読みくん

...によると初期盤面からスタートして重複する局面を除くと以下の局面数を評価しています。

 3手目 13,560
 4手目 203,803

3手目には 30 x 30 x 30 = 27,000
4手目には 30 x 30 x 30 x 30 = 810,000

...程度の枝分かれとなりますのでかなりの割合で「やらなくてもいい」検索が存在します。

ベンチマーク補足

「4手目、5手目、6手目の局面評価値を記憶」で再実験してみました。

(結果)

MEM: 118604336 / 262930432
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded

メモリー不足でアウトとなりました。(涙)

考えてみれば6手目となれば 30の6乗 = 729,000,000 というとんでもない局面を処理しないといけない訳で(重複する局面があるので実数はもっと低いですが)メモリー不足は当然か。

ん?ちょっとまて、なんか閃いた。勉強してきます。

コメントの表示オプション

お好みの表示方法を選択し、「設定の保存」をクリックすると、表示方法を変更することができます。