Provide a reference to the best individual in the ReportProgress callback.
Make the Evaluator typedef a non-pointer. Add a new OpponentEval() evaluator.
Never mutate the best individual.
Add a mechanism to store the best weights found by the trainer.
Add a propagation_rate argument to the genetic algorithm.
Add new "best" weights.
Temporarily decouple ThreadPoolForUnittests from GTest.
First implementation of the AlphaBeta Weights Trainer.
Precompute board location validity to reduce the cost of IsValidLocation().
Allow DCHECKs to be disabled even if logging is enabled.
Disable DCHECKs in the AI trainer to reduce running time.
Add a handy method to compute the index of a board location.
Add TODO item.
Move all implementation detail from Board to BoardImpl.
Replace location map with a vector for quicker access.
Fix typos.
Synchronize valid location cache writes from multiple threads.
Replace SpinLock with default lock implementation.