DyLP 1.10.4
Friends | List of all members
OsiDylpSolverInterface Class Reference

COIN OSI API for dylp. More...

#include <OsiDylpSolverInterface.hpp>

+ Inheritance diagram for OsiDylpSolverInterface:
+ Collaboration diagram for OsiDylpSolverInterface:

Public Member Functions

Constructors and Destructors
 OsiDylpSolverInterface ()
 Default constructor. More...
 
 OsiDylpSolverInterface (const OsiDylpSolverInterface &src)
 Copy constructor. More...
 
OsiSolverInterface * clone (bool copyData=true) const
 Clone the solver object. More...
 
OsiDylpSolverInterfaceoperator= (const OsiDylpSolverInterface &rhs)
 Assignment. More...
 
 ~OsiDylpSolverInterface ()
 Destructor. More...
 
void reset ()
 Reset the solver object to the state produced by the default constructor. More...
 
Methods to load a problem
int readMps (const char *filename, const char *extension="mps")
 Read a problem description in MPS format from a file. More...
 
int readMps (const char *filename, const char *extension, int &numberSets, CoinSet **&sets)
 Read a problem description in MPS format from a file, including SOS information. More...
 
void writeMps (const char *basename, const char *extension="mps", double objsense=0.0) const
 Write the problem into the specified file in MPS format. More...
 
void loadProblem (const CoinPackedMatrix &matrix, const double *collb, const double *colub, const double *obj, const char *rowsen, const double *rowrhs, const double *rowrng)
 Load a problem description (OSI packed matrix, row sense, parameters unaffected). More...
 
void loadProblem (const CoinPackedMatrix &matrix, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub)
 Load a problem description (OSI packed matrix, row bounds, parameters unaffected). More...
 
void loadProblem (const int colcnt, const int rowcnt, const int *start, const int *index, const double *value, const double *collb, const double *colub, const double *obj, const char *sense, const double *rhsin, const double *range)
 Load a problem description (standard column-major packed matrix, row sense, parameters unaffected) More...
 
void loadProblem (const int colcnt, const int rowcnt, const int *start, const int *index, const double *value, const double *collb, const double *colub, const double *obj, const double *row_lower, const double *row_upper)
 Load a problem description (standard column-major packed matrix, row bounds, parameters unaffected) More...
 
void assignProblem (CoinPackedMatrix *&matrix, double *&collb, double *&colub, double *&obj, char *&rowsen, double *&rowrhs, double *&rowrng)
 Load a problem description (OSI packed matrix, row sense, parameters destroyed). More...
 
void assignProblem (CoinPackedMatrix *&matrix, double *&collb, double *&colub, double *&obj, double *&rowlb, double *&rowub)
 Load a problem description (OSI packed matrix, row bounds, parameters destroyed). More...
 
Methods to obtain problem information
int getNumCols () const
 Get the number of columns (variables) More...
 
int getNumRows () const
 Get the number of rows (constraints) More...
 
int getNumElements () const
 Get the number of non-zero coefficients. More...
 
int getNumIntegers () const
 Get the number of integer variables. More...
 
const double * getColLower () const
 Get the column (variable) lower bound vector. More...
 
const double * getColUpper () const
 Get the column (variable) upper bound vector. More...
 
bool isContinuous (int colIndex) const
 Return true if the variable is continuous. More...
 
bool isBinary (int colIndex) const
 Return true if the variable is binary. More...
 
bool isIntegerNonBinary (int colIndex) const
 Return true if the variable is general integer. More...
 
bool isInteger (int colIndex) const
 Return true if the variable is integer (general or binary) More...
 
const char * getRowSense () const
 Get the row sense (constraint type) vector. More...
 
const double * getRightHandSide () const
 Get the row (constraint) right-hand-side vector. More...
 
const double * getRowRange () const
 Get the row (constraint) range vector. More...
 
const double * getRowLower () const
 Get the row (constraint) lower bound vector. More...
 
const double * getRowUpper () const
 Get the row (constraint) upper bound vector. More...
 
const double * getObjCoefficients () const
 Get the objective function coefficient vector. More...
 
double getObjSense () const
 Get the objective function sense (min/max) More...
 
const CoinPackedMatrix * getMatrixByRow () const
 Get a pointer to a row-major copy of the constraint matrix. More...
 
const CoinPackedMatrix * getMatrixByCol () const
 Get a pointer to a column-major copy of the constraint matrix. More...
 
Methods for row and column names.

Only the set methods need to be overridden to ensure consistent names between OsiDylp and the OSI base class.

void setObjName (std::string name)
 Set the objective function name. More...
 
void setRowName (int ndx, std::string name)
 Set a row name. More...
 
void setColName (int ndx, std::string name)
 Set a column name. More...
 
Methods to modify the problem
void setContinuous (int index)
 Set a single variable to be continuous. More...
 
void setInteger (int index)
 Set a single variable to be integer. More...
 
void setColLower (int index, double value)
 Set the lower bound on a column (variable) More...
 
void setColUpper (int index, double value)
 Set the upper bound on a column (variable) More...
 
void setRowLower (int index, double value)
 Set the lower bound on a row (constraint) More...
 
void setRowUpper (int index, double value)
 Set the upper bound on a row (constraint) More...
 
void setRowType (int index, char rowsen, double rowrhs, double rowrng)
 Set the type of a row (constraint) More...
 
void setObjCoeff (int index, double value)
 Set an objective function coefficient. More...
 
void setObjective (const double *array)
 Set the objective coefficients for all columns. More...
 
void setObjSense (double sense)
 Set the sense (min/max) of the objective. More...
 
void setColSolution (const double *colsol)
 Set the value of the primal variables in the problem solution. More...
 
void setRowPrice (const double *)
 Set the value of the dual variables in the problem solution. More...
 
void addCol (const CoinPackedVectorBase &vec, const double collb, const double colub, const double obj)
 Add a column (variable) to the problem. More...
 
void deleteCols (const int num, const int *colIndices)
 Remove column(s) (variable(s)) from the problem. More...
 
void addRow (const CoinPackedVectorBase &row, const double rowlb, const double rowub)
 Add a row (constraint) to the problem. More...
 
void addRow (const CoinPackedVectorBase &row, const char rowsen, const double rowrhs, const double rowrng)
 Add a row (constraint) to the problem. More...
 
void deleteRows (const int num, const int *rowIndices)
 Delete row(s) (constraint(s)) from the problem. More...
 
void applyRowCut (const OsiRowCut &cut)
 Apply a row (constraint) cut (add one constraint) More...
 
void applyColCut (const OsiColCut &cut)
 Apply a column (variable) cut (adjust one or more bounds) More...
 
Solve methods
void initialSolve ()
 Solve an lp from scratch. More...
 
CoinWarmStart * getEmptyWarmStart () const
 Get an empty OsiDylpWarmStartBasis object. More...
 
CoinWarmStart * getWarmStart () const
 Build a warm start object for the current lp solution. More...
 
bool setWarmStart (const CoinWarmStart *warmStart)
 Apply a warm start object. More...
 
void resolve ()
 Call dylp to reoptimize (warm start). More...
 
void markHotStart ()
 Create a hot start snapshot. More...
 
void solveFromHotStart ()
 Call dylp to reoptimize (hot start). More...
 
void unmarkHotStart ()
 Delete the hot start snapshot. More...
 
Methods returning solver termination status
bool isAbandoned () const
 True if dylp abandoned the problem. More...
 
bool isProvenOptimal () const
 True if dylp reported an optimal solution. More...
 
bool isProvenPrimalInfeasible () const
 True if dylp reported the problem to be primal infeasible. More...
 
bool isProvenDualInfeasible () const
 True if dylp reported the problem to be dual infeasible (primal unbounded) More...
 
bool isIterationLimitReached () const
 True if dylp reached the iteration limit. More...
 
int getIterationCount () const
 Get the number of iterations for the last lp. More...
 
bool isPrimalObjectiveLimitReached () const
 Is the primal objective limit reached? More...
 
bool isDualObjectiveLimitReached () const
 Is the dual objective limit reached? More...
 
Methods to set/get solver parameters
double getInfinity () const
 Get dylp's value for infinity. More...
 
bool setIntParam (OsiIntParam key, int value)
 Set an OSI integer parameter. More...
 
bool setDblParam (OsiDblParam key, double value)
 Set an OSI double parameter. More...
 
bool setStrParam (OsiStrParam key, const std::string &value)
 Set an OSI string parameter. More...
 
bool setHintParam (OsiHintParam key, bool sense=true, OsiHintStrength strength=OsiHintTry, void *info=0)
 Set an OSI hint. More...
 
bool getIntParam (OsiIntParam key, int &value) const
 Get an OSI integer parameter. More...
 
bool getDblParam (OsiDblParam key, double &value) const
 Get an OSI double parameter. More...
 
bool getStrParam (OsiStrParam key, std::string &value) const
 Get an OSI string parameter. More...
 
bool getHintParam (OsiHintParam key, bool &sense, OsiHintStrength &strength, void *&info) const
 Get an OSI hint. More...
 
void newLanguage (CoinMessages::Language language)
 Change the language for OsiDylp messages. More...
 
void setLanguage (CoinMessages::Language language)
 An alias for OsiDylpSolverInterface::newLanguage. More...
 
Methods to obtain solution information
double getObjValue () const
 Get the objective function value for the solution. More...
 
const double * getColSolution () const
 Return the vector of primal variables for the solution. More...
 
const double * getRowPrice () const
 Return the vector of dual variables for the solution. More...
 
const double * getReducedCost () const
 Return the vector of reduced costs for the solution. More...
 
const double * getRowActivity () const
 Return the vector of row activity for the solution. More...
 
std::vector< double * > getDualRays (int maxNumRays, bool fullRay) const
 Get as many dual rays as the solver can provide. More...
 
std::vector< double * > getPrimalRays (int maxNumRays) const
 Get as many primal rays as the solver can provide. More...
 
Simplex API methods
int canDoSimplexInterface () const
 Return the simplex implementation level. More...
 
void enableFactorization () const
 Prepare the solver for the use of tableau access methods. More...
 
void disableFactorization () const
 Undo the effects of enableFactorization. More...
 
bool basisIsAvailable () const
 Check if an optimal basis is available. More...
 
void getBasisStatus (int *archStatus, int *logStatus) const
 Retrieve status information for architectural and logical variables. More...
 
int setBasisStatus (const int *archStatus, const int *logStatus)
 Set a basis and update the factorization and solution. More...
 
virtual void getReducedGradient (double *columnReducedCosts, double *duals, const double *c) const
 Calculate duals and reduced costs for the given objective coefficients. More...
 
virtual void getBasics (int *index) const
 Get indices of basic variables. More...
 
virtual void getBInvCol (int col, double *betak) const
 Get a column of the basis inverse. More...
 
virtual void getBInvACol (int col, double *abarj) const
 Get a column of the tableau. More...
 
virtual void getBInvRow (int row, double *betai) const
 Get a row of the basis inverse. More...
 
virtual void getBInvARow (int row, double *abari, double *betai=0) const
 Get a row of the tableau. More...
 
Debugging Methods
void activateRowCutDebugger (const char *modelName)
 Activate the row cut debugger. More...
 
void activateRowCutDebugger (const double *solution, bool keepContinuous=false)
 Activate the row cut debugger. More...
 
Dylp-specific methods
void dylp_controlfile (const char *name, const bool silent, const bool mustexist=true)
 Process an options (.spc) file. More...
 
void dylp_logfile (const char *name, bool echo=false)
 Establish a log file. More...
 
void dylp_outfile (const char *name)
 Establish an output (solution and/or statistics) file. More...
 
void dylp_printsoln (bool wantSoln, bool wantStats)
 Print the solution and/or statistics to the output file. More...
 
void setOsiDylpMessages (CoinMessages::Language local_language)
 Set the language for messages. More...
 
Unsupported functions
void branchAndBound ()
 Invoke the solver's built-in branch-and-bound algorithm. More...
 

Private Member Functions

Helper functions for presolve

Functions used to access the CoinPresolve capabilities.

There are no public functions associated with presolve — the only control is the OsiDoPresolveInInitial and OsiDoPresolveInResolve hints. The functions declared here do the work. See OsiDylpPresolve.cpp for additional explanation.

CoinPresolveMatrix * initialisePresolve (bool keepIntegers)
 Create and load a presolve object. More...
 
void doPresolve ()
 Perform presolve transformations. More...
 
bool evalPresolve ()
 Decide whether presolve was effective enough to use. More...
 
void saveOriginalSys ()
 Save the original problem. More...
 
void installPresolve ()
 Load the presolved problem into the ODSI object. More...
 
CoinPostsolveMatrix * initialisePostsolve (CoinPresolveMatrix *&preObj)
 Create and load a postsolve object. More...
 
void doPostsolve ()
 Apply the postsolve transforms from postActions_. More...
 
void installPostsolve ()
 Reload the original constraint system with the postsolved basis. More...
 
void destruct_presolve ()
 Delete presolve information. More...
 
Helper functions for the simplex API
bool ensureOwnership () const
 Ensure that the solver is ready for simplex operations. More...
 
Helper functions for problem construction
void construct_lpprob ()
 
void construct_options ()
 
void construct_consys (int cols, int rows)
 
void dylp_ioinit ()
 
void gen_rowparms (int rowcnt, double *rhs, double *rhslow, contyp_enum *ctyp, const double *rowlb, const double *rowub)
 
void gen_rowparms (int rowcnt, double *rhs, double *rhslow, contyp_enum *ctyp, const char *sense, const double *rhsin, const double *range)
 
void load_problem (const CoinMpsIO &mps)
 
void load_problem (const CoinPackedMatrix &matrix, const double *col_lower, const double *col_upper, const double *obj, const contyp_enum *ctyp, const double *rhs, const double *rhslow)
 
void load_problem (const int colcnt, const int rowcnt, const int *start, const int *lens, const int *index, const double *value, const double *col_lower, const double *col_upper, const double *obj, const contyp_enum *ctyp, const double *rhs, const double *rhslow)
 
Helper functions for invoking dylp
lpret_enum do_lp (ODSI_start_enum start, bool echo)
 Common core method to invoke dylp. More...
 
void setBasisInLpprob (const OsiDylpWarmStartBasis *wsb, lpprob_struct *lpprob) const
 Install a basis in the lp problem structure. More...
 
Destructor helpers
void destruct_primal_cache ()
 
void destruct_dual_cache ()
 
void destruct_col_cache (bool structure)
 
void destruct_row_cache (bool structure)
 
void destruct_cache (bool rowStructure, bool colStructure)
 
void destruct_problem (bool preserve_interface)
 
void detach_dylp () const
 

Static Private Member Functions

Copy helpers

Copy function templates for simple vectors and fixed-size objects, and specializations for various complex structures.

template<class T >
static void copy (const T *src, T *dst, int n)
 
template<class T >
static T * copy (const T *src, int n)
 
template<class T >
static T * copy (const T *src)
 
static basis_structcopy_basis (const basis_struct *src, int dstsze)
 
static void copy_basis (const basis_struct *src, basis_struct *dst)
 
static lpprob_structcopy_lpprob (const lpprob_struct *src)
 
Copy verification functions

Copy verification functions, to check that two structures are identical.

template<class T >
static void assert_same (const T &t1, const T &t2, bool exact)
 
template<class T >
static void assert_same (const T *t1, const T *t2, int n, bool exact)
 
static void assert_same (double d1, double d2, bool exact)
 
static void assert_same (const basis_struct &b1, const basis_struct &b2, bool exact)
 
static void assert_same (const consys_struct &c1, const consys_struct &c2, bool exact)
 
static void assert_same (const conbnd_struct &c1, const conbnd_struct &c2, bool exact)
 
static void assert_same (const lpprob_struct &l1, const lpprob_struct &l2, bool exact)
 
static void assert_same (const OsiDylpSolverInterface &o1, const OsiDylpSolverInterface &o2, bool exact)
 
Vector helper functions

The inline methods are documented here, because this is the only place they appear.

template<class T >
static T * idx_vec (T *vec)
 Convert 0-based vector pointer to 1-based vector pointer. More...
 
static int idx (int i)
 Convert 0-based index to 1-based index. More...
 
template<class T >
static T * inv_vec (T *vec)
 Convert 1-based vector pointer to 0-based vector pointer. More...
 
static int inv (int i)
 Convert 1-based index to 0-based index. More...
 
static pkvec_structpacked_vector (const CoinShallowPackedVector vector, int dimension)
 
static void packed_vector (const CoinShallowPackedVector vector, int dimension, pkvec_struct *dst)
 
File i/o helper routines
static std::string make_filename (const char *filename, const char *ext1, const char *ext2)
 

Private Attributes

Cached problem information

Problem information is cached for efficiency, to avoid repeated reconstruction of OSI structures from dylp structures.

double _objval
 
double * _col_obj
 
double * _col_x
 
double * _col_cbar
 
double * _row_rhs
 
double * _row_lower
 
double * _row_upper
 
char * _row_sense
 
double * _row_range
 
double * _row_lhs
 
double * _row_price
 
CoinPackedMatrix * _matrix_by_col
 
CoinPackedMatrix * _matrix_by_row
 
Data for presolve

Data related to the use of the CoinPresolve capabilities (which see for further information).

CoinPresolveMatrix * preObj_
 The presolve object. More...
 
const CoinPresolveAction * postActions_
 List of postsolve actions. More...
 
CoinPostsolveMatrix * postObj_
 The postsolve object. More...
 
int passLimit_
 Limit for iterations of the major presolve loop. More...
 
bool keepIntegers_
 true if presolve should consider integrality More...
 
consys_structsavedConsys_
 Saved copy of original problem. More...
 
double * saved_col_obj
 Saved pointers to cached structural vectors. More...
 
double * saved_row_rhs
 
double * saved_row_lower
 
double * saved_row_upper
 
char * saved_row_sense
 
double * saved_row_range
 
CoinPackedMatrix * saved_matrix_by_col
 
CoinPackedMatrix * saved_matrix_by_row
 

Static Private Attributes

Dylp residual control variables
static int reference_count
 Number of outstanding ODSI objects. More...
 
static bool basis_ready
 Basis maintenance package is initialised. More...
 

Friends

void OsiDylpSolverInterfaceUnitTest (const std::string &mpsDir, const std::string &netLibDir)
 Unit test for OsiDylpSolverInterface. More...
 

Solver instance control variables

These variables maintain state for individual ODSI instances.

enum  basisCondition { basisNone = 0 , basisFresh , basisModified , basisDamaged }
 Codes for basis condition. More...
 
ioid local_outchn
 Output stream for this ODSI instance. More...
 
ioid local_logchn
 Log stream for this ODSI instance. More...
 
bool initial_gtxecho
 Controls output of log information to stdout during initialSolve() More...
 
bool resolve_gtxecho
 Controls output of log information to stdout during resolve() and solveFromHotStart() More...
 
lpret_enum lp_retval
 Result of last call to solver for this ODSI instance. More...
 
double obj_sense
 Objective function sense for this ODSI instance. More...
 
double odsiInfinity
 The value of infinity. More...
 
const std::string solvername
 Solver name (dylp). More...
 
void * info_ [OsiLastHintParam]
 Array for info blocks associated with hints. More...
 
bool mps_debug
 Allow messages from CoinMpsIO package. More...
 
CoinWarmStart * hotstart_fallback
 Warm start object used as a fallback for hot start. More...
 
struct {
   CoinWarmStart *   basis
 
   basisCondition   condition
 
   int   balance
 
activeBasis
 Active basis. More...
 
bool solnIsFresh
 The most recent solution from dylp is valid. More...
 
struct {
   int   simplex
 
   bool   saved_fullsys
 
simplex_state
 State related to the OsiSimplex interface. More...
 

Dylp data structures

These fields hold pointers to the data structures which are used to pass an lp problem to dylp.

lpopts_structinitialSolveOptions
 Solver options for an initial solve. More...
 
lpopts_structresolveOptions
 Solver options for a resolve. More...
 
lptols_structtolerances
 Solver numeric tolerances. More...
 
consys_structconsys
 The constraint system. More...
 
lpprob_structlpprob
 The lp problem. More...
 
lpstats_structstatistics
 The statistics structure. More...
 

Helper functions for problem modification

void add_col (const CoinPackedVectorBase &coin_coli, vartyp_enum vtypi, double vlbi, double vubi, double obji, const std::string *nme)
 
void add_row (const CoinPackedVectorBase &coin_rowi, char clazzi, contyp_enum ctypi, double rhsi, double rhslowi, const std::string *nme)
 
void calc_objval ()
 
contyp_enum bound_to_type (double lower, double upper)
 
void gen_rowiparms (contyp_enum *ctypi, double *rhsi, double *rhslowi, char sensei, double rhsini, double rangei)
 
void gen_rowiparms (contyp_enum *ctypi, double *rhsi, double *rhslowi, double rowlbi, double rowubi)
 
void unimp_hint (bool dylpSense, bool hintSense, OsiHintStrength hintStrength, const char *msgString)
 
void pessimal_primal ()
 
void reduceActiveBasis ()
 
static contyp_enum sense_to_type (char type)
 
static char type_to_sense (contyp_enum type)
 

Detailed Description

COIN OSI API for dylp.

The class OsiDylpSolverInterface (ODSI) implements the public functions defined for the COIN OsiSolverInterface (OSI) API.

OsiDylpSolverInterface Principles for Users

In addition to the principles outlined for the OsiSolverInterface class, ODSI maintains the following:

Construction of a Constraint System: A constraint system can be batch loaded from a file (MPS format) or from a data structure, or it can be built incrementally. When building a constraint system incrementally, keep in mind that you must create a row or column (addRow or addCol, respectively) before you can adjust other properties (row or column bounds, objective, variable values, etc.)

Existence of a Solution: For proper operation, OSI requires that a SI maintain a basic primal solution at all times after a problem has been loaded.

When a problem is loaded, ODSI generates a basic primal solution (primal variable values and a matching basis). The solution is not necessarily primal or dual feasible. In terms of the objective function, this solution is pessimistic, but not necessarily worst-case. ODSI does not generate matching values for the dual variables (row prices).

Any successful call to dylp (i.e., a call that results in an optimal, infeasible, or unbounded result, or that terminates on iteration limit) will replace the existing solution with the result of the call to dylp.

It is possible to specify initial values for the primal and dual variables using setColSolution() and setRowPrice(). To specify an initial basis, see the documentation for the CoinWarmStartBasis and OsiDylpWarmStartBasis classes. When these functions are used, it is the responsibility of the client to ensure validity and consistency.

Maintenance of an LP Basis Skirting the edges of the principle that changing the problem invalidates the solution, OsiDylp will maintain a valid basis across two common operations used in branch-and-cut: deletion of a loose constraint and deletion of a nonbasic variable. Arguably the set of allowable modifications could be increased.

Assignment Assignment (operator=()) works pretty much as you'd expect, with one exception. Only one ODSI object can control the dylp solver at a time, so hot start information is not copied on assignment.

Detailed implementation comments are contained in OsiDylpSolverInterface.cpp, which is not normally scanned when generating COIN OSI API documentation.

Definition at line 107 of file OsiDylpSolverInterface.hpp.

Member Enumeration Documentation

◆ basisCondition

Codes for basis condition.

  • basisNone: no basis exists
  • basisFresh: the basis is in sync with the solver
  • basisModified: ‘good’ constraint system modifications have occurred
  • basisDamaged: ‘bad’ constraint system modifications have occurred

‘Good’ modifications are deletion of a loose constraint (specifically, a constraint with a basic logical) or a variable at bound (specifically, a nonbasic variable). ‘Bad’ modifications are deletion of a tight constraint (specifically, a constraint with a nonbasic logical) or deletion of a variable not at bound (specifically, a basic variable). Bad modifications will in general cause the basis to be primal and/or dual infeasible after it's patched up.

A subtle point: basisModified will also be used in situations where ODSI has constructed a basis but not set it into an lpprob structure. This is the case when a solution is invented for a newly loaded problem.

Enumerator
basisNone 
basisFresh 
basisModified 
basisDamaged 

Definition at line 918 of file OsiDylpSolverInterface.hpp.

Constructor & Destructor Documentation

◆ OsiDylpSolverInterface() [1/2]

OsiDylpSolverInterface::OsiDylpSolverInterface ( )

Default constructor.

◆ OsiDylpSolverInterface() [2/2]

OsiDylpSolverInterface::OsiDylpSolverInterface ( const OsiDylpSolverInterface src)

Copy constructor.

◆ ~OsiDylpSolverInterface()

OsiDylpSolverInterface::~OsiDylpSolverInterface ( )

Destructor.

Member Function Documentation

◆ clone()

OsiSolverInterface * OsiDylpSolverInterface::clone ( bool  copyData = true) const

Clone the solver object.

◆ operator=()

OsiDylpSolverInterface & OsiDylpSolverInterface::operator= ( const OsiDylpSolverInterface rhs)

Assignment.

◆ reset()

void OsiDylpSolverInterface::reset ( )

Reset the solver object to the state produced by the default constructor.

◆ readMps() [1/2]

int OsiDylpSolverInterface::readMps ( const char *  filename,
const char *  extension = "mps" 
)

Read a problem description in MPS format from a file.


◆ readMps() [2/2]

int OsiDylpSolverInterface::readMps ( const char *  filename,
const char *  extension,
int &  numberSets,
CoinSet **&  sets 
)

Read a problem description in MPS format from a file, including SOS information.

◆ writeMps()

void OsiDylpSolverInterface::writeMps ( const char *  basename,
const char *  extension = "mps",
double  objsense = 0.0 
) const

Write the problem into the specified file in MPS format.

objsense == 1 forces the file to be written as a maximisation problem, while -1 forces a minimisation problem. The default of 0 writes the file as maximisation or minimisation using the solver's current setting.

◆ loadProblem() [1/4]

void OsiDylpSolverInterface::loadProblem ( const CoinPackedMatrix &  matrix,
const double *  collb,
const double *  colub,
const double *  obj,
const char *  rowsen,
const double *  rowrhs,
const double *  rowrng 
)

Load a problem description (OSI packed matrix, row sense, parameters unaffected).

◆ loadProblem() [2/4]

void OsiDylpSolverInterface::loadProblem ( const CoinPackedMatrix &  matrix,
const double *  collb,
const double *  colub,
const double *  obj,
const double *  rowlb,
const double *  rowub 
)

Load a problem description (OSI packed matrix, row bounds, parameters unaffected).

◆ loadProblem() [3/4]

void OsiDylpSolverInterface::loadProblem ( const int  colcnt,
const int  rowcnt,
const int *  start,
const int *  index,
const double *  value,
const double *  collb,
const double *  colub,
const double *  obj,
const char *  sense,
const double *  rhsin,
const double *  range 
)

Load a problem description (standard column-major packed matrix, row sense, parameters unaffected)

◆ loadProblem() [4/4]

void OsiDylpSolverInterface::loadProblem ( const int  colcnt,
const int  rowcnt,
const int *  start,
const int *  index,
const double *  value,
const double *  collb,
const double *  colub,
const double *  obj,
const double *  row_lower,
const double *  row_upper 
)

Load a problem description (standard column-major packed matrix, row bounds, parameters unaffected)

◆ assignProblem() [1/2]

void OsiDylpSolverInterface::assignProblem ( CoinPackedMatrix *&  matrix,
double *&  collb,
double *&  colub,
double *&  obj,
char *&  rowsen,
double *&  rowrhs,
double *&  rowrng 
)

Load a problem description (OSI packed matrix, row sense, parameters destroyed).

◆ assignProblem() [2/2]

void OsiDylpSolverInterface::assignProblem ( CoinPackedMatrix *&  matrix,
double *&  collb,
double *&  colub,
double *&  obj,
double *&  rowlb,
double *&  rowub 
)

Load a problem description (OSI packed matrix, row bounds, parameters destroyed).

◆ getNumCols()

int OsiDylpSolverInterface::getNumCols ( ) const

Get the number of columns (variables)

◆ getNumRows()

int OsiDylpSolverInterface::getNumRows ( ) const

Get the number of rows (constraints)

◆ getNumElements()

int OsiDylpSolverInterface::getNumElements ( ) const

Get the number of non-zero coefficients.

◆ getNumIntegers()

int OsiDylpSolverInterface::getNumIntegers ( ) const

Get the number of integer variables.

Counts both binary and general integer variables.

◆ getColLower()

const double * OsiDylpSolverInterface::getColLower ( ) const

Get the column (variable) lower bound vector.

◆ getColUpper()

const double * OsiDylpSolverInterface::getColUpper ( ) const

Get the column (variable) upper bound vector.

◆ isContinuous()

bool OsiDylpSolverInterface::isContinuous ( int  colIndex) const

Return true if the variable is continuous.

◆ isBinary()

bool OsiDylpSolverInterface::isBinary ( int  colIndex) const

Return true if the variable is binary.

◆ isIntegerNonBinary()

bool OsiDylpSolverInterface::isIntegerNonBinary ( int  colIndex) const

Return true if the variable is general integer.

◆ isInteger()

bool OsiDylpSolverInterface::isInteger ( int  colIndex) const

Return true if the variable is integer (general or binary)

◆ getRowSense()

const char * OsiDylpSolverInterface::getRowSense ( ) const

Get the row sense (constraint type) vector.

◆ getRightHandSide()

const double * OsiDylpSolverInterface::getRightHandSide ( ) const

Get the row (constraint) right-hand-side vector.

◆ getRowRange()

const double * OsiDylpSolverInterface::getRowRange ( ) const

Get the row (constraint) range vector.

◆ getRowLower()

const double * OsiDylpSolverInterface::getRowLower ( ) const

Get the row (constraint) lower bound vector.

◆ getRowUpper()

const double * OsiDylpSolverInterface::getRowUpper ( ) const

Get the row (constraint) upper bound vector.

◆ getObjCoefficients()

const double * OsiDylpSolverInterface::getObjCoefficients ( ) const

Get the objective function coefficient vector.

◆ getObjSense()

double OsiDylpSolverInterface::getObjSense ( ) const

Get the objective function sense (min/max)

A value of 1 indicates minimisation; -1 indicates maximisation.

◆ getMatrixByRow()

const CoinPackedMatrix * OsiDylpSolverInterface::getMatrixByRow ( ) const

Get a pointer to a row-major copy of the constraint matrix.

◆ getMatrixByCol()

const CoinPackedMatrix * OsiDylpSolverInterface::getMatrixByCol ( ) const

Get a pointer to a column-major copy of the constraint matrix.

◆ setObjName()

void OsiDylpSolverInterface::setObjName ( std::string  name)

Set the objective function name.

◆ setRowName()

void OsiDylpSolverInterface::setRowName ( int  ndx,
std::string  name 
)

Set a row name.

Quietly does nothing if the name discipline (#OsiNameDiscipline) is auto. Quietly fails if the row index is invalid.

◆ setColName()

void OsiDylpSolverInterface::setColName ( int  ndx,
std::string  name 
)

Set a column name.

Quietly does nothing if the name discipline (#OsiNameDiscipline) is auto. Quietly fails if the column index is invalid.

◆ setContinuous()

void OsiDylpSolverInterface::setContinuous ( int  index)

Set a single variable to be continuous.

◆ setInteger()

void OsiDylpSolverInterface::setInteger ( int  index)

Set a single variable to be integer.

◆ setColLower()

void OsiDylpSolverInterface::setColLower ( int  index,
double  value 
)

Set the lower bound on a column (variable)

◆ setColUpper()

void OsiDylpSolverInterface::setColUpper ( int  index,
double  value 
)

Set the upper bound on a column (variable)

◆ setRowLower()

void OsiDylpSolverInterface::setRowLower ( int  index,
double  value 
)

Set the lower bound on a row (constraint)

◆ setRowUpper()

void OsiDylpSolverInterface::setRowUpper ( int  index,
double  value 
)

Set the upper bound on a row (constraint)

◆ setRowType()

void OsiDylpSolverInterface::setRowType ( int  index,
char  rowsen,
double  rowrhs,
double  rowrng 
)

Set the type of a row (constraint)

◆ setObjCoeff()

void OsiDylpSolverInterface::setObjCoeff ( int  index,
double  value 
)

Set an objective function coefficient.

◆ setObjective()

void OsiDylpSolverInterface::setObjective ( const double *  array)

Set the objective coefficients for all columns.


◆ setObjSense()

void OsiDylpSolverInterface::setObjSense ( double  sense)

Set the sense (min/max) of the objective.

Use 1 for minimisation, -1 for maximisation. (The default is minimisation; the objective is multiplied by -1 to maximise.)

◆ setColSolution()

void OsiDylpSolverInterface::setColSolution ( const double *  colsol)

Set the value of the primal variables in the problem solution.

◆ setRowPrice()

void OsiDylpSolverInterface::setRowPrice ( const double *  )

Set the value of the dual variables in the problem solution.

◆ addCol()

void OsiDylpSolverInterface::addCol ( const CoinPackedVectorBase &  vec,
const double  collb,
const double  colub,
const double  obj 
)

Add a column (variable) to the problem.

◆ deleteCols()

void OsiDylpSolverInterface::deleteCols ( const int  num,
const int *  colIndices 
)

Remove column(s) (variable(s)) from the problem.

◆ addRow() [1/2]

void OsiDylpSolverInterface::addRow ( const CoinPackedVectorBase &  row,
const double  rowlb,
const double  rowub 
)

Add a row (constraint) to the problem.

◆ addRow() [2/2]

void OsiDylpSolverInterface::addRow ( const CoinPackedVectorBase &  row,
const char  rowsen,
const double  rowrhs,
const double  rowrng 
)

Add a row (constraint) to the problem.

◆ deleteRows()

void OsiDylpSolverInterface::deleteRows ( const int  num,
const int *  rowIndices 
)

Delete row(s) (constraint(s)) from the problem.

◆ applyRowCut()

void OsiDylpSolverInterface::applyRowCut ( const OsiRowCut &  cut)

Apply a row (constraint) cut (add one constraint)

◆ applyColCut()

void OsiDylpSolverInterface::applyColCut ( const OsiColCut &  cut)

Apply a column (variable) cut (adjust one or more bounds)

◆ initialSolve()

void OsiDylpSolverInterface::initialSolve ( )

Solve an lp from scratch.

◆ getEmptyWarmStart()

CoinWarmStart * OsiDylpSolverInterface::getEmptyWarmStart ( ) const

Get an empty OsiDylpWarmStartBasis object.

◆ getWarmStart()

CoinWarmStart * OsiDylpSolverInterface::getWarmStart ( ) const

Build a warm start object for the current lp solution.

◆ setWarmStart()

bool OsiDylpSolverInterface::setWarmStart ( const CoinWarmStart *  warmStart)

Apply a warm start object.

By definition, a null parameter is a request to synch the warm start basis with the solver. ODSI interprets a 0x0 basis as a request to remove warm start information.

◆ resolve()

void OsiDylpSolverInterface::resolve ( )

Call dylp to reoptimize (warm start).

◆ markHotStart()

void OsiDylpSolverInterface::markHotStart ( )

Create a hot start snapshot.

◆ solveFromHotStart()

void OsiDylpSolverInterface::solveFromHotStart ( )

Call dylp to reoptimize (hot start).

◆ unmarkHotStart()

void OsiDylpSolverInterface::unmarkHotStart ( )

Delete the hot start snapshot.

◆ isAbandoned()

bool OsiDylpSolverInterface::isAbandoned ( ) const

True if dylp abandoned the problem.

◆ isProvenOptimal()

bool OsiDylpSolverInterface::isProvenOptimal ( ) const

True if dylp reported an optimal solution.

◆ isProvenPrimalInfeasible()

bool OsiDylpSolverInterface::isProvenPrimalInfeasible ( ) const

True if dylp reported the problem to be primal infeasible.

◆ isProvenDualInfeasible()

bool OsiDylpSolverInterface::isProvenDualInfeasible ( ) const

True if dylp reported the problem to be dual infeasible (primal unbounded)

◆ isIterationLimitReached()

bool OsiDylpSolverInterface::isIterationLimitReached ( ) const

True if dylp reached the iteration limit.

◆ getIterationCount()

int OsiDylpSolverInterface::getIterationCount ( ) const

Get the number of iterations for the last lp.

◆ isPrimalObjectiveLimitReached()

bool OsiDylpSolverInterface::isPrimalObjectiveLimitReached ( ) const

Is the primal objective limit reached?

Put in different terms, quit when the objective value becomes better than the given limit for an acceptable value.

◆ isDualObjectiveLimitReached()

bool OsiDylpSolverInterface::isDualObjectiveLimitReached ( ) const

Is the dual objective limit reached?

Put in different terms, quit when the objective value becomes worse than the given limit for an acceptable value.

◆ getInfinity()

double OsiDylpSolverInterface::getInfinity ( ) const

Get dylp's value for infinity.

◆ setIntParam()

bool OsiDylpSolverInterface::setIntParam ( OsiIntParam  key,
int  value 
)

Set an OSI integer parameter.

◆ setDblParam()

bool OsiDylpSolverInterface::setDblParam ( OsiDblParam  key,
double  value 
)

Set an OSI double parameter.

◆ setStrParam()

bool OsiDylpSolverInterface::setStrParam ( OsiStrParam  key,
const std::string &  value 
)

Set an OSI string parameter.

◆ setHintParam()

bool OsiDylpSolverInterface::setHintParam ( OsiHintParam  key,
bool  sense = true,
OsiHintStrength  strength = OsiHintTry,
void *  info = 0 
)

Set an OSI hint.

◆ getIntParam()

bool OsiDylpSolverInterface::getIntParam ( OsiIntParam  key,
int &  value 
) const

Get an OSI integer parameter.

◆ getDblParam()

bool OsiDylpSolverInterface::getDblParam ( OsiDblParam  key,
double &  value 
) const

Get an OSI double parameter.

◆ getStrParam()

bool OsiDylpSolverInterface::getStrParam ( OsiStrParam  key,
std::string &  value 
) const

Get an OSI string parameter.

◆ getHintParam()

bool OsiDylpSolverInterface::getHintParam ( OsiHintParam  key,
bool sense,
OsiHintStrength &  strength,
void *&  info 
) const

Get an OSI hint.

◆ newLanguage()

void OsiDylpSolverInterface::newLanguage ( CoinMessages::Language  language)
inline

Change the language for OsiDylp messages.

Definition at line 569 of file OsiDylpSolverInterface.hpp.

◆ setLanguage()

void OsiDylpSolverInterface::setLanguage ( CoinMessages::Language  language)
inline

An alias for OsiDylpSolverInterface::newLanguage.

Definition at line 574 of file OsiDylpSolverInterface.hpp.

◆ getObjValue()

double OsiDylpSolverInterface::getObjValue ( ) const

Get the objective function value for the solution.

◆ getColSolution()

const double * OsiDylpSolverInterface::getColSolution ( ) const

Return the vector of primal variables for the solution.

◆ getRowPrice()

const double * OsiDylpSolverInterface::getRowPrice ( ) const

Return the vector of dual variables for the solution.

◆ getReducedCost()

const double * OsiDylpSolverInterface::getReducedCost ( ) const

Return the vector of reduced costs for the solution.

◆ getRowActivity()

const double * OsiDylpSolverInterface::getRowActivity ( ) const

Return the vector of row activity for the solution.

◆ getDualRays()

std::vector< double * > OsiDylpSolverInterface::getDualRays ( int  maxNumRays,
bool  fullRay 
) const

Get as many dual rays as the solver can provide.

If fullRay is false (the default), the ray will contain only the components associated with the row duals. If fullRay is set to true, the ray will also contain the components associated with nonbasic variables.

◆ getPrimalRays()

std::vector< double * > OsiDylpSolverInterface::getPrimalRays ( int  maxNumRays) const

Get as many primal rays as the solver can provide.

◆ canDoSimplexInterface()

int OsiDylpSolverInterface::canDoSimplexInterface ( ) const

Return the simplex implementation level.


◆ enableFactorization()

void OsiDylpSolverInterface::enableFactorization ( ) const

Prepare the solver for the use of tableau access methods.

In order for the tableau methods to work, the ODSI object invoking them must own the solver; the most recent call to optimise the problem must have resulted in an optimal solution; and the solver must be holding retained data structures for that optimal solution. It's much more efficient if the solver is using the full system, but it's not mandatory.

Because this is a const method, we can't force any of this; we can only check.

◆ disableFactorization()

void OsiDylpSolverInterface::disableFactorization ( ) const

Undo the effects of enableFactorization.

Even if resolve was invoked by enableFactorization, little needs to be done here. Ownership of the solver is transferred by invocation, so there's no need to explicitly give it back.

◆ basisIsAvailable()

bool OsiDylpSolverInterface::basisIsAvailable ( ) const

Check if an optimal basis is available.

◆ getBasisStatus()

void OsiDylpSolverInterface::getBasisStatus ( int *  archStatus,
int *  logStatus 
) const

Retrieve status information for architectural and logical variables.

Retrieve status vectors for architectural (also called structural or column) and logical (also called artificial or row) variables. Returns the same information as getWarmStart, but in a different format.

◆ setBasisStatus()

int OsiDylpSolverInterface::setBasisStatus ( const int *  archStatus,
const int *  logStatus 
)

Set a basis and update the factorization and solution.

Provides the combined functionality of setWarmStart followed by resolve. As with getBasisStatus, the status vectors are coded as integers.

◆ getReducedGradient()

virtual void OsiDylpSolverInterface::getReducedGradient ( double *  columnReducedCosts,
double *  duals,
const double *  c 
) const
virtual

Calculate duals and reduced costs for the given objective coefficients.

The solver's objective coefficient vector is not changed (cf. #setObjectiveAndRefresh)

◆ getBasics()

virtual void OsiDylpSolverInterface::getBasics ( int *  index) const
virtual

Get indices of basic variables.

◆ getBInvCol()

virtual void OsiDylpSolverInterface::getBInvCol ( int  col,
double *  betak 
) const
virtual

Get a column of the basis inverse.

◆ getBInvACol()

virtual void OsiDylpSolverInterface::getBInvACol ( int  col,
double *  abarj 
) const
virtual

Get a column of the tableau.

◆ getBInvRow()

virtual void OsiDylpSolverInterface::getBInvRow ( int  row,
double *  betai 
) const
virtual

Get a row of the basis inverse.

◆ getBInvARow()

virtual void OsiDylpSolverInterface::getBInvARow ( int  row,
double *  abari,
double *  betai = 0 
) const
virtual

Get a row of the tableau.

◆ activateRowCutDebugger() [1/2]

void OsiDylpSolverInterface::activateRowCutDebugger ( const char *  modelName)

Activate the row cut debugger.

Activate the debugger for a model known to the debugger. The debugger will consult an internal database for an optimal solution vector.

◆ activateRowCutDebugger() [2/2]

void OsiDylpSolverInterface::activateRowCutDebugger ( const double *  solution,
bool  keepContinuous = false 
)

Activate the row cut debugger.

Activate the debugger for a model not included in the debugger's internal database. solution must be a full solution vector, but only the integer variables need to be correct. The debugger will fill in the continuous variables by solving an lp relaxation with the integer variables fixed as specified. If the given values for the continuous variables should be preserved, set keepContinuous to true.

◆ dylp_controlfile()

void OsiDylpSolverInterface::dylp_controlfile ( const char *  name,
const bool  silent,
const bool  mustexist = true 
)

Process an options (.spc) file.

◆ dylp_logfile()

void OsiDylpSolverInterface::dylp_logfile ( const char *  name,
bool  echo = false 
)

Establish a log file.

◆ dylp_outfile()

void OsiDylpSolverInterface::dylp_outfile ( const char *  name)

Establish an output (solution and/or statistics) file.

◆ dylp_printsoln()

void OsiDylpSolverInterface::dylp_printsoln ( bool  wantSoln,
bool  wantStats 
)

Print the solution and/or statistics to the output file.

◆ setOsiDylpMessages()

void OsiDylpSolverInterface::setOsiDylpMessages ( CoinMessages::Language  local_language)

Set the language for messages.

◆ branchAndBound()

void OsiDylpSolverInterface::branchAndBound ( )

Invoke the solver's built-in branch-and-bound algorithm.

◆ initialisePresolve()

CoinPresolveMatrix * OsiDylpSolverInterface::initialisePresolve ( bool  keepIntegers)
private

Create and load a presolve object.

◆ doPresolve()

void OsiDylpSolverInterface::doPresolve ( )
private

Perform presolve transformations.

◆ evalPresolve()

bool OsiDylpSolverInterface::evalPresolve ( )
private

Decide whether presolve was effective enough to use.

◆ saveOriginalSys()

void OsiDylpSolverInterface::saveOriginalSys ( )
private

Save the original problem.

◆ installPresolve()

void OsiDylpSolverInterface::installPresolve ( )
private

Load the presolved problem into the ODSI object.

◆ initialisePostsolve()

CoinPostsolveMatrix * OsiDylpSolverInterface::initialisePostsolve ( CoinPresolveMatrix *&  preObj)
private

Create and load a postsolve object.

◆ doPostsolve()

void OsiDylpSolverInterface::doPostsolve ( )
private

Apply the postsolve transforms from postActions_.

◆ installPostsolve()

void OsiDylpSolverInterface::installPostsolve ( )
private

Reload the original constraint system with the postsolved basis.

◆ destruct_presolve()

void OsiDylpSolverInterface::destruct_presolve ( )
private

Delete presolve information.

◆ ensureOwnership()

bool OsiDylpSolverInterface::ensureOwnership ( ) const
private

Ensure that the solver is ready for simplex operations.

◆ construct_lpprob()

void OsiDylpSolverInterface::construct_lpprob ( )
private

◆ construct_options()

void OsiDylpSolverInterface::construct_options ( )
private

◆ construct_consys()

void OsiDylpSolverInterface::construct_consys ( int  cols,
int  rows 
)
private

◆ dylp_ioinit()

void OsiDylpSolverInterface::dylp_ioinit ( )
private

◆ gen_rowparms() [1/2]

void OsiDylpSolverInterface::gen_rowparms ( int  rowcnt,
double *  rhs,
double *  rhslow,
contyp_enum ctyp,
const double *  rowlb,
const double *  rowub 
)
private

◆ gen_rowparms() [2/2]

void OsiDylpSolverInterface::gen_rowparms ( int  rowcnt,
double *  rhs,
double *  rhslow,
contyp_enum ctyp,
const char *  sense,
const double *  rhsin,
const double *  range 
)
private

◆ load_problem() [1/3]

void OsiDylpSolverInterface::load_problem ( const CoinMpsIO &  mps)
private

◆ load_problem() [2/3]

void OsiDylpSolverInterface::load_problem ( const CoinPackedMatrix &  matrix,
const double *  col_lower,
const double *  col_upper,
const double *  obj,
const contyp_enum ctyp,
const double *  rhs,
const double *  rhslow 
)
private

◆ load_problem() [3/3]

void OsiDylpSolverInterface::load_problem ( const int  colcnt,
const int  rowcnt,
const int *  start,
const int *  lens,
const int *  index,
const double *  value,
const double *  col_lower,
const double *  col_upper,
const double *  obj,
const contyp_enum ctyp,
const double *  rhs,
const double *  rhslow 
)
private

◆ do_lp()

lpret_enum OsiDylpSolverInterface::do_lp ( ODSI_start_enum  start,
bool  echo 
)
private

Common core method to invoke dylp.

◆ setBasisInLpprob()

void OsiDylpSolverInterface::setBasisInLpprob ( const OsiDylpWarmStartBasis wsb,
lpprob_struct lpprob 
) const
private

Install a basis in the lp problem structure.

◆ destruct_primal_cache()

void OsiDylpSolverInterface::destruct_primal_cache ( )
private

◆ destruct_dual_cache()

void OsiDylpSolverInterface::destruct_dual_cache ( )
private

◆ destruct_col_cache()

void OsiDylpSolverInterface::destruct_col_cache ( bool  structure)
private

◆ destruct_row_cache()

void OsiDylpSolverInterface::destruct_row_cache ( bool  structure)
private

◆ destruct_cache()

void OsiDylpSolverInterface::destruct_cache ( bool  rowStructure,
bool  colStructure 
)
private

◆ destruct_problem()

void OsiDylpSolverInterface::destruct_problem ( bool  preserve_interface)
private

◆ detach_dylp()

void OsiDylpSolverInterface::detach_dylp ( ) const
private

◆ add_col()

void OsiDylpSolverInterface::add_col ( const CoinPackedVectorBase &  coin_coli,
vartyp_enum  vtypi,
double  vlbi,
double  vubi,
double  obji,
const std::string *  nme 
)
private

◆ add_row()

void OsiDylpSolverInterface::add_row ( const CoinPackedVectorBase &  coin_rowi,
char  clazzi,
contyp_enum  ctypi,
double  rhsi,
double  rhslowi,
const std::string *  nme 
)
private

◆ calc_objval()

void OsiDylpSolverInterface::calc_objval ( )
private

◆ bound_to_type()

contyp_enum OsiDylpSolverInterface::bound_to_type ( double  lower,
double  upper 
)
private

◆ gen_rowiparms() [1/2]

void OsiDylpSolverInterface::gen_rowiparms ( contyp_enum ctypi,
double *  rhsi,
double *  rhslowi,
char  sensei,
double  rhsini,
double  rangei 
)
private

◆ gen_rowiparms() [2/2]

void OsiDylpSolverInterface::gen_rowiparms ( contyp_enum ctypi,
double *  rhsi,
double *  rhslowi,
double  rowlbi,
double  rowubi 
)
private

◆ unimp_hint()

void OsiDylpSolverInterface::unimp_hint ( bool  dylpSense,
bool  hintSense,
OsiHintStrength  hintStrength,
const char *  msgString 
)
private

◆ pessimal_primal()

void OsiDylpSolverInterface::pessimal_primal ( )
private

◆ reduceActiveBasis()

void OsiDylpSolverInterface::reduceActiveBasis ( )
private

◆ sense_to_type()

static contyp_enum OsiDylpSolverInterface::sense_to_type ( char  type)
staticprivate

◆ type_to_sense()

static char OsiDylpSolverInterface::type_to_sense ( contyp_enum  type)
staticprivate

◆ copy() [1/3]

template<class T >
static void OsiDylpSolverInterface::copy ( const T *  src,
T *  dst,
int  n 
)
staticprivate

◆ copy() [2/3]

template<class T >
static T * OsiDylpSolverInterface::copy ( const T *  src,
int  n 
)
staticprivate

◆ copy() [3/3]

template<class T >
static T * OsiDylpSolverInterface::copy ( const T *  src)
staticprivate

◆ copy_basis() [1/2]

static basis_struct * OsiDylpSolverInterface::copy_basis ( const basis_struct src,
int  dstsze 
)
staticprivate

◆ copy_basis() [2/2]

static void OsiDylpSolverInterface::copy_basis ( const basis_struct src,
basis_struct dst 
)
staticprivate

◆ copy_lpprob()

static lpprob_struct * OsiDylpSolverInterface::copy_lpprob ( const lpprob_struct src)
staticprivate

◆ assert_same() [1/8]

template<class T >
static void OsiDylpSolverInterface::assert_same ( const T &  t1,
const T &  t2,
bool  exact 
)
staticprivate

◆ assert_same() [2/8]

template<class T >
static void OsiDylpSolverInterface::assert_same ( const T *  t1,
const T *  t2,
int  n,
bool  exact 
)
staticprivate

◆ assert_same() [3/8]

static void OsiDylpSolverInterface::assert_same ( double  d1,
double  d2,
bool  exact 
)
staticprivate

◆ assert_same() [4/8]

static void OsiDylpSolverInterface::assert_same ( const basis_struct b1,
const basis_struct b2,
bool  exact 
)
staticprivate

◆ assert_same() [5/8]

static void OsiDylpSolverInterface::assert_same ( const consys_struct c1,
const consys_struct c2,
bool  exact 
)
staticprivate

◆ assert_same() [6/8]

static void OsiDylpSolverInterface::assert_same ( const conbnd_struct c1,
const conbnd_struct c2,
bool  exact 
)
staticprivate

◆ assert_same() [7/8]

static void OsiDylpSolverInterface::assert_same ( const lpprob_struct l1,
const lpprob_struct l2,
bool  exact 
)
staticprivate

◆ assert_same() [8/8]

static void OsiDylpSolverInterface::assert_same ( const OsiDylpSolverInterface o1,
const OsiDylpSolverInterface o2,
bool  exact 
)
staticprivate

◆ idx_vec()

template<class T >
static T * OsiDylpSolverInterface::idx_vec ( T *  vec)
inlinestaticprivate

Convert 0-based vector pointer to 1-based vector pointer.

For cases where it's inconvenient to adjust indices, the alternative is to adjust the pointer to the vector so it points to vector[-1]. Be careful!

Definition at line 1221 of file OsiDylpSolverInterface.hpp.

◆ idx()

static int OsiDylpSolverInterface::idx ( int  i)
inlinestaticprivate

Convert 0-based index to 1-based index.

Definition at line 1224 of file OsiDylpSolverInterface.hpp.

◆ inv_vec()

template<class T >
static T * OsiDylpSolverInterface::inv_vec ( T *  vec)
inlinestaticprivate

Convert 1-based vector pointer to 0-based vector pointer.

For cases where it's inconvenient to adjust indices, the alternative is to adjust the pointer to the vector so it points to vector[1].

Definition at line 1231 of file OsiDylpSolverInterface.hpp.

◆ inv()

static int OsiDylpSolverInterface::inv ( int  i)
inlinestaticprivate

Convert 1-based index to 0-based index.

Definition at line 1234 of file OsiDylpSolverInterface.hpp.

◆ packed_vector() [1/2]

static pkvec_struct * OsiDylpSolverInterface::packed_vector ( const CoinShallowPackedVector  vector,
int  dimension 
)
staticprivate

◆ packed_vector() [2/2]

static void OsiDylpSolverInterface::packed_vector ( const CoinShallowPackedVector  vector,
int  dimension,
pkvec_struct dst 
)
staticprivate

◆ make_filename()

static std::string OsiDylpSolverInterface::make_filename ( const char *  filename,
const char *  ext1,
const char *  ext2 
)
staticprivate

Friends And Related Function Documentation

◆ OsiDylpSolverInterfaceUnitTest

void OsiDylpSolverInterfaceUnitTest ( const std::string &  mpsDir,
const std::string &  netLibDir 
)
friend

Unit test for OsiDylpSolverInterface.

Performs various tests to see if ODSI is functioning correctly. Not an exhaustive test, but it'll (usually) catch gross problems.

Member Data Documentation

◆ initialSolveOptions

lpopts_struct* OsiDylpSolverInterface::initialSolveOptions

Solver options for an initial solve.

Definition at line 778 of file OsiDylpSolverInterface.hpp.

◆ resolveOptions

lpopts_struct* OsiDylpSolverInterface::resolveOptions

Solver options for a resolve.

Definition at line 781 of file OsiDylpSolverInterface.hpp.

◆ tolerances

lptols_struct* OsiDylpSolverInterface::tolerances

Solver numeric tolerances.

Definition at line 784 of file OsiDylpSolverInterface.hpp.

◆ consys

consys_struct* OsiDylpSolverInterface::consys
private

The constraint system.

Definition at line 803 of file OsiDylpSolverInterface.hpp.

◆ lpprob