Artificial Intelligence and Diplomacy
by
Stephen Agar
I
have been thinking vague thoughts about how you would code an AI program to play
Diplomacy - it would be fun if you could play against six computer opponents (or
have a game of Intimate Diplomacy against the computer).
Admittedly, the old Leisure Genius program does have AI of some sort, but
the computer plays atrociously (as Russia the computer usually opens with
F(StP)sc Stands!). I was spurred to
write the following article by news that Sean Lorber is writing a program in the
US to do just that.
Openings would be quite easy - you could just program in
the 50 or so commonest openings for each country, use Richard Sharp's fairly
comprehensive statistics on frequency and then write a routine to approximate
the chances in real life. One idea
I am quite keen on is an aggressiveness factor, which could be random or could
be set by the human player. All
openings could be given a weighting for aggressiveness so that a more aggressive
computer player would be more likely to pick an aggressive opening.
If the computer deduces "logical"
opening moves then it may be predictable - the computer would just order F(Sev)-Rum
every time, allowing Turkey into the Black Sea.
Chess programs work on a library of openings, and I think it would work
equally well with a Diplomacy program. Once
the opening is out of the way, we need to construct an algorithm which will pick
the optimum move, and this is where it gets very difficult.
Now I don't claim to be any kind of expert, but it occurs to me that
there are two distinct ways of doing this, you could either consider factors to
optimise in turn the best move for each unit, or you could consider the nest
moves for units to occupy specific positions on the board.
I favour the latter approach as it is the best way to formulate coherent
strategies that use units together as opposed to all the moves being a
collection of one-offs. Thus I
think before every move, retreat or adjustment, the program would need to
calculate the Tactical Factor of each space to each Power and use that
information as the core factor for determining which move to make.
Tactical
Factors could perhaps be based on the characteristics of the space (owned or
hostile centre), number of adjacent centres (home, neutral, enemy) and the number
of adjacent enemy units (say within two spaces, weighted so closer units count
more). The Tactical Factor of each province would need to be re-calculated each
move (Eg. the initial Tactical Factor of Warsaw and Livonia
to Russia would increase if Germany moved to Prussia). If I was playing a
gunboat game, I think my thought processes might go something like this:
1.
Count the number of hostile units next to each of my home centres. If
there is one hostile unit, then I would order the unit in
2.
As (1) save I would be protecting my non-home centres.
3.
As (1) save I would be attacking enemy home centres.
4.
As (1) save I would be attacking enemy non-home centres.
5.
As (1) save that I would be doing the exercise in order to get my units
to make attacks on hostile centres.
6.
As (1) save that I would be defending my own units from dislodgment.
7.
As (1) save that I would be attempting to dislodge enemy units (which
could not retreat to one of my undefended centres).
8.
As (1) save I would be playing for position.
All provinces need to be rated as to the desirability of occupying them
(a Tactical Factor).
Further
refinements could include a formula for assessing whether the moves of another
player are threatening or non-threatening, the existence of the former making it
more likely that the computer will play more aggressively when considering
decisions which affect that players units or centres.
Choices between different moves also need to consider the chances of
success and the desirability of maximising the number of units involved in
taking spaces with the highest Tactical Factors.
An aggressive computer player would put a greater emphasis on moves which
seek to gain a tactical advantage, whereas a defensive player puts the emphasis
on defending what he has (thus an aggressive player would always perceive spaces
which he does not own or occupy as having a higher Tactical Factor then a
defensive player would).
Resolving
conflicts between the different possible moves (as England should the computer
defend Brest, try to take Spain or move to WMS for position) is a difficult
question. Essentially I think you
need to weight moves using a formula which takes into account the likely gains
and losses overall and then throw in a random element, weighted according to the
aggressiveness rating of the computer player.
Particular weighting could be given to encourage moves against a player
which has already taken a centre of the computer.
Retreats
could be made depending of the Tactical Factors of all the spaces open to
retreat to, but in a build season if the Tactical Factor of occupying a home
centre exceeds that of a possible retreat space, then the computer may disband
and build (after all it would be silly for Turkey to retreat A(StP)-Fin, if
there was an Austrian army in Bulgaria threatening Constantinople. Builds are
more difficult. The computer could
calculate (say) the nearest three enemy controlled or neutral centres, calculate
how vulnerable they are (number of enemy units within two spaces - number of
friendly units, units two spaces away having a weighting half that of adjacent
units) and then choose a unit which can reach the most vulnerable quickest.
Now
this is all a lot easier to say than to program (and such a routine would be
bound to produce bizarre moves every now and then), but there should be a basic
competence behind it. Of course,
the $64,000 question is should the program have 1:25 chance in any given move
that a computer player would NMR or even drop out?
How realistic should any computer program be?
Reprinted from Spring Offensive 21 (March 1994)
|