Class ZERORegrets

Inheritance Relationships

Base Type

Class Documentation

class ZERORegrets : public Algorithms::IPG::Algorithm

This class is responsible for the ZERORegrets algorithm (Dragotto and Scatamacchia) for IPGs.

Public Functions

inline ZERORegrets(GRBEnv *env, Game::IPG *IPGObj)

Standard constructor.

  • env – The Gurobi environment

  • IPGObj – The IPG object

virtual void solve()

Solves the IPG with the Equilibrium CutAndPlay algorithm.

inline virtual bool isSolved() const

A method to check whether the IPG is solved or not, given a numerical tolerance.

inline virtual bool isPureStrategy() const override

A method to check whether the IPG solution is a pure equilibrium or not, given a numerical tolerance.

Private Functions

void initialize()

This method initializes some fields for the algorithm. Also, it warm starts the initial strategies to pure best responses.

bool addEquilibriumInequality(unsigned int player, const arma::vec &xOfI)

Generates an equilibrium inequality starting from xOfI.

  • player

  • xOfI


bool checkTime(double &remaining) const

Checks if there is more time remaining.


remaining – An output filled with the time remaining


True if there is still time left.

ZEROStatus equilibriumMIP(double localTimeLimit)

Private Members

std::unique_ptr<GRBModel> JointProgram = {}

The joint MIP program to which cuts are added.

std::vector<std::pair<std::string, int>> Cuts

Log of used cutting planes.

std::vector<arma::vec> xLast

The last x solution, for each player.

GRBVar **x = {}
GRBVar *p = {}
double objLast = +GRB_INFINITY

Last objective from the equilibrium MIP. Used as cutOff.


friend class Game::IPG