[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, Jun 20, 2002 at 05:45:26PM +0100, Gregory Berkolaiko wrote:
> 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):
> Available techs:
> 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)
> Tech's scores:
> 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
> Selection probabilities:
> 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.
All fine except: where do you get the points for the techs? Either the
ruleset author, the AI developer (if the ruleset author has no clue
about the internal AI stuff) or the code at runtime.
> > > 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 :)
> > Difficult.
> What is?
It is difficult to decide what to attack if you have to choice.
> When you evaluate danger to your city, just remember the units they
> produced most of it and then consider them as the primary targets.
"Your mail could not be delivered to the following Address:
VTCMC.VTLPR@xxxxxxxxxxxxx ** Unassigned error message **"