Hatena::ブログ(Diary)

sakurapyonの日記 このページをアンテナに追加 RSSフィード

2012-12-14

[Stockfish] futility margins array *1 11:46  [Stockfish] futility margins array *1を含むブックマーク  [Stockfish] futility margins array *1のブックマークコメント

  // Init futility margins array
  for (d = 1; d < 16; d++) for (mc = 0; mc < 64; mc++)
      FutilityMargins[d][mc] = Value(112 * int(log(double(d * d) / 2) / log(2.0) + 1.001) - 8 * mc + 45);
  • ややこしい式になっているが、dが増えると増加・mcが増えると減少。
  • なぜ mc (movecount) が増えると減るのだろうか?
    • 手が良い順番に並んでいるなら、後半の手ほど悪いはず
    • 低いマージンで刈ってもいいだろう
  • d ¥leq 5では後半はマージンが負になってしまう。いいのかそれで?

It's not a bug. Negative futility pruning values at depth = 1 are okay. Move count based pruning is going to hit us hard anyway razoring everything where moveCount > 4.

https://github.com/mcostalba/Stockfish/commit/4502917665d50394ead903d0b82c6e7b4777b99d
  • これで良いらしい。
  • GPSfish でも値はそのまま使われている。いいのか?

f:id:sakurapyon:20121214112645g:image:w640

  • 切捨てのせいで線が重なってる。これでいいんかな?

wainwain 2012/12/15 20:54 >切捨てのせいで線が重なってる
いいのではないかと。
一番ややこしいint(log(double(d * d) / 2) / log(2.0) + 1.001)の部分は
「0、2、3、4、4、…5が4個、6が4個、7が8個、8が8個、9が16個、10が16個、以降数字が2増えるごとにその項数が倍になる」
数列を計算するための計算になるので。

wainwain 2012/12/15 21:17 うっかり大嘘を書いてしまいました。
log(double(d * d) / 2) / log(2.0) + 1.001は
2*log(d)となります(ただしlogは底2の対数)
これだけ見て早合点して上の書き込みをしてしまいました。

トラックバック - http://d.hatena.ne.jp/sakurapyon/20121214