Program Listing for File epec_innerapp.h

Return to documentation for file (include/games/algorithms/EPEC/epec_innerapp.h)

/* #############################################
 *             This file is part of
 *                    ZERO
 *
 *             Copyright (c) 2020
 *     Released under the Creative Commons
 *         CC BY-NC-SA 4.0 License
 *
 *              Find out more at
 *        https://github.com/ds4dm/ZERO
 * #############################################*/


#pragma once
#include "epec_polybase.h"
#include "zero.h"
#include <armadillo>
#include <gurobi_c++.h>
#include <iostream>
#include <memory>
#include <set>
#include <string>

namespace Algorithms::EPEC {
  class InnerApproximation : public PolyBase {

  public:
     InnerApproximation(GRBEnv *env, Game::EPEC *EPECObject) : PolyBase(env, EPECObject){};
     void solve();

  private:
     void         start();
     bool         addRandomPoly2All(unsigned int aggressiveLevel           = 1,
                                              bool         stopOnSingleInfeasibility = false);
     bool         getAllDeviations(std::vector<arma::vec> &      deviations,
                                             const arma::vec &             guessSol,
                                             const std::vector<arma::vec> &prevDev = {}) const;
     unsigned int addDeviatedPolyhedron(const std::vector<arma::vec> &deviations,
                                                    bool &                        infeasCheck) const;
  };
} // namespace Algorithms::EPEC