Missing Nash Equilibria in support_enumeration?!
alezana opened this issue · 1 comments
alezana commented
I stumbled upon this game:
A = np.array([[0, 0, 6, 0, 0], [0, 0, 3, 2, 1], [4, 3, 0, 0, 1]])
B = np.array([[3, 0, 2, 1, 0], [0, 2, 0, 0, 4], [4, 0, 2, 4, 4]])
which is supposed to have 8 Nash equilibria (players are minimizers):
y: [ 1 0 0 ] J1: 0 z: [ 0 1 0 0 0 ] J2: 0
y: [ 1 0 0 ] J1: 0 z: [ 0 0 0 0 1 ] J2: 0
y: [ 2/3 1/3 0 ] J1: 0 z: [ 0 1 0 0 0 ] J2: 2/3
y: [ 1/3 1/2 1/6 ] J1: 4/3 z: [ 0 4/9 2/9 1/3 0 ] J2: 1
y: [ 0 1/2 1/2 ] J1: 3/2 z: [ 0 1/2 1/2 0 0 ] J2: 1
y: [ 0 1 0 ] J1: 12/7 z: [3/7 0 4/7 0 0 ] J2: 0
y: [ 0 1 0 ] J1: 0 z: [1 0 0 0 0 ] J2: 0
y: [ 0 1 0 ] J1: 3/2 z: [3/8 0 1/4 3/8 0 ] J2: 0
these equilibria are consistent with a support enumeration algorithm I wrote in matlab and with some online solver like this.
While vertex_enumeration
returns the correct equilibria, support_enumeration(-A,-B)
only 5 of them, invariant to different values of tol
.
Do you know why?
Thanks for your work,
Best
drvinceknight commented
@alezana the game is degenerate (the column player has 3 best responses to the second row for example) and the (currently implemented) algorithms are not guaranteed to work in these cases. There is some ongoing work to implement algorithms that work on degenerate games.