Monday, May 26, 2008

Official start

I suppose I'm the 501st person to use this title, but hey... Can't stress it enough. Summer of Code has officially started.

Since the last post ("last week" is not really correct here) I didn't really do a lot for SoC. I had two deadlines for big projects at school, including one were we worked on for 24 hours straight. That's 24h in the pc labs, see the sun set and rise again, watching those that left the labs the day before come back in, cursing at UML modeling tools that won't listen and team members who won't listen either, ... I'm still a bit frustrated about it all, it seems. But the project was done in time, classes have ended, and there is time for SoC now.

I had a look at libtpclient-py and I'm still not entirely sure what to make from it, but I suppose that will follow quickly enough.

I've been thinking about the design. It's still a bit rough, but I feel I'm on to something. The basic idea for the driving force behind the AI would be a CHR-like production rule system, coupled with an initialization (state -> contraint store) and a finalization phase (constraint store -> orders) each turn. I'm currently musing on how to represent storage in the working memory between turns to allow multi-turn strategies to work out. I had two things in mind: either labeling certain predicates as being temporary and prune them during finalization, or creating a second (permanent) storage that will be added to the constraint store during initialization. The first one seems nicer but might be impractical to work with, I've got to think a bit more about that.

The big advantage to this system is that it would completely decouple the search algorithm from the data, and split the data (in as far as you can call a set of rules data) in "ruleset data" and "strategy data". Thus, the system can be reused by different rulesets if someone provides useful initialization/finalization code, and the same init/finalize code can be used by multiple AIs who differ in their rule database.

Next week: a working client, a finalized design for the rule engine.

Oh, and I got the gift. The package had arrived a long time ago, but it's the first time in 2 weeks I went home. It certainly looks like an interesting read, thank you Google!

No comments: