I agree that something should be done to the AI. It seems like a good start there, Arathorn.
A learning AI is indeed something that is VERY hard to do, or probably impossible would be a better definition. You can make the AI learn your movements in FPS, but hardly understand the complex tactics in Civ. It would probably get screwed up real bad, as the AI would try to counter some nonexistent tactics while being totally oblivious to the real ones. It would probably be too predictable also. For example if I attacked via ships to the northernmost wasteland of AI for three times, would it then strenghten its defences there so I could just march straight in through the front door?
A learning AI is something that is more like sci-fi today. All learning systems follow some sort of scripts - it would actually be impossible to make a true learning system in PC. It would by my knowledge need systems based on semantic nets or some other system that is far beyond any binary-based systems. So let's put the learning AI aside, shall we?
The AI can of course be taught some ways to "learn" from human players' tactics. For example, if it notices that I have very little air-defence, it could build more bombers prior to any attack. It could also take advantage on some people's tactics of leaving the core cities almost undefended (as I often do in republic and democracy). It could for example build a lot of paratroopers or something like that. This I think should be done. Human players exploit the weaknesses of others, so should the AI. It shouldn't be too complicated to program the AI to check how many, say, oil-resources you have. If it notices that you have only a few AND they are in the perimeters of your nation (or, even better, in islands), it would launch its assault there. I do that, as then with one swift strike I can deprive my enemy of crucial resources.
As it is now, it seems that the AI has been taught something like this. It attacks where it thinks you are most vulnerable and it does not attack a fortified musketman in mountains with a swordsman. It also goes after your workers.
I have complained about the AI in the thread concerning the calculations the computer makes (in this same topic). Here I would like to make similar remarks. The AI should be able to calculate how long it will take your troops to get somewhere (if it knows their placement, if it doesn't, it can be programmed to make an educated guess), which should have a huge impact on its decisions. Let me shed some light on this with an example.
The AI notices that a city that is seven tiles away from its borders is left completely undefended. With the current AI it would start its march there. I suggest that the AI scans the area around the city. If there are a lot of troops there, it could easily calculate how many turns it would take them to get there compared to its own progress (it wouldn't differ from the current calculations of "go-to"-order). It notices that I have a well-defended city four tiles away with a road between those cities and quickly understands that it does not pay off to march there, as I would have defences there waiting for them (and probably could kill off some units when they were making the trip). As all my cities are defended (even though some may not have defenders IN them!) the AI turns on a different scan. It calculates a value to your cities. The value could be made up of its distance (a huge factor, most wars start on the border - the AI should need a real good reason to do otherwise), its size, its military strength and the military strength of nearby cities (if the AI has a spy, i.e.) and so on. I would endeavour to first take out the middle-sized cities. When the AI was in full strength, I would probably just kill off my units in assaulting 13+ cities. But I wouldn't also bother too much on conquering all the 1-3-sized tundra cities. This of course depends on the tech-difference between me and my enemy. attacking a 13+ riflemen-defended city with cavalry would be suicide. I would perhaps try to destroy the AI's stacks of doom and then bring some artillery into the fray.
All in all, the AI should be able to calculate these things in a blink of an eye. The scripts would be human-made, but the AI would try to exploit your weaknesses by scanning your civ and then deciding which of the scripts it would use. The problem with scripts is that the AI will do EXACTLY what it is told to do. It is indeed often best not to attack an army with a single unit, but with the AI this script results in my armies running completely freely capturing workers and pillaging resources.
Some sort of intelligent system could be simulated with point-system. Some things give positive points and some negative and the points would vary in relation to each other. The system would be somewhat complex (as it would have to be), but totally moddable and customizable. Let's say that the AI rates it 15 points that you have only one oil (other resources could be of less consequence and could change according to current tech level), and decreases 3 points for every turn it would need to travel across your territory to get there. So my only oil in three turns would be valued 6. Some scriptures could reduce the number if your allies have excess oil and if the oil is heavily defended. Then it should be easy to change the values if the AI would never invade your oil or would do it too often. The oil-patch's distance from your other troops would be a big factor - thus the AI would almost certainly invade your oil-island if it didn't see many defending units there - exactly as I would do.
Your suggestion of multiple AI's would be appropriate. If would be easy to lessen that value of AI's military advisor if it was too bloodlusty or something like that. And then you could change the values inside the military advisor. The memory would also be good. It would value somethings that happened in the past way into future, but the impact would lessen. Much like the AI attitude now.
The exact formulation of this is of course still foggy. But it's not our business to create the AI (I'm no programmer, mind you!), but give ideas. This is my idea. I think it would result in full moddability, implement some "learning" (as the memory) and would take a better use of computer's calculating powers.
What do you guys think?