Initializing help system before first use

XpressProblem

Optimizer interface that allows modeling by objects. More...

#include <xpress_objects.hpp>

Inheritance diagram for xpress::objects::XpressProblem:
xpress::XPRSProblem

Classes

class   BranchObject
  Subclass of XPRSbranchobject that allows using Variable instances to specify bounds and constraints. More...
 
class   CallbackAPI
  API for registering callbacks. More...
 

Public Member Functions

  XpressProblem ()
  Create a problem without internal name.
 
  XpressProblem (std::optional< std::string > problemName)
  Create a problem with internal name.
 
  XpressProblem (std::optional< std::string > problemName, std::optional< std::string > licensePath)
  Create a problem with internal name and non-default license.
 
template<typename C >
auto  addConstraint (ConstraintDefinition< C > def) -> C
  Add a single constraint to this problem.
 
template<typename I , typename T = typename std::iterator_traits<I>::value_type, typename Func0 , typename C = typename std::invoke_result<Func0,T>::type::constraint_type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,T>::type,ConstraintDefinition<C>>::value>::type>
auto  addConstraints (I dataBegin, I dataEnd, Func0 defs) -> xpress::Iterable< std::pair< T, C > >
  Add multiple constraints of the same type to the problem.
 
template<typename Func0 , typename C = typename std::invoke_result<Func0, int>::type::constraint_type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,int>::type,ConstraintDefinition<C>>::value>::type>
auto  addConstraints (int count, Func0 defs) -> xpress::Iterable< C >
  Add multiple constraints of the same type to the problem.
 
template<typename Func0 , typename C = typename std::invoke_result<Func0,int ,int>::type::constraint_type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,int,int>::type,ConstraintDefinition<C>>::value>::type>
auto  addConstraints (int count1, int count2, Func0 makeConstraint) -> void
  Add multiple constraints to this problem.
 
template<typename Func0 , typename C = typename std::invoke_result<Func0,int ,int ,int>::type::constraint_type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,int,int,int>::type,ConstraintDefinition<C>>::value>::type>
auto  addConstraints (int count1, int count2, int count3, Func0 makeConstraint) -> void
  Add multiple constraints to this problem.
 
template<typename Func0 , typename C = typename std::invoke_result<Func0,int ,int ,int ,int>::type::constraint_type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,int,int,int,int>::type,ConstraintDefinition<C>>::value>::type>
auto  addConstraints (int count1, int count2, int count3, int count4, Func0 makeConstraint) -> void
  Add multiple constraints to this problem.
 
template<typename Func0 , typename C = typename std::invoke_result<Func0,int ,int ,int ,int ,int>::type::constraint_type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,int,int,int,int,int>::type,ConstraintDefinition<C>>::value>::type>
auto  addConstraints (int count1, int count2, int count3, int count4, int count5, Func0 makeConstraint) -> void
  Add multiple constraints to this problem.
 
template<typename Iter0 , typename Iter1 , typename K1 = typename Iter0::value_type, typename K2 = typename Iter1::value_type, typename Func0 , typename C = typename std::invoke_result<Func0,K1 ,K2>::type::constraint_type, typename Iter0IsIterable = typename std::enable_if<xpress::is_iterable<Iter0>::value>::type, typename Iter1IsIterable = typename std::enable_if<xpress::is_iterable<Iter1>::value>::type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,K1,K2>::type,ConstraintDefinition<C>>::value>::type>
auto  addConstraints (Iter0 const &iterable1, Iter1 const &iterable2, Func0 makeConstraint) -> void
  Add multiple constraints to this problem.
 
template<typename Iter0 , typename Iter1 , typename Iter2 , typename K1 = typename Iter0::value_type, typename K2 = typename Iter1::value_type, typename K3 = typename Iter2::value_type, typename Func0 , typename C = typename std::invoke_result<Func0,K1 ,K2 ,K3>::type::constraint_type, typename Iter0IsIterable = typename std::enable_if<xpress::is_iterable<Iter0>::value>::type, typename Iter1IsIterable = typename std::enable_if<xpress::is_iterable<Iter1>::value>::type, typename Iter2IsIterable = typename std::enable_if<xpress::is_iterable<Iter2>::value>::type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,K1,K2,K3>::type,ConstraintDefinition<C>>::value>::type>
auto  addConstraints (Iter0 const &iterable1, Iter1 const &iterable2, Iter2 const &iterable3, Func0 makeConstraint) -> void
  Add multiple constraints to this problem.
 
template<typename Iter0 , typename Iter1 , typename Iter2 , typename Iter3 , typename K1 = typename Iter0::value_type, typename K2 = typename Iter1::value_type, typename K3 = typename Iter2::value_type, typename K4 = typename Iter3::value_type, typename Func0 , typename C = typename std::invoke_result<Func0,K1 ,K2 ,K3 ,K4>::type::constraint_type, typename Iter0IsIterable = typename std::enable_if<xpress::is_iterable<Iter0>::value>::type, typename Iter1IsIterable = typename std::enable_if<xpress::is_iterable<Iter1>::value>::type, typename Iter2IsIterable = typename std::enable_if<xpress::is_iterable<Iter2>::value>::type, typename Iter3IsIterable = typename std::enable_if<xpress::is_iterable<Iter3>::value>::type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,K1,K2,K3,K4>::type,ConstraintDefinition<C>>::value>::type>
auto  addConstraints (Iter0 const &iterable1, Iter1 const &iterable2, Iter2 const &iterable3, Iter3 const &iterable4, Func0 makeConstraint) -> void
  Add multiple constraints to this problem.
 
template<typename Iter0 , typename Iter1 , typename Iter2 , typename Iter3 , typename Iter4 , typename K1 = typename Iter0::value_type, typename K2 = typename Iter1::value_type, typename K3 = typename Iter2::value_type, typename K4 = typename Iter3::value_type, typename K5 = typename Iter4::value_type, typename Func0 , typename C = typename std::invoke_result<Func0,K1 ,K2 ,K3 ,K4 ,K5>::type::constraint_type, typename Iter0IsIterable = typename std::enable_if<xpress::is_iterable<Iter0>::value>::type, typename Iter1IsIterable = typename std::enable_if<xpress::is_iterable<Iter1>::value>::type, typename Iter2IsIterable = typename std::enable_if<xpress::is_iterable<Iter2>::value>::type, typename Iter3IsIterable = typename std::enable_if<xpress::is_iterable<Iter3>::value>::type, typename Iter4IsIterable = typename std::enable_if<xpress::is_iterable<Iter4>::value>::type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,K1,K2,K3,K4,K5>::type,ConstraintDefinition<C>>::value>::type>
auto  addConstraints (Iter0 const &iterable1, Iter1 const &iterable2, Iter2 const &iterable3, Iter3 const &iterable4, Iter4 const &iterable5, Func0 makeConstraint) -> void
  Add multiple constraints to this problem.
 
template<typename Strm0 , typename T = typename Strm0::value_type, typename Func0 , typename C = typename std::invoke_result<Func0,T>::type::constraint_type, typename Strm0IsStream = typename std::enable_if<xpress::is_stream<Strm0>::value>::type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,T const &>::type,ConstraintDefinition<C>>::value>::type>
auto  addConstraints (Strm0 const &data, Func0 defs) -> xpress::Iterable< C >
  Add multiple constraints of the same type to the problem.
 
template<typename Strm0 , typename C = typename Strm0::value_type::constraint_type, typename Strm0IsStream = typename std::enable_if<xpress::is_stream<Strm0>::value>::type>
auto  addConstraints (Strm0 const &defs) -> xpress::Iterable< C >
  Add multiple constraints of the same type to the problem.
 
auto  addCut (int cuttype, InequalityDefinition cut) -> int
  Add a cut at the current node.
 
void  addMipSol (int length, Array< double const > const &solval, Array< int const > const &colind, std::optional< std::string > const &name)
  Adds a new feasible, infeasible or partial MIP solution for the problem to the Optimizer.
 
auto  addMipSol (xpress::SizedArray< double const > const &val, xpress::SizedArray< int const > const &ind) -> void
  Add a MIP solution.
 
auto  addMipSol (xpress::SizedArray< double const > const &val, xpress::SizedArray< int const > const &ind, std::optional< std::string > name) -> void
  Add a MIP solution.
 
auto  addMipSol (xpress::SizedArray< double const > const &values, xpress::SizedArray< Variable const > const &variables, std::optional< std::string > name) -> void
  Adds a feasible, infeasible or partial MIP solution for the problem to the Optimizer.
 
auto  addObjective (xpress::objects::Expression obj, int priority, double weight) -> void
  Add a objective function.
 
auto  addVariable () -> xpress::objects::Variable
  Add a single variable to this problem.
 
auto  addVariable (ColumnType type) -> xpress::objects::Variable
  Add a single variable to this problem.
 
auto  addVariable (ColumnType type, std::optional< std::string > name) -> xpress::objects::Variable
  Add a single variable to this problem.
 
auto  addVariable (double lb, double ub, ColumnType type) -> xpress::objects::Variable
  Add a single variable to this problem.
 
auto  addVariable (double lb, double ub, ColumnType type, double limit, std::optional< std::string > name) -> xpress::objects::Variable
  Add a single variable to this problem.
 
auto  addVariable (double lb, double ub, ColumnType type, std::optional< std::string > name) -> xpress::objects::Variable
  Add a single variable to this problem.
 
auto  addVariable (std::optional< std::string > name) -> xpress::objects::Variable
  Add a single variable to this problem.
 
template<typename Coll0 , typename K1 = typename Coll0::value_type, typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type>
auto  addVariables (Coll0 const &coll1) -> xpress::VariableBuilder::VariableMapBuilder< K1 >
  Create an 1-dimensional map of variables.
 
template<typename Coll0 , typename Coll1 , typename K1 = typename Coll0::value_type, typename K2 = typename Coll1::value_type, typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type, typename Coll1IsCollection = typename std::enable_if<xpress::is_collection<Coll1>::value>::type>
auto  addVariables (Coll0 const &coll1, Coll1 const &coll2) -> xpress::VariableBuilder::VariableMap2Builder< K1, K2 >
  Create an 2-dimensional map of variables.
 
template<typename Coll0 , typename Coll1 , typename Coll2 , typename K1 = typename Coll0::value_type, typename K2 = typename Coll1::value_type, typename K3 = typename Coll2::value_type, typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type, typename Coll1IsCollection = typename std::enable_if<xpress::is_collection<Coll1>::value>::type, typename Coll2IsCollection = typename std::enable_if<xpress::is_collection<Coll2>::value>::type>
auto  addVariables (Coll0 const &coll1, Coll1 const &coll2, Coll2 const &coll3) -> xpress::VariableBuilder::VariableMap3Builder< K1, K2, K3 >
  Create an 3-dimensional map of variables.
 
template<typename Coll0 , typename Coll1 , typename Coll2 , typename Coll3 , typename K1 = typename Coll0::value_type, typename K2 = typename Coll1::value_type, typename K3 = typename Coll2::value_type, typename K4 = typename Coll3::value_type, typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type, typename Coll1IsCollection = typename std::enable_if<xpress::is_collection<Coll1>::value>::type, typename Coll2IsCollection = typename std::enable_if<xpress::is_collection<Coll2>::value>::type, typename Coll3IsCollection = typename std::enable_if<xpress::is_collection<Coll3>::value>::type>
auto  addVariables (Coll0 const &coll1, Coll1 const &coll2, Coll2 const &coll3, Coll3 const &coll4) -> xpress::VariableBuilder::VariableMap4Builder< K1, K2, K3, K4 >
  Create an 4-dimensional map of variables.
 
template<typename Coll0 , typename Coll1 , typename Coll2 , typename Coll3 , typename Coll4 , typename K1 = typename Coll0::value_type, typename K2 = typename Coll1::value_type, typename K3 = typename Coll2::value_type, typename K4 = typename Coll3::value_type, typename K5 = typename Coll4::value_type, typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type, typename Coll1IsCollection = typename std::enable_if<xpress::is_collection<Coll1>::value>::type, typename Coll2IsCollection = typename std::enable_if<xpress::is_collection<Coll2>::value>::type, typename Coll3IsCollection = typename std::enable_if<xpress::is_collection<Coll3>::value>::type, typename Coll4IsCollection = typename std::enable_if<xpress::is_collection<Coll4>::value>::type>
auto  addVariables (Coll0 const &coll1, Coll1 const &coll2, Coll2 const &coll3, Coll3 const &coll4, Coll4 const &coll5) -> xpress::VariableBuilder::VariableMap5Builder< K1, K2, K3, K4, K5 >
  Create an 5-dimensional map of variables.
 
auto  addVariables (int dim) -> xpress::VariableBuilder::VariableArrayBuilder
  Create an 1-dimensional array of variables.
 
auto  addVariables (int dim1, int dim2) -> xpress::VariableBuilder::VariableArray2Builder
  Create an 2-dimensional array of variables.
 
auto  addVariables (int dim1, int dim2, int dim3) -> xpress::VariableBuilder::VariableArray3Builder
  Create an 3-dimensional array of variables.
 
auto  addVariables (int dim1, int dim2, int dim3, int dim4) -> xpress::VariableBuilder::VariableArray4Builder
  Create an 4-dimensional array of variables.
 
auto  addVariables (int dim1, int dim2, int dim3, int dim4, int dim5) -> xpress::VariableBuilder::VariableArray5Builder
  Create an 5-dimensional array of variables.
 
auto  bndSA (int len, xpress::SizedArray< Variable const > const &variables, xpress::SizedArray< double > const &lblower, xpress::SizedArray< double > const &lbupper, xpress::SizedArray< double > const &ublower, xpress::SizedArray< double > const &ubupper) -> void
  Returns upper and lower sensitivity ranges for specified variables' lower and upper bounds.
 
void  bndSA (int ncols, Array< int const > const &colind, Array< double > const &lblower, Array< double > const &lbupper, Array< double > const &ublower, Array< double > const &ubupper)
  Returns upper and lower sensitivity ranges for specified variables' lower and upper bounds.
 
auto  bndSA (xpress::SizedArray< Variable const > const &variables, xpress::SizedArray< double > const &lblower, xpress::SizedArray< double > const &lbupper, xpress::SizedArray< double > const &ublower, xpress::SizedArray< double > const &ubupper) -> void
  Returns upper and lower sensitivity ranges for specified variables' lower and upper bounds.
 
auto  chgBounds (int j, double lb, double ub) -> void
  Change bounds of a single column.
 
void  chgBounds (int nbounds, Array< int const > const &colind, Array< char const > const &bndtype, Array< double const > const &bndval)
  Used to change the bounds on columns in the matrix.
 
auto  chgBounds (xpress::SizedArray< Variable const > const &variables, xpress::SizedArray< char const > const &bndType, xpress::SizedArray< double const > const &bndValue) -> void
  Change bounds for multiple variables.
 
auto  chgCoef (Inequality row, Variable variable, double coefficient) -> xpress::objects::XpressProblem &
  Changes the coefficient for variable in row in the linear matrix.
 
void  chgCoef (int row, int col, double coef)
  Used to change a single coefficient in the matrix.
 
auto  chgCoefs (xpress::SizedArray< Inequality const > const &row, xpress::SizedArray< Variable const > const &variable, xpress::SizedArray< double const > const &coefficient) -> xpress::objects::XpressProblem &
  Change coefficients in the linear matrix.
 
void  chgColType (int ncols, Array< int const > const &colind, Array< char const > const &coltype)
  Used to change the type of a specified set of columns in the matrix.
 
auto  chgColType (xpress::SizedArray< Variable const > const &variables, xpress::SizedArray< ColumnType const > const &colType) -> void
  Change types for multiple variables.
 
void  chgObj (int ncols, Array< int const > const &colind, Array< double const > const &objcoef)
  Used to change the objective function coefficients.
 
auto  chgObj (Variable variable, double coefficient) -> xpress::objects::XpressProblem &
  Change objective function coefficient.
 
auto  chgObj (xpress::SizedArray< Variable const > const &variables, xpress::SizedArray< double const > const &coefficients) -> xpress::objects::XpressProblem &
  Change objective function coefficients.
 
void  chgObjN (int objidx, int ncols, Array< int const > const &colind, Array< double const > const &objcoef)
  Modifies one or more coefficients of an objective function in a multi-objective problem.
 
auto  chgObjN (int objidx, Variable variable, double coefficient) -> xpress::objects::XpressProblem &
  Change an objective function coefficient for a multi-objective problem.
 
auto  chgObjN (int objidx, xpress::SizedArray< Variable const > const &variables, xpress::SizedArray< double const > const &coefficients) -> xpress::objects::XpressProblem &
  Change objective function coefficients for a multi-objective problem.
 
void  chgRhs (int nrows, Array< int const > const &rowind, Array< double const > const &rhs)
  Used to change right—hand side values of the problem.
 
auto  chgRhs (xpress::SizedArray< Inequality const > const &rows, xpress::SizedArray< double const > const &newRHS) -> void
  Change right-hand side for multiple rows.
 
void  chgRhsRange (int nrows, Array< int const > const &rowind, Array< double const > const &rng)
  Used to change the range for a row of the problem matrix.
 
auto  chgRhsRange (xpress::SizedArray< Inequality const > const &rows, xpress::SizedArray< double const > const &newRange) -> void
  Change right-hand side ranges for multiple rows.
 
void  chgRowType (int nrows, Array< int const > const &rowind, Array< char const > const &rowtype)
  Used to change the type of a row in the matrix.
 
auto  chgRowType (xpress::SizedArray< Inequality const > const &rows, xpress::SizedArray< RowType const > const &rowType) -> void
  Change types for multiple rows.
 
auto  createBranchObject () -> xpress::objects::XpressProblem::BranchObject *
  Create a branch object.
 
virtual auto  delCols (int ncols, xpress::Array< int const > const &colind) -> void override
  Delete columns from this problem.
 
virtual auto  delGenCons (int nconstraints, xpress::Array< int const > const &conind) -> void override
  Delete constraints from this problem.
 
auto  delGeneralConstraints (xpress::SizedArray< GeneralConstraint const > const &constraints) -> void
  Delete general constraints from this problem.
 
auto  delIndicator (Inequality row) -> void
  Delete a single indicator constraint.
 
auto  delInequalities (xpress::SizedArray< Inequality const > const &rows) -> void
  Delete inequality constraints from this problem.
 
virtual auto  delPwlCons (int npwls, xpress::Array< int const > const &pwlind) -> void override
  Delete piecewise linear constraints from this problem.
 
auto  delPwlConstraints (xpress::SizedArray< PWL const > const &pwls) -> void
  Delete PWL constraints from this problem.
 
virtual auto  delRows (int nrows, xpress::Array< int const > const &rowind) -> void override
  Delete rows from this problem.
 
virtual auto  delSets (int nsets, xpress::Array< int const > const &sosind) -> void override
  Delete sets from this problem.
 
auto  delSOS (SOS sos) -> void
  Delete a single SOS from the problem.
 
auto  delSOS (xpress::SizedArray< SOS const > const &soss) -> void
  Delete special ordered set constraints.
 
auto  delVariables (xpress::SizedArray< Variable const > const &vars) -> void
  Delete variables from this problem.
 
auto  generalConstraintForIndex (int index) const -> xpress::objects::GeneralConstraint
  Map a general constraint index to a GeneralConstraint object.
 
auto  generalConstraintForIndices (int first, int last) const -> std::vector< xpress::objects::GeneralConstraint >
  Map a range of general constraint indices to GeneralConstraint objects.
 
auto  getCallbackDual (bool *p_available, int index) const -> double
  Convenience wrapper for getCallbackDuals(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackDual (Inequality r) -> double
  Get the dual associated with the current callback for a single row.
 
auto  getCallbackDual (int index) const -> double
  Convenience wrapper for getCallbackDuals(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackDuals () const -> std::vector< double >
  Convenience wrapper for getCallbackDuals(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
auto  getCallbackDuals (bool *p_available) const -> std::vector< double >
  Convenience wrapper for getCallbackDuals(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
void  getCallbackDuals (bool *p_available, Array< double > const &duals, int first, int last) const
  Returns the dual values from the solution associated with the current callback.
 
auto  getCallbackDuals (bool *p_available, int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackDuals(bool*, Array<double> const &, int, int) const that allocates the output array.
 
template<typename Coll0 , typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type>
auto  getCallbackDuals (Coll0 const &rows) -> std::vector< double >
  Get the duals associated with the current callback for a collection of rows.
 
auto  getCallbackDuals (int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackDuals(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackRedCost (bool *p_available, int index) const -> double
  Convenience wrapper for getCallbackRedCosts(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackRedCost (int index) const -> double
  Convenience wrapper for getCallbackRedCosts(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackRedCost (Variable v) -> double
  Get the reduced cost associated with the current callbackfor a single variable.
 
auto  getCallbackRedCosts () const -> std::vector< double >
  Convenience wrapper for getCallbackRedCosts(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
auto  getCallbackRedCosts (bool *p_available) const -> std::vector< double >
  Convenience wrapper for getCallbackRedCosts(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
void  getCallbackRedCosts (bool *p_available, Array< double > const &djs, int first, int last) const
  Returns the reduced costs from the solution associated with the current callback.
 
auto  getCallbackRedCosts (bool *p_available, int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackRedCosts(bool*, Array<double> const &, int, int) const that allocates the output array.
 
template<typename Coll0 , typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type>
auto  getCallbackRedCosts (Coll0 const &vars) -> std::vector< double >
  Get the reduced costs associated with the current callback for a collection of variables.
 
auto  getCallbackRedCosts (int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackRedCosts(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackSlack (bool *p_available, int index) const -> double
  Convenience wrapper for getCallbackSlacks(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackSlack (Inequality r) -> double
  Get the slack associated with the current callback for a single row.
 
auto  getCallbackSlack (int index) const -> double
  Convenience wrapper for getCallbackSlacks(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackSlacks () const -> std::vector< double >
  Convenience wrapper for getCallbackSlacks(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
auto  getCallbackSlacks (bool *p_available) const -> std::vector< double >
  Convenience wrapper for getCallbackSlacks(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
void  getCallbackSlacks (bool *p_available, Array< double > const &slacks, int first, int last) const
  Returns the slack values from the solution associated with the current callback.
 
auto  getCallbackSlacks (bool *p_available, int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackSlacks(bool*, Array<double> const &, int, int) const that allocates the output array.
 
template<typename Coll0 , typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type>
auto  getCallbackSlacks (Coll0 const &rows) -> std::vector< double >
  Get the slacks associated with the current callback for a collection of rows.
 
auto  getCallbackSlacks (int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackSlacks(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackSolution () const -> std::vector< double >
  Convenience wrapper for getCallbackSolution(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
auto  getCallbackSolution (bool *p_available) const -> std::vector< double >
  Convenience wrapper for getCallbackSolution(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
void  getCallbackSolution (bool *p_available, Array< double > const &x, int first, int last) const
  Returns the solution associated with the current callback.
 
auto  getCallbackSolution (bool *p_available, int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackSolution(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackSolution (bool *p_available, int index) const -> double
  Convenience wrapper for getCallbackSolution(bool*, Array<double> const &, int, int) const that queries only a single value.
 
template<typename Coll0 , typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type>
auto  getCallbackSolution (Coll0 const &vars) -> std::vector< double >
  Get the solution associated with the current callback for a collection of variables.
 
auto  getCallbackSolution (int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackSolution(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackSolution (int index) const -> double
  Convenience wrapper for getCallbackSolution(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackSolution (Variable v) -> double
  Get the solution associated with the current callback for a single variable.
 
auto  getCoef (Inequality row, Variable variable) -> double
  Query a single coefficient from the linear matrix.
 
auto  getCoef (int row, int col) -> double
  Returns a single coefficient in the constraint matrix.
 
auto  getDual (Inequality r) -> double
  Get the dual for a single row.
 
auto  getDual (int *status, int index) const -> double
  Convenience wrapper for getDuals(int*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getDual (int index) const -> double
  Convenience wrapper for getDuals(int*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getDuals () const -> std::vector< double >
  Convenience wrapper for getDuals(int*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
template<typename Coll0 , typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type>
auto  getDuals (Coll0 const &rows) -> std::vector< double >
  Get the duals for a collection of rows.
 
auto  getDuals (int *status) const -> std::vector< double >
  Convenience wrapper for getDuals(int*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
void  getDuals (int *status, Array< double > const &duals, int first, int last) const
  Used to obtain the dual values associated with the incumbent solution during or after optimization of a continuous problem with XPRSoptimize, XPRSlpoptimize or XPRSnlpoptimize.
 
auto  getDuals (int *status, int first, int last) const -> std::vector< double >
  Convenience wrapper for getDuals(int*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getDuals (int first, int last) const -> std::vector< double >
  Convenience wrapper for getDuals(int*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getGeneralConstraints () -> std::vector< xpress::objects::GeneralConstraint >
  Get all the general constraints currently defined in this problem.
 
auto  getIIS (int iis) -> xpress::objects::IIS
  Get the specified IIS.
 
auto  getIndicator (Inequality row) -> std::optional< xpress::objects::IndicatorObjects >
  Get indicator information for a single row.
 
auto  getInequalities () -> std::vector< xpress::objects::Inequality >
  Get all the inequalities currently defined in this problem.
 
auto  getLhsExpression (int row) -> xpress::objects::Expression
  Get the left-hand side of a row as an expression.
 
auto  getObj (int first, int last) -> std::vector< double >
  Returns the objective function coefficients for the columns in a given range.
 
auto  getObj (Variable variable) -> double
  Query an objective function coefficient.
 
auto  getObjN (int objidx, int first, int last) -> std::vector< double >
  For a given objective function, returns the objective coefficients for the columns in a given range.
 
auto  getObjN (int objidx, Variable variable) -> double
  Query an objective function coefficient.
 
auto  getPWLs () -> std::vector< xpress::objects::PWL >
  Get all piecewise linear constraints currently defined in this problem.
 
auto  getRedCost (int *status, int index) const -> double
  Convenience wrapper for getRedCosts(int*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getRedCost (int index) const -> double
  Convenience wrapper for getRedCosts(int*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getRedCost (Variable v) -> double
  Get the reduced cost for a single variable.
 
auto  getRedCosts () const -> std::vector< double >
  Convenience wrapper for getRedCosts(int*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
template<typename Coll0 , typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type>
auto  getRedCosts (Coll0 const &vars) -> std::vector< double >
  Get the reduced costs for a collection of variables.
 
auto  getRedCosts (int *status) const -> std::vector< double >
  Convenience wrapper for getRedCosts(int*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
void  getRedCosts (int *status, Array< double > const &djs, int first, int last) const
  Used to obtain the reduced costs associated with the incumbent solution during or after optimization of a continuous problem with XPRSoptimize, XPRSlpoptimize or XPRSnlpoptimize.
 
auto  getRedCosts (int *status, int first, int last) const -> std::vector< double >
  Convenience wrapper for getRedCosts(int*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getRedCosts (int first, int last) const -> std::vector< double >
  Convenience wrapper for getRedCosts(int*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getSlack (Inequality r) -> double
  Get the current slack for a single row.
 
auto  getSlack (int *status, int index) const -> double
  Convenience wrapper for getSlacks(int*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getSlack (int index) const -> double
  Convenience wrapper for getSlacks(int*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getSlacks () const -> std::vector< double >
  Convenience wrapper for getSlacks(int*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
template<typename Coll0 , typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type>
auto  getSlacks (Coll0 const &rows) -> std::vector< double >
  Get the current slacks for a collection of rows.
 
auto  getSlacks (int *status) const -> std::vector< double >
  Convenience wrapper for getSlacks(int*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
void  getSlacks (int *status, Array< double > const &slacks, int first, int last) const
  Used to obtain the slack values associated with the incumbent solution during or after optimization with XPRSoptimize, XPRSmipoptimize, XPRSlpoptimize or XPRSnlpoptimize.
 
auto  getSlacks (int *status, int first, int last) const -> std::vector< double >
  Convenience wrapper for getSlacks(int*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getSlacks (int first, int last) const -> std::vector< double >
  Convenience wrapper for getSlacks(int*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getSolution () const -> std::vector< double >
  Convenience wrapper for getSolution(int*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
template<typename Coll0 , typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type>
auto  getSolution (Coll0 const &vars) -> std::vector< double >
  Get the current solution for a collection of variables.
 
auto  getSolution (int *status) const -> std::vector< double >
  Convenience wrapper for getSolution(int*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
void  getSolution (int *status, Array< double > const &x, int first, int last) const
  Used to obtain the incumbent solution during or after optimization with XPRSoptimize, XPRSmipoptimize, XPRSlpoptimize or XPRSnlpoptimize.
 
auto  getSolution (int *status, int first, int last) const -> std::vector< double >
  Convenience wrapper for getSolution(int*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getSolution (int *status, int index) const -> double
  Convenience wrapper for getSolution(int*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getSolution (int first, int last) const -> std::vector< double >
  Convenience wrapper for getSolution(int*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getSolution (int index) const -> double
  Convenience wrapper for getSolution(int*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getSolution (Variable v) -> double
  Get the current solution for a single variable.
 
auto  getSOSs () -> std::vector< xpress::objects::SOS >
  Get all the special ordered set constraints currently defined in this problem.
 
auto  getVariables () -> std::vector< xpress::objects::Variable >
  Get all the variables currently defined in this problem.
 
auto  inequalitiesForIndices (int first, int last) const -> std::vector< xpress::objects::Inequality >
  Map a range of inequality indices to inequality objects.
 
auto  inequalityForIndex (int index) const -> xpress::objects::Inequality
  Map an inequality index to an inequality object.
 
auto  isOriginal () -> bool
  Check whether this model instance is in the original state.
 
void  loadDelayedRows (int nrows, Array< int const > const &rowind)
  Specifies that a set of rows in the matrix will be treated as delayed rows during a tree search.
 
auto  loadDelayedRows (xpress::SizedArray< Inequality const > const &rows) -> void
  Marks a set of rows as delayed rows.
 
void  loadModelCuts (int nrows, Array< int const > const &rowind)
  Specifies that a set of rows in the matrix will be treated as model cuts.
 
auto  loadModelCuts (xpress::SizedArray< Inequality const > const &rows) -> void
  Marks a set of rows as model cuts.
 
void  nlpSetInitVal (int nvars, Array< int const > const &colind, Array< double const > const &initial)
  Set the initial value of a variable.
 
auto  nlpSetInitVal (std::unordered_map< Variable, double > values) -> void
  Set initial values of variables for a non-linear solve.
 
auto  nlpSetInitVal (xpress::SizedArray< Variable const > const &variables, xpress::SizedArray< double const > const &values) -> void
  Set initial values of variables for a non-linear solve.
 
auto  objSA (int len, xpress::SizedArray< Variable const > const &variables, xpress::SizedArray< double > const &lower, xpress::SizedArray< double > const &upper) -> void
  Returns upper and lower sensitivity ranges for specified objective function coefficients.
 
void  objSA (int ncols, Array< int const > const &colind, Array< double > const &lower, Array< double > const &upper)
  Returns upper and lower sensitivity ranges for specified objective function coefficients.
 
auto  objSA (xpress::SizedArray< Variable const > const &variables, xpress::SizedArray< double > const &lower, xpress::SizedArray< double > const &upper) -> void
  Returns upper and lower sensitivity ranges for specified objective function coefficients.
 
auto  pwlForIndex (int index) const -> xpress::objects::PWL
  Map a PWL index to a PWL object.
 
auto  pwlsForIndices (int first, int last) const -> std::vector< xpress::objects::PWL >
  Map a range of PWL indices to PWL objects.
 
auto  repairWeightedInfeas (Array< double const > const &lepref, Array< double const > const &gepref, Array< double const > const &lbpref, Array< double const > const &ubpref, char phase2, double delta, std::optional< std::string > const &flags) -> int
  By relaxing a set of selected constraints and bounds of an infeasible problem, it attempts to identify a 'solution' that violates the selected set of constraints and bounds minimally, while satisfying all other constraints and bounds.
 
template<typename IMap , typename VMap >
auto  repairWeightedInfeas (VMap const &lepref, VMap const &gepref, IMap const &lbpref, IMap const &ubpref, char phase2, double delta, std::optional< std::string > flags) -> int
  Repair infeasibilities using weights.
 
auto  rhsSA (int len, xpress::SizedArray< Inequality const > const &rows, xpress::SizedArray< double > const &lower, xpress::SizedArray< double > const &upper) -> void
  Returns upper and lower sensitivity ranges for specified right hand side (RHS) function coefficients.
 
void  rhsSA (int nrows, Array< int const > const &rowind, Array< double > const &lower, Array< double > const &upper)
  Returns upper and lower sensitivity ranges for specified right hand side (RHS) function coefficients.
 
auto  rhsSA (xpress::SizedArray< Inequality const > const &rows, xpress::SizedArray< double > const &lower, xpress::SizedArray< double > const &upper) -> void
  Returns upper and lower sensitivity ranges for specified right hand side (RHS) function coefficients.
 
auto  setIndicator (Variable indicatorVariable, bool indicatorValue, Inequality row) -> void
  Add an indicator constraint to this model.
 
template<typename Func0 , typename Func1 , typename Func2 , typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,int>::type,Variable>::value>::type, typename Func1Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func1,int>::type,bool>::value>::type, typename Func2Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func2,int>::type,Inequality>::value>::type>
auto  setIndicators (int count, Func0 indicatorVariable, Func1 indicatorValue, Func2 row) -> void
  Add indicator constraints to this model.
 
void  setIndicators (int nrows, Array< int const > const &rowind, Array< int const > const &colind, Array< int const > const &complement)
  Specifies that a set of rows in the matrix will be treated as indicator constraints during a tree search.
 
template<typename Iter0 , typename T = typename Iter0::value_type, typename Func0 , typename Func1 , typename Func2 , typename Iter0IsIterable = typename std::enable_if<xpress::is_iterable<Iter0>::value>::type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,T>::type,Variable>::value>::type, typename Func1Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func1,T>::type,bool>::value>::type, typename Func2Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func2,T>::type,Inequality>::value>::type>
auto  setIndicators (Iter0 const &data, Func0 indicatorVariable, Func1 indicatorValue, Func2 row) -> void
  Add indicator constraints to this model.
 
template<typename T , typename Func0 , typename Func1 , typename Func2 , typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,T>::type,Variable>::value>::type, typename Func1Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func1,T>::type,bool>::value>::type, typename Func2Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func2,T>::type,Inequality>::value>::type>
auto  setIndicators (xpress::SizedArray< T const > const &data, Func0 indicatorVariable, Func1 indicatorValue, Func2 row) -> void
  Add indicator constraints to this model.
 
auto  setIndicators (xpress::SizedArray< Variable const > const &indicatorVariable, std::vector< bool > const &indicatorValue, xpress::SizedArray< Inequality const > const &row) -> void
  Add indicator constraints to this model.
 
auto  setObjective (int idx, xpress::objects::Expression obj, int priority, double weight, double abstol, double reltol) -> void
  Set an objective function and its controls.
 
auto  setObjective (xpress::objects::Expression obj) -> void
  Set the objective function to a expression.
 
auto  setObjective (xpress::objects::Expression obj, xpress::ObjSense sense) -> void
  Set the objective function to a expression.
 
void  slpSetDetRow (int nvars, Array< int const > const &colind, Array< int const > const &rowind)
  Set the determining row of a variable.
 
auto  slpSetDetRow (Variable v, Inequality i) -> void
  Set the determining row of a variable.
 
auto  sosForIndex (int index) const -> xpress::objects::SOS
  Map an SOS index to an SOS object.
 
auto  sosForIndices (int first, int last) const -> std::vector< xpress::objects::SOS >
  Map a range of SOS indices to SOS objects.
 
auto  variableForIndex (int index) const -> xpress::objects::Variable
  Map a variable index to a variable object.
 
auto  variablesForIndices (int first, int last) const -> std::vector< xpress::objects::Variable >
  Map a range of variable indices to variable objects.
 
 Public Member Functions inherited from xpress::XPRSProblem
  XPRSProblem (bool)
  Create a new instance without allocating a license.
 
  XPRSProblem (char const *name=nullptr, char const *licpath=nullptr)
  Create a new instance with name and allocating a license.
 
auto  addAfterObjectiveCallback (std::function< void(XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add an afterobjective callback.
 
auto  addBarIterationCallback (std::function< void(XPRSProblem &, int *)> callback, int prio=0) -> CallbackHandle
  Add a bariteration callback.
 
auto  addBarlogCallback (std::function< int(XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add a barlog callback.
 
auto  addBeforeObjectiveCallback (std::function< void(XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add a beforeobjective callback.
 
auto  addBeforeSolveCallback (std::function< void(XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add a beforesolve callback.
 
auto  addChangeBranchObjectCallback (std::function< void(XPRSProblem &, BranchObject *, BranchObject **)> callback, int prio=0) -> CallbackHandle
  Add a changebranchobject callback.
 
auto  addCheckTimeCallback (std::function< int(XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add a checktime callback.
 
void  addCols (int ncols, int ncoefs, Array< double const > const &objcoef, Array< int const > const &start, Array< int const > const &rowind, Array< double const > const &rowcoef, Array< double const > const &lb, Array< double const > const &ub)
  Adds columns to the optimizer matrix.
 
void  addCols (int ncols, XPRSint64 ncoefs, Array< double const > const &objcoef, Array< XPRSint64 const > const &start, Array< int const > const &rowind, Array< double const > const &rowcoef, Array< double const > const &lb, Array< double const > const &ub)
  Adds columns to the optimizer matrix.
 
auto  addColumn (double lb, double ub, ColumnType type, std::optional< std::string > name) -> int
  Add a single column to this problem.
 
template<typename Coll0 , typename K1 = typename Coll0::value_type, typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type>
auto  addColumns (Coll0 const &coll1) -> VariableBuilder::ColumnMapBuilder< K1 >
  Create an 1-dimensional map of columns.
 
template<typename Coll0 , typename Coll1 , typename K1 = typename Coll0::value_type, typename K2 = typename Coll1::value_type, typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type, typename Coll1IsCollection = typename std::enable_if<xpress::is_collection<Coll1>::value>::type>
auto  addColumns (Coll0 const &coll1, Coll1 const &coll2) -> VariableBuilder::ColumnMap2Builder< K1, K2 >
  Create an 2-dimensional map of columns.
 
template<typename Coll0 , typename Coll1 , typename Coll2 , typename K1 = typename Coll0::value_type, typename K2 = typename Coll1::value_type, typename K3 = typename Coll2::value_type, typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type, typename Coll1IsCollection = typename std::enable_if<xpress::is_collection<Coll1>::value>::type, typename Coll2IsCollection = typename std::enable_if<xpress::is_collection<Coll2>::value>::type>
auto  addColumns (Coll0 const &coll1, Coll1 const &coll2, Coll2 const &coll3) -> VariableBuilder::ColumnMap3Builder< K1, K2, K3 >
  Create an 3-dimensional map of columns.
 
template<typename Coll0 , typename Coll1 , typename Coll2 , typename Coll3 , typename K1 = typename Coll0::value_type, typename K2 = typename Coll1::value_type, typename K3 = typename Coll2::value_type, typename K4 = typename Coll3::value_type, typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type, typename Coll1IsCollection = typename std::enable_if<xpress::is_collection<Coll1>::value>::type, typename Coll2IsCollection = typename std::enable_if<xpress::is_collection<Coll2>::value>::type, typename Coll3IsCollection = typename std::enable_if<xpress::is_collection<Coll3>::value>::type>
auto  addColumns (Coll0 const &coll1, Coll1 const &coll2, Coll2 const &coll3, Coll3 const &coll4) -> VariableBuilder::ColumnMap4Builder< K1, K2, K3, K4 >
  Create an 4-dimensional map of columns.
 
template<typename Coll0 , typename Coll1 , typename Coll2 , typename Coll3 , typename Coll4 , typename K1 = typename Coll0::value_type, typename K2 = typename Coll1::value_type, typename K3 = typename Coll2::value_type, typename K4 = typename Coll3::value_type, typename K5 = typename Coll4::value_type, typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type, typename Coll1IsCollection = typename std::enable_if<xpress::is_collection<Coll1>::value>::type, typename Coll2IsCollection = typename std::enable_if<xpress::is_collection<Coll2>::value>::type, typename Coll3IsCollection = typename std::enable_if<xpress::is_collection<Coll3>::value>::type, typename Coll4IsCollection = typename std::enable_if<xpress::is_collection<Coll4>::value>::type>
auto  addColumns (Coll0 const &coll1, Coll1 const &coll2, Coll2 const &coll3, Coll3 const &coll4, Coll4 const &coll5) -> VariableBuilder::ColumnMap5Builder< K1, K2, K3, K4, K5 >
  Create an 5-dimensional map of columns.
 
auto  addColumns (int dim) -> VariableBuilder::ColumnArrayBuilder
  Create an 1-dimensional array of columns.
 
auto  addColumns (int dim1, int dim2) -> VariableBuilder::ColumnArray2Builder
  Create an 2-dimensional array of columns.
 
auto  addColumns (int dim1, int dim2, int dim3) -> VariableBuilder::ColumnArray3Builder
  Create an 3-dimensional array of columns.
 
auto  addColumns (int dim1, int dim2, int dim3, int dim4) -> VariableBuilder::ColumnArray4Builder
  Create an 4-dimensional array of columns.
 
auto  addColumns (int dim1, int dim2, int dim3, int dim4, int dim5) -> VariableBuilder::ColumnArray5Builder
  Create an 5-dimensional array of columns.
 
template<typename K1 >
auto  addColumns (xpress::SizedArray< K1 const > const &arr1) -> VariableBuilder::ColumnMapBuilder< K1 >
  Create an 1-dimensional map of columns.
 
template<typename K1 , typename K2 >
auto  addColumns (xpress::SizedArray< K1 const > const &arr1, xpress::SizedArray< K2 const > const &arr2) -> VariableBuilder::ColumnMap2Builder< K1, K2 >
  Create an 2-dimensional map of columns.
 
template<typename K1 , typename K2 , typename K3 >
auto  addColumns (xpress::SizedArray< K1 const > const &arr1, xpress::SizedArray< K2 const > const &arr2, xpress::SizedArray< K3 const > const &arr3) -> VariableBuilder::ColumnMap3Builder< K1, K2, K3 >
  Create an 3-dimensional map of columns.
 
template<typename K1 , typename K2 , typename K3 , typename K4 >
auto  addColumns (xpress::SizedArray< K1 const > const &arr1, xpress::SizedArray< K2 const > const &arr2, xpress::SizedArray< K3 const > const &arr3, xpress::SizedArray< K4 const > const &arr4) -> VariableBuilder::ColumnMap4Builder< K1, K2, K3, K4 >
  Create an 4-dimensional map of columns.
 
template<typename K1 , typename K2 , typename K3 , typename K4 , typename K5 >
auto  addColumns (xpress::SizedArray< K1 const > const &arr1, xpress::SizedArray< K2 const > const &arr2, xpress::SizedArray< K3 const > const &arr3, xpress::SizedArray< K4 const > const &arr4, xpress::SizedArray< K5 const > const &arr5) -> VariableBuilder::ColumnMap5Builder< K1, K2, K3, K4, K5 >
  Create an 5-dimensional map of columns.
 
auto  addComputeRestartCallback (std::function< void(XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add a computerestart callback.
 
auto  addCut (int cuttype, RowInfo cut) -> void
  Add a single cut to the problem.
 
auto  addCut (int cuttype, xpress::SizedArray< int const > const &colind, xpress::SizedArray< double const > const &colval, char rowtype, double rhs) -> void
  Add a single cut to the problem.
 
auto  addCutlogCallback (std::function< int(XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add a cutlog callback.
 
void  addCuts (int ncuts, Array< int const > const &cuttype, Array< char const > const &rowtype, Array< double const > const &rhs, Array< int const > const &start, Array< int const > const &colind, Array< double const > const &cutcoef)
  Adds cuts directly to the matrix at the current node.
 
void  addCuts (int ncuts, Array< int const > const &cuttype, Array< char const > const &rowtype, Array< double const > const &rhs, Array< XPRSint64 const > const &start, Array< int const > const &colind, Array< double const > const &cutcoef)
  Adds cuts directly to the matrix at the current node.
 
auto  addGapNotifyCallback (std::function< void(XPRSProblem &, double *, double *, double *, double *)> callback, int prio=0) -> CallbackHandle
  Add a gapnotify callback.
 
void  addGenCons (int ncons, int ncols, int nvals, Array< GenConsType const > const &contype, Array< int const > const &resultant, Array< int const > const &colstart, Array< int const > const &colind, Array< int const > const &valstart, Array< double const > const &val)
  Adds one or more general constraints to the problem.
 
void  addGenCons (int ncons, XPRSint64 ncols, XPRSint64 nvals, Array< GenConsType const > const &contype, Array< int const > const &resultant, Array< XPRSint64 const > const &colstart, Array< int const > const &colind, Array< XPRSint64 const > const &valstart, Array< double const > const &val)
  Adds one or more general constraints to the problem.
 
auto  addInfnodeCallback (std::function< void(XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add an infnode callback.
 
auto  addIntsolCallback (std::function< void(XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add an intsol callback.
 
auto  addLplogCallback (std::function< int(XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add a lplog callback.
 
auto  addMessageCallback (std::function< void(XPRSProblem &, char const *, int, int)> callback, int prio=0) -> CallbackHandle
  Add a message callback.
 
auto  addMiplogCallback (std::function< int(XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add a miplog callback.
 
void  addMipSol (int length, Array< double const > const &solval, Array< int const > const &colind, std::optional< std::string > const &name)
  Adds a new feasible, infeasible or partial MIP solution for the problem to the Optimizer.
 
auto  addMipSol (xpress::SizedArray< double const > const &val, xpress::SizedArray< int const > const &ind) -> void
  Add a MIP solution.
 
auto  addMipSol (xpress::SizedArray< double const > const &val, xpress::SizedArray< int const > const &ind, std::optional< std::string > name) -> void
  Add a MIP solution.
 
auto  addMipThreadCallback (std::function< void(XPRSProblem &, XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add a mipthread callback.
 
auto  addMipThreadDestroyCallback (std::function< void(XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add a mipthreaddestroy callback.
 
auto  addMsJobEndCallback (std::function< int(XPRSProblem &, void *, char const *, int *)> callback, int prio=0) -> CallbackHandle
  Add a msjobend callback.
 
auto  addMsJobStartCallback (std::function< int(XPRSProblem &, void *, char const *, int *)> callback, int prio=0) -> CallbackHandle
  Add a msjobstart callback.
 
auto  addMsWinnerCallback (std::function< int(XPRSProblem &, void *, char const *)> callback, int prio=0) -> CallbackHandle
  Add a mswinner callback.
 
void  addNames (int type, Array< std::string const > const &names, int first, int last)
  When a model is loaded, the rows, columns, sets, piecewise linear and general constraints of the model may not have names associated with them.
 
auto  addNames (xpress::Namespaces type, xpress::SizedArray< std::optional< std::string > const > const &names, int first, int last) -> void
  Add names to model.
 
auto  addNewnodeCallback (std::function< void(XPRSProblem &, int, int, int)> callback, int prio=0) -> CallbackHandle
  Add a newnode callback.
 
auto  addNlpCoefEvalErrorCallback (std::function< int(XPRSProblem &, int, int)> callback, int prio=0) -> CallbackHandle
  Add a nlpcoefevalerror callback.
 
auto  addNodecutoffCallback (std::function< void(XPRSProblem &, int)> callback, int prio=0) -> CallbackHandle
  Add a nodecutoff callback.
 
auto  addNodeLPSolvedCallback (std::function< void(XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add a nodelpsolved callback.
 
void  addObj (int ncols, Array< int const > const &colind, Array< double const > const &objcoef, int priority, double weight)
  Appends an objective function with the given coefficients to a multi-objective problem.
 
auto  addOptnodeCallback (std::function< void(XPRSProblem &, int *)> callback, int prio=0) -> CallbackHandle
  Add an optnode callback.
 
auto  addPreIntsolCallback (std::function< void(XPRSProblem &, int, int *, double *)> callback, int prio=0) -> CallbackHandle
  Add a preintsol callback.
 
auto  addPrenodeCallback (std::function< void(XPRSProblem &, int *)> callback, int prio=0) -> CallbackHandle
  Add a prenode callback.
 
auto  addPresolveCallback (std::function< void(XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add a presolve callback.
 
void  addPwlCons (int npwls, int npoints, Array< int const > const &colind, Array< int const > const &resultant, Array< int const > const &start, Array< double const > const &xval, Array< double const > const &yval)
  Adds one or more piecewise linear constraints to the problem.
 
void  addPwlCons (int npwls, XPRSint64 npoints, Array< int const > const &colind, Array< int const > const &resultant, Array< XPRSint64 const > const &start, Array< double const > const &xval, Array< double const > const &yval)
  Adds one or more piecewise linear constraints to the problem.
 
void  addQMatrix (int row, int ncoefs, Array< int const > const &rowqcol1, Array< int const > const &rowqcol2, Array< double const > const &rowqcoef)
  Adds a new quadratic matrix into a row defined by triplets.
 
void  addQMatrix (int row, XPRSint64 ncoefs, Array< int const > const &rowqcol1, Array< int const > const &rowqcol2, Array< double const > const &rowqcoef)
  Adds a new quadratic matrix into a row defined by triplets.
 
auto  addRow (RowInfo row) -> int
  Add a single row to the problem.
 
auto  addRow (RowInfo row, std::optional< std::string > name) -> int
  Add a single row to the problem.
 
auto  addRow (xpress::SizedArray< int const > const &colind, xpress::SizedArray< double const > const &colval, char rowtype, double rhs) -> int
  Add a single row to the problem.
 
auto  addRow (xpress::SizedArray< int const > const &colind, xpress::SizedArray< double const > const &colval, char rowtype, double rhs, double rng, std::optional< std::string > name) -> int
  Add a single row to the problem.
 
auto  addRow (xpress::SizedArray< int const > const &colind, xpress::SizedArray< double const > const &colval, char rowtype, double rhs, std::optional< std::string > name) -> int
  Add a single row to the problem.
 
void  addRows (int nrows, int ncoefs, Array< char const > const &rowtype, Array< double const > const &rhs, Array< double const > const &rng, Array< int const > const &start, Array< int const > const &colind, Array< double const > const &rowcoef)
  Adds rows to the optimizer matrix.
 
void  addRows (int nrows, int ncoefs, Array< char const > const &rowtype, Array< double const > const &rhs, Array< int const > const &start, Array< int const > const &colind, Array< double const > const &rowcoef)
  Adds rows to the optimizer matrix.
 
void  addRows (int nrows, XPRSint64 ncoefs, Array< char const > const &rowtype, Array< double const > const &rhs, Array< double const > const &rng, Array< XPRSint64 const > const &start, Array< int const > const &colind, Array< double const > const &rowcoef)
  Adds rows to the optimizer matrix.
 
void  addRows (int nrows, XPRSint64 ncoefs, Array< char const > const &rowtype, Array< double const > const &rhs, Array< XPRSint64 const > const &start, Array< int const > const &colind, Array< double const > const &rowcoef)
  Adds rows to the optimizer matrix.
 
auto  addSet (xpress::SetType type, xpress::SizedArray< int const > const &elements, xpress::SizedArray< double const > const &weights, std::optional< std::string > name) -> int
  Add a single set constraint to this problem.
 
void  addSetNames (Array< std::string const > const &names, int first, int last)
  When a model with MIP entities is loaded, any special ordered sets may not have names associated with them.
 
auto  addSets (int count, xpress::SizedArray< int const > const &start, xpress::SizedArray< SetType const > const &type, xpress::SizedArray< int const > const &setind, xpress::SizedArray< double const > const &setref, xpress::SizedArray< std::optional< std::string > const > const &names) -> std::vector< int >
  Create multiple set constraints.
 
void  addSets (int nsets, int nelems, Array< char const > const &settype, Array< int const > const &start, Array< int const > const &colind, Array< double const > const &refval)
  Allows sets to be added to the problem after passing it to the Optimizer using the input routines.
 
void  addSets (int nsets, XPRSint64 nelems, Array< char const > const &settype, Array< XPRSint64 const > const &start, Array< int const > const &colind, Array< double const > const &refval)
  Allows sets to be added to the problem after passing it to the Optimizer using the input routines.
 
auto  addSets (std::vector< xpress::SetType > type, xpress::SizedArray< std::vector< int > > const &elements, xpress::SizedArray< std::vector< double > > const &weights, xpress::SizedArray< std::optional< std::string > const > const &name) -> std::vector< int >
  Add multiple set constraints to the problem.
 
auto  addSlpCascadeEndCallback (std::function< int(XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add a slpcascadeend callback.
 
auto  addSlpCascadeStartCallback (std::function< int(XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add a slpcascadestart callback.
 
auto  addSlpCascadeVarCallback (std::function< int(XPRSProblem &, int)> callback, int prio=0) -> CallbackHandle
  Add a slpcascadevar callback.
 
auto  addSlpCascadeVarFailCallback (std::function< int(XPRSProblem &, int)> callback, int prio=0) -> CallbackHandle
  Add a slpcascadevarfail callback.
 
auto  addSlpConstructCallback (std::function< int(XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add a slpconstruct callback.
 
auto  addSlpDrColCallback (std::function< int(XPRSProblem &, int, int, double, double *, double, double)> callback, int prio=0) -> CallbackHandle
  Add a slpdrcol callback.
 
auto  addSlpIntSolCallback (std::function< int(XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add a slpintsol callback.
 
auto  addSlpIterEndCallback (std::function< int(XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add a slpiterend callback.
 
auto  addSlpIterStartCallback (std::function< int(XPRSProblem &)> callback, int prio=0) -> CallbackHandle
  Add a slpiterstart callback.
 
auto  addSlpIterVarCallback (std::function< int(XPRSProblem &, int)> callback, int prio=0) -> CallbackHandle
  Add a slpitervar callback.
 
auto  addSlpPreUpdateLinearizationCallback (std::function< int(XPRSProblem &, int *)> callback, int prio=0) -> CallbackHandle
  Add a slppreupdatelinearization callback.
 
auto  addUserSolNotifyCallback (std::function< void(XPRSProblem &, char const *, int)> callback, int prio=0) -> CallbackHandle
  Add an usersolnotify callback.
 
void  alter (std::optional< std::string > const &filename)
  Alters or changes matrix elements, right hand sides and constraint senses in the current problem.
 
auto  basisStability (int type, int norm, int scaled) -> double
  Calculates various measures for the stability of the current basis, including the basis condition number.
 
void  bndSA (int ncols, Array< int const > const &colind, Array< double > const &lblower, Array< double > const &lbupper, Array< double > const &ublower, Array< double > const &ubupper)
  Returns upper and lower sensitivity ranges for specified variables' lower and upper bounds.
 
void  bTran (Array< double > const &vec)
  Post-multiplies a (row) vector provided by the user by the inverse of the current basis.
 
auto  calcObjective (Array< double const > const &solution) -> double
  Calculates the objective value of a given solution.
 
auto  calcObjN (int objidx, Array< double const > const &solution) -> double
  Calculates the objective value of the given objective function in a multi-objective problem.
 
auto  calcReducedCosts (Array< double const > const &duals, Array< double const > const &solution) -> std::vector< double >
  Calculates the reduced cost values for a given (row) dual solution.
 
auto  calcSlacks (Array< double const > const &solution) -> std::vector< double >
  Calculates the row slack values for a given solution.
 
auto  calcSolInfo (Array< double const > const &solution, Array< double const > const &duals, int property) -> double
  Calculates the required property of a solution, like maximum infeasibility of a given primal and dual solution.
 
auto  chgBounds (int j, double lb, double ub) -> void
  Change bounds of a single column.
 
void  chgBounds (int nbounds, Array< int const > const &colind, Array< char const > const &bndtype, Array< double const > const &bndval)
  Used to change the bounds on columns in the matrix.
 
void  chgCoef (int row, int col, double coef)
  Used to change a single coefficient in the matrix.
 
void  chgColType (int ncols, Array< int const > const &colind, Array< char const > const &coltype)
  Used to change the type of a specified set of columns in the matrix.
 
void  chgGlbLimit (int ncols, Array< int const > const &colind, Array< double const > const &limit)
  Used to change semi-continuous or semi-integer lower bounds, or upper limits on partial integers.
 
auto  chgLB (int j, double lb) -> void
  Change the lower bound of a single column.
 
void  chgMCoef (int ncoefs, Array< int const > const &rowind, Array< int const > const &colind, Array< double const > const &rowcoef)
  Used to change multiple coefficients in the matrix.
 
void  chgMCoef (XPRSint64 ncoefs, Array< int const > const &rowind, Array< int const > const &colind, Array< double const > const &rowcoef)
  Used to change multiple coefficients in the matrix.
 
void  chgMQObj (int ncoefs, Array< int const > const &objqcol1, Array< int const > const &objqcol2, Array< double const > const &objqcoef)
  Used to change multiple quadratic coefficients in the objective function.
 
void  chgMQObj (XPRSint64 ncoefs, Array< int const > const &objqcol1, Array< int const > const &objqcol2, Array< double const > const &objqcoef)
  Used to change multiple quadratic coefficients in the objective function.
 
void  chgObj (int ncols, Array< int const > const &colind, Array< double const > const &objcoef)
  Used to change the objective function coefficients.
 
void  chgObjN (int objidx, int ncols, Array< int const > const &colind, Array< double const > const &objcoef)
  Modifies one or more coefficients of an objective function in a multi-objective problem.
 
void  chgObjSense (ObjSense objsense)
  Changes the problem's objective function sense to minimize or maximize.
 
void  chgQObj (int objqcol1, int objqcol2, double objqcoef)
  Used to change a single quadratic coefficient in the objective function corresponding to the variable pair (objqcol1,objqcol2) of the Hessian matrix.
 
void  chgQRowCoeff (int row, int rowqcol1, int rowqcol2, double rowqcoef)
  Changes a single quadratic coefficient in a row.
 
void  chgRhs (int nrows, Array< int const > const &rowind, Array< double const > const &rhs)
  Used to change right—hand side values of the problem.
 
void  chgRhsRange (int nrows, Array< int const > const &rowind, Array< double const > const &rng)
  Used to change the range for a row of the problem matrix.
 
void  chgRowType (int nrows, Array< int const > const &rowind, Array< char const > const &rowtype)
  Used to change the type of a row in the matrix.
 
auto  chgUB (int j, double ub) -> void
  Change the upper bound of a single column.
 
void  clearIIS ()
  Resets the search for Irreducible Infeasible Sets (IIS).
 
auto  clearObjective () -> void
  Clear the objective function.
 
void  clearRowFlags (Array< int const > const &flags, int first, int last)
  Clears extra information attached to a range of rows.
 
void  copyControls (XPRSProblem const &src)
  Copies controls defined for one problem to another.
 
void  copyProb (XPRSProblem const &src, std::optional< std::string > const &name)
  Copies information defined for one problem to another.
 
auto  crossoverLpSol () -> int
  Provides a basic optimal solution for a given solution of an LP problem.
 
void  delCPCuts ()
  During the branch and bound search, cuts are stored in the cut pool to be applied at descendant nodes.
 
void  delCPCuts (int cuttype, int interp)
  During the branch and bound search, cuts are stored in the cut pool to be applied at descendant nodes.
 
void  delCPCuts (int cuttype, int interp, int ncuts, Array< XPRScut const > const &cutind)
  During the branch and bound search, cuts are stored in the cut pool to be applied at descendant nodes.
 
void  delCPCuts (int ncuts, Array< XPRScut const > const &cutind)
  During the branch and bound search, cuts are stored in the cut pool to be applied at descendant nodes.
 
void  delCuts (int basis)
  Deletes cuts from the matrix at the current node.
 
void  delCuts (int basis, int cuttype, int interp)
  Deletes cuts from the matrix at the current node.
 
void  delCuts (int basis, int cuttype, int interp, double delta)
  Deletes cuts from the matrix at the current node.
 
void  delCuts (int basis, int cuttype, int interp, double delta, int ncuts, Array< XPRScut const > const &cutind)
  Deletes cuts from the matrix at the current node.
 
void  delCuts (int basis, int ncuts, Array< XPRScut const > const &cutind)
  Deletes cuts from the matrix at the current node.
 
auto  delIndicator (int row) -> void
  Delete a single indicator constraint.
 
void  delIndicators (int first, int last)
  Delete indicator constraints.
 
void  delObj (int objidx)
  Removes an objective function from a multi-objective problem.
 
void  delQMatrix (int row)
  Deletes the quadratic part of a row or of the objective function.
 
void  destroyProb ()
  Removes a given problem and frees any memory associated with it following manipulation and optimization.
 
void  dumpControls ()
  Displays the list of controls and their current value for those controls that have been set to a non default value.
 
void  estimateRowDualRanges (int nrows, Array< int const > const &rowind, int iterlim, Array< double > const &mindual, Array< double > const &maxdual)
  Performs a dual side range sensitivity analysis, i.e.
 
auto  firstIIS (int mode) -> int
  Initiates a search for an Irreducible Infeasible Set (IIS) in an infeasible problem.
 
void  fixMipEntities (int options)
  Fixes all the MIP entities to the values of the last found MIP solution.
 
void  fTran (Array< double > const &vec)
  Pre-multiplies a (column) vector provided by the user by the inverse of the current matrix.
 
void  getAttribInfo (std::optional< std::string > const &name, int *p_id, ParameterType *p_type)
  Accesses the id number and the type information of an attribute given its name.
 
void  getBasis (Array< int > const &rowstat, Array< int > const &colstat)
  Returns the current basis into the user's data arrays.
 
void  getBasisVal (int row, int col, int *p_rowstat, int *p_colstat)
  Returns the current basis status for a specific column or row.
 
auto  getCallbackDual (bool *p_available, int index) const -> double
  Convenience wrapper for getCallbackDuals(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackDual (int index) const -> double
  Convenience wrapper for getCallbackDuals(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackDuals () const -> std::vector< double >
  Convenience wrapper for getCallbackDuals(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
auto  getCallbackDuals (bool *p_available) const -> std::vector< double >
  Convenience wrapper for getCallbackDuals(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
void  getCallbackDuals (bool *p_available, Array< double > const &duals, int first, int last) const
  Returns the dual values from the solution associated with the current callback.
 
auto  getCallbackDuals (bool *p_available, int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackDuals(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackDuals (int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackDuals(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackPresolveDual (bool *p_available, int index) const -> double
  Convenience wrapper for getCallbackPresolveDuals(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackPresolveDual (int index) const -> double
  Convenience wrapper for getCallbackPresolveDuals(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackPresolveDuals () const -> std::vector< double >
  Convenience wrapper for getCallbackPresolveDuals(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
auto  getCallbackPresolveDuals (bool *p_available) const -> std::vector< double >
  Convenience wrapper for getCallbackPresolveDuals(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
void  getCallbackPresolveDuals (bool *p_available, Array< double > const &duals, int first, int last) const
  Returns the dual values from the solution to the presolved problem associated with the current callback.
 
auto  getCallbackPresolveDuals (bool *p_available, int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackPresolveDuals(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackPresolveDuals (int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackPresolveDuals(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackPresolveRedCost (bool *p_available, int index) const -> double
  Convenience wrapper for getCallbackPresolveRedCosts(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackPresolveRedCost (int index) const -> double
  Convenience wrapper for getCallbackPresolveRedCosts(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackPresolveRedCosts () const -> std::vector< double >
  Convenience wrapper for getCallbackPresolveRedCosts(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
auto  getCallbackPresolveRedCosts (bool *p_available) const -> std::vector< double >
  Convenience wrapper for getCallbackPresolveRedCosts(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
void  getCallbackPresolveRedCosts (bool *p_available, Array< double > const &djs, int first, int last) const
  Returns the reduced costs from the solution to the presolved problem associated with the current callback.
 
auto  getCallbackPresolveRedCosts (bool *p_available, int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackPresolveRedCosts(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackPresolveRedCosts (int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackPresolveRedCosts(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackPresolveSlack (bool *p_available, int index) const -> double
  Convenience wrapper for getCallbackPresolveSlacks(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackPresolveSlack (int index) const -> double
  Convenience wrapper for getCallbackPresolveSlacks(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackPresolveSlacks () const -> std::vector< double >
  Convenience wrapper for getCallbackPresolveSlacks(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
auto  getCallbackPresolveSlacks (bool *p_available) const -> std::vector< double >
  Convenience wrapper for getCallbackPresolveSlacks(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
void  getCallbackPresolveSlacks (bool *p_available, Array< double > const &slacks, int first, int last) const
  Returns the slack values from the solution to the presolved problem associated with the current callback.
 
auto  getCallbackPresolveSlacks (bool *p_available, int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackPresolveSlacks(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackPresolveSlacks (int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackPresolveSlacks(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackPresolveSolution () const -> std::vector< double >
  Convenience wrapper for getCallbackPresolveSolution(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
auto  getCallbackPresolveSolution (bool *p_available) const -> std::vector< double >
  Convenience wrapper for getCallbackPresolveSolution(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
void  getCallbackPresolveSolution (bool *p_available, Array< double > const &x, int first, int last) const
  Returns the solution to the presolved problem associated with the current callback.
 
auto  getCallbackPresolveSolution (bool *p_available, int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackPresolveSolution(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackPresolveSolution (bool *p_available, int index) const -> double
  Convenience wrapper for getCallbackPresolveSolution(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackPresolveSolution (int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackPresolveSolution(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackPresolveSolution (int index) const -> double
  Convenience wrapper for getCallbackPresolveSolution(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackRedCost (bool *p_available, int index) const -> double
  Convenience wrapper for getCallbackRedCosts(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackRedCost (int index) const -> double
  Convenience wrapper for getCallbackRedCosts(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackRedCosts () const -> std::vector< double >
  Convenience wrapper for getCallbackRedCosts(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
auto  getCallbackRedCosts (bool *p_available) const -> std::vector< double >
  Convenience wrapper for getCallbackRedCosts(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
void  getCallbackRedCosts (bool *p_available, Array< double > const &djs, int first, int last) const
  Returns the reduced costs from the solution associated with the current callback.
 
auto  getCallbackRedCosts (bool *p_available, int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackRedCosts(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackRedCosts (int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackRedCosts(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackSlack (bool *p_available, int index) const -> double
  Convenience wrapper for getCallbackSlacks(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackSlack (int index) const -> double
  Convenience wrapper for getCallbackSlacks(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackSlacks () const -> std::vector< double >
  Convenience wrapper for getCallbackSlacks(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
auto  getCallbackSlacks (bool *p_available) const -> std::vector< double >
  Convenience wrapper for getCallbackSlacks(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
void  getCallbackSlacks (bool *p_available, Array< double > const &slacks, int first, int last) const
  Returns the slack values from the solution associated with the current callback.
 
auto  getCallbackSlacks (bool *p_available, int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackSlacks(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackSlacks (int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackSlacks(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackSolution () const -> std::vector< double >
  Convenience wrapper for getCallbackSolution(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
auto  getCallbackSolution (bool *p_available) const -> std::vector< double >
  Convenience wrapper for getCallbackSolution(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
void  getCallbackSolution (bool *p_available, Array< double > const &x, int first, int last) const
  Returns the solution associated with the current callback.
 
auto  getCallbackSolution (bool *p_available, int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackSolution(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackSolution (bool *p_available, int index) const -> double
  Convenience wrapper for getCallbackSolution(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCallbackSolution (int first, int last) const -> std::vector< double >
  Convenience wrapper for getCallbackSolution(bool*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getCallbackSolution (int index) const -> double
  Convenience wrapper for getCallbackSolution(bool*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getCoef (int row, int col) -> double
  Returns a single coefficient in the constraint matrix.
 
void  getCols (Array< int > const &start, Array< int > const &rowind, Array< double > const &rowcoef, int maxcoefs, int *p_ncoefs, int first, int last)
  Returns the nonzeros in the constraint matrix for the columns in a given range.
 
auto  getCols (Array< int > const &start, Array< int > const &rowind, Array< double > const &rowcoef, int maxcoefs, int first, int last) -> int
  Returns the nonzeros in the constraint matrix for the columns in a given range.
 
auto  getCols (Array< XPRSint64 > const &start, Array< int > const &rowind, Array< double > const &rowcoef, XPRSint64 maxcoefs, int first, int last) -> XPRSint64
  Returns the nonzeros in the constraint matrix for the columns in a given range.
 
void  getCols (Array< XPRSint64 > const &start, Array< int > const &rowind, Array< double > const &rowcoef, XPRSint64 maxcoefs, XPRSint64 *p_ncoefs, int first, int last)
  Returns the nonzeros in the constraint matrix for the columns in a given range.
 
auto  getCols (int first, int last) -> xpress::XPRSProblem::MatrixInfo
  Get range of columns.
 
auto  getColType (int first, int last) -> std::vector< char >
  Returns the column types for the columns in a given range.
 
auto  getColumnName (int index) -> std::string
  Get a column name.
 
auto  getColumnNames (int first, int last) -> std::vector< std::string >
  Get names of columns.
 
void  getControlInfo (std::optional< std::string > const &name, int *p_id, ParameterType *p_type)
  Accesses the id number and the type information of a control given its name.
 
void  getCPCutList (int cuttype, int interp, double delta, int *p_ncuts, int maxcuts, Array< XPRScut > const &cutind, Array< double > const &viol)
  Returns a list of cut indices from the cut pool.
 
auto  getCPCutList (int cuttype, int interp, double delta, int maxcuts, Array< XPRScut > const &cutind, Array< double > const &viol) -> int
  Returns a list of cut indices from the cut pool.
 
auto  getCPCutList (int maxcuts, Array< XPRScut > const &cutind, Array< double > const &viol) -> int
  Returns a list of cut indices from the cut pool.
 
void  getCPCuts (Array< XPRScut const > const &rowind, int ncuts, int maxcoefs, Array< int > const &cuttype, Array< char > const &rowtype, Array< int > const &start, Array< int > const &colind, Array< double > const &cutcoef, Array< double > const &rhs)
  Returns cuts from the cut pool.
 
void  getCPCuts (Array< XPRScut const > const &rowind, int ncuts, XPRSint64 maxcoefs, Array< int > const &cuttype, Array< char > const &rowtype, Array< XPRSint64 > const &start, Array< int > const &colind, Array< double > const &cutcoef, Array< double > const &rhs)
  Returns cuts from the cut pool.
 
void  getCutList (int cuttype, int interp, int *p_ncuts, int maxcuts, Array< XPRScut > const &cutind)
  Retrieves a list of cut pointers for the cuts active at the current node.
 
auto  getCutList (int cuttype, int interp, int maxcuts, Array< XPRScut > const &cutind) -> int
  Retrieves a list of cut pointers for the cuts active at the current node.
 
auto  getCutList (int maxcuts, Array< XPRScut > const &cutind) -> int
  Retrieves a list of cut pointers for the cuts active at the current node.
 
auto  getCutMap (int ncuts, Array< XPRScut const > const &cutind) -> std::vector< int >
  Used to return in which rows a list of cuts are currently loaded into the Optimizer.
 
auto  getCutSlack (XPRScut cutind) -> double
  Used to calculate the slack value of a cut with respect to the current LP relaxation solution.
 
auto  getDblAttrib (int attrib) const -> double
  Enables users to retrieve the values of various double problem attributes.
 
auto  getDblControl (int control) const -> double
  Retrieves the value of a given double control parameter.
 
auto  getDirs () -> int
  Used to return the directives that have been loaded into a matrix.
 
auto  getDirs (Array< int > const &indices, Array< int > const &prios, Array< char > const &branchdirs, Array< double > const &uppseudo, Array< double > const &downpseudo) -> int
  Used to return the directives that have been loaded into a matrix.
 
void  getDirs (int *p_ndir, Array< int > const &indices, Array< int > const &prios, Array< char > const &branchdirs, Array< double > const &uppseudo, Array< double > const &downpseudo)
  Used to return the directives that have been loaded into a matrix.
 
auto  getDiscreteCols () -> xpress::XPRSProblem::MIPEntityInfo
  Get information about MIP entities.
 
auto  getDual (int *status, int index) const -> double
  Convenience wrapper for getDuals(int*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getDual (int index) const -> double
  Convenience wrapper for getDuals(int*, Array<double> const &, int, int) const that queries only a single value.
 
void  getDualRay (Array< double > const &ray, int *p_hasray)
  Retrieves a dual ray (dual unbounded direction) for the current problem, if the problem is found to be infeasible.
 
auto  getDuals () const -> std::vector< double >
  Convenience wrapper for getDuals(int*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
auto  getDuals (int *status) const -> std::vector< double >
  Convenience wrapper for getDuals(int*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
void  getDuals (int *status, Array< double > const &duals, int first, int last) const
  Used to obtain the dual values associated with the incumbent solution during or after optimization of a continuous problem with XPRSoptimize, XPRSlpoptimize or XPRSnlpoptimize.
 
auto  getDuals (int *status, int first, int last) const -> std::vector< double >
  Convenience wrapper for getDuals(int*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getDuals (int first, int last) const -> std::vector< double >
  Convenience wrapper for getDuals(int*, Array<double> const &, int, int) const that allocates the output array.
 
void  getGenCons (Array< GenConsType > const &contype, Array< int > const &resultant, Array< int > const &colstart, Array< int > const &colind, int maxcols, int *p_ncols, Array< int > const &valstart, Array< double > const &val, int maxvals, int *p_nvals, int first, int last)
  Returns the general constraints y = f(x1, ..., xn, c1, ..., cm) in a given range.
 
void  getGenCons (Array< GenConsType > const &contype, Array< int > const &resultant, Array< XPRSint64 > const &colstart, Array< int > const &colind, XPRSint64 maxcols, XPRSint64 *p_ncols, Array< XPRSint64 > const &valstart, Array< double > const &val, XPRSint64 maxvals, XPRSint64 *p_nvals, int first, int last)
  Returns the general constraints y = f(x1, ..., xn, c1, ..., cm) in a given range.
 
auto  getGenCons (int first, int last) -> xpress::XPRSProblem::GeneralConstraintInfo
  Query a range of general constraints.
 
auto  getGenConsName (int index) -> std::string
  Get a general constraint name.
 
auto  getGenConsNames (int first, int last) -> std::vector< std::string >
  Get names of general constraints.
 
void  getIISData (int iis, int *p_nrows, int *p_ncols, Array< int > const &rowind, Array< int > const &colind, Array< char > const &contype, Array< char > const &bndtype, Array< double > const &duals, Array< double > const &djs, Array< char > const &isolationrows, Array< char > const &isolationcols)
  Returns information for an Irreducible Infeasible Set: size, variables and constraints (row and column vectors), and conflicting sides of the variables.
 
auto  getIISData (int number) -> xpress::XPRSProblem::IISData
  Get information about an IIS.
 
auto  getIndex (int type, std::optional< std::string > const &name) -> int
  Returns the index for a specified row or column name.
 
auto  getIndicator (int row) -> std::optional< xpress::IndicatorInfo >
  Get indicator information for a single row.
 
void  getIndicators (Array< int > const &colind, Array< int > const &complement, int first, int last)
  Returns the indicator constraint condition (indicator variable and complement flag) associated to the rows in a given range.
 
auto  getIndicators (int first, int last) -> std::vector< xpress::IndicatorInfo >
  Get indicator information for a range of rows.
 
void  getInfeas (int *p_nprimalcols, int *p_nprimalrows, int *p_ndualrows, int *p_ndualcols, Array< int > const &x, Array< int > const &slack, Array< int > const &duals, Array< int > const &djs)
  Returns a list of infeasible primal and dual variables.
 
auto  getIntAttrib (int attrib) const -> int
  Enables users to recover the values of various integer problem attributes.
 
auto  getIntControl (int control) const -> int
  Enables users to recover the values of various integer control parameters.
 
void  getLastBarSol (Array< double > const &x, Array< double > const &slack, Array< double > const &duals, Array< double > const &djs, int *p_status)
  Used to obtain the last barrier solution values following optimization that used the barrier solver.
 
auto  getLB (int first, int last) -> std::vector< double >
  Returns the lower bounds for the columns in a given range.
 
auto  getLongAttrib (int attrib) const -> XPRSint64
  Enables users to recover the values of various integer problem attributes.
 
auto  getLongControl (int control) const -> XPRSint64
  Enables users to recover the values of various integer control parameters.
 
void  getLpSol (Array< double > const &x)
  Used to obtain the LP solution values following optimization.
 
void  getLpSol (Array< double > const &x, Array< double > const &slack, Array< double > const &duals, Array< double > const &djs)
  Used to obtain the LP solution values following optimization.
 
void  getLpSolVal (int col, int row, double *p_x, double *p_slack, double *p_dual, double *p_dj)
  Used to obtain a single LP solution value following optimization.
 
auto  getMessageStatus (int msgcode) -> int
  Retrieves the current suppression status of a message.
 
auto  getMipEntities () -> xpress::XPRSProblem::MIPEntityInfo
  Get information about MIP entities and SOS.
 
auto  getMipEntities (Array< char > const &coltype, Array< int > const &colind, Array< double > const &limit) -> int
  Retrieves integr and entity information about a problem.
 
void  getMipEntities (int *p_nentities, Array< char > const &coltype, Array< int > const &colind, Array< double > const &limit)
  Retrieves integr and entity information about a problem.
 
void  getMipEntities (int *p_nentities, int *p_nsets, Array< char > const &coltype, Array< int > const &colind, Array< double > const &limit, Array< char > const &settype, Array< int > const &start, Array< int > const &setcols, Array< double > const &refval)
  Retrieves integr and entity information about a problem.
 
void  getMipEntities (int *p_nentities, int *p_nsets, Array< char > const &coltype, Array< int > const &colind, Array< double > const &limit, Array< char > const &settype, Array< XPRSint64 > const &start, Array< int > const &setcols, Array< double > const &refval)
  Retrieves integr and entity information about a problem.
 
void  getMipSol (Array< double > const &x)
  Used to obtain the solution values of the last MIP solution that was found.
 
void  getMipSol (Array< double > const &x, Array< double > const &slack)
  Used to obtain the solution values of the last MIP solution that was found.
 
void  getMipSolVal (int col, int row, double *p_x, double *p_slack)
  Used to obtain a single solution value of the last MIP solution that was found.
 
void  getMQObj (Array< int > const &start, Array< int > const &colind, Array< double > const &objqcoef, int maxcoefs, int *p_ncoefs, int first, int last)
  Returns the nonzeros in the quadratic objective coefficients matrix for the columns in a given range.
 
auto  getMQObj (Array< int > const &start, Array< int > const &colind, Array< double > const &objqcoef, int maxcoefs, int first, int last) -> int
  Returns the nonzeros in the quadratic objective coefficients matrix for the columns in a given range.
 
auto  getMQObj (Array< XPRSint64 > const &start, Array< int > const &colind, Array< double > const &objqcoef, XPRSint64 maxcoefs, int first, int last) -> XPRSint64
  Returns the nonzeros in the quadratic objective coefficients matrix for the columns in a given range.
 
void  getMQObj (Array< XPRSint64 > const &start, Array< int > const &colind, Array< double > const &objqcoef, XPRSint64 maxcoefs, XPRSint64 *p_ncoefs, int first, int last)
  Returns the nonzeros in the quadratic objective coefficients matrix for the columns in a given range.
 
auto  getMQObj (int first, int last) -> xpress::XPRSProblem::MatrixInfo
  Get quadratic objective matrix for range of columns.
 
auto  getName (int type, int elt) -> std::string
  Get the name of a single element.
 
auto  getName (xpress::Namespaces type, int elt) -> std::string
  Get the name of a single element.
 
auto  getNameList (int type, int first, int last) -> std::vector< std::string >
  Returns the names for the rows, columns, sets, piecewise linear constraints, general constraints or objectives in a given range.
 
auto  getNames (int type, int first, int last) -> std::vector< std::string >
  Get names.
 
auto  getNames (xpress::Namespaces type, int first, int last) -> std::vector< std::string >
  Get names.
 
void  getNlpsol (Array< double > const &x, Array< double > const &slack, Array< double > const &duals, Array< double > const &djs)
  Obtain the current SLP solution values.
 
auto  getObj (int first, int last) -> std::vector< double >
  Returns the objective function coefficients for the columns in a given range.
 
auto  getObjDblAttrib (int solveidx, int attrib) -> double
  Retrieves the value of a given double attribute associated with a multi-objective solve.
 
auto  getObjDblControl (int objidx, ObjControl control) -> double
  Retrieves the value of a given double control parameter associated with an objective function.
 
auto  getObjIntAttrib (int solveidx, int attrib) -> int
  Retrieves the value of a given integer attribute associated with a multi-objective solve.
 
auto  getObjIntControl (int objidx, ObjControl control) -> int
  Retrieves the value of a given integer control parameter associated with an objective.
 
auto  getObjLongAttrib (int solveidx, int attrib) -> XPRSint64
  Retrieves the value of a given integer attribute associated with a multi-objective solve.
 
auto  getObjN (int objidx, int first, int last) -> std::vector< double >
  For a given objective function, returns the objective coefficients for the columns in a given range.
 
auto  getPivotOrder () -> std::vector< int >
  Returns the pivot order of the basic variables.
 
void  getPivots (int enter, Array< int > const &outlist, Array< double > const &x, double *p_objval, int *p_npivots, int maxpivots)
  Returns a list of potential leaving variables if a specified variable enters the basis.
 
void  getPresolveBasis (Array< int > const &rowstat, Array< int > const &colstat)
  Returns the current basis from memory into the user's data areas.
 
void  getPresolveMap (Array< int > const &rowmap, Array< int > const &colmap)
  Returns the mapping of the row and column numbers from the presolve problem back to the original problem.
 
void  getPresolveSol (Array< double > const &x)
  Returns the solution for the presolved problem from memory.
 
void  getPresolveSol (Array< double > const &x, Array< double > const &slack, Array< double > const &duals, Array< double > const &djs)
  Returns the solution for the presolved problem from memory.
 
void  getPrimalRay (Array< double > const &ray, int *p_hasray)
  Retrieves a primal ray (primal unbounded direction) for the current problem, if the problem is found to be unbounded.
 
auto  getProbName () -> std::string
  Returns the current problem name.
 
void  getPwlCons (Array< int > const &colind, Array< int > const &resultant, Array< int > const &start, Array< double > const &xval, Array< double > const &yval, int maxpoints, int *p_npoints, int first, int last)
  Returns the piecewise linear constraints y = f(x) in a given range.
 
void  getPwlCons (Array< int > const &colind, Array< int > const &resultant, Array< XPRSint64 > const &start, Array< double > const &xval, Array< double > const &yval, XPRSint64 maxpoints, XPRSint64 *p_npoints, int first, int last)
  Returns the piecewise linear constraints y = f(x) in a given range.
 
auto  getPWLName (int index) -> std::string
  Get a PWL constraint name.
 
auto  getPWLNames (int first, int last) -> std::vector< std::string >
  Get names of PWL constraints.
 
auto  getQObj (int objqcol1, int objqcol2) -> double
  Returns a single quadratic objective function coefficient corresponding to the variable pair (objqcol1, objqcol2) of the Hessian matrix.
 
auto  getQRowCoeff (int row, int rowqcol1, int rowqcol2) -> double
  Returns a single quadratic constraint coefficient corresponding to the variable pair (rowqcol1, rowqcol2) of the Hessian of a given constraint.
 
void  getQRowQMatrix (int row, Array< int > const &start, Array< int > const &colind, Array< double > const &rowqcoef, int maxcoefs, int *p_ncoefs, int first, int last)
  Returns the nonzeros in a quadratic constraint coefficients matrix for the columns in a given range.
 
auto  getQRowQMatrix (int row, Array< int > const &start, Array< int > const &colind, Array< double > const &rowqcoef, int maxcoefs, int first, int last) -> int
  Returns the nonzeros in a quadratic constraint coefficients matrix for the columns in a given range.
 
auto  getQRowQMatrixTriplets (int row, Array< int > const &rowqcol1, Array< int > const &rowqcol2, Array< double > const &rowqcoef) -> int
  Returns the nonzeros in a quadratic constraint coefficients matrix as triplets (index pairs with coefficients).
 
void  getQRowQMatrixTriplets (int row, int *p_ncoefs, Array< int > const &rowqcol1, Array< int > const &rowqcol2, Array< double > const &rowqcoef)
  Returns the nonzeros in a quadratic constraint coefficients matrix as triplets (index pairs with coefficients).
 
auto  getQRows () -> int
  Returns the list indices of the rows that have quadratic coefficients.
 
auto  getQRows (Array< int > const &rowind) -> int
  Returns the list indices of the rows that have quadratic coefficients.
 
void  getQRows (int *p_nrows, Array< int > const &rowind)
  Returns the list indices of the rows that have quadratic coefficients.
 
auto  getRedCost (int *status, int index) const -> double
  Convenience wrapper for getRedCosts(int*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getRedCost (int index) const -> double
  Convenience wrapper for getRedCosts(int*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getRedCosts () const -> std::vector< double >
  Convenience wrapper for getRedCosts(int*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
auto  getRedCosts (int *status) const -> std::vector< double >
  Convenience wrapper for getRedCosts(int*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
void  getRedCosts (int *status, Array< double > const &djs, int first, int last) const
  Used to obtain the reduced costs associated with the incumbent solution during or after optimization of a continuous problem with XPRSoptimize, XPRSlpoptimize or XPRSnlpoptimize.
 
auto  getRedCosts (int *status, int first, int last) const -> std::vector< double >
  Convenience wrapper for getRedCosts(int*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getRedCosts (int first, int last) const -> std::vector< double >
  Convenience wrapper for getRedCosts(int*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getRhs (int first, int last) -> std::vector< double >
  Returns the right hand side elements for the rows in a given range.
 
auto  getRhsRange (int first, int last) -> std::vector< double >
  Returns the right hand side range values for the rows in a given range.
 
auto  getRowFlags (int first, int last) -> std::vector< int >
  Retrieve if a range of rows have been set up as special rows.
 
auto  getRowName (int index) -> std::string
  Get a row name.
 
auto  getRowNames (int first, int last) -> std::vector< std::string >
  Get names of rows.
 
void  getRows (Array< int > const &start, Array< int > const &colind, Array< double > const &colcoef, int maxcoefs, int *p_ncoefs, int first, int last)
  Returns the nonzeros in the constraint matrix for the rows in a given range.
 
auto  getRows (Array< int > const &start, Array< int > const &colind, Array< double > const &colcoef, int maxcoefs, int first, int last) -> int
  Returns the nonzeros in the constraint matrix for the rows in a given range.
 
auto  getRows (Array< XPRSint64 > const &start, Array< int > const &colind, Array< double > const &colcoef, XPRSint64 maxcoefs, int first, int last) -> XPRSint64
  Returns the nonzeros in the constraint matrix for the rows in a given range.
 
void  getRows (Array< XPRSint64 > const &start, Array< int > const &colind, Array< double > const &colcoef, XPRSint64 maxcoefs, XPRSint64 *p_ncoefs, int first, int last)
  Returns the nonzeros in the constraint matrix for the rows in a given range.
 
auto  getRows (int first, int last) -> xpress::XPRSProblem::MatrixInfo
  Get range of rows.
 
auto  getRowType (int first, int last) -> std::vector< char >
  Returns the row types for the rows in a given range.
 
void  getScale (Array< int > const &rowscale, Array< int > const &colscale)
  Returns the the current scaling of the matrix.
 
void  getScaledInfeas (int *p_nprimalcols, int *p_nprimalrows, int *p_ndualrows, int *p_ndualcols, Array< int > const &x, Array< int > const &slack, Array< int > const &duals, Array< int > const &djs)
  Returns a list of scaled infeasible primal and dual variables for the original problem.
 
auto  getSetDefinitions () -> xpress::XPRSProblem::MIPEntityInfo
  Get information about SOS.
 
auto  getSetName (int index) -> std::string
  Get a set (SOS) name.
 
auto  getSetNames (int first, int last) -> std::vector< std::string >
  Get names of sets (SOS).
 
auto  getSlack (int *status, int index) const -> double
  Convenience wrapper for getSlacks(int*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getSlack (int index) const -> double
  Convenience wrapper for getSlacks(int*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getSlacks () const -> std::vector< double >
  Convenience wrapper for getSlacks(int*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
auto  getSlacks (int *status) const -> std::vector< double >
  Convenience wrapper for getSlacks(int*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
void  getSlacks (int *status, Array< double > const &slacks, int first, int last) const
  Used to obtain the slack values associated with the incumbent solution during or after optimization with XPRSoptimize, XPRSmipoptimize, XPRSlpoptimize or XPRSnlpoptimize.
 
auto  getSlacks (int *status, int first, int last) const -> std::vector< double >
  Convenience wrapper for getSlacks(int*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getSlacks (int first, int last) const -> std::vector< double >
  Convenience wrapper for getSlacks(int*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getSolution () const -> std::vector< double >
  Convenience wrapper for getSolution(int*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
auto  getSolution (int *status) const -> std::vector< double >
  Convenience wrapper for getSolution(int*, Array<double> const &, int, int) const that allocates the output array and queries all elements.
 
void  getSolution (int *status, Array< double > const &x, int first, int last) const
  Used to obtain the incumbent solution during or after optimization with XPRSoptimize, XPRSmipoptimize, XPRSlpoptimize or XPRSnlpoptimize.
 
auto  getSolution (int *status, int first, int last) const -> std::vector< double >
  Convenience wrapper for getSolution(int*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getSolution (int *status, int index) const -> double
  Convenience wrapper for getSolution(int*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getSolution (int first, int last) const -> std::vector< double >
  Convenience wrapper for getSolution(int*, Array<double> const &, int, int) const that allocates the output array.
 
auto  getSolution (int index) const -> double
  Convenience wrapper for getSolution(int*, Array<double> const &, int, int) const that queries only a single value.
 
auto  getStrAttrib (int attrib) const -> std::string
  Enables users to recover the values of various string problem attributes.
 
auto  getStrControl (int control) const -> std::string
  Returns the value of a given string control parameters.
 
void  getStringControl (int control, char *value, int maxbytes, int *p_nbytes) const
  Returns the value of a given string control parameters.
 
void  getStrStringAttrib (int attrib, char *value, int maxbytes, int *p_nbytes) const
  Enables users to recover the values of various string problem attributes.
 
auto  getUB (int first, int last) -> std::vector< double >
  Returns the upper bounds for the columns in a given range.
 
auto  getUnbVec () -> int
  Returns the index vector which causes the primal simplex or dual simplex algorithm to determine that a matrix is primal or dual unbounded respectively.
 
void  IISAll ()
  Performs an automated search for independent Irreducible Infeasible Sets (IIS) in an infeasible problem.
 
void  IISIsolations (int iis)
  Performs the isolation identification procedure for an Irreducible Infeasible Set (IIS).
 
auto  IISStatus () -> xpress::XPRSProblem::IISStatusInfo
  Get the IIS status.
 
void  IISStatus (int *p_niis, Array< int > const &nrows, Array< int > const &ncols, Array< double > const &suminfeas, Array< int > const &numinfeas)
  Returns statistics on the Irreducible Infeasible Sets (IIS) found so far by XPRSiisfirst (IIS), XPRSiisnext (IIS -n) or XPRSiisall (IIS -a).
 
void  interrupt (StopType reason)
  Interrupts the Optimizer algorithms.
 
void  loadBasis (Array< int const > const &rowstat, Array< int const > const &colstat)
  Loads a basis from the user's areas.
 
void  loadBranchDirs (int ncols, Array< int const > const &colind, Array< int const > const &dir)
  Loads directives into the current problem to specify which MIP entities the Optimizer should continue to branch on when a node solution is integer feasible.
 
void  loadCuts (int cuttype, int interp)
  Loads cuts from the cut pool into the matrix.
 
void  loadCuts (int cuttype, int interp, int ncuts, Array< XPRScut const > const &cutind)
  Loads cuts from the cut pool into the matrix.
 
void  loadCuts (int ncuts, Array< XPRScut const > const &cutind)
  Loads cuts from the cut pool into the matrix.
 
void  loadDelayedRows (int nrows, Array< int const > const &rowind)
  Specifies that a set of rows in the matrix will be treated as delayed rows during a tree search.
 
void  loadDirs (int ndirs, Array< int const > const &colind, Array< int const > const &priority, Array< char const > const &dir, Array< double const > const &uppseudo, Array< double const > const &downpseudo)
  Loads directives into the matrix.
 
void  loadLp (std::optional< std::string > const &probname, int ncols, int nrows, Array< char const > const &rowtype, Array< double const > const &rhs, Array< double const > const &rng, Array< double const > const &objcoef, Array< int const > const &start, Array< int const > const &collen, Array< int const > const &rowind, Array< double const > const &rowcoef, Array< double const > const &lb, Array< double const > const &ub)
  Enables the user to pass a matrix directly to the Optimizer, rather than reading the matrix from a file.
 
void  loadLp (std::optional< std::string > const &probname, int ncols, int nrows, Array< char const > const &rowtype, Array< double const > const &rhs, Array< double const > const &rng, Array< double const > const &objcoef, Array< XPRSint64 const > const &start, Array< int const > const &collen, Array< int const > const &rowind, Array< double const > const &rowcoef, Array< double const > const &lb, Array< double const > const &ub)
  Enables the user to pass a matrix directly to the Optimizer, rather than reading the matrix from a file.
 
auto  loadLpSol (Array< double const > const &x, Array< double const > const &slack, Array< double const > const &duals, Array< double const > const &djs) -> int
  Loads an LP solution for the problem into the Optimizer.
 
void  loadMip (std::optional< std::string > const &probname, int ncols, int nrows, Array< char const > const &rowtype, Array< double const > const &rhs, Array< double const > const &rng, Array< double const > const &objcoef, Array< int const > const &start, Array< int const > const &collen, Array< int const > const &rowind, Array< double const > const &rowcoef, Array< double const > const &lb, Array< double const > const &ub, int nentities, int nsets, Array< char const > const &coltype, Array< int const > const &entind, Array< double const > const &limit, Array< char const > const &settype, Array< int const > const &setstart, Array< int const > const &setind, Array< double const > const &refval)
  Used to load a MIP problem into the Optimizer data structures.
 
void  loadMip (std::optional< std::string > const &probname, int ncols, int nrows, Array< char const > const &rowtype, Array< double const > const &rhs, Array< double const > const &rng, Array< double const > const &objcoef, Array< XPRSint64 const > const &start, Array< int const > const &collen, Array< int const > const &rowind, Array< double const > const &rowcoef, Array< double const > const &lb, Array< double const > const &ub, int nentities, int nsets, Array< char const > const &coltype, Array< int const > const &entind, Array< double const > const &limit, Array< char const > const &settype, Array< XPRSint64 const > const &setstart, Array< int const > const &setind, Array< double const > const &refval)
  Used to load a MIP problem into the Optimizer data structures.
 
auto  loadMipSol (Array< double const > const &x) -> int
  Loads a starting MIP solution for the problem into the Optimizer.
 
void  loadMIQCQP (std::optional< std::string > const &probname, int ncols, int nrows, Array< char const > const &rowtype, Array< double const > const &rhs, Array< double const > const &rng, Array< double const > const &objcoef, Array< int const > const &start, Array< int const > const &collen, Array< int const > const &rowind, Array< double const > const &rowcoef, Array< double const > const &lb, Array< double const > const &ub, int nobjqcoefs, Array< int const > const &objqcol1, Array< int const > const &objqcol2, Array< double const > const &objqcoef, int nqrows, Array< int const > const &qrowind, Array< int const > const &nrowqcoefs, Array< int const > const &rowqcol1, Array< int const > const &rowqcol2, Array< double const > const &rowqcoef, int nentities, int nsets, Array< char const > const &coltype, Array< int const > const &entind, Array< double const > const &limit, Array< char const > const &settype, Array< int const > const &setstart, Array< int const > const &setind, Array< double const > const &refval)
  Used to load a mixed integer quadratic problem with quadratic constraints into the Optimizer data structure.
 
void  loadMIQCQP (std::optional< std::string > const &probname, int ncols, int nrows, Array< char const > const &rowtype, Array< double const > const &rhs, Array< double const > const &rng, Array< double const > const &objcoef, Array< XPRSint64 const > const &start, Array< int const > const &collen, Array< int const > const &rowind, Array< double const > const &rowcoef, Array< double const > const &lb, Array< double const > const &ub, XPRSint64 nobjqcoefs, Array< int const > const &objqcol1, Array< int const > const &objqcol2, Array< double const > const &objqcoef, int nqrows, Array< int const > const &qrowind, Array< XPRSint64 const > const &nrowqcoefs, Array< int const > const &rowqcol1, Array< int const > const &rowqcol2, Array< double const > const &rowqcoef, int nentities, int nsets, Array< char const > const &coltype, Array< int const > const &entind, Array< double const > const &limit, Array< char const > const &settype, Array< XPRSint64 const > const &setstart, Array< int const > const &setind, Array< double const > const &refval)
  Used to load a mixed integer quadratic problem with quadratic constraints into the Optimizer data structure.
 
void  loadMIQP (std::optional< std::string > const &probname, int ncols, int nrows, Array< char const > const &rowtype, Array< double const > const &rhs, Array< double const > const &rng, Array< double const > const &objcoef, Array< int const > const &start, Array< int const > const &collen, Array< int const > const &rowind, Array< double const > const &rowcoef, Array< double const > const &lb, Array< double const > const &ub, int nobjqcoefs, Array< int const > const &objqcol1, Array< int const > const &objqcol2, Array< double const > const &objqcoef, int nentities, int nsets, Array< char const > const &coltype, Array< int const > const &entind, Array< double const > const &limit, Array< char const > const &settype, Array< int const > const &setstart, Array< int const > const &setind, Array< double const > const &refval)
  Used to load a MIQP problem, hence a MIP with quadratic objective coefficients, into the Optimizer data structures.
 
void  loadMIQP (std::optional< std::string > const &probname, int ncols, int nrows, Array< char const > const &rowtype, Array< double const > const &rhs, Array< double const > const &rng, Array< double const > const &objcoef, Array< XPRSint64 const > const &start, Array< int const > const &collen, Array< int const > const &rowind, Array< double const > const &rowcoef, Array< double const > const &lb, Array< double const > const &ub, XPRSint64 nobjqcoefs, Array< int const > const &objqcol1, Array< int const > const &objqcol2, Array< double const > const &objqcoef, int nentities, int nsets, Array< char const > const &coltype, Array< int const > const &entind, Array< double const > const &limit, Array< char const > const &settype, Array< XPRSint64 const > const &setstart, Array< int const > const &setind, Array< double const > const &refval)
  Used to load a MIQP problem, hence a MIP with quadratic objective coefficients, into the Optimizer data structures.
 
void  loadModelCuts (int nrows, Array< int const > const &rowind)
  Specifies that a set of rows in the matrix will be treated as model cuts.
 
void  loadPresolveBasis (Array< int const > const &rowstat, Array< int const > const &colstat)
  Loads a presolved basis from the user's areas.
 
void  loadPresolveDirs (int ndirs, Array< int const > const &colind, Array< int const > const &priority, Array< char const > const &dir, Array< double const > const &uppseudo, Array< double const > const &downpseudo)
  Loads directives into the presolved matrix.
 
void  loadQCQP (std::optional< std::string > const &probname, int ncols, int nrows, Array< char const > const &rowtype, Array< double const > const &rhs, Array< double const > const &rng, Array< double const > const &objcoef, Array< int const > const &start, Array< int const > const &collen, Array< int const > const &rowind, Array< double const > const &rowcoef, Array< double const > const &lb, Array< double const > const &ub, int nobjqcoefs, Array< int const > const &objqcol1, Array< int const > const &objqcol2, Array< double const > const &objqcoef, int nqrows, Array< int const > const &qrowind, Array< int const > const &nrowqcoef, Array< int const > const &rowqcol1, Array< int const > const &rowqcol2, Array< double const > const &rowqcoef)
  Used to load a quadratic problem with quadratic side constraints into the Optimizer data structure.
 
void  loadQCQP (std::optional< std::string > const &probname, int ncols, int nrows, Array< char const > const &rowtype, Array< double const > const &rhs, Array< double const > const &rng, Array< double const > const &objcoef, Array< XPRSint64 const > const &start, Array< int const > const &collen, Array< int const > const &rowind, Array< double const > const &rowcoef, Array< double const > const &lb, Array< double const > const &ub, XPRSint64 nobjqcoefs, Array< int const > const &objqcol1, Array< int const > const &objqcol2, Array< double const > const &objqcoef, int nqrows, Array< int const > const &qrowind, Array< XPRSint64 const > const &nrowqcoef, Array< int const > const &rowqcol1, Array< int const > const &rowqcol2, Array< double const > const &rowqcoef)
  Used to load a quadratic problem with quadratic side constraints into the Optimizer data structure.
 
void  loadQP (std::optional< std::string > const &probname, int ncols, int nrows, Array< char const > const &rowtype, Array< double const > const &rhs, Array< double const > const &rng, Array< double const > const &objcoef, Array< int const > const &start, Array< int const > const &collen, Array< int const > const &rowind, Array< double const > const &rowcoef, Array< double const > const &lb, Array< double const > const &ub, int nobjqcoefs, Array< int const > const &objqcol1, Array< int const > const &objqcol2, Array< double const > const &objqcoef)
  Used to load a quadratic problem into the Optimizer data structure.
 
void  loadQP (std::optional< std::string > const &probname, int ncols, int nrows, Array< char const > const &rowtype, Array< double const > const &rhs, Array< double const > const &rng, Array< double const > const &objcoef, Array< XPRSint64 const > const &start, Array< int const > const &collen, Array< int const > const &rowind, Array< double const > const &rowcoef, Array< double const > const &lb, Array< double const > const &ub, XPRSint64 nobjqcoefs, Array< int const > const &objqcol1, Array< int const > const &objqcol2, Array< double const > const &objqcoef)
  Used to load a quadratic problem into the Optimizer data structure.
 
void  loadSecureVecs (int nrows, int ncols, Array< int const > const &rowind, Array< int const > const &colind)
  Allows the user to mark rows and columns in order to prevent the presolve removing these rows and columns from the matrix.
 
void  lpOptimize ()
  This function begins a search for the optimal continuous (LP) solution.
 
void  lpOptimize (std::optional< std::string > const &flags)
  This function begins a search for the optimal continuous (LP) solution.
 
void  mipOptimize ()
  This function begins a tree search for the optimal MIP solution.
 
void  mipOptimize (std::optional< std::string > const &flags)
  This function begins a tree search for the optimal MIP solution.
 
void  msAddCustomPreset (std::optional< std::string > const &description, int preset, int maxjobs, int ninitial, Array< int const > const &colind, Array< double const > const &initial, int nintcontrols, Array< int const > const &intcontrolid, Array< int const > const &intcontrolval, int ndblcontrols, Array< int const > const &dblcontrolid, Array< double const > const &dblcontrolval, void *data)
  A combined version of XSLPmsaddjob and XSLPmsaddpreset.
 
void  msAddJob (std::optional< std::string > const &description, int ninitial, Array< int const > const &colind, Array< double const > const &initial, int nintcontrols, Array< int const > const &intcontrolid, Array< int const > const &intcontrolval, int ndblcontrols, Array< int const > const &dblcontrolid, Array< double const > const &dblcontrolval, void *data)
  Adds a multistart job to the multistart pool.
 
void  msAddPreset (std::optional< std::string > const &description, int preset, int maxjobs, void *data)
  Loads a preset of jobs into the multistart job pool.
 
void  msClear ()
  Removes all scheduled jobs from the multistart job pool.
 
auto  newBranchObject (bool isOriginal) -> BranchObject *
  Create a new branching object.
 
auto  nextIIS () -> int
  Continues the search for further Irreducible Infeasible Sets (IIS), or calls XPRSiisfirst (IIS) if no IIS has been identified yet.
 
void  nlpAddFormulas (int ncoefs, Array< int const > const &rowind, Array< int const > const &formulastart, int parsed, Array< int const > const &type, Array< double const > const &value)
  Add non-linear formulas to the SLP problem.
 
auto  nlpAddUserFunction (std::optional< std::string > funcname, int nIn, int nOut, int options, MultiMapDeltaFunctor functor) -> xpress::XPRSProblem::MultiMapDeltaFunction *
  Register a user function of type "multi map with partial derivatives".
 
auto  nlpAddUserFunction (std::optional< std::string > funcname, int nIn, int nOut, int options, MultiMapFunctor functor) -> xpress::XPRSProblem::MultiMapFunction *
  Register a user function of type "multi map".
 
auto  nlpAddUserFunction (std::optional< std::string > funcname, int nIn, int options, VecMapDeltaFunctor functor) -> xpress::XPRSProblem::VecMapDeltaFunction *
  Register a user function of type "vector map with partial derivatives".
 
auto  nlpAddUserFunction (std::optional< std::string > funcname, int nIn, int options, VecMapFunctor functor) -> xpress::XPRSProblem::VecMapFunction *
  Register a user function of type "vector map".
 
auto  nlpAddUserFunction (std::optional< std::string > funcname, int options, MapDeltaFunctor functor) -> xpress::XPRSProblem::MapDeltaFunction *
  Register a user function of type "map with derivative".
 
auto  nlpAddUserFunction (std::optional< std::string > funcname, int options, MapFunctor functor) -> xpress::XPRSProblem::MapFunction *
  Register a user function of type "map".
 
void  nlpCalcSlacks (Array< double const > const &solution, Array< double > const &slack)
  Calculate the slack values for the provided solution in the non-linear problem.
 
void  nlpChgFormula (int row, int parsed, Array< int const > const &type, Array< double const > const &value)
  Add or replace a single matrix formula using a parsed or unparsed formula.
 
void  nlpChgFormulaStr (int row, std::optional< std::string > const &formula)
  Add or replace a single matrix formula using a character string for the formula.
 
void  nlpCurrentIV ()
  Transfer the current solution to initial values.
 
void  nlpDelFormulas (int nformulas, Array< int const > const &rowind)
  Delete nonlinear formulas from the current problem.
 
void  nlpDelUserFunction (int type)
  Delete a user function from the current problem.
 
auto  nlpEvaluateFormula (int parsed, Array< int const > const &type, Array< double const > const &values) -> double
  Evaluate a formula using the current values of the variables.
 
void  nlpGetFormula (int row, int parsed, int maxtypes, int *p_ntypes, Array< int > const &type, Array< double > const &value)
  Retrieve a single matrix formula as a formula split into tokens.
 
void  nlpGetFormulaRows (int *p_nformulas, Array< int > const &rowind)
  Retrieve the list of positions of the nonlinear formulas in the problem.
 
void  nlpGetFormulaStr (int row, char *formula, int maxbytes, int *p_nbytes)
  Retrieve a single matrix formula in a character string.
 
void  nlpImportLibFunc (std::optional< std::string > const &libname, std::optional< std::string > const &funcname, XPRSfunctionptr *p_function, int *p_status)
  Imports a function from a library file to be called as a user function.
 
void  nlpLoadFormulas (int nnlpcoefs, Array< int const > const &rowind, Array< int const > const &formulastart, int parsed, Array< int const > const &type, Array< double const > const &value)
  Load non-linear formulas into the SLP problem.
 
void  nlpOptimize (std::optional< std::string > const &flags)
  Maximize or minimize an SLP problem.
 
void  nlpPostsolveProb ()
  Restores the problem to its pre-solve state.
 
void  nlpPrintEvalInfo ()
  Print a summary of any evaluation errors that may have occurred during solving a problem.
 
void  nlpSetFunctionError ()
  Set the function error flag for the problem.
 
void  nlpSetInitVal (int nvars, Array< int const > const &colind, Array< double const > const &initial)
  Set the initial value of a variable.
 
void  nlpValidate ()
  Validate the feasibility of constraints in a converged solution.
 
void  nlpValidateKKT (int mode, int respectbasis, int updatemult, double violtarget)
  Validates the first order optimality conditions also known as the Karush-Kuhn-Tucker (KKT) conditions versus the currect solution

 
void  nlpValidateRow (int row)
  Prints an extensive analysis on a given constraint of the SLP problem.
 
void  nlpValidateVector (Array< double const > const &solution, double *p_suminf, double *p_sumscaledinf, double *p_objval)
  Validate the feasibility of constraints for a given solution.
 
void  objSA (int ncols, Array< int const > const &colind, Array< double > const &lower, Array< double > const &upper)
  Returns upper and lower sensitivity ranges for specified objective function coefficients.
 
auto  optimize () -> int
  Convenience wrapper for optimize(std::optional<std::string> const &, int *, int *).
 
void  optimize (std::optional< std::string > const &flags, int *solvestatus, int *solstatus)
  This function begins a search for the optimal solution of the problem.
 
auto  optimize (std::optional< std::string > flags) -> int
  Convenience wrapper for optimize(std::optional<std::string> const &, int *, int *).
 
void  pivot (int enter, int leave)
  Performs a simplex pivot by bringing variable enter into the basis and removing leave.
 
void  postSolve ()
  Postsolve the current matrix when it is in a presolved state.
 
auto  postSolveSol (Array< double const > const &prex) -> std::vector< double >
  Postsolves a primal solution formulated in the presolved space into the corresponding solution formulated in the original space.
 
void  presolveRow (char rowtype, int norigcoefs, Array< int const > const &origcolind, Array< double const > const &origrowcoef, double origrhs, int maxcoefs, int *p_ncoefs, Array< int > const &colind, Array< double > const &rowcoef, double *p_rhs, int *p_status)
  Presolves a row formulated in terms of the original variables such that it can be added to a presolved matrix.
 
auto  presolveRow (xpress::SizedArray< int const > const &ind, xpress::SizedArray< double const > const &val, char type, double rhs) -> std::optional< xpress::XPRSProblem::RowInfo >
  Presolve a row.
 
auto  presolveRow (xpress::XPRSProblem::RowInfo row) -> std::optional< xpress::XPRSProblem::RowInfo >
  Presolve a row.
 
void  printIIS (int iis)
  Prints a given Irreducible Infeasible Set (IIS) in the log.
 
void  readBasis ()
  Instructs the Optimizer to read in a previously saved basis from a file.
 
void  readBasis (std::optional< std::string > const &filename)
  Instructs the Optimizer to read in a previously saved basis from a file.
 
void  readBasis (std::optional< std::string > const &filename, std::optional< std::string > const &flags)
  Instructs the Optimizer to read in a previously saved basis from a file.
 
void  readBinSol ()
  Reads a solution from a binary solution file.
 
void  readBinSol (std::optional< std::string > const &filename)
  Reads a solution from a binary solution file.
 
void  readBinSol (std::optional< std::string > const &filename, std::optional< std::string > const &flags)
  Reads a solution from a binary solution file.
 
void  readDirs ()
  Reads a directives file to help direct the tree search.
 
void  readDirs (std::optional< std::string > const &filename)
  Reads a directives file to help direct the tree search.
 
void  readProb (std::optional< std::string > const &filename)
  Reads an (X)MPS or LP format matrix from file.
 
void  readProb (std::optional< std::string > const &filename, std::optional< std::string > const &flags)
  Reads an (X)MPS or LP format matrix from file.
 
void  readSlxSol ()
  Reads an ASCII solution file [.slx] created by the XPRSwriteslxsol function.
 
void  readSlxSol (std::optional< std::string > const &filename)
  Reads an ASCII solution file [.slx] created by the XPRSwriteslxsol function.
 
void  readSlxSol (std::optional< std::string > const &filename, std::optional< std::string > const &flags)
  Reads an ASCII solution file [.slx] created by the XPRSwriteslxsol function.
 
void  removeAfterObjectiveCallback (CallbackHandle const &callback)
  Remove an afterobjective callback.
 
void  removeAfterObjectiveCallbacks ()
  Remove all afterobjective callbacks.
 
void  removeBarIterationCallback (CallbackHandle const &callback)
  Remove a bariteration callback.
 
void  removeBarIterationCallbacks ()
  Remove all bariteration callbacks.
 
void  removeBarlogCallback (CallbackHandle const &callback)
  Remove a barlog callback.
 
void  removeBarlogCallbacks ()
  Remove all barlog callbacks.
 
void  removeBeforeObjectiveCallback (CallbackHandle const &callback)
  Remove a beforeobjective callback.
 
void  removeBeforeObjectiveCallbacks ()
  Remove all beforeobjective callbacks.
 
void  removeBeforeSolveCallback (CallbackHandle const &callback)
  Remove a beforesolve callback.
 
void  removeBeforeSolveCallbacks ()
  Remove all beforesolve callbacks.
 
void  removeChangeBranchObjectCallback (CallbackHandle const &callback)
  Remove a changebranchobject callback.
 
void  removeChangeBranchObjectCallbacks ()
  Remove all changebranchobject callbacks.
 
void  removeCheckTimeCallback (CallbackHandle const &callback)
  Remove a checktime callback.
 
void  removeCheckTimeCallbacks ()
  Remove all checktime callbacks.
 
void  removeComputeRestartCallback (CallbackHandle const &callback)
  Remove a computerestart callback.
 
void  removeComputeRestartCallbacks ()
  Remove all computerestart callbacks.
 
void  removeCutlogCallback (CallbackHandle const &callback)
  Remove a cutlog callback.
 
void  removeCutlogCallbacks ()
  Remove all cutlog callbacks.
 
void  removeGapNotifyCallback (CallbackHandle const &callback)
  Remove a gapnotify callback.
 
void  removeGapNotifyCallbacks ()
  Remove all gapnotify callbacks.
 
void  removeInfnodeCallback (CallbackHandle const &callback)
  Remove an infnode callback.
 
void  removeInfnodeCallbacks ()
  Remove all infnode callbacks.
 
void  removeIntsolCallback (CallbackHandle const &callback)
  Remove an intsol callback.
 
void  removeIntsolCallbacks ()
  Remove all intsol callbacks.
 
void  removeLplogCallback (CallbackHandle const &callback)
  Remove a lplog callback.
 
void  removeLplogCallbacks ()
  Remove all lplog callbacks.
 
void  removeMessageCallback (CallbackHandle const &callback)
  Remove a message callback.
 
void  removeMessageCallbacks ()
  Remove all message callbacks.
 
void  removeMiplogCallback (CallbackHandle const &callback)
  Remove a miplog callback.
 
void  removeMiplogCallbacks ()
  Remove all miplog callbacks.
 
void  removeMipThreadCallback (CallbackHandle const &callback)
  Remove a mipthread callback.
 
void  removeMipThreadCallbacks ()
  Remove all mipthread callbacks.
 
void  removeMipThreadDestroyCallback (CallbackHandle const &callback)
  Remove a mipthreaddestroy callback.
 
void  removeMipThreadDestroyCallbacks ()
  Remove all mipthreaddestroy callbacks.
 
void  removeMsJobEndCallback (CallbackHandle const &callback)
  Remove a msjobend callback.
 
void  removeMsJobEndCallbacks ()
  Remove all msjobend callbacks.
 
void  removeMsJobStartCallback (CallbackHandle const &callback)
  Remove a msjobstart callback.
 
void  removeMsJobStartCallbacks ()
  Remove all msjobstart callbacks.
 
void  removeMsWinnerCallback (CallbackHandle const &callback)
  Remove a mswinner callback.
 
void  removeMsWinnerCallbacks ()
  Remove all mswinner callbacks.
 
void  removeNewnodeCallback (CallbackHandle const &callback)
  Remove a newnode callback.
 
void  removeNewnodeCallbacks ()
  Remove all newnode callbacks.
 
void  removeNlpCoefEvalErrorCallback (CallbackHandle const &callback)
  Remove a nlpcoefevalerror callback.
 
void  removeNlpCoefEvalErrorCallbacks ()
  Remove all nlpcoefevalerror callbacks.
 
void  removeNodecutoffCallback (CallbackHandle const &callback)
  Remove a nodecutoff callback.
 
void  removeNodecutoffCallbacks ()
  Remove all nodecutoff callbacks.
 
void  removeNodeLPSolvedCallback (CallbackHandle const &callback)
  Remove a nodelpsolved callback.
 
void  removeNodeLPSolvedCallbacks ()
  Remove all nodelpsolved callbacks.
 
void  removeOptnodeCallback (CallbackHandle const &callback)
  Remove an optnode callback.
 
void  removeOptnodeCallbacks ()
  Remove all optnode callbacks.
 
void  removePreIntsolCallback (CallbackHandle const &callback)
  Remove a preintsol callback.
 
void  removePreIntsolCallbacks ()
  Remove all preintsol callbacks.
 
void  removePrenodeCallback (CallbackHandle const &callback)
  Remove a prenode callback.
 
void  removePrenodeCallbacks ()
  Remove all prenode callbacks.
 
void  removePresolveCallback (CallbackHandle const &callback)
  Remove a presolve callback.
 
void  removePresolveCallbacks ()
  Remove all presolve callbacks.
 
void  removeSlpCascadeEndCallback (CallbackHandle const &callback)
  Remove a slpcascadeend callback.
 
void  removeSlpCascadeEndCallbacks ()
  Remove all slpcascadeend callbacks.
 
void  removeSlpCascadeStartCallback (CallbackHandle const &callback)
  Remove a slpcascadestart callback.
 
void  removeSlpCascadeStartCallbacks ()
  Remove all slpcascadestart callbacks.
 
void  removeSlpCascadeVarCallback (CallbackHandle const &callback)
  Remove a slpcascadevar callback.
 
void  removeSlpCascadeVarCallbacks ()
  Remove all slpcascadevar callbacks.
 
void  removeSlpCascadeVarFailCallback (CallbackHandle const &callback)
  Remove a slpcascadevarfail callback.
 
void  removeSlpCascadeVarFailCallbacks ()
  Remove all slpcascadevarfail callbacks.
 
void  removeSlpConstructCallback (CallbackHandle const &callback)
  Remove a slpconstruct callback.
 
void  removeSlpConstructCallbacks ()
  Remove all slpconstruct callbacks.
 
void  removeSlpDrColCallback (CallbackHandle const &callback)
  Remove a slpdrcol callback.
 
void  removeSlpDrColCallbacks ()
  Remove all slpdrcol callbacks.
 
void  removeSlpIntSolCallback (CallbackHandle const &callback)
  Remove a slpintsol callback.
 
void  removeSlpIntSolCallbacks ()
  Remove all slpintsol callbacks.
 
void  removeSlpIterEndCallback (CallbackHandle const &callback)
  Remove a slpiterend callback.
 
void  removeSlpIterEndCallbacks ()
  Remove all slpiterend callbacks.
 
void  removeSlpIterStartCallback (CallbackHandle const &callback)
  Remove a slpiterstart callback.
 
void  removeSlpIterStartCallbacks ()
  Remove all slpiterstart callbacks.
 
void  removeSlpIterVarCallback (CallbackHandle const &callback)
  Remove a slpitervar callback.
 
void  removeSlpIterVarCallbacks ()
  Remove all slpitervar callbacks.
 
void  removeSlpPreUpdateLinearizationCallback (CallbackHandle const &callback)
  Remove a slppreupdatelinearization callback.
 
void  removeSlpPreUpdateLinearizationCallbacks ()
  Remove all slppreupdatelinearization callbacks.
 
void  removeUserSolNotifyCallback (CallbackHandle const &callback)
  Remove an usersolnotify callback.
 
void  removeUserSolNotifyCallbacks ()
  Remove all usersolnotify callbacks.
 
auto  repairInfeas (char penalty, char phase2, char flags, double lepref, double gepref, double lbpref, double ubpref, double delta) -> int
  Provides a simplified interface for XPRSrepairweightedinfeas.
 
auto  repairWeightedInfeas (Array< double const > const &lepref, Array< double const > const &gepref, Array< double const > const &lbpref, Array< double const > const &ubpref, char phase2, double delta, std::optional< std::string > const &flags) -> int
  By relaxing a set of selected constraints and bounds of an infeasible problem, it attempts to identify a 'solution' that violates the selected set of constraints and bounds minimally, while satisfying all other constraints and bounds.
 
auto  repairWeightedInfeasBounds (Array< double const > const &lepref, Array< double const > const &gepref, Array< double const > const &lbpref, Array< double const > const &ubpref, Array< double const > const &lerelax, Array< double const > const &gerelax, Array< double const > const &lbrelax, Array< double const > const &ubrelax, char phase2, double delta, std::optional< std::string > const &flags) -> int
  An extended version of XPRSrepairweightedinfeas that allows for bounding the level of relaxation allowed.
 
void  restore ()
  Restores the Optimizer's data structures from a file created by XPRSsave (SAVE).
 
void  restore (std::optional< std::string > const &probname)
  Restores the Optimizer's data structures from a file created by XPRSsave (SAVE).
 
void  restore (std::optional< std::string > const &probname, std::optional< std::string > const &flags)
  Restores the Optimizer's data structures from a file created by XPRSsave (SAVE).
 
void  rhsSA (int nrows, Array< int const > const &rowind, Array< double > const &lower, Array< double > const &upper)
  Returns upper and lower sensitivity ranges for specified right hand side (RHS) function coefficients.
 
void  save ()
  Saves the current data structures, i.e.
 
void  saveAs (std::optional< std::string > const &sSaveFileName)
  Saves the current data structures, i.e.
 
void  scale (Array< int const > const &rowscale, Array< int const > const &colscale)
  Re-scales the current matrix.
 
void  setDblControl (int control, double value)
  Sets the value of a given double control parameter.
 
void  setDefaultControl (int control)
  Sets a single control to its default value.
 
void  setDefaults ()
  Sets all controls to their default values.
 
auto  setIndicator (int rowind, int colind, int complement) -> void
  Add a single indicator constraint.
 
void  setIndicators (int nrows, Array< int const > const &rowind, Array< int const > const &colind, Array< int const > const &complement)
  Specifies that a set of rows in the matrix will be treated as indicator constraints during a tree search.
 
void  setIntControl (int control, int value)
  Sets the value of a given integer control parameter.
 
void  setLogFile (std::optional< std::string > const &filename)
  This directs all Optimizer output to a log file.
 
void  setLongControl (int control, XPRSint64 value)
  Sets the value of a given integer control parameter.
 
void  setMessageStatus (int msgcode, int status)
  Manages suppression of messages.
 
void  setObjDblControl (int objidx, ObjControl control, double value)
  Sets the value of a given double control parameter associated with an objective.
 
auto  setObjective (xpress::SizedArray< int const > const &ind, xpress::SizedArray< double const > const &val) -> void
  Set objective to a linear function.
 
auto  setObjective (xpress::SizedArray< int const > const &ind, xpress::SizedArray< double const > const &val, xpress::ObjSense sense) -> void
  Set objective to a linear function.
 
void  setObjIntControl (int objidx, ObjControl control, int value)
  Sets the value of a given integer control parameter associated with an objective.
 
void  setProbName (std::optional< std::string > const &probname)
  Sets the current default problem name.
 
void  setStrControl (int control, std::optional< std::string > const &value)
  Used to set the value of a given string control parameter.
 
void  slpAddCoefs (int ncoefs, Array< int const > const &rowind, Array< int const > const &colind, Array< double const > const &factor, Array< int const > const &formulastart, int parsed, Array< int const > const &type, Array< double const > const &value)
  Add non-linear coefficients to the SLP problem.
 
void  slpCascadeOrder ()
  Establish a re-calculation sequence for SLP variables with determining rows.
 
void  slpCascadeSol ()
  Re-calculate consistent values for SLP variables based on the current values of the remaining variables.
 
void  slpChgCascadeNLimit (int col, int limit)
  Set a variable specific cascade iteration limit.
 
void  slpChgCoef (int row, int col, double *factor, int parsed, Array< int const > const &type, Array< double const > const &value)
  Add or change a single matrix coefficient using a parsed or unparsed formula.
 
void  slpChgCoefStr (int row, int col, double *factor, std::optional< std::string > const &formula)
  Add or change a single matrix coefficient using a character string for the formula.
 
void  slpChgDeltaType (int nvars, Array< int const > const &varind, Array< int const > const &deltatypes, Array< double const > const &values)
  Changes the type of the delta assigned to a nonlinear variable.
 
auto  slpChgRowStatus (int row) -> int
  Change the status setting of a constraint.
 
void  slpChgRowWt (int row, double *weight)
  Set or change the initial penalty error weight for a row.
 
void  slpConstruct ()
  Create the full augmented SLP matrix and data structures, ready for optimization.
 
void  slpDelCoefs (int ncoefs, Array< int const > const &rowind, Array< int const > const &colind)
  Delete coefficients from the current problem.
 
auto  slpEvaluateCoef (int row, int col) -> double
  Evaluate a coefficient using the current values of the variables.
 
void  slpFixPenalties (int *p_status)
  Fixe the values of the error vectors.
 
void  slpGetCoefFormula (int row, int col, double *p_factor, int parsed, int maxtypes, int *p_ntypes, Array< int > const &type, Array< double > const &value)
  Retrieve a single matrix coefficient as a formula split into tokens.
 
void  slpGetCoefs (int *p_ncoefs, Array< int > const &rowind, Array< int > const &colind)
  Retrieve the list of positions of the nonlinear coefficients in the problem.
 
void  slpGetCoefStr (int row, int col, double *p_factor, char *formula, int maxbytes, int *p_nbytes)
  Retrieve a single matrix coefficient as a formula in a character string.
 
void  slpGetRowStatus (int row, int *p_status)
  Retrieve the status setting of a constraint.
 
auto  slpGetRowWT (int row) -> double
  Get the initial penalty error weight for a row.
 
void  slpLoadCoefs (int ncoefs, Array< int const > const &rowind, Array< int const > const &colind, Array< double const > const &factor, Array< int const > const &formulastart, int parsed, Array< int const > const &type, Array< double const > const &coef)
  Load non-linear coefficients into the SLP problem.
 
void  slpReInitialize ()
  Reset the SLP problem to match a just augmented system.
 
void  slpSetDetRow (int nvars, Array< int const > const &colind, Array< int const > const &rowind)
  Set the determining row of a variable.
 
void  slpUnConstruct ()
  Removes the augmentation and returns the problem to its pre-linearization state.
 
void  slpUpdateLinearization ()
  Updates the current linearization.
 
void  sparseBTran (Array< double > const &val, Array< int > const &ind, int *p_ncoefs)
  Post-multiplies a (row) vector provided by the user by the inverse of the current matrix.
 
void  sparseFTran (Array< double > const &val, Array< int > const &ind, int *p_ncoefs)
  Pre-multiplies a (column) vector provided by the user by the inverse of the current matrix.
 
auto  storeCuts (int ncuts, int nodups, Array< int const > const &cuttype, Array< char const > const &rowtype, Array< double const > const &rhs, Array< int const > const &start, Array< int const > const &colind, Array< double const > const &cutcoef) -> std::vector< XPRScut >
  Stores cuts into the cut pool, but does not apply them to the current node.
 
auto  storeCuts (int ncuts, int nodups, Array< int const > const &cuttype, Array< char const > const &rowtype, Array< double const > const &rhs, Array< XPRSint64 const > const &start, Array< int const > const &colind, Array< double const > const &cutcoef) -> std::vector< XPRScut >
  Stores cuts into the cut pool, but does not apply them to the current node.
 
void  strongBranch (int nbounds, Array< int const > const &colind, Array< char const > const &bndtype, Array< double const > const &bndval, int iterlim, Array< double > const &objval, Array< int > const &status)
  Performs strong branching iterations on all specified bound changes.
 
void  strongBranchCB (int nbounds, Array< int const > const &colind, Array< char const > const &bndtype, Array< double const > const &bndval, int iterlim, Array< double > const &objval, Array< int > const &status, std::function< int(XPRSProblem &, int)> callback)
  Performs strong branching iterations on all specified bound changes.
 
void  tune (std::optional< std::string > const &flags)
  This function begins a tuner session for the current problem.
 
void  tuneProbSetFile (std::optional< std::string > const &setfile, int ifmip, int sense)
  This function begins a tuner session for a set of problems.
 
void  tunerReadMethod (std::optional< std::string > const &methodfile)
  This function loads a user defined tuner method from the given file.
 
void  tunerWriteMethod (std::optional< std::string > const &methodfile)
  This function writes the current tuner method to a given file or prints it to the console.
 
void  unloadProb ()
  Unloads and frees all memory associated with the current problem.
 
void  writeBasis ()
  Writes the current basis to a file for later input into the Optimizer.
 
void  writeBasis (std::optional< std::string > const &filename)
  Writes the current basis to a file for later input into the Optimizer.
 
void  writeBasis (std::optional< std::string > const &filename, std::optional< std::string > const &flags)
  Writes the current basis to a file for later input into the Optimizer.
 
void  writeBinSol ()
  Writes the current MIP or LP solution to a binary solution file for later input into the Optimizer.
 
void  writeBinSol (std::optional< std::string > const &filename)
  Writes the current MIP or LP solution to a binary solution file for later input into the Optimizer.
 
void  writeBinSol (std::optional< std::string > const &filename, std::optional< std::string > const &flags)
  Writes the current MIP or LP solution to a binary solution file for later input into the Optimizer.
 
void  writeDirs ()
  Writes the tree search directives from the current problem to a directives file.
 
void  writeDirs (std::optional< std::string > const &filename)
  Writes the tree search directives from the current problem to a directives file.
 
void  writeIIS (int iis, std::optional< std::string > const &filename, int filetype)
  Writes an LP/MPS/CSV file containing a given Irreducible Infeasible Set (IIS).
 
void  writeIIS (int iis, std::optional< std::string > const &filename, int filetype, std::optional< std::string > const &flags)
  Writes an LP/MPS/CSV file containing a given Irreducible Infeasible Set (IIS).
 
void  writeProb ()
  Writes the current problem to an MPS or LP file.
 
void  writeProb (std::optional< std::string > const &filename)
  Writes the current problem to an MPS or LP file.
 
void  writeProb (std::optional< std::string > const &filename, std::optional< std::string > const &flags)
  Writes the current problem to an MPS or LP file.
 
void  writePrtSol ()
  Writes the current solution to a fixed format ASCII file, problem_name .prt.
 
void  writePrtSol (std::optional< std::string > const &filename)
  Writes the current solution to a fixed format ASCII file, problem_name .prt.
 
void  writePrtSol (std::optional< std::string > const &filename, std::optional< std::string > const &flags)
  Writes the current solution to a fixed format ASCII file, problem_name .prt.
 
void  writeSlxSol ()
  Creates an ASCII solution file (.slx) using a similar format to MPS files.
 
void  writeSlxSol (std::optional< std::string > const &filename)
  Creates an ASCII solution file (.slx) using a similar format to MPS files.
 
void  writeSlxSol (std::optional< std::string > const &filename, std::optional< std::string > const &flags)
  Creates an ASCII solution file (.slx) using a similar format to MPS files.
 
void  writeSol ()
  Writes the current solution to a CSV format ASCII file, problem_name.asc (and .hdr).
 
void  writeSol (std::optional< std::string > const &filename)
  Writes the current solution to a CSV format ASCII file, problem_name.asc (and .hdr).
 
void  writeSol (std::optional< std::string > const &filename, std::optional< std::string > const &flags)
  Writes the current solution to a CSV format ASCII file, problem_name.asc (and .hdr).
 

Static Public Member Functions

static void  console (XpressProblem &prob, char const *msg, int msglen, int msgtype)
  Default implementation for message listener.
 
static auto  isNullVariable (Variable v) -> bool
  Check whether a variable is the same as NULL_VARIABLE.
 
 Static Public Member Functions inherited from xpress::XPRSProblem
static void  console (XPRSProblem &prob, char const *msg, int msglen, int msgtype)
  Default implementation for message listener.
 

Public Attributes

CallbackAPI  callbacks
  Callbacks for this problem.
 
 Public Attributes inherited from xpress::XPRSProblem
Attributes  attributes
  Attributess for this problem.
 
Controls  controls
  Controlss for this problem.
 

Static Public Attributes

static Variable const  NULL_VARIABLE = Variable(nullptr, -1, xpress::objects::XpressProblem::NULL_VARIABLE_INDEX )
  Variable object that is used to indicate a constant term in expressions that are implemented as maps.
 
 Static Public Attributes inherited from xpress::XPRSProblem
static constexpr char const  EQ = 'E'
  Constraint sense for == constraints.
 
static constexpr char const  GEQ = 'G'
  Constraint sense for >= constraints.
 
static constexpr char const  LEQ = 'L'
  Constraint sense for <= constraints.
 

Additional Inherited Members

 Public Types inherited from xpress::XPRSProblem
 Protected Member Functions inherited from xpress::XPRSProblem
  XPRSProblem (XPRSprob p)
  Create a new instance from an existing low-level pointer.
 

Detailed Description

Optimizer interface that allows modeling by objects.

Constructor & Destructor Documentation

XpressProblem() [1/3]

xpress::objects::XpressProblem::XpressProblem ( )
inline

Create a problem without internal name.

If not yet done then Xpress is initialized with the license found at the default license location. If Xpress is initialized this way then it will be automatically de-initialized once the newly created problem instance is closed.

Since
44.00

XpressProblem() [2/3]

xpress::objects::XpressProblem::XpressProblem ( std::optional< std::string > problemName )
inline

Create a problem with internal name.

If not yet done then Xpress is initialized with the license found at the default license location. If Xpress is initialized this way then it will be automatically de-initialized once the newly created problem instance is closed.

Parameters
problemName Internal name of problem, can be std::nullopt.
Since
44.00

XpressProblem() [3/3]

xpress::objects::XpressProblem::XpressProblem ( std::optional< std::string > problemName,
std::optional< std::string > licensePath )
inline

Create a problem with internal name and non-default license.

If not yet done then Xpress is initialized with the license found at licensePath. If Xpress is initialized this way then it will be automatically de-initialized once the newly created problem instance is closed.

Parameters
problemName Internal name of problem, can be std::nullopt.
licensePath Path to license location. Can be std::nullopt or the empty string to indicate that the license is in the default location.
Since
44.00

Member Function Documentation

addConstraint()

template<typename C >
auto xpress::objects::XpressProblem::addConstraint ( ConstraintDefinition< C > def ) -> C
inline

Add a single constraint to this problem.

Parameters
def Definition of the constraint to add.
Template Parameters
C Constraint type.
Returns
The constraint.
Since
44.00

addConstraints() [1/12]

template<typename I , typename T = typename std::iterator_traits<I>::value_type, typename Func0 , typename C = typename std::invoke_result<Func0,T>::type::constraint_type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,T>::type,ConstraintDefinition<C>>::value>::type>
auto xpress::objects::XpressProblem::addConstraints ( I dataBegin,
I dataEnd,
Func0 defs ) -> xpress::Iterable< std::pair< T, C > >
inline

Add multiple constraints of the same type to the problem.

Calls the specified functions for each element in data and adds a constraint as specified by the return values of the functions.

Parameters
dataBegin Pointer to first data element.
dataEnd Pointer to one past the last data element.
defs Function to produce the constraint definitions.
Template Parameters
I Iterator type.
T Data type
Func0 auto (T) -> ConstraintDefinition<C>: Maps (T) to ConstraintDefinition<C>.
C Constraint type.
Returns
The created constraint indexed by data.
Since
44.00

addConstraints() [2/12]

template<typename Func0 , typename C = typename std::invoke_result<Func0, int>::type::constraint_type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,int>::type,ConstraintDefinition<C>>::value>::type>
auto xpress::objects::XpressProblem::addConstraints ( int count,
Func0 defs ) -> xpress::Iterable< C >
inline

Add multiple constraints of the same type to the problem.

Calls the specified function for each element in [0, ..., count[ and adds a constraint as specified by the return value of the function.

Parameters
count Number of constraints to add.
defs Function to produce the constraints to add.
Template Parameters
Func0 auto (int) -> ConstraintDefinition<C>: Maps (int) to ConstraintDefinition<C>.
C Constraint type.
Returns
The constraints.
Since
44.00

addConstraints() [3/12]

template<typename Func0 , typename C = typename std::invoke_result<Func0,int ,int>::type::constraint_type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,int,int>::type,ConstraintDefinition<C>>::value>::type>
auto xpress::objects::XpressProblem::addConstraints ( int count1,
int count2,
Func0 makeConstraint ) -> void
inline

Add multiple constraints to this problem.

Calls makeConstraint for each element in the cartesian product of [0,count1[, ..., [0,countN[ and adds the constraint that is produced by this function call. A deep copy is made of each constraint, thus modifying the constraint later will not alter the model.

Parameters
count1 Length of dimension 1.
count2 Length of dimension 2.
makeConstraint Function to generate a constraint.
Template Parameters
Func0 auto (int,int) -> ConstraintDefinition<C>: Maps (int,int) to ConstraintDefinition<C>.
C The type of constraints.
Since
44.00

addConstraints() [4/12]

template<typename Func0 , typename C = typename std::invoke_result<Func0,int ,int ,int>::type::constraint_type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,int,int,int>::type,ConstraintDefinition<C>>::value>::type>
auto xpress::objects::XpressProblem::addConstraints ( int count1,
int count2,
int count3,
Func0 makeConstraint ) -> void
inline

Add multiple constraints to this problem.

Calls makeConstraint for each element in the cartesian product of [0,count1[, ..., [0,countN[ and adds the constraint that is produced by this function call. A deep copy is made of each constraint, thus modifying the constraint later will not alter the model.

Parameters
count1 Length of dimension 1.
count2 Length of dimension 2.
count3 Length of dimension 3.
makeConstraint Function to generate a constraint.
Template Parameters
Func0 auto (int,int,int) -> ConstraintDefinition<C>: Maps (int,int,int) to ConstraintDefinition<C>.
C The type of constraints.
Since
44.00

addConstraints() [5/12]

template<typename Func0 , typename C = typename std::invoke_result<Func0,int ,int ,int ,int>::type::constraint_type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,int,int,int,int>::type,ConstraintDefinition<C>>::value>::type>
auto xpress::objects::XpressProblem::addConstraints ( int count1,
int count2,
int count3,
int count4,
Func0 makeConstraint ) -> void
inline

Add multiple constraints to this problem.

Calls makeConstraint for each element in the cartesian product of [0,count1[, ..., [0,countN[ and adds the constraint that is produced by this function call. A deep copy is made of each constraint, thus modifying the constraint later will not alter the model.

Parameters
count1 Length of dimension 1.
count2 Length of dimension 2.
count3 Length of dimension 3.
count4 Length of dimension 4.
makeConstraint Function to generate a constraint.
Template Parameters
Func0 auto (int,int,int,int) -> ConstraintDefinition<C>: Maps (int,int,int,int) to ConstraintDefinition<C>.
C The type of constraints.
Since
44.00

addConstraints() [6/12]

template<typename Func0 , typename C = typename std::invoke_result<Func0,int ,int ,int ,int ,int>::type::constraint_type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,int,int,int,int,int>::type,ConstraintDefinition<C>>::value>::type>
auto xpress::objects::XpressProblem::addConstraints ( int count1,
int count2,
int count3,
int count4,
int count5,
Func0 makeConstraint ) -> void
inline

Add multiple constraints to this problem.

Calls makeConstraint for each element in the cartesian product of [0,count1[, ..., [0,countN[ and adds the constraint that is produced by this function call. A deep copy is made of each constraint, thus modifying the constraint later will not alter the model.

Parameters
count1 Length of dimension 1.
count2 Length of dimension 2.
count3 Length of dimension 3.
count4 Length of dimension 4.
count5 Length of dimension 5.
makeConstraint Function to generate a constraint.
Template Parameters
Func0 auto (int,int,int,int,int) -> ConstraintDefinition<C>: Maps (int,int,int,int,int) to ConstraintDefinition<C>.
C The type of constraints.
Since
44.00

addConstraints() [7/12]

template<typename Iter0 , typename Iter1 , typename K1 = typename Iter0::value_type, typename K2 = typename Iter1::value_type, typename Func0 , typename C = typename std::invoke_result<Func0,K1 ,K2>::type::constraint_type, typename Iter0IsIterable = typename std::enable_if<xpress::is_iterable<Iter0>::value>::type, typename Iter1IsIterable = typename std::enable_if<xpress::is_iterable<Iter1>::value>::type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,K1,K2>::type,ConstraintDefinition<C>>::value>::type>
auto xpress::objects::XpressProblem::addConstraints ( Iter0 const & iterable1,
Iter1 const & iterable2,
Func0 makeConstraint ) -> void
inline

Add multiple constraints to this problem.

Calls makeConstraint for each element in the cartesian product of the iterables and adds the constraint that is produced by this function call. A deep copy is made of each constraint, thus modifying the constraint later will not alter the model.

Parameters
iterable1 Keys for dimension 1.
iterable2 Keys for dimension 2.
makeConstraint Function to generate a constraint.
Template Parameters
Iter0 Something that supports begin() and end() and contains values of type K1.
Iter1 Something that supports begin() and end() and contains values of type K2.
K1 Data for dimension 1.
K2 Data for dimension 2.
Func0 auto (K1,K2) -> ConstraintDefinition<C>: Maps (K1,K2) to ConstraintDefinition<C>.
C The type of constraints.
Since
44.00

addConstraints() [8/12]

template<typename Iter0 , typename Iter1 , typename Iter2 , typename K1 = typename Iter0::value_type, typename K2 = typename Iter1::value_type, typename K3 = typename Iter2::value_type, typename Func0 , typename C = typename std::invoke_result<Func0,K1 ,K2 ,K3>::type::constraint_type, typename Iter0IsIterable = typename std::enable_if<xpress::is_iterable<Iter0>::value>::type, typename Iter1IsIterable = typename std::enable_if<xpress::is_iterable<Iter1>::value>::type, typename Iter2IsIterable = typename std::enable_if<xpress::is_iterable<Iter2>::value>::type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,K1,K2,K3>::type,ConstraintDefinition<C>>::value>::type>
auto xpress::objects::XpressProblem::addConstraints ( Iter0 const & iterable1,
Iter1 const & iterable2,
Iter2 const & iterable3,
Func0 makeConstraint ) -> void
inline

Add multiple constraints to this problem.

Calls makeConstraint for each element in the cartesian product of the iterables and adds the constraint that is produced by this function call. A deep copy is made of each constraint, thus modifying the constraint later will not alter the model.

Parameters
iterable1 Keys for dimension 1.
iterable2 Keys for dimension 2.
iterable3 Keys for dimension 3.
makeConstraint Function to generate a constraint.
Template Parameters
Iter0 Something that supports begin() and end() and contains values of type K1.
Iter1 Something that supports begin() and end() and contains values of type K2.
Iter2 Something that supports begin() and end() and contains values of type K3.
K1 Data for dimension 1.
K2 Data for dimension 2.
K3 Data for dimension 3.
Func0 auto (K1,K2,K3) -> ConstraintDefinition<C>: Maps (K1,K2,K3) to ConstraintDefinition<C>.
C The type of constraints.
Since
44.00

addConstraints() [9/12]

template<typename Iter0 , typename Iter1 , typename Iter2 , typename Iter3 , typename K1 = typename Iter0::value_type, typename K2 = typename Iter1::value_type, typename K3 = typename Iter2::value_type, typename K4 = typename Iter3::value_type, typename Func0 , typename C = typename std::invoke_result<Func0,K1 ,K2 ,K3 ,K4>::type::constraint_type, typename Iter0IsIterable = typename std::enable_if<xpress::is_iterable<Iter0>::value>::type, typename Iter1IsIterable = typename std::enable_if<xpress::is_iterable<Iter1>::value>::type, typename Iter2IsIterable = typename std::enable_if<xpress::is_iterable<Iter2>::value>::type, typename Iter3IsIterable = typename std::enable_if<xpress::is_iterable<Iter3>::value>::type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,K1,K2,K3,K4>::type,ConstraintDefinition<C>>::value>::type>
auto xpress::objects::XpressProblem::addConstraints ( Iter0 const & iterable1,
Iter1 const & iterable2,
Iter2 const & iterable3,
Iter3 const & iterable4,
Func0 makeConstraint ) -> void
inline

Add multiple constraints to this problem.

Calls makeConstraint for each element in the cartesian product of the iterables and adds the constraint that is produced by this function call. A deep copy is made of each constraint, thus modifying the constraint later will not alter the model.

Parameters
iterable1 Keys for dimension 1.
iterable2 Keys for dimension 2.
iterable3 Keys for dimension 3.
iterable4 Keys for dimension 4.
makeConstraint Function to generate a constraint.
Template Parameters
Iter0 Something that supports begin() and end() and contains values of type K1.
Iter1 Something that supports begin() and end() and contains values of type K2.
Iter2 Something that supports begin() and end() and contains values of type K3.
Iter3 Something that supports begin() and end() and contains values of type K4.
K1 Data for dimension 1.
K2 Data for dimension 2.
K3 Data for dimension 3.
K4 Data for dimension 4.
Func0 auto (K1,K2,K3,K4) -> ConstraintDefinition<C>: Maps (K1,K2,K3,K4) to ConstraintDefinition<C>.
C The type of constraints.
Since
44.00

addConstraints() [10/12]

template<typename Iter0 , typename Iter1 , typename Iter2 , typename Iter3 , typename Iter4 , typename K1 = typename Iter0::value_type, typename K2 = typename Iter1::value_type, typename K3 = typename Iter2::value_type, typename K4 = typename Iter3::value_type, typename K5 = typename Iter4::value_type, typename Func0 , typename C = typename std::invoke_result<Func0,K1 ,K2 ,K3 ,K4 ,K5>::type::constraint_type, typename Iter0IsIterable = typename std::enable_if<xpress::is_iterable<Iter0>::value>::type, typename Iter1IsIterable = typename std::enable_if<xpress::is_iterable<Iter1>::value>::type, typename Iter2IsIterable = typename std::enable_if<xpress::is_iterable<Iter2>::value>::type, typename Iter3IsIterable = typename std::enable_if<xpress::is_iterable<Iter3>::value>::type, typename Iter4IsIterable = typename std::enable_if<xpress::is_iterable<Iter4>::value>::type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,K1,K2,K3,K4,K5>::type,ConstraintDefinition<C>>::value>::type>
auto xpress::objects::XpressProblem::addConstraints ( Iter0 const & iterable1,
Iter1 const & iterable2,
Iter2 const & iterable3,
Iter3 const & iterable4,
Iter4 const & iterable5,
Func0 makeConstraint ) -> void
inline

Add multiple constraints to this problem.

Calls makeConstraint for each element in the cartesian product of the iterables and adds the constraint that is produced by this function call. A deep copy is made of each constraint, thus modifying the constraint later will not alter the model.

Parameters
iterable1 Keys for dimension 1.
iterable2 Keys for dimension 2.
iterable3 Keys for dimension 3.
iterable4 Keys for dimension 4.
iterable5 Keys for dimension 5.
makeConstraint Function to generate a constraint.
Template Parameters
Iter0 Something that supports begin() and end() and contains values of type K1.
Iter1 Something that supports begin() and end() and contains values of type K2.
Iter2 Something that supports begin() and end() and contains values of type K3.
Iter3 Something that supports begin() and end() and contains values of type K4.
Iter4 Something that supports begin() and end() and contains values of type K5.
K1 Data for dimension 1.
K2 Data for dimension 2.
K3 Data for dimension 3.
K4 Data for dimension 4.
K5 Data for dimension 5.
Func0 auto (K1,K2,K3,K4,K5) -> ConstraintDefinition<C>: Maps (K1,K2,K3,K4,K5) to ConstraintDefinition<C>.
C The type of constraints.
Since
44.00

addConstraints() [11/12]

template<typename Strm0 , typename T = typename Strm0::value_type, typename Func0 , typename C = typename std::invoke_result<Func0,T>::type::constraint_type, typename Strm0IsStream = typename std::enable_if<xpress::is_stream<Strm0>::value>::type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,T const &>::type,ConstraintDefinition<C>>::value>::type>
auto xpress::objects::XpressProblem::addConstraints ( Strm0 const & data,
Func0 defs ) -> xpress::Iterable< C >
inline

Add multiple constraints of the same type to the problem.

Calls the specified function for each element in data and adds a constraint as specified by the return value of the function.

Parameters
data Data to generate constraints.
defs Function to generate a constraint for each data element.
Template Parameters
Strm0 Something that supports begin() and end() and contains values of type T.
T Data type.
Func0 auto (T const &) -> ConstraintDefinition<C>: Maps (T const &) to ConstraintDefinition<C>.
C Constraint type.
Returns
The constraints.
Since
44.00

addConstraints() [12/12]

template<typename Strm0 , typename C = typename Strm0::value_type::constraint_type, typename Strm0IsStream = typename std::enable_if<xpress::is_stream<Strm0>::value>::type>
auto xpress::objects::XpressProblem::addConstraints ( Strm0 const & defs ) -> xpress::Iterable< C >
inline

Add multiple constraints of the same type to the problem.

Parameters
defs The constraints to add.
Template Parameters
Strm0 Something that supports begin() and end() and contains values of type ConstraintDefinition<C>.
C Constraint type.
Returns
The constraints.
Since
44.00

addCut()

auto xpress::objects::XpressProblem::addCut ( int cuttype,
InequalityDefinition cut ) -> int
inline

Add a cut at the current node.

It is assumed that the left-hand side (lhs) is formulated in terms of the original model. So you can use Variable instances to formulate it. When using plain variable indices, be sure these indices are for the original model. The function will automatically transform (presolve) the cut to the presolved space. If presolving the cut fails then the cut is not added and the reason for failure is returned. Failing to presolve (and thus adding) a cut is not a problem in every context. That is why this does not raise an exception but instead leaves it to the caller to decide whether this is an error or not.

Parameters
cuttype User defined cut type.
cut The inequality to add as cut.
Returns
0 (zero) if the cut was successfully added. Otherwise the status code from presolveRow that indicates why the cut could not be presolved. It is up to the caller to decide whether not being able to presolve the cut is a problem or not.
Since
44.00

addMipSol() [1/4]

void xpress::XPRSProblem::addMipSol ( int length,
Array< double const > const & solval,
Array< int const > const & colind,
std::optional< std::string > const & name )
inline

Adds a new feasible, infeasible or partial MIP solution for the problem to the Optimizer.

Parameters
length Number of columns for which a value is provided.
solval Double array of length length containing solution values.
colind Optional integer array of length length containing the column indices for the solution values provided in solval. Should be null when length is equal to COLS, in which case it is assumed that solval provides a complete solution vector.
name An optional name to associate with the solution. Can be null.

addMipSol() [2/4]

auto xpress::XPRSProblem::addMipSol ( xpress::SizedArray< double const > const & val,
xpress::SizedArray< int const > const & ind ) -> void
inline

Add a MIP solution.

This is a convenience wrapper for addMipSol(int, Array<double const> const&, Array<int const> const&, std::optional<std::string> const &).

Parameters
val objects.Variable values.
ind objects.Variable indices.
See also
addMipSol(int, Array<double const> const&, Array<int const> const&, std::optional<std::string> const &)
Since
44.00

addMipSol() [3/4]

auto xpress::XPRSProblem::addMipSol ( xpress::SizedArray< double const > const & val,
xpress::SizedArray< int const > const & ind,
std::optional< std::string > name ) -> void
inline

Add a MIP solution.

This is a convenience wrapper for addMipSol(int, Array<double const> const&, Array<int const> const&, std::optional<std::string> const &).

Parameters
val objects.Variable values.
ind objects.Variable indices.
name Name of solution.
See also
addMipSol(int, Array<double const> const&, Array<int const> const&, std::optional<std::string> const &)
Since
44.00

addMipSol() [4/4]

auto xpress::objects::XpressProblem::addMipSol ( xpress::SizedArray< double const > const & values,
xpress::SizedArray< Variable const > const & variables,
std::optional< std::string > name ) -> void
inline

Adds a feasible, infeasible or partial MIP solution for the problem to the Optimizer.

Parameters
values Values for variables.
variables Variables in the solution.
name Name for solution, can be std::nullopt.
Since
44.00

addObjective()

auto xpress::objects::XpressProblem::addObjective ( xpress::objects::Expression obj,
int priority,
double weight ) -> void
inline

Add a objective function.

This turns the problem into a multi-objective problem.

Parameters
obj The objective
priority Priority for objective.
weight Weight for objective.
Since
44.00

addVariable() [1/7]

auto xpress::objects::XpressProblem::addVariable ( ) -> xpress::objects::Variable
inline

Add a single variable to this problem.

This variable will be continuous, have default bounds (0 and infinity) and will not have a name.

Returns
The newly created variable.
Since
44.00

addVariable() [2/7]

auto xpress::objects::XpressProblem::addVariable ( ColumnType type ) -> xpress::objects::Variable
inline

Add a single variable to this problem.

The variable will have default bounds and no name.

Parameters
type Type for variable.
Returns
The newly created variable.
Since
44.00

addVariable() [3/7]

auto xpress::objects::XpressProblem::addVariable ( ColumnType type,
std::optional< std::string > name ) -> xpress::objects::Variable
inline

Add a single variable to this problem.

The variable will have default bounds.

Parameters
type Type for variable.
name Name for variable.
Returns
The newly created variable.
Since
44.00

addVariable() [4/7]

auto xpress::objects::XpressProblem::addVariable ( double lb,
double ub,
ColumnType type ) -> xpress::objects::Variable
inline

Add a single variable to this problem.

Parameters
lb Lower bound for variable.
ub Upper bound for variable.
type Type for variable.
Returns
The newly created variable.
Since
44.00

addVariable() [5/7]

auto xpress::objects::XpressProblem::addVariable ( double lb,
double ub,
ColumnType type,
double limit,
std::optional< std::string > name ) -> xpress::objects::Variable
inline

Add a single variable to this problem.

Parameters
lb Lower bound for variable.
ub Upper bound for variable.
type Type for variable.
limit Global limit for the variable. This is ignored unless the variable is semi-continuous, semi-integer or partial integer.
name Name for variable, can be std::nullopt.
Returns
The newly created variable.
Since
44.00

addVariable() [6/7]

auto xpress::objects::XpressProblem::addVariable ( double lb,
double ub,
ColumnType type,
std::optional< std::string > name ) -> xpress::objects::Variable
inline

Add a single variable to this problem.

Parameters
lb Lower bound for variable.
ub Upper bound for variable.
type Type for variable.
name Name for variable, can be std::nullopt.
Returns
The newly created variable.
Since
44.00

addVariable() [7/7]

auto xpress::objects::XpressProblem::addVariable ( std::optional< std::string > name ) -> xpress::objects::Variable
inline

Add a single variable to this problem.

The variable will have default type (continuous) and bounds (0 and infinity).

Parameters
name Name for variable.
Returns
The newly created variable.
Since
44.00

addVariables() [1/10]

template<typename Coll0 , typename K1 = typename Coll0::value_type, typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type>
auto xpress::objects::XpressProblem::addVariables ( Coll0 const & coll1 ) -> xpress::VariableBuilder::VariableMapBuilder< K1 >
inline

Create an 1-dimensional map of variables.

This function returns a builder that generates variables according to a specification. The specification can be modified. In order to actually create the variables, you have to call the returned builder's toMap() function.

  // Create a multi-dimensional map of binary variables
  std::unordered_map<K1 ,xpress::objects::Variable> x = prob->addVariables(coll1 )
                                     .withType(xpress::objects::ColumnType::Binary)
                                     .toMap();
 

See xpress::VariableBuilder::VariableMapBuilder for details of how to modify the specification in the builder.

Attention: this function takes a reference to the passed collections, so data must stay valid over the lifetime of the returned Builder object.

Parameters
coll1 Data for dimension 1.
Template Parameters
Coll0 Something that supports begin() and end() and contains values of type K1.
K1 Data type for dimension 1.
Returns
A builder that will create the variables.
Since
44.00

addVariables() [2/10]

template<typename Coll0 , typename Coll1 , typename K1 = typename Coll0::value_type, typename K2 = typename Coll1::value_type, typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type, typename Coll1IsCollection = typename std::enable_if<xpress::is_collection<Coll1>::value>::type>
auto xpress::objects::XpressProblem::addVariables ( Coll0 const & coll1,
Coll1 const & coll2 ) -> xpress::VariableBuilder::VariableMap2Builder< K1, K2 >
inline

Create an 2-dimensional map of variables.

This function returns a builder that generates variables according to a specification. The specification can be modified. In order to actually create the variables, you have to call the returned builder's toMap() function.

  // Create a multi-dimensional map of binary variables
  xpress::maps::HashMap2<K1 ,K2,xpress::objects::Variable> x = prob->addVariables(coll1 ,coll2)
                                     .withType(xpress::objects::ColumnType::Binary)
                                     .toMap();
 

See xpress::VariableBuilder::VariableMap2Builder for details of how to modify the specification in the builder.

Attention: this function takes a reference to the passed collections, so data must stay valid over the lifetime of the returned Builder object.

Parameters
coll1 Data for dimension 1.
coll2 Data for dimension 2.
Template Parameters
Coll0 Something that supports begin() and end() and contains values of type K1.
Coll1 Something that supports begin() and end() and contains values of type K2.
K1 Data type for dimension 1.
K2 Data type for dimension 2.
Returns
A builder that will create the variables.
Since
44.00

addVariables() [3/10]

template<typename Coll0 , typename Coll1 , typename Coll2 , typename K1 = typename Coll0::value_type, typename K2 = typename Coll1::value_type, typename K3 = typename Coll2::value_type, typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type, typename Coll1IsCollection = typename std::enable_if<xpress::is_collection<Coll1>::value>::type, typename Coll2IsCollection = typename std::enable_if<xpress::is_collection<Coll2>::value>::type>
auto xpress::objects::XpressProblem::addVariables ( Coll0 const & coll1,
Coll1 const & coll2,
Coll2 const & coll3 ) -> xpress::VariableBuilder::VariableMap3Builder< K1, K2, K3 >
inline

Create an 3-dimensional map of variables.

This function returns a builder that generates variables according to a specification. The specification can be modified. In order to actually create the variables, you have to call the returned builder's toMap() function.

  // Create a multi-dimensional map of binary variables
  xpress::maps::HashMap3<K1 ,K2 ,K3,xpress::objects::Variable> x = prob->addVariables(coll1 ,coll2 ,coll3)
                                     .withType(xpress::objects::ColumnType::Binary)
                                     .toMap();
 

See xpress::VariableBuilder::VariableMap3Builder for details of how to modify the specification in the builder.

Attention: this function takes a reference to the passed collections, so data must stay valid over the lifetime of the returned Builder object.

Parameters
coll1 Data for dimension 1.
coll2 Data for dimension 2.
coll3 Data for dimension 3.
Template Parameters
Coll0 Something that supports begin() and end() and contains values of type K1.
Coll1 Something that supports begin() and end() and contains values of type K2.
Coll2 Something that supports begin() and end() and contains values of type K3.
K1 Data type for dimension 1.
K2 Data type for dimension 2.
K3 Data type for dimension 3.
Returns
A builder that will create the variables.
Since
44.00

addVariables() [4/10]

template<typename Coll0 , typename Coll1 , typename Coll2 , typename Coll3 , typename K1 = typename Coll0::value_type, typename K2 = typename Coll1::value_type, typename K3 = typename Coll2::value_type, typename K4 = typename Coll3::value_type, typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type, typename Coll1IsCollection = typename std::enable_if<xpress::is_collection<Coll1>::value>::type, typename Coll2IsCollection = typename std::enable_if<xpress::is_collection<Coll2>::value>::type, typename Coll3IsCollection = typename std::enable_if<xpress::is_collection<Coll3>::value>::type>
auto xpress::objects::XpressProblem::addVariables ( Coll0 const & coll1,
Coll1 const & coll2,
Coll2 const & coll3,
Coll3 const & coll4 ) -> xpress::VariableBuilder::VariableMap4Builder< K1, K2, K3, K4 >
inline

Create an 4-dimensional map of variables.

This function returns a builder that generates variables according to a specification. The specification can be modified. In order to actually create the variables, you have to call the returned builder's toMap() function.

  // Create a multi-dimensional map of binary variables
  xpress::maps::HashMap4<K1 ,K2 ,K3 ,K4,xpress::objects::Variable> x = prob->addVariables(coll1 ,coll2 ,coll3 ,coll4)
                                     .withType(xpress::objects::ColumnType::Binary)
                                     .toMap();
 

See xpress::VariableBuilder::VariableMap4Builder for details of how to modify the specification in the builder.

Attention: this function takes a reference to the passed collections, so data must stay valid over the lifetime of the returned Builder object.

Parameters
coll1 Data for dimension 1.
coll2 Data for dimension 2.
coll3 Data for dimension 3.
coll4 Data for dimension 4.
Template Parameters
Coll0 Something that supports begin() and end() and contains values of type K1.
Coll1 Something that supports begin() and end() and contains values of type K2.
Coll2 Something that supports begin() and end() and contains values of type K3.
Coll3 Something that supports begin() and end() and contains values of type K4.
K1 Data type for dimension 1.
K2 Data type for dimension 2.
K3 Data type for dimension 3.
K4 Data type for dimension 4.
Returns
A builder that will create the variables.
Since
44.00

addVariables() [5/10]

template<typename Coll0 , typename Coll1 , typename Coll2 , typename Coll3 , typename Coll4 , typename K1 = typename Coll0::value_type, typename K2 = typename Coll1::value_type, typename K3 = typename Coll2::value_type, typename K4 = typename Coll3::value_type, typename K5 = typename Coll4::value_type, typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type, typename Coll1IsCollection = typename std::enable_if<xpress::is_collection<Coll1>::value>::type, typename Coll2IsCollection = typename std::enable_if<xpress::is_collection<Coll2>::value>::type, typename Coll3IsCollection = typename std::enable_if<xpress::is_collection<Coll3>::value>::type, typename Coll4IsCollection = typename std::enable_if<xpress::is_collection<Coll4>::value>::type>
auto xpress::objects::XpressProblem::addVariables ( Coll0 const & coll1,
Coll1 const & coll2,
Coll2 const & coll3,
Coll3 const & coll4,
Coll4 const & coll5 ) -> xpress::VariableBuilder::VariableMap5Builder< K1, K2, K3, K4, K5 >
inline

Create an 5-dimensional map of variables.

This function returns a builder that generates variables according to a specification. The specification can be modified. In order to actually create the variables, you have to call the returned builder's toMap() function.

  // Create a multi-dimensional map of binary variables
  xpress::maps::HashMap5<K1 ,K2 ,K3 ,K4 ,K5,xpress::objects::Variable> x = prob->addVariables(coll1 ,coll2 ,coll3 ,coll4 ,coll5)
                                     .withType(xpress::objects::ColumnType::Binary)
                                     .toMap();
 

See xpress::VariableBuilder::VariableMap5Builder for details of how to modify the specification in the builder.

Attention: this function takes a reference to the passed collections, so data must stay valid over the lifetime of the returned Builder object.

Parameters
coll1 Data for dimension 1.
coll2 Data for dimension 2.
coll3 Data for dimension 3.
coll4 Data for dimension 4.
coll5 Data for dimension 5.
Template Parameters
Coll0 Something that supports begin() and end() and contains values of type K1.
Coll1 Something that supports begin() and end() and contains values of type K2.
Coll2 Something that supports begin() and end() and contains values of type K3.
Coll3 Something that supports begin() and end() and contains values of type K4.
Coll4 Something that supports begin() and end() and contains values of type K5.
K1 Data type for dimension 1.
K2 Data type for dimension 2.
K3 Data type for dimension 3.
K4 Data type for dimension 4.
K5 Data type for dimension 5.
Returns
A builder that will create the variables.
Since
44.00

addVariables() [6/10]

auto xpress::objects::XpressProblem::addVariables ( int dim ) -> xpress::VariableBuilder::VariableArrayBuilder
inline

Create an 1-dimensional array of variables.

This function returns a builder that generates variables according to a specification. The specification can be modified. In order to actually create the variables, you have to call the returned builder's toArray() function.

  // Create a multi-dimensional array of binary variables
  std::vector< xpress::objects::Variable>  = prob->addVariables(dim)
                        .withType(xpress::objects::ColumnType::Binary)
                        .toArray();
 

See xpress::VariableBuilder::VariableArrayBuilder for details of how to modify the specification in the builder.

Parameters
dim Dimension.
Returns
A builder that will create the variables.
Since
44.00

addVariables() [7/10]

auto xpress::objects::XpressProblem::addVariables ( int dim1,
int dim2 ) -> xpress::VariableBuilder::VariableArray2Builder
inline

Create an 2-dimensional array of variables.

This function returns a builder that generates variables according to a specification. The specification can be modified. In order to actually create the variables, you have to call the returned builder's toArray() function.

  // Create a multi-dimensional array of binary variables
  std::vector< std::vector<xpress::objects::Variable> > = prob->addVariables(dim1 ,dim2)
                        .withType(xpress::objects::ColumnType::Binary)
                        .toArray();
 

See xpress::VariableBuilder::VariableArray2Builder for details of how to modify the specification in the builder.

Parameters
dim1 Dimension 1.
dim2 Dimension 2.
Returns
A builder that will create the variables.
Since
44.00

addVariables() [8/10]

auto xpress::objects::XpressProblem::addVariables ( int dim1,
int dim2,
int dim3 ) -> xpress::VariableBuilder::VariableArray3Builder
inline

Create an 3-dimensional array of variables.

This function returns a builder that generates variables according to a specification. The specification can be modified. In order to actually create the variables, you have to call the returned builder's toArray() function.

  // Create a multi-dimensional array of binary variables
  std::vector< std::vector< std::vector<xpress::objects::Variable> > > = prob->addVariables(dim1 ,dim2 ,dim3)
                        .withType(xpress::objects::ColumnType::Binary)
                        .toArray();
 

See xpress::VariableBuilder::VariableArray3Builder for details of how to modify the specification in the builder.

Parameters
dim1 Dimension 1.
dim2 Dimension 2.
dim3 Dimension 3.
Returns
A builder that will create the variables.
Since
44.00

addVariables() [9/10]

auto xpress::objects::XpressProblem::addVariables ( int dim1,
int dim2,
int dim3,
int dim4 ) -> xpress::VariableBuilder::VariableArray4Builder
inline

Create an 4-dimensional array of variables.

This function returns a builder that generates variables according to a specification. The specification can be modified. In order to actually create the variables, you have to call the returned builder's toArray() function.

  // Create a multi-dimensional array of binary variables
  std::vector< std::vector< std::vector< std::vector<xpress::objects::Variable> > > > = prob->addVariables(dim1 ,dim2 ,dim3 ,dim4)
                        .withType(xpress::objects::ColumnType::Binary)
                        .toArray();
 

See xpress::VariableBuilder::VariableArray4Builder for details of how to modify the specification in the builder.

Parameters
dim1 Dimension 1.
dim2 Dimension 2.
dim3 Dimension 3.
dim4 Dimension 4.
Returns
A builder that will create the variables.
Since
44.00

addVariables() [10/10]

auto xpress::objects::XpressProblem::addVariables ( int dim1,
int dim2,
int dim3,
int dim4,
int dim5 ) -> xpress::VariableBuilder::VariableArray5Builder
inline

Create an 5-dimensional array of variables.

This function returns a builder that generates variables according to a specification. The specification can be modified. In order to actually create the variables, you have to call the returned builder's toArray() function.

  // Create a multi-dimensional array of binary variables
  std::vector< std::vector< std::vector< std::vector< std::vector<xpress::objects::Variable> > > > > = prob->addVariables(dim1 ,dim2 ,dim3 ,dim4 ,dim5)
                        .withType(xpress::objects::ColumnType::Binary)
                        .toArray();
 

See xpress::VariableBuilder::VariableArray5Builder for details of how to modify the specification in the builder.

Parameters
dim1 Dimension 1.
dim2 Dimension 2.
dim3 Dimension 3.
dim4 Dimension 4.
dim5 Dimension 5.
Returns
A builder that will create the variables.
Since
44.00

bndSA() [1/3]

auto xpress::objects::XpressProblem::bndSA ( int len,
xpress::SizedArray< Variable const > const & variables,
xpress::SizedArray< double > const & lblower,
xpress::SizedArray< double > const & lbupper,
xpress::SizedArray< double > const & ublower,
xpress::SizedArray< double > const & ubupper ) -> void
inline

Returns upper and lower sensitivity ranges for specified variables' lower and upper bounds.

If the bounds are varied within these ranges the current basis remains optimal and feasible.

Parameters
len Sensitivity analysis is performed only on the first len variables in variables.
variables Variables on which to perform sensitivity analysis.
lblower Array of length at least len that receives the sensitivity analysis lower bounds for the variables' lower bound constraints.
lbupper Array of length at least len that receives the sensitivity analysis upper bounds for the variables' lower bound constraints.
ublower Array of length at least len that receives the sensitivity analysis lower bounds for the variables' upper bound constraints.
ubupper Array of length at least len that receives the sensitivity analysis upper bounds for the variables' upper bound constraints.
Since
44.00

bndSA() [2/3]

void xpress::XPRSProblem::bndSA ( int ncols,
Array< int const > const & colind,
Array< double > const & lblower,
Array< double > const & lbupper,
Array< double > const & ublower,
Array< double > const & ubupper )
inline

Returns upper and lower sensitivity ranges for specified variables' lower and upper bounds.

If the bounds are varied within these ranges the current basis remains optimal and feasible.

Parameters
ncols Number of variables whose sensitivity is sought.
colind Integer array of length ncols containing the indices of the columns whose bounds' ranges are required.
lblower Double array of length ncols where the variable lower bound lower range values are to be returned.
lbupper Double array of length ncols where the variable lower bound upper range values are to be returned.
ublower Double array of length ncols where the variable upper bound lower range values are to be returned.
ubupper Double array of length ncols where the variable upper bound upper range values are to be returned.

bndSA() [3/3]

auto xpress::objects::XpressProblem::bndSA ( xpress::SizedArray< Variable const > const & variables,
xpress::SizedArray< double > const & lblower,
xpress::SizedArray< double > const & lbupper,
xpress::SizedArray< double > const & ublower,
xpress::SizedArray< double > const & ubupper ) -> void
inline

Returns upper and lower sensitivity ranges for specified variables' lower and upper bounds.

If the bounds are varied within these ranges the current basis remains optimal and feasible.

Parameters
variables Variables on which to perform sensitivity analysis.
lblower Array at least as long as variables that receives the sensitivity analysis lower bounds for the variables' lower bound constraints.
lbupper Array at least as long as variables that receives the sensitivity analysis upper bounds for the variables' lower bound constraints.
ublower Array at least as long as variables that receives the sensitivity analysis lower bounds for the variables' upper bound constraints.
ubupper Array at least as long as variables that receives the sensitivity analysis upper bounds for the variables' upper bound constraints.
Since
44.00

chgBounds() [1/3]

auto xpress::XPRSProblem::chgBounds ( int j,
double lb,
double ub ) -> void
inline

Change bounds of a single column.

Parameters
j Column to change.
lb New lower bound.
ub New upper bound.
See also
chgBounds(int, std::vector<int>, std::vector<char>, std::vector<double>)
Since
44.00

chgBounds() [2/3]

void xpress::XPRSProblem::chgBounds ( int nbounds,
Array< int const > const & colind,
Array< char const > const & bndtype,
Array< double const > const & bndval )
inline

Used to change the bounds on columns in the matrix.

Parameters
nbounds Number of bounds to change.
colind Integer array of size nbounds containing the indices of the columns on which the bounds will change.
bndtype Character array of length nbounds indicating the type of bound to change:
  • U: indicates change the upper bound;
  • L: indicates change the lower bound;
  • B: indicates change both bounds, i.e. fix the column.
bndval Double array of length nbounds giving the new bound values.

chgBounds() [3/3]

auto xpress::objects::XpressProblem::chgBounds ( xpress::SizedArray< Variable const > const & variables,
xpress::SizedArray< char const > const & bndType,
xpress::SizedArray< double const > const & bndValue ) -> void
inline

Change bounds for multiple variables.

Parameters
variables Variables for which to change bounds.
bndType Type of bounds to change.
bndValue New bounds.
Since
44.00

chgCoef() [1/2]

auto xpress::objects::XpressProblem::chgCoef ( Inequality row,
Variable variable,
double coefficient ) -> xpress::objects::XpressProblem &
inline

Changes the coefficient for variable in row in the linear matrix.

Parameters
row Inequality in which to change coefficient.
variable Variable for which to change coefficient.
coefficient The coefficient.
Returns
Always returns this instance.
Since
44.00

chgCoef() [2/2]

void xpress::XPRSProblem::chgCoef ( int row,
int col,
double coef )
inline

Used to change a single coefficient in the matrix.

If the coefficient does not already exist, a new coefficient will be added to the matrix. If many coefficients are being added to a row of the matrix, it may be more efficient to delete the old row of the matrix and add a new row.

Parameters
row Row index for the coefficient.
col Column index for the coefficient.
coef New value for the coefficient. If coef is zero, any existing coefficient will be deleted.

chgCoefs()

auto xpress::objects::XpressProblem::chgCoefs ( xpress::SizedArray< Inequality const > const & row,
xpress::SizedArray< Variable const > const & variable,
xpress::SizedArray< double const > const & coefficient ) -> xpress::objects::XpressProblem &
inline

Change coefficients in the linear matrix.

The function changes the coefficients as indicated by the triplets given by row, variable, coefficient.

Parameters
row Inequality in which to change coefficient.
variable Variable for which to change coefficient.
coefficient The coefficient.
Returns
Always returns this instance.
Since
44.00

chgColType() [1/2]

void xpress::XPRSProblem::chgColType ( int ncols,
Array< int const > const & colind,
Array< char const > const & coltype )
inline

Used to change the type of a specified set of columns in the matrix.

Parameters
ncols Number of columns to change.
colind Integer array of length ncols containing the indices of the columns.
coltype Character array of length ncols giving the new column types:
  • C: indicates a continuous column;
  • B: indicates a binary column;
  • I: indicates an integer column.
  • S: indicates a semi—continuous column. The semi—continuous lower bound will be set to 1.0.
  • R: indicates a semi—integer column. The semi—integer lower bound will be set to 1.0.
  • P: indicates a partial integer column. The partial integer limit will be set to 1.0.

chgColType() [2/2]

auto xpress::objects::XpressProblem::chgColType ( xpress::SizedArray< Variable const > const & variables,
xpress::SizedArray< ColumnType const > const & colType ) -> void
inline

Change types for multiple variables.

Parameters
variables Variables for which to change types.
colType New column types.
Since
44.00

chgObj() [1/3]

void xpress::XPRSProblem::chgObj ( int ncols,
Array< int const > const & colind,
Array< double const > const & objcoef )
inline

Used to change the objective function coefficients.

Parameters
ncols Number of objective function coefficient elements to change.
colind Integer array of length ncols containing the indices of the columns whose objective coefficients will change. An index of -1 indicates that the fixed part of the objective function on the right hand side should change.
objcoef Double array of length ncols giving the new objective function coefficients.

chgObj() [2/3]

auto xpress::objects::XpressProblem::chgObj ( Variable variable,
double coefficient ) -> xpress::objects::XpressProblem &
inline

Change objective function coefficient.

This changes the linear coefficient in the first/primary objective function. In order to delete a coefficient from the objective set it to 0 (zero).

Parameters
variable Variable for which to change coefficient.
coefficient New coefficient for variables.
Returns
Always returns this instance.
Since
44.00

chgObj() [3/3]

auto xpress::objects::XpressProblem::chgObj ( xpress::SizedArray< Variable const > const & variables,
xpress::SizedArray< double const > const & coefficients ) -> xpress::objects::XpressProblem &
inline

Change objective function coefficients.

This changes the linear coefficients in the first/primary objective function. In order to delete a coefficient from the objective set it to 0 (zero).

Parameters
variables Variables for which to change coefficients.
coefficients New coefficients for variables.
Returns
Always returns this instance.
Since
44.00

chgObjN() [1/3]

void xpress::XPRSProblem::chgObjN ( int objidx,
int ncols,
Array< int const > const & colind,
Array< double const > const & objcoef )
inline

Modifies one or more coefficients of an objective function in a multi-objective problem.

If the objective already exists, any coefficients not present in the colind and objcoef arrays will unchanged. If the objective does not exist, it will be added to the problem.

Parameters
objidx Index of the objective function to add or modify.
ncols Number of objective function coefficient elements to change.
colind Integer array of length ncols containing the indices of the columns whose objective coefficients will change. An index of -1 indicates that the fixed part of the objective function on the right hand side should change.
objcoef Double array of length ncols giving the new objective function coefficients.

chgObjN() [2/3]

auto xpress::objects::XpressProblem::chgObjN ( int objidx,
Variable variable,
double coefficient ) -> xpress::objects::XpressProblem &
inline

Change an objective function coefficient for a multi-objective problem.

This changes the linear coefficient in the objective function objidx. In order to delete a coefficient from the objective set it to 0 (zero).

Parameters
objidx Index of objective function to change,
variable Variable for which to change coefficient.
coefficient New coefficient for variable.
Returns
Always returns this instance.
Since
44.00

chgObjN() [3/3]

auto xpress::objects::XpressProblem::chgObjN ( int objidx,
xpress::SizedArray< Variable const > const & variables,
xpress::SizedArray< double const > const & coefficients ) -> xpress::objects::XpressProblem &
inline

Change objective function coefficients for a multi-objective problem.

This changes tje linear coefficients in the objective function objidx. In order to delete a coefficient from the obejctive set it to 0 (zero).

Parameters
objidx Index of objective function to change,
variables Variables for which to change coefficients.
coefficients New coefficients for variables.
Returns
Always returns this instance.
Since
44.00

chgRhs() [1/2]

void xpress::XPRSProblem::chgRhs ( int nrows,
Array< int const > const & rowind,
Array< double const > const & rhs )
inline

Used to change right—hand side values of the problem.

Parameters
nrows Number of right hand side values to change.
rowind Integer array of length nrows containing the indices of the rows on which the right hand side values will change.
rhs Double array of length nrows giving the right hand side values.

chgRhs() [2/2]

auto xpress::objects::XpressProblem::chgRhs ( xpress::SizedArray< Inequality const > const & rows,
xpress::SizedArray< double const > const & newRHS ) -> void
inline

Change right-hand side for multiple rows.

Parameters
rows Inequalities for which to change right-hand sides.
newRHS New right-hand side values.
Since
44.00

chgRhsRange() [1/2]

void xpress::XPRSProblem::chgRhsRange ( int nrows,
Array< int const > const & rowind,
Array< double const > const & rng )
inline

Used to change the range for a row of the problem matrix.

Parameters
nrows Number of range elements to change.
rowind Integer array of length nrows containing the indices of the rows on which the range elements will change.
rng Double array of length nrows giving the range values.

chgRhsRange() [2/2]

auto xpress::objects::XpressProblem::chgRhsRange ( xpress::SizedArray< Inequality const > const & rows,
xpress::SizedArray< double const > const & newRange ) -> void
inline

Change right-hand side ranges for multiple rows.

Parameters
rows Inequalities for which to right-hand side ranges.
newRange New right-hand side range values.
Since
44.00

chgRowType() [1/2]

void xpress::XPRSProblem::chgRowType ( int nrows,
Array< int const > const & rowind,
Array< char const > const & rowtype )
inline

Used to change the type of a row in the matrix.

Parameters
nrows Number of rows to change.
rowind Integer array of length nrows containing the indices of the rows.
rowtype Character array of length nrows giving the new row types:
  • L: indicates a <= row;
  • E: indicates an = row;
  • G: indicates a >= row;
  • R: indicates a range row;
  • N: indicates a free row.

chgRowType() [2/2]

auto xpress::objects::XpressProblem::chgRowType ( xpress::SizedArray< Inequality const > const & rows,
xpress::SizedArray< RowType const > const & rowType ) -> void
inline

Change types for multiple rows.

Parameters
rows Inequalities for which to change types.
rowType New row types.
Since
44.00

console()

static void xpress::objects::XpressProblem::console ( XpressProblem & prob,
char const * msg,
int msglen,
int msgtype )
inlinestatic

Default implementation for message listener.

Parameters
prob The problem on which the callback is invoked.
msg The message to be sent. This can be nullptr (if msglen is zero). If not nullptr then it is terminated by a NUL character.
msglen The length of msg.
msgtype Type of message. See the reference documentation for XPRSaddcbmessage for details about this.

createBranchObject()

auto xpress::objects::XpressProblem::createBranchObject ( ) -> xpress::objects::XpressProblem::BranchObject *
inline

Create a branch object.

This is different from the super class's createBranchObject() function in two aspects:

  • it returns an instance of BranchObject, not XPRSbranchobject. The former is a subclass of the latter and has functions to add bounds and constraints that reference Variable objects.
  • the returned object always operates in the original space.
Returns
The branch object.
Since
44.00

delCols()

virtual auto xpress::objects::XpressProblem::delCols ( int ncols,
xpress::Array< int const > const & colind ) -> void
inlineoverridevirtual

Delete columns from this problem.

Note that this may be expensive if you use Variable instances to formulate your problem since indices of remaining variables will have to be updated after columns were deleted from the underlying model. If you have to delete multiple variables then it is best to collect all variables to be deleted in an array and then delete all of them with a single call to this function.

Parameters
ncols Number of columns to delete.
colind Indices of columns to delete.
Since
44.00

Reimplemented from xpress::XPRSProblem.

delGenCons()

virtual auto xpress::objects::XpressProblem::delGenCons ( int nconstraints,
xpress::Array< int const > const & conind ) -> void
inlineoverridevirtual

Delete constraints from this problem.

Note that this may be expensive if you use GeneralConstraint instances to formulate your problem since indices of remaining constraints will have to be updated after constraints were deleted from the underlying model. If you have to delete multiple constraints then it is best to collect all constraints to be deleted in an array and then delete all of them with a single call to this function.

Parameters
nconstraints Number of constraints to delete.
conind Indices of constraints to delete.
Since
44.00

Reimplemented from xpress::XPRSProblem.

delGeneralConstraints()

auto xpress::objects::XpressProblem::delGeneralConstraints ( xpress::SizedArray< GeneralConstraint const > const & constraints ) -> void
inline

Delete general constraints from this problem.

Parameters
constraints The constraints to be deleted.
Since
44.00

delIndicator()

auto xpress::objects::XpressProblem::delIndicator ( Inequality row ) -> void
inline

Delete a single indicator constraint.

This only deletes the "indicator property from the specified row. Neither the associated variable nor the row are deleted.

Parameters
row Row from which to delete the indicator constraint.
Since
44.00

delInequalities()

auto xpress::objects::XpressProblem::delInequalities ( xpress::SizedArray< Inequality const > const & rows ) -> void
inline

Delete inequality constraints from this problem.

Parameters
rows Inequalities to be deleted.
Since
44.00

delPwlCons()

virtual auto xpress::objects::XpressProblem::delPwlCons ( int npwls,
xpress::Array< int const > const & pwlind ) -> void
inlineoverridevirtual

Delete piecewise linear constraints from this problem.

Note that this may be expensive if you use PWL instances to formulate your problem since indices of remaining variables will have to be updated after columns were deleted from the underlying model. If you have to delete multiple variables then it is best to collect all variables to be deleted in an array and then delete all of them with a single call to this function.

Parameters
npwls Number of constraints to delete.
pwlind Indices of constraints to delete.
Since
44.00

Reimplemented from xpress::XPRSProblem.

delPwlConstraints()

auto xpress::objects::XpressProblem::delPwlConstraints ( xpress::SizedArray< PWL const > const & pwls ) -> void
inline

Delete PWL constraints from this problem.

Parameters
pwls Piecewise linear constraints to be deleted.
Since
44.00

delRows()

virtual auto xpress::objects::XpressProblem::delRows ( int nrows,
xpress::Array< int const > const & rowind ) -> void
inlineoverridevirtual

Delete rows from this problem.

Note that this may be expensive if you use Inequality instances to formulate your problem since indices of remaining rows will have to be updated after rows were deleted from the underlying model. If you have to delete multiple rows then it is best to collect all rows to be deleted in an array and then delete all of them with a single call to this function.

Parameters
nrows Number of rows to delete.
rowind Indices of rows to delete.
Since
44.00

Reimplemented from xpress::XPRSProblem.

delSets()

virtual auto xpress::objects::XpressProblem::delSets ( int nsets,
xpress::Array< int const > const & sosind ) -> void
inlineoverridevirtual

Delete sets from this problem.

Note that this may be expensive if you use SOS instances to formulate your problem since indices of remaining sets will have to be updated after sets were deleted from the underlying model. If you have to delete multiple sets then it is best to collect all sets to be deleted in an array and then delete all of them with a single call to this function.

Parameters
nsets Number of sets to delete.
sosind Indices of sets to delete.
Since
44.00

Reimplemented from xpress::XPRSProblem.

delSOS() [1/2]

auto xpress::objects::XpressProblem::delSOS ( SOS sos ) -> void
inline

Delete a single SOS from the problem.

Parameters
sos SOS to delete.
Since
44.00

delSOS() [2/2]

auto xpress::objects::XpressProblem::delSOS ( xpress::SizedArray< SOS const > const & soss ) -> void
inline

Delete special ordered set constraints.

Removes all the specified special ordered set constraints from this problem.

Parameters
soss SOS to be deleted.
Since
44.00

delVariables()

auto xpress::objects::XpressProblem::delVariables ( xpress::SizedArray< Variable const > const & vars ) -> void
inline

Delete variables from this problem.

Parameters
vars Variables to be deleted.
Since
44.00

generalConstraintForIndex()

auto xpress::objects::XpressProblem::generalConstraintForIndex ( int index ) const -> xpress::objects::GeneralConstraint
inline

Map a general constraint index to a GeneralConstraint object.

Parameters
index The index to map.
Returns
The GeneralConstraint object for index.
See also
getGeneralConstraints()
Since
44.00

generalConstraintForIndices()

auto xpress::objects::XpressProblem::generalConstraintForIndices ( int first,
int last ) const -> std::vector< xpress::objects::GeneralConstraint >
inline

Map a range of general constraint indices to GeneralConstraint objects.

Parameters
first First index in range (inclusive).
last Last index in range (inclusive).
Returns
The GeneralConstraint objects in the specified range.
Since
44.00

getCallbackDual() [1/2]

auto xpress::objects::XpressProblem::getCallbackDual ( Inequality r ) -> double
inline

Get the dual associated with the current callback for a single row.

Parameters
r Inequality for which to query dual.
Returns
Dual for r.
Since
44.00

getCallbackDual() [2/2]

auto xpress::XPRSProblem::getCallbackDual ( int index ) const -> double
inline

Convenience wrapper for getCallbackDuals(bool*, Array<double> const &, int, int) const that queries only a single value.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getCallbackDuals() [1/4]

auto xpress::XPRSProblem::getCallbackDuals ( ) const -> std::vector<double>
inline

Convenience wrapper for getCallbackDuals(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getCallbackDuals() [2/4]

void xpress::XPRSProblem::getCallbackDuals ( bool * p_available,
Array< double > const & duals,
int first,
int last ) const
inline

Returns the dual values from the solution associated with the current callback.

Parameters
p_available This variable will be set to 1 if a dual solution is available. May be null if not required.
duals Double array of length last-first+1 where the values of the dual variables will be returned. May be null if not required.
first First row whose dual value to return.
last Last row whose dual value to return.

getCallbackDuals() [3/4]

template<typename Coll0 , typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type>
auto xpress::objects::XpressProblem::getCallbackDuals ( Coll0 const & rows ) -> std::vector< double >
inline

Get the duals associated with the current callback for a collection of rows.

The values in the returned array are in 1-to-1 correspondence with the row in row.

Parameters
rows Inequalties for which to query duals.
Template Parameters
Coll0 Something that supports begin() and end() and contains values of type Inequality.
Returns
Duals for inequalities in rows.
Since
44.00

getCallbackDuals() [4/4]

auto xpress::XPRSProblem::getCallbackDuals ( int first,
int last ) const -> std::vector<double>
inline

Convenience wrapper for getCallbackDuals(bool*, Array<double> const &, int, int) const that allocates the output array.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getCallbackRedCost() [1/2]

auto xpress::XPRSProblem::getCallbackRedCost ( int index ) const -> double
inline

Convenience wrapper for getCallbackRedCosts(bool*, Array<double> const &, int, int) const that queries only a single value.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getCallbackRedCost() [2/2]

auto xpress::objects::XpressProblem::getCallbackRedCost ( Variable v ) -> double
inline

Get the reduced cost associated with the current callbackfor a single variable.

Parameters
v Variable for which reduced cost is queried.
Returns
Reduced cost for v.
Since
44.00

getCallbackRedCosts() [1/4]

auto xpress::XPRSProblem::getCallbackRedCosts ( ) const -> std::vector<double>
inline

Convenience wrapper for getCallbackRedCosts(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getCallbackRedCosts() [2/4]

void xpress::XPRSProblem::getCallbackRedCosts ( bool * p_available,
Array< double > const & djs,
int first,
int last ) const
inline

Returns the reduced costs from the solution associated with the current callback.

Parameters
p_available This variable will be set to 1 if a dual solution is available. May be null if not required.
djs Double array of length last-first+1 where the reduced costs of the variables will be returned. May be null if not required.
first First column whose reduced cost to return.
last Last column whose reduced cost to return.

getCallbackRedCosts() [3/4]

template<typename Coll0 , typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type>
auto xpress::objects::XpressProblem::getCallbackRedCosts ( Coll0 const & vars ) -> std::vector< double >
inline

Get the reduced costs associated with the current callback for a collection of variables.

The values in the returned array are in 1-to-1 correspondence with the variables in vars.

Parameters
vars Variables for which reduced costs are queried.
Template Parameters
Coll0 Something that supports begin() and end() and contains values of type Variable.
Returns
Reduced costs for variables in vars.
Since
44.00

getCallbackRedCosts() [4/4]

auto xpress::XPRSProblem::getCallbackRedCosts ( int first,
int last ) const -> std::vector<double>
inline

Convenience wrapper for getCallbackRedCosts(bool*, Array<double> const &, int, int) const that allocates the output array.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getCallbackSlack() [1/2]

auto xpress::objects::XpressProblem::getCallbackSlack ( Inequality r ) -> double
inline

Get the slack associated with the current callback for a single row.

Parameters
r Inequality for which to query slack.
Returns
Slack for r.
Since
44.00

getCallbackSlack() [2/2]

auto xpress::XPRSProblem::getCallbackSlack ( int index ) const -> double
inline

Convenience wrapper for getCallbackSlacks(bool*, Array<double> const &, int, int) const that queries only a single value.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getCallbackSlacks() [1/4]

auto xpress::XPRSProblem::getCallbackSlacks ( ) const -> std::vector<double>
inline

Convenience wrapper for getCallbackSlacks(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getCallbackSlacks() [2/4]

void xpress::XPRSProblem::getCallbackSlacks ( bool * p_available,
Array< double > const & slacks,
int first,
int last ) const
inline

Returns the slack values from the solution associated with the current callback.

Parameters
p_available This variable will be set to 1 if a solution is available. May be null if not required.
slacks Double array of length last-first+1 where the values of the slack variables will be returned. May be null if not required.
first First row whose slack value to return.
last Last row whose slack value to return.

getCallbackSlacks() [3/4]

template<typename Coll0 , typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type>
auto xpress::objects::XpressProblem::getCallbackSlacks ( Coll0 const & rows ) -> std::vector< double >
inline

Get the slacks associated with the current callback for a collection of rows.

The values in the returned array are in 1-to-1 correspondence with the rows in rows.

Parameters
rows Inequalities for which to query slacks.
Template Parameters
Coll0 Something that supports begin() and end() and contains values of type Inequality.
Returns
Slacks for inequalities in rows.
Since
44.00

getCallbackSlacks() [4/4]

auto xpress::XPRSProblem::getCallbackSlacks ( int first,
int last ) const -> std::vector<double>
inline

Convenience wrapper for getCallbackSlacks(bool*, Array<double> const &, int, int) const that allocates the output array.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getCallbackSolution() [1/6]

auto xpress::XPRSProblem::getCallbackSolution ( ) const -> std::vector<double>
inline

Convenience wrapper for getCallbackSolution(bool*, Array<double> const &, int, int) const that allocates the output array and queries all elements.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getCallbackSolution() [2/6]

void xpress::XPRSProblem::getCallbackSolution ( bool * p_available,
Array< double > const & x,
int first,
int last ) const
inline

Returns the solution associated with the current callback.

Parameters
p_available This variable will be set to 1 if a solution is available. May be null if not required.
x Double array of length last-first+1 where the values of the primal variables will be returned. May be null if not required.
first First column in the solution to return.
last Last column in the solution to return.

getCallbackSolution() [3/6]

template<typename Coll0 , typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type>
auto xpress::objects::XpressProblem::getCallbackSolution ( Coll0 const & vars ) -> std::vector< double >
inline

Get the solution associated with the current callback for a collection of variables.

The values in the returned array are in 1-to-1 correspondence with the variables in vars.

Parameters
vars Variables for which solution is queried.
Template Parameters
Coll0 Something that supports begin() and end() and contains values of type Variable.
Returns
Solution values for vars.
Since
44.00

getCallbackSolution() [4/6]

auto xpress::XPRSProblem::getCallbackSolution ( int first,
int last ) const -> std::vector<double>
inline

Convenience wrapper for getCallbackSolution(bool*, Array<double> const &, int, int) const that allocates the output array.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getCallbackSolution() [5/6]

auto xpress::XPRSProblem::getCallbackSolution ( int index ) const -> double
inline

Convenience wrapper for getCallbackSolution(bool*, Array<double> const &, int, int) const that queries only a single value.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getCallbackSolution() [6/6]

auto xpress::objects::XpressProblem::getCallbackSolution ( Variable v ) -> double
inline

Get the solution associated with the current callback for a single variable.

Parameters
v Variable for which solution is queried.
Returns
Solution for v.
Since
44.00

getCoef() [1/2]

auto xpress::objects::XpressProblem::getCoef ( Inequality row,
Variable variable ) -> double
inline

Query a single coefficient from the linear matrix.

Retrieves the coefficient of variable in row in the linear matrix. Note that the coefficient will be 0 (zero) in case the variable has no coefficient in that row.

Parameters
row The row in which to query the coefficient.
variable The variable for which to query the coefficient.
Returns
The queried coefficient.
Since
44.00

getCoef() [2/2]

auto xpress::XPRSProblem::getCoef ( int row,
int col ) -> double
inline

Returns a single coefficient in the constraint matrix.

Parameters
row Row of the constraint matrix.
col Column of the constraint matrix.

getDual() [1/2]

auto xpress::objects::XpressProblem::getDual ( Inequality r ) -> double
inline

Get the dual for a single row.

Parameters
r Inequality for which to query dual.
Returns
Dual for r.
Since
44.00

getDual() [2/2]

auto xpress::XPRSProblem::getDual ( int index ) const -> double
inline

Convenience wrapper for getDuals(int*, Array<double> const &, int, int) const that queries only a single value.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getDuals() [1/4]

auto xpress::XPRSProblem::getDuals ( ) const -> std::vector<double>
inline

Convenience wrapper for getDuals(int*, Array<double> const &, int, int) const that allocates the output array and queries all elements.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getDuals() [2/4]

template<typename Coll0 , typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type>
auto xpress::objects::XpressProblem::getDuals ( Coll0 const & rows ) -> std::vector< double >
inline

Get the duals for a collection of rows.

The values in the returned array are in 1-to-1 correspondence with the row in row.

Parameters
rows Inequalties for which to query duals.
Template Parameters
Coll0 Something that supports begin() and end() and contains values of type Inequality.
Returns
Duals for inequalities in rows.
Since
44.00

getDuals() [3/4]

void xpress::XPRSProblem::getDuals ( int * status,
Array< double > const & duals,
int first,
int last ) const
inline

Used to obtain the dual values associated with the incumbent solution during or after optimization of a continuous problem with XPRSoptimize, XPRSlpoptimize or XPRSnlpoptimize.

Parameters
status Information about the dual solution returned.
duals Double pointer where the value of the dual variables will be returned. May be null if not required.
first First row in the dual solution.
last Last row in the dual solution.

getDuals() [4/4]

auto xpress::XPRSProblem::getDuals ( int first,
int last ) const -> std::vector<double>
inline

Convenience wrapper for getDuals(int*, Array<double> const &, int, int) const that allocates the output array.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getGeneralConstraints()

auto xpress::objects::XpressProblem::getGeneralConstraints ( ) -> std::vector< xpress::objects::GeneralConstraint >
inline

Get all the general constraints currently defined in this problem.

Returns
All general constraints in this problem.
See also
generalConstraintForIndex(int)
Since
44.00

getIIS()

auto xpress::objects::XpressProblem::getIIS ( int iis ) -> xpress::objects::IIS
inline

Get the specified IIS.

Parameters
iis The index of the IIS for which data is queried.
Returns
The IIS specified by iis.
Since
44.00

getIndicator()

auto xpress::objects::XpressProblem::getIndicator ( Inequality row ) -> std::optional< xpress::objects::IndicatorObjects >
inline

Get indicator information for a single row.

Parameters
row The row to query.
Returns
Indicator information for row. This will be std::nullopt if row is not an indicator row.
Since
44.00

getInequalities()

auto xpress::objects::XpressProblem::getInequalities ( ) -> std::vector< xpress::objects::Inequality >
inline

Get all the inequalities currently defined in this problem.

Returns
All the inequalities in this problem.
See also
inequalityForIndex(int)
Since
44.00

getLhsExpression()

auto xpress::objects::XpressProblem::getLhsExpression ( int row ) -> xpress::objects::Expression
inline

Get the left-hand side of a row as an expression.

Parameters
row Index of row to fetch.
Returns
The left-hand side of row row.
Since
44.00

getObj() [1/2]

auto xpress::XPRSProblem::getObj ( int first,
int last ) -> std::vector<double>
inline

Returns the objective function coefficients for the columns in a given range.

Parameters
first First column in the range.
last Last column in the range.

getObj() [2/2]

auto xpress::objects::XpressProblem::getObj ( Variable variable ) -> double
inline

Query an objective function coefficient.

Retrieves the linear objective coefficient for the specified variable from the first/primary objective.

Parameters
variable The variable for which to query the objective.
Returns
The objective coefficient for variable.
Since
44.00

getObjN() [1/2]

auto xpress::XPRSProblem::getObjN ( int objidx,
int first,
int last ) -> std::vector<double>
inline

For a given objective function, returns the objective coefficients for the columns in a given range.

Parameters
objidx Index of the objective function whose coefficients to return.
first First column in the range.
last Last column in the range.

getObjN() [2/2]

auto xpress::objects::XpressProblem::getObjN ( int objidx,
Variable variable ) -> double
inline

Query an objective function coefficient.

Retrieves the linear objective coefficient for the specified variable from objective objidx.

Parameters
objidx objects.Index of objective function to query.
variable The variable for which to query the objective.
Returns
The objective coefficient for variable.
Since
44.00

getPWLs()

auto xpress::objects::XpressProblem::getPWLs ( ) -> std::vector< xpress::objects::PWL >
inline

Get all piecewise linear constraints currently defined in this problem.

Returns
All piecewise linear constraints in this problem.
See also
pwlForIndex(int)
Since
44.00

getRedCost() [1/2]

auto xpress::XPRSProblem::getRedCost ( int index ) const -> double
inline

Convenience wrapper for getRedCosts(int*, Array<double> const &, int, int) const that queries only a single value.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getRedCost() [2/2]

auto xpress::objects::XpressProblem::getRedCost ( Variable v ) -> double
inline

Get the reduced cost for a single variable.

Parameters
v Variable for which reduced cost is queried.
Returns
Reduced cost for v.
Since
44.00

getRedCosts() [1/4]

auto xpress::XPRSProblem::getRedCosts ( ) const -> std::vector<double>
inline

Convenience wrapper for getRedCosts(int*, Array<double> const &, int, int) const that allocates the output array and queries all elements.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getRedCosts() [2/4]

template<typename Coll0 , typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type>
auto xpress::objects::XpressProblem::getRedCosts ( Coll0 const & vars ) -> std::vector< double >
inline

Get the reduced costs for a collection of variables.

The values in the returned array are in 1-to-1 correspondence with the variables in vars.

Parameters
vars Variables for which reduced costs are queried.
Template Parameters
Coll0 Something that supports begin() and end() and contains values of type Variable.
Returns
Reduced costs for variables in vars.
Since
44.00

getRedCosts() [3/4]

void xpress::XPRSProblem::getRedCosts ( int * status,
Array< double > const & djs,
int first,
int last ) const
inline

Used to obtain the reduced costs associated with the incumbent solution during or after optimization of a continuous problem with XPRSoptimize, XPRSlpoptimize or XPRSnlpoptimize.

Parameters
status Information about the reduced costs returned.
djs Double pointer where the reduced costs for the variables will be returned. May be null if not required.
first First column in the reduced costs.
last Last column in the reduced costs.

getRedCosts() [4/4]

auto xpress::XPRSProblem::getRedCosts ( int first,
int last ) const -> std::vector<double>
inline

Convenience wrapper for getRedCosts(int*, Array<double> const &, int, int) const that allocates the output array.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getSlack() [1/2]

auto xpress::objects::XpressProblem::getSlack ( Inequality r ) -> double
inline

Get the current slack for a single row.

Parameters
r Inequality for which to query slack.
Returns
Slack for r.
Since
44.00

getSlack() [2/2]

auto xpress::XPRSProblem::getSlack ( int index ) const -> double
inline

Convenience wrapper for getSlacks(int*, Array<double> const &, int, int) const that queries only a single value.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getSlacks() [1/4]

auto xpress::XPRSProblem::getSlacks ( ) const -> std::vector<double>
inline

Convenience wrapper for getSlacks(int*, Array<double> const &, int, int) const that allocates the output array and queries all elements.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getSlacks() [2/4]

template<typename Coll0 , typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type>
auto xpress::objects::XpressProblem::getSlacks ( Coll0 const & rows ) -> std::vector< double >
inline

Get the current slacks for a collection of rows.

The values in the returned array are in 1-to-1 correspondence with the rows in rows.

Parameters
rows Inequalities for which to query slacks.
Template Parameters
Coll0 Something that supports begin() and end() and contains values of type Inequality.
Returns
Slacks for inequalities in rows.
Since
44.00

getSlacks() [3/4]

void xpress::XPRSProblem::getSlacks ( int * status,
Array< double > const & slacks,
int first,
int last ) const
inline

Used to obtain the slack values associated with the incumbent solution during or after optimization with XPRSoptimize, XPRSmipoptimize, XPRSlpoptimize or XPRSnlpoptimize.

Parameters
status Information about the slacks returned.
slacks Double pointer where the value of the slack variables will be returned. May be null if not required.
first First row in the slacks.
last Last row in the slacks.

getSlacks() [4/4]

auto xpress::XPRSProblem::getSlacks ( int first,
int last ) const -> std::vector<double>
inline

Convenience wrapper for getSlacks(int*, Array<double> const &, int, int) const that allocates the output array.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getSolution() [1/6]

auto xpress::XPRSProblem::getSolution ( ) const -> std::vector<double>
inline

Convenience wrapper for getSolution(int*, Array<double> const &, int, int) const that allocates the output array and queries all elements.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getSolution() [2/6]

template<typename Coll0 , typename Coll0IsCollection = typename std::enable_if<xpress::is_collection<Coll0>::value>::type>
auto xpress::objects::XpressProblem::getSolution ( Coll0 const & vars ) -> std::vector< double >
inline

Get the current solution for a collection of variables.

The values in the returned array are in 1-to-1 correspondence with the variables in vars.

Parameters
vars Variables for which solution is queried.
Template Parameters
Coll0 Something that supports begin() and end() and contains values of type Variable.
Returns
Solution values for vars.
Since
44.00

getSolution() [3/6]

void xpress::XPRSProblem::getSolution ( int * status,
Array< double > const & x,
int first,
int last ) const
inline

Used to obtain the incumbent solution during or after optimization with XPRSoptimize, XPRSmipoptimize, XPRSlpoptimize or XPRSnlpoptimize.

Parameters
status Information about the solution returned.
x Double pointer where the value of the primal variables will be returned. May be null if not required.
first First column in the solution.
last Last column in the solution.

getSolution() [4/6]

auto xpress::XPRSProblem::getSolution ( int first,
int last ) const -> std::vector<double>
inline

Convenience wrapper for getSolution(int*, Array<double> const &, int, int) const that allocates the output array.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getSolution() [5/6]

auto xpress::XPRSProblem::getSolution ( int index ) const -> double
inline

Convenience wrapper for getSolution(int*, Array<double> const &, int, int) const that queries only a single value.

Before calling this function you should make sure that a solution is available and satisfies desired requiresments like feasible, optimal, ...

getSolution() [6/6]

auto xpress::objects::XpressProblem::getSolution ( Variable v ) -> double
inline

Get the current solution for a single variable.

Parameters
v Variable for which solution is queried.
Returns
Solution for v.
Since
44.00

getSOSs()

auto xpress::objects::XpressProblem::getSOSs ( ) -> std::vector< xpress::objects::SOS >
inline

Get all the special ordered set constraints currently defined in this problem.

Returns
All special ordered set constraints in this problem.
See also
sosForIndex(int)
Since
44.00

getVariables()

auto xpress::objects::XpressProblem::getVariables ( ) -> std::vector< xpress::objects::Variable >
inline

Get all the variables currently defined in this problem.

Returns
All the variables in this problem.
See also
variableForIndex(int)
Since
44.00

inequalitiesForIndices()

auto xpress::objects::XpressProblem::inequalitiesForIndices ( int first,
int last ) const -> std::vector< xpress::objects::Inequality >
inline

Map a range of inequality indices to inequality objects.

Parameters
first First index to map.
last Last index to map.
Since
44.00

inequalityForIndex()

auto xpress::objects::XpressProblem::inequalityForIndex ( int index ) const -> xpress::objects::Inequality
inline

Map an inequality index to an inequality object.

Parameters
index Index to map.
Returns
The inequality for index.
See also
getInequalities()
Since
44.00

isNullVariable()

static auto xpress::objects::XpressProblem::isNullVariable ( Variable v ) -> bool
inlinestatic

Check whether a variable is the same as NULL_VARIABLE.

The NULL_VARIABLE is used in certain places to indicate the absence of a variable. For example, when iterating over the linear terms of an expression, a term with a NULL_VARIABLE indicates a constant term in the expression.

Parameters
v The variable to check.
Returns
true if v is the nullptr variable.
Since
44.00

isOriginal()

auto xpress::objects::XpressProblem::isOriginal ( ) -> bool
inline

Check whether this model instance is in the original state.

A model is not in the original state if it is a callback problem or its problem state indicates being presolved.

Returns
true if this instance is in original state.
Since
44.00

loadDelayedRows() [1/2]

void xpress::XPRSProblem::loadDelayedRows ( int nrows,
Array< int const > const & rowind )
inline

Specifies that a set of rows in the matrix will be treated as delayed rows during a tree search.

These are rows that must be satisfied for any integer solution, but will not be loaded into the active set of constraints until required.

Parameters
nrows The number of delayed rows.
rowind An array of row indices to treat as delayed rows.

loadDelayedRows() [2/2]

auto xpress::objects::XpressProblem::loadDelayedRows ( xpress::SizedArray< Inequality const > const & rows ) -> void
inline

Marks a set of rows as delayed rows.

Parameters
rows Inequalities to mark as delayed.
Since
44.00

loadModelCuts() [1/2]

void xpress::XPRSProblem::loadModelCuts ( int nrows,
Array< int const > const & rowind )
inline

Specifies that a set of rows in the matrix will be treated as model cuts.

Parameters
nrows The number of model cuts.
rowind An array of row indices to be treated as cuts.

loadModelCuts() [2/2]

auto xpress::objects::XpressProblem::loadModelCuts ( xpress::SizedArray< Inequality const > const & rows ) -> void
inline

Marks a set of rows as model cuts.

Parameters
rows Inequalities to mark as model cuts.
Since
44.00

nlpSetInitVal() [1/3]

void xpress::XPRSProblem::nlpSetInitVal ( int nvars,
Array< int const > const & colind,
Array< double const > const & initial )
inline

Set the initial value of a variable.

Parameters
nvars Number of variables for which the initial value is to be set.
colind Array of length nvars with index of the column for which the initial value is provided.
initial Array of length nvars with the initial value.

nlpSetInitVal() [2/3]

auto xpress::objects::XpressProblem::nlpSetInitVal ( std::unordered_map< Variable, double > values ) -> void
inline

Set initial values of variables for a non-linear solve.

Parameters
values Values to be set. For each variable/value pair in this map the corresponding initial value is set.
Since
44.00

nlpSetInitVal() [3/3]

auto xpress::objects::XpressProblem::nlpSetInitVal ( xpress::SizedArray< Variable const > const & variables,
xpress::SizedArray< double const > const & values ) -> void
inline

Set initial values of variables for a non-linear solve.

Parameters
variables Variables for which to set values.
values Values for variables. This must have the same length as variables. The initial value for variables[i] is values[i].
Since
44.00

objSA() [1/3]

auto xpress::objects::XpressProblem::objSA ( int len,
xpress::SizedArray< Variable const > const & variables,
xpress::SizedArray< double > const & lower,
xpress::SizedArray< double > const & upper ) -> void
inline

Returns upper and lower sensitivity ranges for specified objective function coefficients.

If the objective coefficients are varied within these ranges the current basis remains optimal and the reduced costs remain valid.

Parameters
len Sensitivity analysis is performed only on the first len variables in variables.
variables Variables on which to perform sensitivity analysis.
lower Array of length at least len that receives the sensitivity analysis lower bounds.
upper Array of length at least len that receives the sensitivity analysis upper bounds.
Since
44.00

objSA() [2/3]

void xpress::XPRSProblem::objSA ( int ncols,
Array< int const > const & colind,
Array< double > const & lower,
Array< double > const & upper )
inline

Returns upper and lower sensitivity ranges for specified objective function coefficients.

If the objective coefficients are varied within these ranges the current basis remains optimal and the reduced costs remain valid.

Parameters
ncols Number of objective function coefficients whose sensitivity is sought.
colind Integer array of length ncols containing the indices of the columns whose objective function coefficients sensitivity ranges are required.
lower Double array of length ncols where the objective function lower range values are to be returned.
upper Double array of length ncols where the objective function upper range values are to be returned.

objSA() [3/3]

auto xpress::objects::XpressProblem::objSA ( xpress::SizedArray< Variable const > const & variables,
xpress::SizedArray< double > const & lower,
xpress::SizedArray< double > const & upper ) -> void
inline

Returns upper and lower sensitivity ranges for specified objective function coefficients.

If the objective coefficients are varied within these ranges the current basis remains optimal and the reduced costs remain valid.

Parameters
variables Variables on which to perform sensitivity analysis.
lower Array at least as long as variables that receives the sensitivity analysis lower bounds.
upper Array at least as long as variables that receives the sensitivity analysis upper bounds.
Since
44.00

pwlForIndex()

auto xpress::objects::XpressProblem::pwlForIndex ( int index ) const -> xpress::objects::PWL
inline

Map a PWL index to a PWL object.

Parameters
index Index to map.
Returns
The PWL for index.
See also
getPWLs()
Since
44.00

pwlsForIndices()

auto xpress::objects::XpressProblem::pwlsForIndices ( int first,
int last ) const -> std::vector< xpress::objects::PWL >
inline

Map a range of PWL indices to PWL objects.

Parameters
first First index to map.
last Last index to map.
Returns
The SOSs from first (inclusive).
Since
44.00

repairWeightedInfeas() [1/2]

auto xpress::XPRSProblem::repairWeightedInfeas ( Array< double const > const & lepref,
Array< double const > const & gepref,
Array< double const > const & lbpref,
Array< double const > const & ubpref,
char phase2,
double delta,
std::optional< std::string > const & flags ) -> int
inline

By relaxing a set of selected constraints and bounds of an infeasible problem, it attempts to identify a 'solution' that violates the selected set of constraints and bounds minimally, while satisfying all other constraints and bounds.

Among such solution candidates, it selects one that is optimal regarding the original objective function. For the console version, see REPAIRINFEAS.

Parameters
lepref Array of size ROWS containing the preferences for relaxing the less or equal side of row.
gepref Array of size ROWS containing the preferences for relaxing the greater or equal side of a row.
lbpref Array of size COLS containing the preferences for relaxing lower bounds.
ubpref Array of size COLS containing preferences for relaxing upper bounds.
phase2 Controls the second phase of optimization:
  • o: use the objective sense of the original problem (default);
  • x: maximize the relaxed problem using the original objective;
  • f: skip optimization regarding the original objective;
  • n: minimize the relaxed problem using the original objective;
  • i: if the relaxation is infeasible, generate an irreducible infeasible subset for the analys of the problem;
  • a: if the relaxation is infeasible, generate all irreducible infeasible subsets for the analys of the problem.
delta The relaxation multiplier in the second phase -1.
flags Specifies flags to be passed to XPRSoptimize.

repairWeightedInfeas() [2/2]

template<typename IMap , typename VMap >
auto xpress::objects::XpressProblem::repairWeightedInfeas ( VMap const & lepref,
VMap const & gepref,
IMap const & lbpref,
IMap const & ubpref,
char phase2,
double delta,
std::optional< std::string > flags ) -> int
inline

Repair infeasibilities using weights.

By relaxing a set of selected constraints and bounds of an infeasible problem, it attempts to identify a 'solution' that violates the selected set of constraints and bounds minimally, while satisfying all other constraints and bounds. Among such solution candidates, it selects one that is optimal regarding the original objective function.

Parameters
lepref Map with preferences for relaxing the less-than-or-equal direction of rows. Inequalities without preference will not be relaxed. Can be empty.
gepref Map with preferences for relaxing the greater-than-or-equal direction of rows. Inequalities without preference will not be relaxed. Can be empty.
lbpref Map with preferences for relaxing the lower bounds of variables. Variables without preference will not be relaxed. Can be empty.
ubpref Map with preferences for relaxing the upper bounds of variables. Variables without preference will not be relaxed. Can be empty.
phase2 Controls the second phase of optimization.
delta Relaxation multiplier in second phase - 1.
flags Flags passed to the optimizer.
Returns
Result status.
Since
44.00

rhsSA() [1/3]

auto xpress::objects::XpressProblem::rhsSA ( int len,
xpress::SizedArray< Inequality const > const & rows,
xpress::SizedArray< double > const & lower,
xpress::SizedArray< double > const & upper ) -> void
inline

Returns upper and lower sensitivity ranges for specified right hand side (RHS) function coefficients.

If the RHS coefficients are varied within these ranges the current basis remains optimal and the reduced costs remain valid.

Parameters
len Sensitity analysis is only performed for the first len elements in rows.
rows The rows for which to perform sensitivity analysis.
lower Array of length at least len that receives the sensitivity lower bounds.
upper Array of length at least len that receives the sensitivity upper bounds.
Since
44.00

rhsSA() [2/3]

void xpress::XPRSProblem::rhsSA ( int nrows,
Array< int const > const & rowind,
Array< double > const & lower,
Array< double > const & upper )
inline

Returns upper and lower sensitivity ranges for specified right hand side (RHS) function coefficients.

If the RHS coefficients are varied within these ranges the current basis remains optimal and the reduced costs remain valid.

Parameters
nrows The number of RHS coefficients for which sensitivity ranges are required.
rowind Integer array of length nrows containing the indices of the rows whose RHS coefficients sensitivity ranges are required.
lower Double array of length nrows where the RHS lower range values are to be returned.
upper Double array of length nrows where the RHS upper range values are to be returned.

rhsSA() [3/3]

auto xpress::objects::XpressProblem::rhsSA ( xpress::SizedArray< Inequality const > const & rows,
xpress::SizedArray< double > const & lower,
xpress::SizedArray< double > const & upper ) -> void
inline

Returns upper and lower sensitivity ranges for specified right hand side (RHS) function coefficients.

If the RHS coefficients are varied within these ranges the current basis remains optimal and the reduced costs remain valid.

Parameters
rows The rows for which to perform sensitivity analysis.
lower Array at least as long as rows that receives the sensitivity lower bounds.
upper Array at least as long as rows that receives the sensitivity upper bounds.
Since
44.00

setIndicator()

auto xpress::objects::XpressProblem::setIndicator ( Variable indicatorVariable,
bool indicatorValue,
Inequality row ) -> void
inline

Add an indicator constraint to this model.

Both variable and row must exist.

Parameters
indicatorVariable Indicator variable.
indicatorValue Whether row becomes active if indicatorVariable is non-zero (indicatorValue is true) or if indicatorVariable is zero (indicatorValue is false).
row The implied row for the indicator constraint.
Since
44.00

setIndicators() [1/5]

template<typename Func0 , typename Func1 , typename Func2 , typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,int>::type,Variable>::value>::type, typename Func1Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func1,int>::type,bool>::value>::type, typename Func2Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func2,int>::type,Inequality>::value>::type>
auto xpress::objects::XpressProblem::setIndicators ( int count,
Func0 indicatorVariable,
Func1 indicatorValue,
Func2 row ) -> void
inline

Add indicator constraints to this model.

The function iterates through [0, ... ,count[ and calls the provided functions for each in this interval. The return values of the functions are used to construct an indicator constraint. For a fixed t, if indicatorValue(t) returns true then the created constraint states that if indicatorVariable(t) is 1 (one), then row(t) must be satisfied and is ignored otherwise. Otherwise, row(t) must be satisfied if indicatorVariable(t) is 0 (zero) and is ignored otherwise.

All referenced variables and rows must exist.

Parameters
count How many constraint to add.
indicatorVariable Indicator variables.
indicatorValue Whether indicator variables should be non-zero or zero for rows to become active. If this is nullptr then rows become active if indicator variables are non-zero.
row The implied rows for the indicator constraints.
Template Parameters
Func0 auto (int) -> Variable: Maps (int) to Variable.
Func1 auto (int) -> bool: Maps (int) to bool.
Func2 auto (int) -> Inequality: Maps (int) to Inequality.
Since
44.00

setIndicators() [2/5]

void xpress::XPRSProblem::setIndicators ( int nrows,
Array< int const > const & rowind,
Array< int const > const & colind,
Array< int const > const & complement )
inline

Specifies that a set of rows in the matrix will be treated as indicator constraints during a tree search.

An indicator constraint is made of a condition and a constraint. The condition is of the type "bin = value", where bin is a binary variable and value is either 0 or 1. The constraint is any matrix row (may be linear, quadratic or general nonlinear). During tree search, a row configured as an indicator constraint is enforced only when condition holds, that is only if the indicator variable bin has the specified value. Note that every row may only get assigned a single indicator variable and term. If a row needs to be activated by multiple different terms, the row needs to be duplicated so that each term can be assigned to a distinct row. If the indicator variable should be changed, the old term needs to be deleted first (by calling XPRSdelindicators or by calling this function with a comps argument of 0) before assigning a new one.

Parameters
nrows The number of indicator constraints.
rowind Integer array of length nrows containing the indices of the rows that define the constraint part for the indicator constraints.
colind Integer array of length nrows containing the column indices of the indicator variables.
complement Integer array of length nrows with the complement flags:
  • 0: not an indicator constraint (in this case the corresponding entry in the colind array is ignored);
  • 1: for indicator constraints with condition "<code>bin = 1</code>";
  • -1: for indicator constraints with condition "<code>bin = 0</code>".

setIndicators() [3/5]

template<typename Iter0 , typename T = typename Iter0::value_type, typename Func0 , typename Func1 , typename Func2 , typename Iter0IsIterable = typename std::enable_if<xpress::is_iterable<Iter0>::value>::type, typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,T>::type,Variable>::value>::type, typename Func1Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func1,T>::type,bool>::value>::type, typename Func2Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func2,T>::type,Inequality>::value>::type>
auto xpress::objects::XpressProblem::setIndicators ( Iter0 const & data,
Func0 indicatorVariable,
Func1 indicatorValue,
Func2 row ) -> void
inline

Add indicator constraints to this model.

The function iterates through data and calls the provided functions for each element found. The return values of the functions are used to construct an indicator constraint. For a fixed t, if indicatorValue(t) returns true then the created constraint states that if indicatorVariable(t) is 1 (one), then row(t) must be satisfied and is ignored otherwise. Otherwise, row(t) must be satisfied if indicatorVariable(t) is 0 (zero) and is ignored otherwise.

All referenced variables and rows must exist.

Parameters
data Data for which constraints are created.
indicatorVariable Indicator variables.
indicatorValue Whether indicator variables should be non-zero or zero for rows to become active. If this is nullptr then rows become active if indicator variables are non-zero.
row The implied rows for the indicator constraints.
Template Parameters
Iter0 Something that supports begin() and end() and contains values of type T.
T Data type.
Func0 auto (T) -> Variable: Maps (T) to Variable.
Func1 auto (T) -> bool: Maps (T) to bool.
Func2 auto (T) -> Inequality: Maps (T) to Inequality.
Since
44.00

setIndicators() [4/5]

template<typename T , typename Func0 , typename Func1 , typename Func2 , typename Func0Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func0,T>::type,Variable>::value>::type, typename Func1Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func1,T>::type,bool>::value>::type, typename Func2Invocable = typename std::enable_if<std::is_convertible<typename std::invoke_result<Func2,T>::type,Inequality>::value>::type>
auto xpress::objects::XpressProblem::setIndicators ( xpress::SizedArray< T const > const & data,
Func0 indicatorVariable,
Func1 indicatorValue,
Func2 row ) -> void
inline

Add indicator constraints to this model.

The function iterates through data and calls the provided functions for each element found. The return values of the functions are used to construct an indicator constraint. For a fixed t, if indicatorValue(t) returns true then the created constraint states that if indicatorVariable(t) is 1 (one), then row(t) must be satisfied and is ignored otherwise. Otherwise, row(t) must be satisfied if indicatorVariable(t) is 0 (zero) and is ignored otherwise.

All referenced variables and rows must exist.

Parameters
data Data for which constraints are created.
indicatorVariable Indicator variables.
indicatorValue Whether indicator variables should be non-zero or zero for rows to become active. If this is nullptr then rows become active if indicator variables are non-zero.
row The implied rows for the indicator constraints.
Template Parameters
T Data type.
Func0 auto (T) -> Variable: Maps (T) to Variable.
Func1 auto (T) -> bool: Maps (T) to bool.
Func2 auto (T) -> Inequality: Maps (T) to Inequality.
Since
44.00

setIndicators() [5/5]

auto xpress::objects::XpressProblem::setIndicators ( xpress::SizedArray< Variable const > const & indicatorVariable,
std::vector< bool > const & indicatorValue,
xpress::SizedArray< Inequality const > const & row ) -> void
inline

Add indicator constraints to this model.

The provided arrays must all have length at least count and for any i in 0..count-1 an indicator constraint is constructed from indicatorVariable[i], indicatorValue[i] and row[i]. If indicatorValue[i] is true then the constraints states that if indicatorVariable[i] is 1 (one), then row[i] must be satisfied (and if indicator is 0 (zero) then row[i] is ignored). Otherwise, row[i] must be satisfied if indicator[i] is 0 (zero) and is ignored otherwise.

All referenced variables and rows must exist.

Parameters
indicatorVariable Indicator variables.
indicatorValue Whether rows become active if indicator variables are non-zero (indicatorValue[.] is true) or if indicator variables are zero (indicatorValue is false). If this is nullptr or empty then rows become active if indicator variables are non-zero.
row The implied rows for the indicator constraints.
Since
44.00

setObjective() [1/3]

auto xpress::objects::XpressProblem::setObjective ( int idx,
xpress::objects::Expression obj,
int priority,
double weight,
double abstol,
double reltol ) -> void
inline

Set an objective function and its controls.

In case of error:

  • if the function created objectives then all newly created objectives will be removed,
  • if an existing objective was modified then that objective function will be cleared and all controls will be unchanged.
Parameters
idx Index of objective to set.
obj New objective for idx.
priority New objective priority.
weight New objective weight.
abstol New absolute tolerance for objective idx.
reltol New relative tolerance for objective idx.
Since
44.00

setObjective() [2/3]

auto xpress::objects::XpressProblem::setObjective ( xpress::objects::Expression obj ) -> void
inline

Set the objective function to a expression.

Parameters
obj The objective
Since
44.00

setObjective() [3/3]

auto xpress::objects::XpressProblem::setObjective ( xpress::objects::Expression obj,
xpress::ObjSense sense ) -> void
inline

Set the objective function to a expression.

Parameters
obj The objective
sense The objective sense (minimize or maximize).
Since
44.00

slpSetDetRow() [1/2]

void xpress::XPRSProblem::slpSetDetRow ( int nvars,
Array< int const > const & colind,
Array< int const > const & rowind )
inline

Set the determining row of a variable.

Parameters
nvars The number of variables for which determining rows are set.
colind Array of length nvars with the index of the column for which the determining row is set.
rowind Array of length nvars with the index of the determining row.

slpSetDetRow() [2/2]

auto xpress::objects::XpressProblem::slpSetDetRow ( Variable v,
Inequality i ) -> void
inline

Set the determining row of a variable.

Parameters
v Variable for which the determining row is set.
i Determining row for v.
Since
44.00

sosForIndex()

auto xpress::objects::XpressProblem::sosForIndex ( int index ) const -> xpress::objects::SOS
inline

Map an SOS index to an SOS object.

Parameters
index Index to map.
Returns
The SOS for index.
See also
getSOSs()
Since
44.00

sosForIndices()

auto xpress::objects::XpressProblem::sosForIndices ( int first,
int last ) const -> std::vector< xpress::objects::SOS >
inline

Map a range of SOS indices to SOS objects.

Parameters
first First index to map.
last Last index to map.
Since
44.00

variableForIndex()

auto xpress::objects::XpressProblem::variableForIndex ( int index ) const -> xpress::objects::Variable
inline

Map a variable index to a variable object.

Parameters
index Index to map.
Returns
The variable for index.
See also
getVariables()
Since
44.00

variablesForIndices()

auto xpress::objects::XpressProblem::variablesForIndices ( int first,
int last ) const -> std::vector< xpress::objects::Variable >
inline

Map a range of variable indices to variable objects.

Parameters
first First index to map.
last Last index to map.
Returns
The variables from first (inclusive) through last (inclusive).
Since
44.00

Member Data Documentation

NULL_VARIABLE

Variable const xpress::objects::XpressProblem::NULL_VARIABLE = Variable(nullptr, -1, xpress::objects::XpressProblem::NULL_VARIABLE_INDEX )
inlinestatic

Variable object that is used to indicate a constant term in expressions that are implemented as maps.

Since
44.00

The documentation for this class was generated from the following file:
  • xpress_objects.hpp

© 2001-2025 Fair Isaac Corporation. All rights reserved. This documentation is the property of Fair Isaac Corporation (“FICO”). Receipt or possession of this documentation does not convey rights to disclose, reproduce, make derivative works, use, or allow others to use it except solely for internal evaluation purposes to determine whether to purchase a license to the software described in this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO affiliate). Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use is permitted.