I think I’m in a procrastination loop again. I’m stuck on the GSL AI problem. Since I don’t have any progress to report, I don’t write. I don’t even write about other things, feeling driven to make some progress first. Since I’m not putting ideas down, I’m not getting the benefits of reflection, which might help me work out my difficulties.
The AI challenge is getting the computer players to play in something better than a stupid manner. In Industrial Waste, players will never perform upgrades, fire workers rendering themselves unable to take orders, and discard cards instead of playing them. All of these things look bad or indifferent if you go only by the score, but you won’t win that way. It’s not that I expect them to win against a human, but it’s so absolutely awful that it becomes quite unrealistic.
I can getting marginal results by providing weights for the resources and a rule about having enough workers. It defeats the purpose of “write the rules and run”, but it’s a fallback strategy I suppose. I can make it faster by caching ratings; it avoids the worst problems (taking unbounded numbers of loans without need) but still makes some pretty stupid moves.
I’ve also realized that the Industrial Waste model is deeply flawed; right now it’s spending most of it’s time “thinking” about playing cards; in fact the most critical decision making is during card selection, while card play is mostly picking what order to play the cards in.
I was thinking about trying to analyze the costs and results so it could try and reason from a goal to a way of meeting it. I’ve also been reading through my old AI textbook. I wasn’t seeing much that looked directly relevant.
Someone from the board game design group mentioned some new algorithms in Go. Essentially, speculate lots of random plays, and then bias the random choices by success on previous runs. The problem with this scheme is that Go has two colors and a grid. The games I’m dealing with have much more complicated game states and moves, and you can’t even make optimized state representations because it’s generic; maybe with some meta-programming.
I started thinking about applying some of the web ranking algorithms. I don’t recall where I saw it, but I believe I’ve seen a recommendation method that hashes buying history into a grid, and then uses the items of other people in the same zone to make recommendations. I got Algorithms of the Intelligent Web trying to figure this out. I’ve only been through it somewhat superficially so far, but it doesn’t appear to have what I’m looking for. It did have a set of general guidelines though, including an admonishment to stick with the simplest things possible, on which advice I’m pursuing the biased-random method over the resource-relations method.