DyLP 1.10.4
Loading...
Searching...
No Matches
OsiDylpSolverInterface.hpp
Go to the documentation of this file.
1#ifndef OsiDylpSolverInterface_H
2#define OsiDylpSolverInterface_H
3
4/*
5 Copyright (C) 2002, 2003, 2004.
6 Lou Hafer, Stephen Tse, International Business Machines Corporation and
7 others. All Rights Reserved.
8 Copyright (C) 2005 -- 2010 Lou Hafer
9
10 This file is a portion of the COIN/OSI interface for dylp and is licensed
11 under the terms of the Eclipse Public License (EPL)
12*/
13
23/*
24 sccs: @(#)OsiDylpSolverInterface.hpp 1.12 09/16/04
25 cvs: $Id: OsiDylpSolverInterface.hpp 1312 2008-10-10 00:26:32Z lou $
26*/
27
28#include "OsiConfig.h"
29#include <CoinPackedMatrix.hpp>
31#include <CoinWarmStart.hpp>
33#include <CoinMpsIO.hpp>
35
36#define DYLP_INTERNAL
37extern "C" {
38#include "dylp.h"
39}
40
42
47
48
108
109{ friend void OsiDylpSolverInterfaceUnitTest(const std::string &mpsDir,
110 const std::string &netLibDir) ;
111
112/*
113 Consult the COIN OSI documentation or relevant source code for details
114 not covered here. Supported functions are listed first, followed by
115 unsupported functions.
116*/
117
118public:
119
122
126
130
133 OsiSolverInterface* clone(bool copyData = true) const ;
134
138
142
147 void reset() ;
148
150
153
156 int readMps(const char *filename, const char *extension = "mps") ;
157
162 int readMps(const char *filename, const char *extension,
163 int &numberSets, CoinSet **&sets) ;
164
172 void writeMps(const char *basename,
173 const char *extension = "mps",
174 double objsense = 0.0) const ;
175
179 void loadProblem(const CoinPackedMatrix &matrix,
180 const double *collb, const double *colub, const double *obj,
181 const char *rowsen, const double *rowrhs,
182 const double *rowrng) ;
183
187 void loadProblem(const CoinPackedMatrix &matrix,
188 const double *collb, const double *colub, const double *obj,
189 const double *rowlb, const double *rowub) ;
190
194 void loadProblem(const int colcnt, const int rowcnt,
195 const int *start, const int *index, const double *value,
196 const double *collb, const double *colub, const double *obj,
197 const char *sense, const double *rhsin, const double *range) ;
198
202 void loadProblem(const int colcnt, const int rowcnt,
203 const int *start, const int *index, const double *value,
204 const double *collb, const double *colub, const double *obj,
205 const double *row_lower, const double *row_upper) ;
206
211 double *&collb, double *&colub, double *&obj,
212 char *&rowsen, double *&rowrhs, double *&rowrng) ;
213
218 double *&collb, double *&colub, double *&obj,
219 double *&rowlb, double *&rowub) ;
220
222
226
229 int getNumCols() const ;
230
233 int getNumRows() const ;
234
237 int getNumElements() const ;
238
244 int getNumIntegers() const ;
245
248 const double* getColLower() const ;
249
252 const double* getColUpper() const ;
253
256 bool isContinuous(int colIndex) const ;
257
260 bool isBinary(int colIndex) const ;
261
264 bool isIntegerNonBinary (int colIndex) const ;
265
268 bool isInteger (int colIndex) const ;
269
272 const char* getRowSense() const ;
273
276 const double* getRightHandSide() const ;
277
280 const double* getRowRange() const ;
281
284 const double* getRowLower() const ;
285
288 const double* getRowUpper() const ;
289
292 const double* getObjCoefficients() const ;
293
299 double getObjSense() const ;
300
304
309
316
319 void setObjName (std::string name) ;
320
326 void setRowName(int ndx, std::string name) ;
327
333 void setColName(int ndx, std::string name) ;
334
336
339
342 void setContinuous(int index) ;
344
347 void setInteger(int index) ;
349
352 void setColLower(int index, double value) ;
354
357 void setColUpper(int index, double value) ;
359
362 void setRowLower(int index, double value) ;
363
366 void setRowUpper(int index, double value) ;
367
370 void setRowType(int index, char rowsen, double rowrhs, double rowrng) ;
371
374 void setObjCoeff (int index, double value) ;
375
378 void setObjective(const double * array);
379
386 void setObjSense(double sense) ;
387
390 void setColSolution(const double *colsol) ;
391
394 void setRowPrice(const double*) ;
395
396 /* For overload resolution with OSI::addCol functions. */
397
399
403 const double collb, const double colub, const double obj) ;
404
407 void deleteCols(const int num, const int *colIndices) ;
408
409 /* For overload resolution with OSI::addRow functions. */
410
412
416 const double rowlb, const double rowub) ;
417
421 const char rowsen, const double rowrhs, const double rowrng) ;
422
425 void deleteRows(const int num, const int *rowIndices) ;
426
429 void applyRowCut(const OsiRowCut &cut) ;
430
433 void applyColCut(const OsiColCut &cut) ;
435
438
442
446
450
458 bool setWarmStart(const CoinWarmStart *warmStart) ;
459
462 void resolve() ;
463
467
471
475
477
480
483 bool isAbandoned() const ;
484
487 bool isProvenOptimal() const ;
488
492
497
501
504 int getIterationCount() const ;
505
512
520
521
524
527 double getInfinity() const ;
528
531 bool setIntParam(OsiIntParam key, int value) ;
532
535 bool setDblParam(OsiDblParam key, double value) ;
536
539 bool setStrParam(OsiStrParam key, const std::string& value) ;
540
543 bool setHintParam(OsiHintParam key, bool sense = true,
544 OsiHintStrength strength = OsiHintTry, void *info = 0) ;
545
548 bool getIntParam(OsiIntParam key, int &value) const ;
549
552 bool getDblParam(OsiDblParam key, double &value) const ;
553
556 bool getStrParam(OsiStrParam key, std::string &value) const ;
557
558 /* For overload resolution with OSI::getHintParam functions. */
559
561
564 bool getHintParam(OsiHintParam key, bool &sense,
565 OsiHintStrength &strength, void *&info) const ;
566
570 { setOsiDylpMessages(language) ; }
571
575 { setOsiDylpMessages(language) ; }
576
578
581
584 double getObjValue() const ;
585
588 const double* getColSolution() const ;
589
592 const double* getRowPrice() const ;
593
596 const double* getReducedCost() const ;
597
600 const double* getRowActivity() const ;
601
610 std::vector<double *> getDualRays(int maxNumRays, bool fullRay) const ;
611
614 std::vector<double *> getPrimalRays(int maxNumRays) const ;
615
617
620
623
635 void enableFactorization() const ;
636
643 void disableFactorization() const ;
644
646 bool basisIsAvailable () const ;
647
655 void getBasisStatus (int *archStatus, int *logStatus) const ;
656
663 int setBasisStatus (const int *archStatus, const int *logStatus) ;
664
671 virtual void getReducedGradient(double *columnReducedCosts,
672 double *duals, const double *c) const ;
673
675 virtual void getBasics(int *index) const ;
676
678 virtual void getBInvCol(int col, double *betak) const ;
679
681 virtual void getBInvACol(int col, double *abarj) const ;
682
684 virtual void getBInvRow(int row, double *betai) const ;
685
687 virtual void getBInvARow(int row, double *abari, double *betai = 0) const ;
688
690
691
694
701 void activateRowCutDebugger (const char * modelName) ;
702
713 void activateRowCutDebugger (const double *solution,
714 bool keepContinuous = false) ;
715
716# if ODSI_PARANOIA >= 1
726 void indexCheck (int k, bool isCol, std::string rtnnme) ;
727# endif
728
730
733
736 void dylp_controlfile(const char* name, const bool silent,
737 const bool mustexist = true) ;
738
741 void dylp_logfile(const char* name, bool echo = false) ;
742
745 void dylp_outfile(const char* name) ;
746
749 void dylp_printsoln(bool wantSoln, bool wantStats) ;
750
754
756
759
760
764
766
776
779
782
785
787
788private:
789
790/*
791 Private implementation state and helper functions. If you're contemplating
792 using any of these, you should have a look at the code.
793 See OsiDylpSolverInterface.cpp for descriptions.
794*/
801
803 consys_struct *consys ;
805 lpprob_struct *lpprob ;
807 lpstats_struct *statistics ;
808
810
813
815 static int reference_count ;
817 static bool basis_ready ;
818
820
821
827
834 ioid local_outchn ;
835
841 ioid local_logchn ;
842
847 bool initial_gtxecho ;
848
853 bool resolve_gtxecho ;
854
864 lpret_enum lp_retval ;
865
871 double obj_sense ;
872
875 double odsiInfinity ;
876
879 const std::string solvername ;
880
883 mutable void *info_[OsiLastHintParam] ;
884
887 bool mps_debug ;
888
896 CoinWarmStart *hotstart_fallback ;
897
918 enum basisCondition
919 { basisNone = 0, basisFresh, basisModified, basisDamaged } ;
920
938 struct
940 basisCondition condition ;
941 int balance ; } activeBasis ;
942
948 bool solnIsFresh ;
949
956 mutable struct
957 { int simplex ;
958 bool saved_fullsys ; } simplex_state ;
959
961
962
963
970
971 mutable double _objval ;
972 mutable double* _col_obj ;
973 mutable double* _col_x ;
974 mutable double* _col_cbar ;
975
976 mutable double* _row_rhs ;
977 mutable double* _row_lower ;
978 mutable double* _row_upper ;
979 mutable char* _row_sense ;
980 mutable double* _row_range ;
981 mutable double* _row_lhs ;
982 mutable double* _row_price ;
983
984 mutable CoinPackedMatrix* _matrix_by_col ;
985 mutable CoinPackedMatrix* _matrix_by_row ;
986
988
995
1001 CoinPresolveMatrix *preObj_ ;
1002
1009 const CoinPresolveAction *postActions_ ;
1010
1018 CoinPostsolveMatrix *postObj_ ;
1019
1021 int passLimit_ ;
1022
1024 bool keepIntegers_ ;
1025
1027 consys_struct *savedConsys_ ;
1028
1030 mutable double* saved_col_obj ;
1031 mutable double* saved_row_rhs ;
1032 mutable double* saved_row_lower ;
1033 mutable double* saved_row_upper ;
1034 mutable char* saved_row_sense ;
1035 mutable double* saved_row_range ;
1036 mutable CoinPackedMatrix* saved_matrix_by_col ;
1037 mutable CoinPackedMatrix* saved_matrix_by_row ;
1038
1040
1051 CoinPresolveMatrix *initialisePresolve(bool keepIntegers) ;
1052
1054 void doPresolve() ;
1055
1057 bool evalPresolve() ;
1058
1060 void saveOriginalSys() ;
1061
1063 void installPresolve() ;
1064
1066 CoinPostsolveMatrix *initialisePostsolve(CoinPresolveMatrix *&preObj) ;
1067
1069 void doPostsolve() ;
1070
1072 void installPostsolve() ;
1073
1075 void destruct_presolve() ;
1076
1078
1082
1084 bool ensureOwnership () const ;
1085
1086//}@
1087
1091 void construct_lpprob() ;
1092 void construct_options() ;
1093 void construct_consys(int cols, int rows) ;
1094 void dylp_ioinit() ;
1095 void gen_rowparms(int rowcnt,
1096 double *rhs, double *rhslow, contyp_enum *ctyp,
1097 const double *rowlb, const double *rowub) ;
1098 void gen_rowparms(int rowcnt,
1099 double *rhs, double *rhslow, contyp_enum *ctyp,
1100 const char *sense, const double *rhsin, const double *range) ;
1101 void load_problem(const CoinMpsIO &mps) ;
1102 void load_problem(const CoinPackedMatrix &matrix,
1103 const double* col_lower, const double* col_upper, const double* obj,
1104 const contyp_enum *ctyp, const double* rhs, const double* rhslow) ;
1105 void load_problem (const int colcnt, const int rowcnt,
1106 const int *start, const int *lens,
1107 const int *index, const double *value,
1108 const double* col_lower, const double* col_upper, const double* obj,
1109 const contyp_enum *ctyp, const double* rhs, const double* rhslow) ;
1111
1115 lpret_enum do_lp (ODSI_start_enum start, bool echo) ;
1116
1118 void setBasisInLpprob (const OsiDylpWarmStartBasis *wsb,
1119 lpprob_struct *lpprob) const ;
1121
1124 void destruct_primal_cache() ;
1125 void destruct_dual_cache() ;
1126 void destruct_col_cache(bool structure) ;
1127 void destruct_row_cache(bool structure) ;
1128 void destruct_cache(bool rowStructure, bool colStructure) ;
1129 void destruct_problem(bool preserve_interface) ;
1130 void detach_dylp() const ;
1132
1133
1135/*
1136 There are separate groups for member and static methods so that doxygen
1137 won't promote the group to the top level.
1138*/
1140
1141 void add_col(const CoinPackedVectorBase& coin_coli,
1142 vartyp_enum vtypi, double vlbi,
1143 double vubi, double obji, const std::string *nme) ;
1144 void add_row(const CoinPackedVectorBase& coin_rowi,
1145 char clazzi, contyp_enum ctypi,
1146 double rhsi, double rhslowi, const std::string *nme) ;
1147 void calc_objval() ;
1148 contyp_enum bound_to_type(double lower, double upper) ;
1149 void gen_rowiparms(contyp_enum* ctypi, double* rhsi, double* rhslowi,
1150 char sensei, double rhsini, double rangei) ;
1151 void gen_rowiparms(contyp_enum* ctypi, double* rhsi, double* rhslowi,
1152 double rowlbi, double rowubi) ;
1153 void unimp_hint(bool dylpSense, bool hintSense,
1154 OsiHintStrength hintStrength, const char *msgString) ;
1155 void pessimal_primal() ;
1156 void reduceActiveBasis() ;
1157
1159
1162 static contyp_enum sense_to_type(char type) ;
1163 static char type_to_sense(contyp_enum type) ;
1165
1172 template<class T> static void copy(const T* src, T* dst, int n) ;
1173 template<class T> static T* copy(const T* src, int n) ;
1174 template<class T> static T* copy(const T* src) ;
1175/*
1176 Specializations for more complicated structures.
1177*/
1178 static basis_struct* copy_basis(const basis_struct* src, int dstsze) ;
1179 static void copy_basis(const basis_struct* src, basis_struct* dst) ;
1180 static lpprob_struct* copy_lpprob(const lpprob_struct* src) ;
1182
1183#ifndef _MSC_VER
1189 template<class T> static void assert_same(const T& t1, const T& t2,
1190 bool exact) ;
1191 template<class T> static void assert_same(const T* t1, const T* t2,
1192 int n, bool exact) ;
1193
1194 static void assert_same(double d1, double d2, bool exact) ;
1195
1196 static void assert_same(const basis_struct& b1,
1197 const basis_struct& b2, bool exact) ;
1198 static void assert_same(const consys_struct& c1, const
1199 consys_struct& c2, bool exact) ;
1200 static void assert_same(const conbnd_struct& c1, const
1201 conbnd_struct& c2, bool exact) ;
1202 static void assert_same(const lpprob_struct& l1,
1203 const lpprob_struct& l2, bool exact) ;
1204 static void assert_same(const OsiDylpSolverInterface& o1,
1205 const OsiDylpSolverInterface& o2, bool exact) ;
1207#endif /* ! _MSC_VER */
1208
1215
1221 template<class T> inline static T* idx_vec (T* vec) { return (vec-1) ; }
1222
1224 inline static int idx (int i) { return (i+1) ; }
1225
1231 template<class T> inline static T* inv_vec (T* vec) { return (vec+1) ; }
1232
1234 inline static int inv (int i) { return (i-1) ; }
1235
1236 static pkvec_struct* packed_vector(
1237 const CoinShallowPackedVector vector, int dimension) ;
1238 static void packed_vector(
1239 const CoinShallowPackedVector vector, int dimension, pkvec_struct *dst) ;
1241
1244 static std::string make_filename(const char *filename,
1245 const char *ext1, const char *ext2) ;
1247
1248} ;
1249
1250
1251/*
1252 OsiDylpSolverInterfaceTest.cpp
1253*/
1254
1262void OsiDylpSolverInterfaceUnitTest(const std::string & mpsDir,
1263 const std::string &netLibDir) ;
1264
1265#endif // OsiDylpSolverInterface_H
ODSI_start_enum
Enum to specify cold/warm/hot start.
OsiDblParam
OsiStrParam
OsiHintStrength
OsiHintParam
OsiLastHintParam
OsiIntParam
bool isDualObjectiveLimitReached() const
Is the dual objective limit reached?
bool isInteger(int colIndex) const
Return true if the variable is integer (general or binary)
bool setHintParam(OsiHintParam key, bool sense=true, OsiHintStrength strength=OsiHintTry, void *info=0)
Set an OSI hint.
void unmarkHotStart()
Delete the hot start snapshot.
const double * getRowActivity() const
Return the vector of row activity for the solution.
int canDoSimplexInterface() const
Return the simplex implementation level.
virtual void getBInvRow(int row, double *betai) const
Get a row of the basis inverse.
bool isProvenOptimal() const
True if dylp reported an optimal solution.
void setColLower(int index, double value)
Set the lower bound on a column (variable)
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).
void dylp_printsoln(bool wantSoln, bool wantStats)
Print the solution and/or statistics to the output file.
bool isProvenPrimalInfeasible() const
True if dylp reported the problem to be primal infeasible.
void applyColCut(const OsiColCut &cut)
Apply a column (variable) cut (adjust one or more bounds)
void setLanguage(CoinMessages::Language language)
An alias for OsiDylpSolverInterface::newLanguage.
void setRowName(int ndx, std::string name)
Set a row name.
bool isBinary(int colIndex) const
Return true if the variable is binary.
double getObjSense() const
Get the objective function sense (min/max)
bool isIntegerNonBinary(int colIndex) const
Return true if the variable is general integer.
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).
void setObjective(const double *array)
Set the objective coefficients for all columns.
void dylp_controlfile(const char *name, const bool silent, const bool mustexist=true)
Process an options (.spc) file.
const CoinPackedMatrix * getMatrixByRow() const
Get a pointer to a row-major copy of the constraint matrix.
void deleteCols(const int num, const int *colIndices)
Remove column(s) (variable(s)) from the problem.
double getInfinity() const
Get dylp's value for infinity.
int getNumCols() const
Get the number of columns (variables)
bool setDblParam(OsiDblParam key, double value)
Set an OSI double parameter.
bool isProvenDualInfeasible() const
True if dylp reported the problem to be dual infeasible (primal unbounded)
virtual void getBasics(int *index) const
Get indices of basic variables.
const double * getColSolution() const
Return the vector of primal variables for the solution.
OsiSolverInterface * clone(bool copyData=true) const
Clone the solver object.
void writeMps(const char *basename, const char *extension="mps", double objsense=0.0) const
Write the problem into the specified file in MPS format.
void addRow(const CoinPackedVectorBase &row, const double rowlb, const double rowub)
Add a row (constraint) to the problem.
virtual void getReducedGradient(double *columnReducedCosts, double *duals, const double *c) const
Calculate duals and reduced costs for the given objective coefficients.
bool isContinuous(int colIndex) const
Return true if the variable is continuous.
const double * getRightHandSide() const
Get the row (constraint) right-hand-side vector.
lpopts_struct * resolveOptions
Solver options for a resolve.
lpopts_struct * initialSolveOptions
Solver options for an initial solve.
void enableFactorization() const
Prepare the solver for the use of tableau access methods.
void setColName(int ndx, std::string name)
Set a column name.
bool getIntParam(OsiIntParam key, int &value) const
Get an OSI integer parameter.
void disableFactorization() const
Undo the effects of enableFactorization.
void setColUpper(int index, double value)
Set the upper bound on a column (variable)
CoinWarmStart * getEmptyWarmStart() const
Get an empty OsiDylpWarmStartBasis object.
void activateRowCutDebugger(const char *modelName)
Activate the row cut debugger.
const double * getRowUpper() const
Get the row (constraint) upper bound vector.
bool setStrParam(OsiStrParam key, const std::string &value)
Set an OSI string parameter.
void markHotStart()
Create a hot start snapshot.
int setBasisStatus(const int *archStatus, const int *logStatus)
Set a basis and update the factorization and solution.
CoinWarmStart * getWarmStart() const
Build a warm start object for the current lp solution.
int readMps(const char *filename, const char *extension="mps")
Read a problem description in MPS format from a file.
bool isIterationLimitReached() const
True if dylp reached the iteration limit.
const double * getObjCoefficients() const
Get the objective function coefficient vector.
const double * getColLower() const
Get the column (variable) lower bound vector.
void setColSolution(const double *colsol)
Set the value of the primal variables in the problem solution.
friend void OsiDylpSolverInterfaceUnitTest(const std::string &mpsDir, const std::string &netLibDir)
Unit test for OsiDylpSolverInterface.
void branchAndBound()
Invoke the solver's built-in branch-and-bound algorithm.
void reset()
Reset the solver object to the state produced by the default constructor.
lptols_struct * tolerances
Solver numeric tolerances.
void addRow(const CoinPackedVectorBase &row, const char rowsen, const double rowrhs, const double rowrng)
Add a row (constraint) to the problem.
void addCol(const CoinPackedVectorBase &vec, const double collb, const double colub, const double obj)
Add a column (variable) to the problem.
void setObjSense(double sense)
Set the sense (min/max) of the objective.
bool setWarmStart(const CoinWarmStart *warmStart)
Apply a warm start object.
void setObjCoeff(int index, double value)
Set an objective function coefficient.
OsiDylpSolverInterface & operator=(const OsiDylpSolverInterface &rhs)
Assignment.
bool basisIsAvailable() const
Check if an optimal basis is available.
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).
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)
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)
const double * getColUpper() const
Get the column (variable) upper bound vector.
void setOsiDylpMessages(CoinMessages::Language local_language)
Set the language for messages.
std::vector< double * > getDualRays(int maxNumRays, bool fullRay) const
Get as many dual rays as the solver can provide.
double getObjValue() const
Get the objective function value for the solution.
void getBasisStatus(int *archStatus, int *logStatus) const
Retrieve status information for architectural and logical variables.
void resolve()
Call dylp to reoptimize (warm start).
void setObjName(std::string name)
Set the objective function name.
void activateRowCutDebugger(const double *solution, bool keepContinuous=false)
Activate the row cut debugger.
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).
void setRowLower(int index, double value)
Set the lower bound on a row (constraint)
const char * getRowSense() const
Get the row sense (constraint type) vector.
void setInteger(int index)
Set a single variable to be integer.
OsiDylpSolverInterface(const OsiDylpSolverInterface &src)
Copy constructor.
void setRowPrice(const double *)
Set the value of the dual variables in the problem solution.
const double * getRowLower() const
Get the row (constraint) lower bound vector.
void setContinuous(int index)
Set a single variable to be continuous.
void setRowUpper(int index, double value)
Set the upper bound on a row (constraint)
int getNumIntegers() const
Get the number of integer variables.
int getNumElements() const
Get the number of non-zero coefficients.
OsiDylpSolverInterface()
Default constructor.
void setRowType(int index, char rowsen, double rowrhs, double rowrng)
Set the type of a row (constraint)
bool getStrParam(OsiStrParam key, std::string &value) const
Get an OSI string parameter.
void solveFromHotStart()
Call dylp to reoptimize (hot start).
void dylp_logfile(const char *name, bool echo=false)
Establish a log file.
void dylp_outfile(const char *name)
Establish an output (solution and/or statistics) file.
virtual void getBInvACol(int col, double *abarj) const
Get a column of the tableau.
const CoinPackedMatrix * getMatrixByCol() const
Get a pointer to a column-major copy of the constraint matrix.
void initialSolve()
Solve an lp from scratch.
std::vector< double * > getPrimalRays(int maxNumRays) const
Get as many primal rays as the solver can provide.
void deleteRows(const int num, const int *rowIndices)
Delete row(s) (constraint(s)) from the problem.
virtual void getBInvCol(int col, double *betak) const
Get a column of the basis inverse.
int getNumRows() const
Get the number of rows (constraints)
void applyRowCut(const OsiRowCut &cut)
Apply a row (constraint) cut (add one constraint)
virtual void getBInvARow(int row, double *abari, double *betai=0) const
Get a row of the tableau.
const double * getReducedCost() const
Return the vector of reduced costs for the solution.
bool setIntParam(OsiIntParam key, int value)
Set an OSI integer parameter.
const double * getRowPrice() const
Return the vector of dual variables for the solution.
void newLanguage(CoinMessages::Language language)
Change the language for OsiDylp messages.
bool getDblParam(OsiDblParam key, double &value) const
Get an OSI double parameter.
const double * getRowRange() const
Get the row (constraint) range vector.
bool isPrimalObjectiveLimitReached() const
Is the primal objective limit reached?
bool getHintParam(OsiHintParam key, bool &sense, OsiHintStrength &strength, void *&info) const
Get an OSI hint.
bool isAbandoned() const
True if dylp abandoned the problem.
int getIterationCount() const
Get the number of iterations for the last lp.
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.
~OsiDylpSolverInterface()
Destructor.
The dylp warm start class.
virtual void addCol(const CoinPackedVectorBase &vec, const double collb, const double colub, const double obj)=0
virtual bool getHintParam(OsiHintParam key, bool &yesNo, OsiHintStrength &strength, void *&otherInformation) const
virtual void setContinuous(int index)=0
virtual void addRow(const CoinPackedVectorBase &vec, const double rowlb, const double rowub)=0
virtual void setColLower(int elementIndex, double elementValue)=0
virtual void setColUpper(int elementIndex, double elementValue)=0
virtual void setInteger(int index)=0
vartyp_enum
Definition dy_consys.h:354
contyp_enum
Definition dy_consys.h:338
int ioid
Definition dylib_io.h:39
lpret_enum
Definition dylp.h:170