Class crhmc_problem

template<typename Point, typename Input>
class crhmc_problem

Crhmc sampling problem: With this the user can define a crhmc polytope sampling problem

Template Parameters:
  • Point – Point type

  • Input – Input format

Public Types

using NT = double
using PolytopeType = HPolytope<Point>
using MT = Eigen::Matrix<NT, Eigen::Dynamic, Eigen::Dynamic>
using VT = Eigen::Matrix<NT, Eigen::Dynamic, 1>
using IVT = Eigen::Matrix<int, Eigen::Dynamic, 1>
using SpMat = Eigen::SparseMatrix<NT>
using PM = Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic, int>
using IndexVector = Eigen::Matrix<int, Eigen::Dynamic, 1>
using CholObj = PackedChol<chol_k, int>
using Triple = Eigen::Triplet<NT>
using Barrier = two_sided_barrier<Point>
using Tx = FloatArray<double, chol_k>
using Opts = opts<NT>
using Diagonal_MT = Eigen::DiagonalMatrix<NT, Eigen::Dynamic>
using Func = typename Input::Func
using Grad = typename Input::Grad
using Hess = typename Input::Hess
using Crhmc_problem = crhmc_problem<Point, Input>

Public Functions

inline int equations() const
inline int dimension() const
inline int nnz() const
inline int remove_fixed_variables(const NT tol = 1e-12)
inline int extract_collapsed_variables()
inline void rescale(const VT x = VT::Zero(0, 1))
inline void splitDenseCols(const int maxnz)
template<typename MatrixType>
inline void append_map(MatrixType const &S, VT const &z)
inline void shift_barrier(VT const &x)
inline void reorder()
inline int remove_dependent_rows(NT tolerance = 1e-12, NT infinity = 1e+64)
inline void simplify()
inline VT estimate_width(bool use_center = false)
template<typename StreamType>
inline void print(StreamType &stream, std::string const message = "Printing Sparse problem")
inline void make_format(Input const &input, MT const &S)
inline void make_format(Input const &input, SpMat const &S)
inline crhmc_problem(Input const &input, Opts _options = Opts())
inline void PreproccessProblem()
inline std::pair<VT, VT> analytic_center_oracle(VT const &x)
inline std::pair<VT, VT> lewis_center_oracle(VT const &x, VT const &w)
inline std::tuple<VT, MT, MT> f_oracle(MT const &x)
inline void updateT()

Public Members

unsigned int _d
MT A
SpMat Asp
VT b
VT lb
VT ub
Barrier barrier
Opts options
SpMat T
VT y
std::vector<int> Tidx
VT Ta
bool isempty_center = true
VT center = VT::Zero(0, 1)
VT analytic_ctr
VT w_center
VT width
int nP
Func &func
Grad &df
Hess &ddf
bool fZero
bool fHandle
bool dfHandle
bool ddfHandle
bool terminate = false
std::string terminate_message
const NT inf = options.max_coord
const NT barrier_bound = 1e7