Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BUG: gambit-ipa returns non-Nash equilibrium in simple poker #406

Closed
tturocy opened this issue Nov 12, 2023 · 0 comments
Closed

BUG: gambit-ipa returns non-Nash equilibrium in simple poker #406

tturocy opened this issue Nov 12, 2023 · 0 comments
Milestone

Comments

@tturocy
Copy link
Member

tturocy commented Nov 12, 2023

Steps to reproduce in Python:

import pygambit as gbt
g = gbt.Game.read_game("contrib/games/poker.efg")
gbt.nash.ipa_solve(g)
gbt.nash.ipa_solve(g)[0].liap_value()
@tturocy tturocy added this to the gambit-16.2.0 milestone Nov 12, 2023
tturocy added a commit that referenced this issue Jan 26, 2024
This adds a check that the perturbation vector specified for IPA
is generic.  Specifically, it requires that the perturbation
vector has a unique maximiser for each player.  This ensures
that the game perturbed along this ray has a unique equilibrium
in pure strategies for a sufficiently large perturbation.

This also changes the perturbation vector used by the default call to IPA
to perturb the game such that the perturbed game's equilibrium is
for each player to play their first-numbered strategy.

A consequence of using non-generic perturbation vectors was that
IPA could return non-Nash output.

Closes #406.
tturocy added a commit that referenced this issue Jan 26, 2024
This adds a check that the perturbation vector specified for IPA
is generic.  Specifically, it requires that the perturbation
vector has a unique maximiser for each player.  This ensures
that the game perturbed along this ray has a unique equilibrium
in pure strategies for a sufficiently large perturbation.

This also changes the perturbation vector used by the default call to IPA
to perturb the game such that the perturbed game's equilibrium is
for each player to play their first-numbered strategy.

A consequence of using non-generic perturbation vectors was that
IPA could return non-Nash output.

Closes #406.
tturocy added a commit that referenced this issue Jan 26, 2024
This adds a check that the perturbation vector specified for IPA
is generic.  Specifically, it requires that the perturbation
vector has a unique maximiser for each player.  This ensures
that the game perturbed along this ray has a unique equilibrium
in pure strategies for a sufficiently large perturbation.

This also changes the perturbation vector used by the default call to IPA
to perturb the game such that the perturbed game's equilibrium is
for each player to play their first-numbered strategy.

A consequence of using non-generic perturbation vectors was that
IPA could return non-Nash output.

Closes #406.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant