Danny Loeb
Computer Interpretation
of
Diplomacy Openings
The Observation Module applied
to Spring 1995 in "dippouch"
As an example of the use of the observation module described in
the article devoted to it elsewhere in this issue,
and as a source of practical advice for potential "investors,"
let us apply the observation module to the results
of the first turn of the game "dippouch", as shown in the first issue
of this magazine.
General Comments about Spring 1901
In the previous
issue of this magazine, I discussed how an opening
book (such as the one published in this issue of Diplomatic Pouch)
can be used to select a good opening.
Similarly, looking up your opponents openings in such a book gives you
a good idea about kind of alliances they are likely to indicate.
For example, in the game "dippouch," here is a brief summary of each
country's opening. Click on the country's name for full details.
- Austria. Balkan Gambit, Budapest
Variation. Pro-Italy. Could be used against Russia or Turkey.
- England. Wales Opening, Southern
Opening. Anti-France.
- France. Burgundy Opening. Basically
defensive.
- Germany. Blitzkreig Opening, Holland
Variation. Defensive. Possibly anti-French.
- Italy. Lepanto if convoy in
Fall. Usually pro-Austria, anti-Turkey.
- Russia. Turkish Attack.
Usually just what it sounds like.
- Turkey. Variant of Bosphorus opening
(inferior, as it
doesn't allow a build in Ank in case of Sev-Bla).
Anti-Italy.
The openings library supplemented perhaps by a systematic search of
games containing similar openings can occasionally give clues as to
what kind of tell-tale moves to look for in Fall 1901 as well!
However, we hope that our diplomat's general operating procedures will
be robust enough to work well in all phases including Spring
1901. Thus, we plan to use the normal observation routine even in
Spring 1901 as described below. It is interesting however to use the
openings library as a tool by which to judge the performance of the
Observation Module.
One of the inputs of the Observation Module is the Friendliness Matrix
produced in the previous season. Since this doesn't yet exist in
Spring 1901, it must be invented. Below we take the all zero matrix as
a default, however there are other possibilities.
- Adjust the matrix in function of the pre-Spring 1901 negotation.
- Use a predetermined matrix which compensates for "unjust." For
example, moves by Germany and France towards the lowlands are
considered by the observation module to be tantamount to
attacks on each other. Similarly, Turkey, Austria, and Russia's
moves to the Balkans are considered "aggressive."
- Use a predetermined matrix to take take into account long term
interests which the diplomat could otherwise not fathom. For
example, Italy and Austria can often obtain a good short-term
gain by stabbing each other. However, their long-term interest
is often served by working together.
Conversion to DPP Protocol
Using a conversion program developed in LCS by Per Westling and
myself, Diplomacy Adjudicator (judge) results can be directly
converted to the DPP protocol language which is understood by the Bordeaux
diplomat.
First, I saved the results in a file called "dippouch".
Then, I load the package in LCS
% lcs
LCS Project - CNRS/LAAS - 1992
lcs version 3.1, created 6-10-1992
val it = () : unit
- use "convert.pw.sml";
.....
convert.pw.sml file loaded
val it = () : unit
- val s = convert "dippouch";
val s =
"ORD (SPR 101)
((AUS AMY BUD) MTO SER VLD) ((AUS AMY VIE) MTO BUD VLD) ((AUS FLT TRI) MTO ALB VLD)
((ENG AMY LVP) MTO WAL VLD) ((ENG FLT EDI) MTO NTH VLD) ((ENG FLT LON) MTO ENG VLD)
((FRA AMY MAR) MTO SPA VLD) ((FRA AMY PAR) MTO BUR VLD) ((FRA FLT BRE) MTO MAO VLD)
((GER AMY BER) MTO KIE VLD) ((GER AMY MUN) MTO RUH VLD) ((GER FLT KIE) MTO HOL VLD)
((ITA AMY ROM) MTO APU VLD) ((ITA AMY VEN) HLD VLD) ((ITA FLT NAP) MTO ION VLD)
((RUS AMY MOS) MTO SEV VLD) ((RUS AMY WAR) MTO UKR VLD) ((RUS FLT SEV) MTO BLA VLD) ((RUS FLT (STP SCS)) MTO BOT VLD)
((TUR AMY CON) MTO BUL VLD) ((TUR AMY SMY) MTO ANK VLD) ((TUR FLT ANK) MTO CON VLD)
EOM" :
string
Observation Module
We then load the observation module implemented in LCS by Arnaud
Moulard and Christophe Moustier.
- needs "load_all";
........
- observer nullMat77 (detail (ref2ord s));
val it =
([[0.0, ~0.104166666666667, 0.9375, 3.9625, 0.0625, ~6.92083333333333, ~1.57083333333333],
[~0.104166666666667, 0.0, ~8.9, ~3.775, 0.345833333333333, 0.0541666666666667, ~0.0458333333333333],
[0.9375, ~8.9, 0.0, ~5.70416666666667, ~6.82916666666667, ~0.8375, ~0.879166666666667],
[3.9625, ~3.775, ~5.70416666666667, 0.0, ~4.95416666666667, ~1.25833333333333, 5.1875],
[0.0625, 0.345833333333333, ~6.82916666666667, ~4.95416666666667, 0.0, ~3.6, ~6.875],
[~6.92083333333333, 0.0541666666666667, ~0.8375, ~1.25833333333333, ~3.6, 0.0, ~11.8416666666667],
[~1.57083333333333, ~0.0458333333333333, ~0.879166666666667, 5.1875, ~6.875, ~11.8416666666667, 0.0]],
[["AUS", "ITA"], ["ENG"], ["FRA"], ["GER", "RUS"], ["TUR"]]) :
real list list * string list list
Or again
A E F G I T R
A -0.1 +0.9 +4.0 +5.1 -5.9 -1.6
E -0.1 -8.9 -3.8 +0.0 0.0 -0.0
F +0.9 -8.9 -5.9 -0.0 +0.0 -1.1
G +4.0 -3.8 -5.9 +2.1 -0.4 +5.0
I +5.1 +0.0 -0.0 +2.1 -2.1 +0.1
T -5.9 0.0 +0.0 -0.4 -2.1 -12.0
R -1.6 -0.0 -1.1 +5.0 +0.1 -12.0
The results from only one turn of play do not yet show very strong
relationships between the players. However, the computer considers
England and France, and Russia and Turkey to be at war, and Austria
and Italy, and Russia and Germany to be allies.
These results are based on the simple analysis of the results
described below. In particular, none of the press or negotiations were
taken into account.
How were these numbers generated
Many factors did not come into play...
- Violation of Specific Agreements.
No agreements were used in the above computation.
If they had, then a positive entry would have been made for
each treaty respected (such as that between France-Italy) and a
negative entry for each treaty violated (such as that between
France-England).
- Coordinated Moves.
No coordinated moves (supports or convoys) were made this season.
- Attacks.
There were no conflicts this season.
- History. The all zero matrix was used to represent the
history of the game, since this is the first season of the
game. In practice, some other matrix might be used in order to
give the diplomat a prejudice to consider that certain
countries might be allied together.
The one important factor which came up in the calculations was the
following.
Parameters
The following is a list of parameters used by the observation module
and their default values used in this example. Actual optimal values
can only be found through extensive testing (self-play).
- Transitivity factor
= 20.0
- Old friendliness
= 70%
- Bounce
= 5.0
- Cut support
= 10.0
- Intent support
= 6.0
- Disrupt convoy
= 10.0
- Failed
= 2.0
- No move
= 0.5
- No such order
= 3.0
- Retreat
= 20.0
- Valid
= 13.0
- Distance Filter
- distance 0 = 30,
- distance 1 = 10,
- distance 2 = 3,
- distance 3 = 1,
- distance 4 or more = 0.
- Limit Ally
= 5.0
- Limit Enemy
= -7.0
Danny Loeb
Universite de Bordeaux I
(loeb@delanet.com)
If you wish to e-mail feedback on this article to the author, and clicking
on the mail address above does not work for you, feel free to use the "Dear
DP..." mail interface, which is located
here....