-
Notifications
You must be signed in to change notification settings - Fork 148
/
README
113 lines (92 loc) · 5.7 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
gambit-enumphc version 0.2007.03.12
===================================
This is the README for gambit-enumphc, which attempts to compute all
(isolated) Nash equilibria of a strategic game by enumerating possible supports
and solving the corresponding systems of polynomial equations.
This program is similar in principle to the gambit-enumpoly program in
the Gambit distribution. It differs in practice in two (useful) ways:
(1) The support enumeration method is slightly different (although it
appears to produce identical output, just in a different order).
The correctness of the implementation here has been established
formally, in that it will (a) visit any support at most once, and
(b) visit any support that may harbor a Nash equilibrium. It is somewhat
more efficient than the implementation in gambit-enumpoly, although
the support enumeration process is typically a small portion of the
overall running time of this method. Also, this implementation solves
on each support as it is generated, as opposed to gambit-enumpoly, which
first generates the list of candidate supports, and then solves them.
(2) The backend is the PHCPACK solver of Jan Verschelde. This program
has been tested with version 2.3.24 of PHCPACK. PHCPACK source, and
binaries for several systems, can be obtained either from the main
PHCPACK site at
http://www.math.uic.edu/~jan/download.html
or from the Gambit website
http://econweb.tamu.edu/gambit/download.html
The version of PHCPACK mirrored on the Gambit site has been tested with
this program. Newer versions of PHCPACK may be available from the
main site; these should also work with this program, but there is always
the possibility of incompatible changes in PHCPACK's output.
The PHCPACK "black-box" solver for computing solutions to a system of
polynomial equations, which is called by this program, is much more
reliable than the polynomial system solver used in gambit-enumpoly.
The program is written in Python, and has been tested with Python 2.4.
It requires that the Gambit Python extension (available from the
Gambit website) has been installed. The program is invoked as
python enumphc.py [options] < game.nfg
Consult the gambit-enumpoly documentation for general information about
the method; this program can be thought of as a "drop-in" replacement
for that program (at least for strategic games). What follows
documents some differences and usage notes for this program. Note that
this program is still young, and may require some care and feeding in
terms of the tolerances below.
Additional options available:
-p: Specify a prefix for the files used to communicate with PHCPACK.
In calling the PHCPACK executable, this program creates a file
with the polynomial system that is passed to PHCPACK, and PHCPACK
communicates the solutions back via another file. If you run
multiple instances of this program at once, you will want to specify
different prefixes for these files to use.
-t: Payoff tolerance. There are typically many solutions to the system
of equations for a support that are not Nash equilibria. Some of
these solutions fail to be Nash because a strategy not in the support
has a higher payoff than the strategies in the support. This
parameter adjusts the tolerance for strategies with superior payoffs
outside the support; it defaults to 1.0e-6, meaning that a profile
is reported to be Nash even if there exists strategies with superior
payoffs outside the support, so long as the regret is no more than
1.0e-6. Note that if your payoff scales are large, you will almost
certainly want to modify this (1.0e-6 seems about appropriate for
games whose payoffs are on [0, 10] or so).
-n: Negative probability tolerance. By default, any solution with a
negative probability, no matter how small, is not regarded as Nash.
Giving a number greater than zero for this parameter allows solutions
with negative probabilities no greater in magnitude than the parameter
to be considered Nash.
Both the -t and -n parameters attempt to address situations in which the
game being solved is "almost non-generic", in the sense that there is a
nearby game that is degenerate.
By default the program only reports equilibria found. Using the -v
command-line switch adds three additional pieces of information to the
output:
(1) candidate supports: as each support is visited, its contents are
output with the tag "candidate"
(2) singular supports: If for any reason PHCPACK returns with an error
on a system, that support is flagged as "singular". This might
indicate a bug in PHCPACK; more often, it may indicate that a game
is not generic, in that this support (or a closely related one) might
harbor a positive-dimensional continuum of equilibria. The
program currently does not attempt to further characterize equilibria
on such supports (but hopes to do so in the future).
(3) non-equilibrium profiles: All solutions to the system of equations
which are not Nash equilibria are reported, prefixed by the tag
"noneqm". In addition, to these lines is appended the Lyapunov value
of the profile. This is a nonnegative value which is zero exactly
at Nash equilibria. Small values of the Lyapunov value might indicate
that the profile is in fact an approximate Nash equilibrium, i.e.,
there is in fact an equilibrium nearby, but the profile fails the
equilibrium test for numerical reasons. This value can thus be used
as a diagnostic for setting the -t and -n parameters (above) appropriately.
This program is described in "Towards a Black-Box Solver for Finte
Games: Finding All Nash Equilibria with Gambit and PHCpack," which is
available at
http://econweb.tamu.edu/turocy/papers/enumpoly.html