Welcome
ZERO is a modular C++ library interfacing Mathematical Programming and Game Theory. It provides a comprehensive toolkit of modeling interfaces, helper tools, and algorithms to design games and find their Nash equilibria. In particular, the software supports Reciprocally Bilinear Games (RBGs), simultaneous non-cooperative games where each player solves a mathematical program with a linear objective in the player’s variable and bilinear in its opponents’ variables. This class elementary generalizes to a multi-agent setting the tasks of classical Operations Research problems. ZERO also supports integer non-convexities, linear bilevel problems, and linear equilibrium problems with equilibrium constraints.
License
This code is distributed under the CC BY-NC-SA 4.0 License.
Citations
Cite ZERO through [ZERO], and any of the algorithms via their respective paper (e.g., [CNP] for the Cut-And-Play algorithm or [ZERORegrets] for the ZERO Regrets algorithm).
- ZERO
Gabriele Dragotto, Sriram Sankaranarayanan, Margarida Carvalho, Andrea Lodi. ZERO: Playing Mathematical Programming Games.
- WNMS
Margarida Carvalho, Gabriele Dragotto, Felipe Feijoo, Andrea Lodi, Sriram Sankaranarayanan. When Nash Meets Stackelberg.
- CNP
Margarida Carvalho, Gabriele Dragotto, Andrea Lodi, Sriram Sankaranarayanan. The Cut and Play Algorithm: Computing Nash Equilibria via Outer Approximations.
- ZERORegrets
Gabriele Dragotto, Rosario Scatamacchia. The ZERO Regrets Algorithm: Optimizing over Pure Nash Equilibria via Integer Programming.