sakurapyon’s blog

sakurapyon’s blog

最近のsakurapyon

利用マシン

とくに変化なし。メモリを食うようになったぐらい。

  • さくらのvpsの一番安いプラン(980円/月)
    • 別用途のために借りているサーバーの流用
  • model name : Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz
    • sse2までは使える
    • bogomips : 5320.37
  • メモリ512MB
    • 本来の用途に影響しないよう、1 coreで動かしてる
    • メモリも280MB150MBぐらいしか使ってない
      • メモリ喰いの大半は局面表。800万局面分。

読みの深さ

  • 以前:20秒かけて8手 (lesserpyon_sakura_vps_test時代)
  • 今: 初期局面は17秒かけて14手読む。中盤は10-12手ぐらい。
    • 末端の評価回数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 だけで大抵間に合う
  • 送られてくる相手プレイヤーの名前を見て戦法と定跡を選択する
    • gps_normalとbonanzaには稲庭戦法を使うなど

微妙なもの

  • 強い水平線効果の検出
    • 歩の成り捨ての繰り返しなど、明らかに損をする手順の検出
    • コストに見合わないかも
  • bit演算で間に合う操作をbit演算にする
    • 早くはなってるけど手間に見合うかどうか
  • ponderっぽいこと


手をつけてないけどいつかやりたいこと

  • 任意の局面の読み込み
  • 任意の棋譜の読み込み (今はトリッキーな方法で読んでいる)
  • 高速な詰将棋(長手数、1手・3手とも)
  • 局面評価の改造
    • 学習までは手がまわらんけど、もうちょっとなんとかしたい
    • 現状はれさぴょん同様 KP(金駒) + P だけ。
  • 並列化 (今のサーバーでは無理)


そろそろ うさ親さん(id:usapyon)にフィードバックしたほうがいいのかな?