最近のsakurapyon
利用マシン
とくに変化なし。メモリを食うようになったぐらい。
- さくらのvpsの一番安いプラン(980円/月)
- 別用途のために借りているサーバーの流用
- model name : Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz
- sse2までは使える
- bogomips : 5320.37
- メモリ512MB
- 本来の用途に影響しないよう、1 coreで動かしてる
- メモリも280MB
150MBぐらいしか使ってない- メモリ喰いの大半は局面表。800万局面分。
読みの深さ
- 以前:20秒かけて8手 (lesserpyon_sakura_vps_test時代)
- 今: 初期局面は17秒かけて14手読む。中盤は10-12手ぐらい。
- 末端の評価回数786万回弱。170万ノード。平均3.1手読んでいる計算になる。
- 刈るべきでない枝も刈って読みぬけしてるっぽい
- 末端の評価回数786万回弱。170万ノード。平均3.1手読んでいる計算になる。
使ってる技法
- null move pruning
- Late Move Reduction
- Killer Moves
lesserpyonから あまり変わってないこと
変えると弱くなる。れさぴょんは偉大だ。
- 見込みのなさそうな手は捨てる (EvaluateTe)
- EvaluateTeは遅いので、なるべく呼ばないようにする。
- Killer Moveが一番効果的
- 局面の評価 (Evaluate)
- JosekiKomagumi に少しドーピング
効果が大きな変更
- Killer Move
- 指し手を構造体から64bit変数にする
- gccじゃなくてiccを使う (実はこれが一番効果が大きいかも)
- 直前の手の取り返しの生成
- 局面表は手番を区別する
- 時間管理(やらないよりマシな程度だが)
- 延長探索を止める
- その分深く読んだ方がいいような気がする
やらない方が良かったこと
- 詰めろの判定のために詰将棋を呼ぶ
- Mate が高速になれば意味があるかも...
- 細かい手生成の分類
- Killer Move だけで大抵間に合う
- 送られてくる相手プレイヤーの名前を見て戦法と定跡を選択する
微妙なもの
- 強い水平線効果の検出
- 歩の成り捨ての繰り返しなど、明らかに損をする手順の検出
- コストに見合わないかも
- bit演算で間に合う操作をbit演算にする
- 早くはなってるけど手間に見合うかどうか
- ponderっぽいこと
- 局面表がおかしくなったようなので止めた
- cf. http://d.hatena.ne.jp/GMA0BN/20111205#1323082064
手をつけてないけどいつかやりたいこと
- 任意の局面の読み込み
- 任意の棋譜の読み込み (今はトリッキーな方法で読んでいる)
- 高速な詰将棋(長手数、1手・3手とも)
- 局面評価の改造
- 学習までは手がまわらんけど、もうちょっとなんとかしたい
- 現状はれさぴょん同様 KP(金駒) + P だけ。
- 並列化 (今のサーバーでは無理)
そろそろ うさ親さん(id:usapyon)にフィードバックしたほうがいいのかな?