Skip to content

ENH: Make behavior profile terminology more transparent and consistent #617

@tturocy

Description

@tturocy

Overview

Gambit overloads terminology on methods that compute using behaviors with two different conventions:

  • For some equilibrium methods - enumpure and liap, passing use_extensive=True actually operates with what Myerson (1991) calls the "multiagent" representation of the game - where each information set is treated as a separate player. This means these methods can return profiles which are "multiagent Nash", but not Nash. See Myerson's game 4.2 for such an example (also used as an example in BUG: liap_value incorrect for mixed strategy profile on an extensive game #616).

  • However, sequence-form based methods - lp, lcp, and enumpoly - (should) return only profiles with are "truly" Nash as standardly defined when solving with use_extensive=True. In addition logit - despite its implementation as "agent QRE" - returns an (approximate) sequential equilibrium (as proven in McKelvey-Palfrey 1998). (To understand why logit does not have this "problem" despite the use of "agent" in its name, consider the Myerson example - the spurious multiagent representation equilibrium requires player 1 to play z1, but because player 2 plays w2, along the AQRE path the belief on that information set must be concentrated at the node following w2, and y1 is the best response to such beliefs.)

  • In addition, the regret-related quantities as well as liap_value on behavior strategy profiles actually compute using the multiagent representation.

Proposed solution

pygambit

In pygambit, the ambiguity could be resolved as follows:

  1. enumpure_solve and liap_solve should have the argument name changed to use_multiagent (or use_agent, depending on the terminology we prefer). This is in one sense a breaking change, but as the old name was misleading it seems good to do it immediately for clarity.

  2. liap_value and the regret implementations as currently available should be re-named to versions with agent or multiagent in their names. They are still relevant and correct, they are just not what a user might expect with the current names.

  3. The above should be replaced with new implementations which internally use the mixed strategy representation. Regret needs to be clarified and defined/documented (and tested!) carefully.

Command-line tools

In the command-line tools, a similar change to the command-line switches should be made as a one-off to avoid ambiguity.

Graphical user interface

Because the graphical interface is intended primarily for simple use cases and beginning users, the most straightforward approach is to remove the "using the extensive game" option for enumpure and liap and use the strategic game for these. Otherwise we would need to create an extra layer of concepts around agent representations - which would be an entire feature set in itself.

Metadata

Metadata

Labels

bugc++Items which involve writing in C++cythonItems which involve coding in CythondocumentationguiItems which involve the graphical interface/wxWidgetsnashItems which involve Nash equilibrium computation methods

Type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions