File full_dimensional_polytope.hpp

Functions

template<typename NT = double, typename SpMT = Eigen::SparseMatrix<NT, Eigen::ColMajor>, typename MT = Eigen::Matrix<NT, Eigen::Dynamic, Eigen::Dynamic>, typename VT = Eigen::Matrix<NT, Eigen::Dynamic, 1>>
std::tuple<MT, VT, VT, MT> compute_full_dimensional_polytope(const SpMT &Aeq, const VT &beq, const MT &A, const VT &b)

Compute the full dimensional polytope P’ = {x | A’x <= b’} from the polytope P = {x | Ax <= b & Aeq*x = beq}

Template Parameters:
  • NT – Number type (default: double)

  • SpMT – Sparse matrix type (default: Eigen::SparseMatrix<NT, Eigen::ColMajor>)

  • MT – Dense matrix type (default: Eigen::Matrix<NT, Eigen::Dynamic, Eigen::Dynamic>)

  • VT – Vector type (default: Eigen::Matrix<NT, Eigen::Dynamic, 1>)

Parameters:
  • Aeq – Sparse matrix of equality constraints (m x n)

  • beq – Right-hand side vector for equality constraints (m x 1)

  • A – Dense matrix of inequality constraints (p x n)

  • b – Right-hand side vector for inequality constraints (p x 1)

Returns:

std::tuple<MT, VT, VT, MT> containing:

  • A_full: Transformed inequality matrix (p x (n-rank))

  • b_full: Transformed inequality vector (p x 1)

  • shift: Translation vector (n x 1)

  • N: Nullspace transformation matrix (n x (n-rank))