Contains code for modeling two-player zero-sum extensive-form games and algorithms for computing Nash equilibria and related concepts. Right now, the file reader can read two formats, the one used by the zerosum package, and an extension of that format, allowing heavier annotation of the game. In the future, I will (hopefully) add a formal description of the two formats.
If you use this codebase, please cite one of our recent papers, for example:
Extensive-form Game Abstraction with Bounds. Christian Kroer and Tuomas Sandholm. In ACM conference on Economics and Computation (EC), 2014
For a C implementation of the sequence form linear program and the counter-factual regret minimization algorithm, check out Kevin Waugh's zerosum package.
One or more solvers in this library require CPLEX to run. In order to use these, you must add cplex.jar to lib/
to allow compilation. To run it, add the following as a VM argument:
-Djava.library.path=/path/to/CPLEX_Studio/cplex/bin/your-architecture/
To run the JUnit test cases, the variables in the TestConfiguration
class should be appropriately updated.
SequenceFormLPSolver
is an implementation of the sequence form linear program described in:
Efficient Computation of Behavior Strategies. Bernhard von Stengel. In Games and Economic Behavior, 1996
CounterFactualRegretSolver
is an implementation of the CFR algorithm described in:
Regret Minimization in Games with Incomplete Information. Martin Zinkevich, Michael Johanson, Michael Bowling, and Carmelo Piccione. In NIPS, 2007
OpponentSamplingCFR
is an implementation of one of the Monte-Carlo-based CFR algorithms described in:
Monte Carlo Sampling for Regret Minimization in Extensive Games. Marc Lanctot, Kevin Waugh, Martin Zinkevich, and Michael Bowling. In NIPS, 2009
LimitedLookAheadOpponentSolver
is an implementation of the adversarial-case algorithm described in:
Limited Lookahead in Imperfect-Information Games. Christian Kroer and Tuomas Sandholm. In IJCAI, 2015