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

ENH: Support enumeration in behavior strategies/sequence form #468

Open
tturocy opened this issue Oct 29, 2024 · 0 comments
Open

ENH: Support enumeration in behavior strategies/sequence form #468

tturocy opened this issue Oct 29, 2024 · 0 comments

Comments

@tturocy
Copy link
Member

tturocy commented Oct 29, 2024

Overview

From 34d4a56 (and for inclusion in 16.3), we re-implemented support enumeration in strategic games following the heuristic recommended by Porter et al.

As part of the work re-instating enumpoly_solve, we also did some tidying of enumerating (behavior) supports for extensive games; this is in src/solvers/nashsupport. However, by comparison, this enumeration leaves much to be desired.

There are several intertwined areas which need to be addressed.

  • There is an infrastructure in BehaviorSupportProfile which attempts to track which information sets are reachable from the root node, given the actions currently contained in the support profile. However, in the support enumeration, this is not meaningfully taken advantage of.
  • There is a class called ActionCursor which does the (naive) iteration over support profiles. At a minimum this should be re-written as a more standard modern C++ iterator over the set of support profiles.
  • But also, it is precisely in this iteration where information about the structure of the tree could (should?) be used to filter out support profiles which differ only on information sets which are rendered unreachable by the rest of the support. It would make much more sense to do this in the iteration rather than the complicated internals currently in the support.
  • This interacts also with a test currently in enumpoly_solve which checks whether a candidate profile extends to a Nash equilibrium by solving a polynomial system. At the moment this appears largely redundant because the support enumeration is naive. However, it is also not clear that even under a more sophisticated support enumeration method, that polynomial solvers are necessary - as opposed simply to trying to fill in pure strategies off the path.

Actions

This is a placeholder for now to note that this will require attention in future. We will need to break this down into a strategy with smaller steps. Overall, working on this requires both some understanding of game theory (especially on extensive games) as well as software engineering on the details of C++ implementation.

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