Struct IPG_Player

Struct Documentation

struct Algorithms::IPG::IPG_Player

Public Functions

~IPG_Player() = default
inline IPG_Player(unsigned int incumbentSize, double &tol)
bool addVertex(const arma::vec &vertex, const bool checkDuplicate = false)

Given vertex, it adds a vertex to the field V. If checkDuplicate is true, it will check whether the vertex is already contained in the pool.

Parameters
  • vertex – The input vertex

  • checkDuplicate – True if the method needs to check for duplicates

Returns

True if the vertex is added.

bool addRay(const arma::vec &ray, const bool checkDuplicate = false)

Given ray, it adds a ray to the field R. If checkDuplicate is true, it will check whether the ray is already contained in the pool.

Parameters
  • ray – The input ray

  • checkDuplicate – True if the method needs to check for duplicates

Returns

True if the ray is added.

bool addCuts(const arma::sp_mat &LHS, const arma::vec &RHS)

Given LHS, RHS, it adds the inequalities to the field CutPool_A and b, the CoinModel, and the working IP_Param.

Parameters
  • LHS – The LHS matrix

  • RHS – The RHS vector

Returns

true if the inequality is added.

Protected Attributes

std::unique_ptr<GRBModel> MembershipLP = {}

This structure manages the IPG data for each player of the game, given the CutAndPlay.

The model approximating the feasible region with vertices and rays

std::shared_ptr<MathOpt::IP_Param> ParametrizedIP = {}

The (working) player integer program, to which cuts are added.

std::shared_ptr<OsiGrbSolverInterface> CoinModel = {}

Quick workaround for now. This object stores the CoinOR model related to the field ParametrizedIP.

arma::sp_mat V = {}

This object stores an array of points &#8212; for each player &#8212; that are descriptor for the convex-hull of the integer programming game.

arma::sp_mat R = {}

As in V, but for rays.

bool containsOrigin = false

True if the origin is a feasible point.

unsigned int VertexCounter = 0

The number of Vertices in the membership LP.

unsigned int RayCounter = 0

The number or Rays in the membership LP.

arma::sp_mat CutPool_A = {}

Stores the LHS of the valids cuts for the convex hull of the player’s IPG.

arma::vec CutPool_b = {}

Stores the RHS of the valids cuts for the convex hull of the player’s IPG.

double Tolerance = 1e-6

Numerical tolerance.

arma::vec Incumbent

Stores the current strategy of the player at a given iteration.

arma::vec DualIncumbent

Stores the (dual) current strategy of the player at a given iteration.

double Payoff

Stores the current payof.

bool Pure

True if the strategy is pure.

bool Feasible = false

Friends

friend class Algorithms::IPG::CutAndPlay