RGB : Rob’s Go Bot
By Robert Hausch
A modular based approach to Go AI.
Well I never got around to actually running my genetic algorithm on version 0.3 so it actually does worse against amigo than version 0.2 but it beats Fink which was the point. Instead I started thinking about life and death more. I wasn’t happy with the territory BE. It greatly improved the chance of life but it did so at the expense of points. It didn’t actually try and maximize the territory instead it would create a checkerboard pattern. I spend a few days thinking about how determine if something is alive. I came up with an algorithm I believed would determine if a chain of stones was indefinitely alive but then discovered a couple rare cases involving half eyes where this wouldn’t work. While researching a way to solve these boundary cases I discovered that this algorithm already exists and was very similar to what I had come up with. The algorithm, published by Benson, is simple enough call the “Benson Algorithm” go look it up. There is a Sensei’s library page which is a good start point.
- Improve influence function so it stops playing towards the center
- Improve liberty function so it puts more effort into saving small almost dead groups than growing big alive groups
- Add a tree search to figure out how to make life
First release. 1 ply search using a simple influence function (BIF) for board evaluation (BE).
Group liberty maximization BE.
Territory based BE.
Uses Benson’s algorithm to determine Pass Alive chains and regions. Haven’t put this to good use yet. Currently it just detects the regions and sets those spaces to large negative scores so I don’t waste stones. In the future I hope to add a tactical tree search to determine if a group can become pass alive and how.