brtzsnr wrote:Joerg Oster wrote:
Yes, I used the latest version of extract.sh. So only quiet positions are used.
About 40 iterations only sounds less, but I guess this highly depends on the range of values used for the parameters to be tuned.
I pushed a new version of txt. New the evaluator uses two sets a large set (same as before) to optimize and a small set (40x-60x smaller) to guide the optimization.
You can split your set of positions using shuf like this:
Code: Select all
$ shuf epds | head -n 250000 > small
$ shuf epds | head -n 8000000 > large
Here is an experiment with 1.000.000 and 25.000 positions. You can see that txt can optimize a quiet fast now.
Wow, this looks like a nice idea.
Did you have another tuning success with this in the meantime?
With Stockfish, I still suffer from the same problem that the computed score is always the same.
You already set HashTable size to 1MB and send a Clear Hash command.
Additionally, I disabled Pawn Hash and Material Hash probing.
Maybe someone can point me to what I must be missing.
Here a testrun with a value range from 0 to 200:
Code: Select all
./example -- $GOPATH/bin/eval --large ../misc/large200 --small ../misc/small10 --binary ./stockfish --k +1.0
12:49:36 eval.go:241: hello, world!
12:49:41 eval.go:248: read 200000 positions from ../misc/large200
12:49:41 eval.go:254: read 10000 positions from ../misc/small10
12:49:41 eval.go:261: engine ./stockfish is ready
12:52:23 eval.go:297: computed 0.08783270402132677 in 2m41.531353s
12:52:31 eval.go:304: estimated 0.08859369813031666 in 8.091452s
12:52:39 eval.go:304: estimated 0.08859369813031666 in 8.075842s
12:52:47 eval.go:304: estimated 0.08859369813031666 in 8.085928s
12:52:55 eval.go:304: estimated 0.08859369813031666 in 8.167851s
12:53:03 eval.go:304: estimated 0.08859369813031666 in 8.014409s
12:55:44 eval.go:297: computed 0.08783270402132677 in 2m40.98506s
12:55:52 eval.go:304: estimated 0.08859369813031666 in 8.115297s
This is my example.go
Code: Select all
package main
import (
"bitbucket.org/brtzsnr/txt/txt"
// "fmt"
)
func RookBonus(opts []txt.Option) []txt.Option {
opts = append(opts, txt.Option{[]string{"rookmg"}, 0, 200}) // RookOnPawn
opts = append(opts, txt.Option{[]string{"rookeg"}, 0, 200}) // RookOnPawn
opts = append(opts, txt.Option{[]string{"rook1mg"}, 0, 200}) // RookOnOpenFile
opts = append(opts, txt.Option{[]string{"rook1eg"}, 0, 200}) // RookOnOpenFile
opts = append(opts, txt.Option{[]string{"rook2mg"}, 0, 200}) // RookOnSemiopenFile
opts = append(opts, txt.Option{[]string{"rook2eg"}, 0, 200}) // RookOnSemiopenFile
return opts
}
func main() {
// opts := knightPsqt(nil)
opts := RookBonus(nil)
txt.Run(`setvalue {{.Name}} {{printf "%.0f" .Value}}`, "go depth 1", opts)
}