May i have a word? Just some trivial thoughts.
Even though this nullbot thing of mine may be relatively strong, you shouldn't really bother with beating it in play strength. On the other hand, your focus on a transparent and well-designed code base is something i can't dream of (because of being a poor coder), but once the fundamental code is done, i could easily feed the existing well-tested data (strategy definitions) into it and thus make it as strong as i currently can. In this case, nullbot will die, having fulfilled its primary purpose of being a quick and dirty experimental proof-of-concept piece of code (hence the name), and i'll be really happy about that.
Am i right to understand the process going on here this way? (:
_________
About dynamic research ... when i added 5-way research adaptation to nullbot, the heart of the algorithm used is called the adaptation matrix. It could have been a matrix in your common mathematical sense (a linear operator transforms a vector of game situation describing numbers into a vector of decision priorities), but it turned out to be a non-linear operator at the end (but the word "matrix" still sounds cool, so i think i'd keep it).
For example, suppose we have two-dimensional adaptation: we take the number of enemy tanks and cyborgs on the board and want to find out how many AT and AP weapons we need. Let
x be a vector (x1,x2), where x1 is the number of tanks and x2 is the number of cyborgs. Let
y be a vector (y1,y2), representing our decision: we need to pick AP research in y1 cases and AT research in y2 cases out of y1+y2. Then if we pick a simple adaptation matrix
and let
y=A
x, we will have an adaptation method: AP:AT research ratio will be equal to borg:tanks ratio. This might be suitable for MG/Rockets AI, but MG/Cannons AI (that uses cannons as AT weapons) might prefer another matrix:
considering the fact that cannons work better against cyborgs than rockets do. That second adaptation matrix will make AI not stop researching cannons even when no tanks are present on the board. That's not really good. So there is certain freedom in picking the adaptation matrix, and it's not obvious which one is the best.
The same idea can be applied to adapting production ratios.
Well, i'm not saying anything non-trivial, that's just some sort of clarity that i'm relying on since recently.