[freeciv-ai] Re: Opinions on some AI issues
[Top] [All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
On Thu, 20 Jun 2002, Raimar Falke wrote:
> On Mon, Jun 17, 2002 at 07:29:19PM +0100, Gregory Berkolaiko wrote:
> > Just to let you know my opinion on a couple of issues and maybe also
> > revive the list.
> > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> > I. Technology selection by AI.
> > Right now the AI evaluates units (and I
> > guess buildings) that it can build to select the build but it also
> > evaluates the things it cannot yet build and if they are found useful,
> > the want of the enabling techs is bumped up. IMO it is a very good
> > philosophy. Unfortunately it is hard to maintain, hard to generalize, it
> > encourages spaghetti-coding and slows down the server. Also it is hard to
> > weigh importance of musketeers on the same scale as importance of
> > cathedrals.
> > Instead I suggest that tech slection be done randomly, based on some
> > general tendencies. We can define few general tech directions, like
> > Social, Economy, Military. Then we can have base weights for each civ
> > plus some situational modifiers (e.g. a lot of cities in danger -- go for
> > Military, too many elvii -- go for social, empty coffers -- go for
> > economy). The next tech will be selected randomly with more probability
> > going to the more desired directions.
> Nice idea. But it looks to me that this will be a bit undirected. This
> will lead IMHO to an AI which will loose tech races for bonus techs or
> steam engine.
> You may also want to include how much the given tech will enhance your
> abilities in the given area. Can be measured easy for military units
> but other factors are more difficult.
Yes, this is exactly what I had in mind. Here is an example (I don't
remember the tree, so numbers will be fictional):
Masonry (Mil 3, Soc 1, Eco 1)
Ceremonial Burial (Mil 0, Soc 3, Eco 1)
Bronze Working (Mil 3, Soc 1, Eco 2)
Alphabet (Mil 1, Soc 3, Eco 3)
Rome's base preferences:
Mil 2, Soc 2, Eco 3
Rome's modifiers: Mil +1 (enemy cities nearby),
Soc -1 (no unhappiness yet),
Eco 0 (enough cash, ok research rate).
Rome's prefs: Mil 3, Soc 1, Eco 3 (will be squared)
Masonry = 3*3^2 + 1*1^2 + 1*3^2 = 37
Cer Bur = 0 + 3 + 9 = 12
Bro Wor = 27 + 1 + 18 = 46
Alph = 9 + 3 + 27 = 39
Total = 134
Masonry = 37/134 = 27.6%
Cer Bur = 9.0%
Bro Wor = 34.3%
Alph = 29.1%
Yes, going straight to Republic at all costs could be a more optimal
strategy. But this is a sign of the rules being unbalanced. And even if
rules are not balanced you can compensate by giving The Republic and its
prereqs an inflated score.
BTW, the score for each tech should probably be composed of it's base
score, due to units, improvments and wonder that it makes possible
+ 50% of it's children's scores + 25% of its grandchildren scores.
> > II. Fuzzy AI
> > Fuzziness is good. AI should make mistakes. Some might argue that the
> > whole AI behaviour is one big mistake, but I disagree. Fuzziness is cheap
> > and general method to have a spectrum of difficulty levels. We mustn't
> > rely on it exclusively, of course, but neither we should ignore it.
> IMHO AI should compute exact decisions if exact decisions can be
> computed. Exact decisions may be computable but it would be too
> expensive to do so. Exact decisions may be blurred _afterwards_.
Or you can compute a suboptimal decesions and save some CPU.
But it could vary from case to case and in general I do agree with Raimar.
> > III. Danger estimation.
> > When evaluating danger, it is important to remember the most dangerous
> > units. In order to attack them later. Right now the priority is to
> > attack more expensive and less defended units. But choosing to attack a
> > caravan over a guarded howitzer can be deadly (another argument in favour
> > of fuzziness: AI will always attack one and not the other -- and one can
> > exploit it). Of course it is better to kill both :)
When you evaluate danger to your city, just remember the units they
produced most of it and then consider them as the primary targets.
> > IV. Invasions.
> > Invasion targets should be selected on a high level. The current
> > "everybody is going there so I go there too" attitude is pathetic. But
> > what is a good city to attack?
> Nearest enemy island sounds good but you can also take the strength of
> the enemy and distribution of attacking and defending forces into
> account. And the production distribution. Ideally you have a good
> developed area with a lot of production near an enemy underdeveloped
> area. This will reduce the move delay.
Yes. And probably more factors.
> > Bodyguarding is a great idea. CivIII got it (I think they stole
> > quite a few features from FreeCiv, actually). But to see a rifleman
> > guarded by a mech.inf. is hilarious! It happens because rifleman
> > had 5A > 5D which qualifies him as an attacking unit. And 6A/6D
> > mech.inf. is a defender! How do we distinguish an attacking unit
> > from a defending one? We can write complicated functions or we can
> > use more role tips in the rulesets.
> You can calculate the average att to def ratio for the current units
> (the enemy ones you have seen and/or depending on the technology) and
> than compare the att to def ratio of a given unit to this average.