by RĂ©mi Coulom

Artificial intelligence in games often leads to the problem of parameter tuning. Some heuristics may have coefficients, and they should be tuned to maximize the win rate of the program. A possible approach is to build local quadratic models of the win rate as a function of program parameters. Many local regression algorithms have already been proposed for this task, but they are usually not robust enough to deal automatically and efficiently with very noisy outputs and non-negative Hessians. The CLOP principle, which stands for Confident Local OPtimization, is a new approach to local regression that overcomes all these problems in a simple and efficient way. CLOP discards samples whose estimated value is confidently inferior to the mean of all samples. Experiments demonstrate that, when the function to be optimized is smooth, this method outperforms all other tested algorithms.

- CLOP.pdf, paper accepted at ACG13.
- CLOPSlides.pdf, slides of a seminar presentation.
- CLOP-0.0.9.tar.bz2, source code. Scripts that produced the plots of the paper are in the LaTeX directory.
- CLOP-Win-0.0.9.zip, Windows version.

- CCC discussion of CLOP.
- computer-go discussion of CLOP.
- RPO.pdf,
*Minimizing the Mean of a Random Variable with One Real Parameter*, by Eric Boesch.

- (2012-01-29) EXchess used CLOP successfully.
- (2012-01-03) Brian Sheppard is enthusiastic about CLOP in the computer-go mailing list.
- (2011-12-05) Lajkonik was optimized with CLOP.
- (2011-11-04) The blog of Mediocre Chess reports about using CLOP.

- PieceValues.tar.bz2, a data file by Gian-Carlo Pascutto demonstrating the application of CLOP to piece values in Chess.

- cutechess-cli has support for CLOP.
- chessScript.02.tar.gz, a script to connect an UCI chess engine to CLOP, by Don Dailey (new version updated 2011-09-08).
- Support for CLOP in gomill.

These are some screenshots of an old version in action. You can also run the program from the command line, which is more convenient for use on a remote cluster. The program can deal with chess outcomes (win/draw/loss), and integer parameters. The program is written in C++ with Qt, so it can be compiled and run on Windows, Linux, and MacOS.