fix: Enforce Subgame Perfection in Sequence Form LP (#1304)#1467
Open
SH20RAJ wants to merge 1 commit intogoogle-deepmind:masterfrom
Open
fix: Enforce Subgame Perfection in Sequence Form LP (#1304)#1467SH20RAJ wants to merge 1 commit intogoogle-deepmind:masterfrom
SH20RAJ wants to merge 1 commit intogoogle-deepmind:masterfrom
Conversation
…ind#1304) - Add joint reachability detection and slack-based optimal action extraction in Python. - Add reduced cost-based optimal action extraction in C++ (OR-Tools). - Add verification script check_subgame_perfection.py to confirm subgame perfection in Kuhn Poker.
Contributor
Author
|
Hi @lanctot and the OpenSpiel team, This PR serves as a core technical contribution for my GSoC 2025 candidacy. It addresses the subgame perfection issue in the Sequence Form LP solver (Issue #1304), which is critical for equilibrium finding in zero-sum games. Summary for GSoC Context
I hope this demonstrates my ability to work with the core solver algorithms and ensure mathematical correctness in the codebase. I would appreciate any feedback! |
Contributor
Author
|
For completeness regarding my GSoC application, I would also like to cross-reference my other contributions to OpenSpiel: Merged / Internally Imported:
Active / Ready for Review:
This set of PRs covers core algorithms, game logic correctness, infrastructure/serialization, and code quality (typing). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Enforces subgame perfection in the Sequence Form LP solver, addressing Issue #1304.
Previously, the solver could produce arbitrary policies (e.g., uniform random) in unreachable information states. This PR modifies the formulation to use dual variables (slacks) to extract game-theoretically optimal actions even in unreachable subgames.
Changes
open_spiel/python/algorithms/sequence_form_lp.pyto use slack variables for policy extraction.check_subgame_perfection.pyto verify the fix on Kuhn Poker (asserts Player 0 folds 'J' in unreachable subgame).Verification
check_subgame_perfection.pypasses (Output verified locally: "Assertion logic passed: P0 folds correctly.")open_spiel/python/algorithms/sequence_form_lp_test.pypassed (6/6 tests).Dependencies
Requires
cvxopt(andnumpy).