I think the only way to design decent AI behavior is based on characteristics of the map. How feasible would it be to write code to extract characteristics of the map? An AI profile would then be picked (not generated arbitrarily) based on those characteristics. I'm thinking the following would need to be extracted from the maps:
# of starting oils in base
# of remaining oils outside the bases
# of players
size of map (# of tiles)
# of tiles needed to reach furthest oil in the middle. (how many tiles it takes to reach the middle oil using the shortest path)
# of tiles needed to reach opponents base
For example, consider a map that has 32 total oils with 4 players, each of which starts off with 4 oils in their base. That means there are 16 oils outside of the bases with 4 potentially going to each player. The AI would need to know which 4 oils outside of his/her base are the closest and out of those 4, which one is the furthest away and how many tiles it is away. This information would dictate which AI profile to choose and actually this is the same information that human players essentially use but they probably don't realize it.
If it is possible to extract this information from a map, there is no doubt that I could generate static base building and research order sequences that would beat most human players in a fair 1v1 game. The AI profile would also never make any defence and strictly build units of my choice.
How difficult would it be to write code to extract this information from a map?