40 #include <OpenMS/OpenMSConfig.h>
41 #include <OpenMS/config.h>
50 #ifndef GLP_PROB_DEFINED
51 #define GLP_PROB_DEFINED
54 #if OPENMS_GLPK_VERSION_MINOR < 48
57 double _opaque_prob[100];
76 message_level(3), branching_tech(4), backtrack_tech(3),
77 preprocessing_tech(2), enable_feas_pump_heuristic(true), enable_gmi_cuts(true),
78 enable_mir_cuts(true), enable_cov_cuts(true), enable_clq_cuts(true), mip_gap(0.0),
79 time_limit((std::numeric_limits<
Int>::max)()), output_freq(5000), output_delay(10000), enable_presolve(true),
80 enable_binarization(true)
133 #if COINOR_SOLVER == 1
151 Int addRow(
const std::vector<Int>& row_indices,
const std::vector<double>& row_values,
const String& name);
155 Int addColumn(
const std::vector<Int>& column_indices,
const std::vector<double>& column_values,
const String& name);
169 Int addRow(
const std::vector<Int>& row_indices,
const std::vector<double>& row_values,
170 const String& name,
double lower_bound,
double upper_bound, Type type);
182 Int addColumn(
const std::vector<Int>& column_indices,
const std::vector<double>& column_values,
const String& name,
double lower_bound,
double upper_bound, Type type);
185 void deleteRow(
Int index);
187 void setColumnName(
Int index,
const String& name);
197 double getColumnUpperBound(
Int index);
199 double getColumnLowerBound(
Int index);
201 double getRowUpperBound(
Int index);
203 double getRowLowerBound(
Int index);
205 void setRowName(
Int index,
const String& name);
215 void setColumnBounds(
Int index,
double lower_bound,
double upper_bound, Type type);
225 void setRowBounds(
Int index,
double lower_bound,
double upper_bound, Type type);
233 void setColumnType(
Int index, VariableType type);
241 VariableType getColumnType(
Int index);
244 void setObjective(
Int index,
double obj_value);
246 double getObjective(
Int index);
253 void setObjectiveSense(Sense sense);
254 Sense getObjectiveSense();
257 Int getNumberOfColumns();
259 Int getNumberOfRows();
261 void setElement(
Int row_index,
Int column_index,
double value);
262 double getElement(
Int row_index,
Int column_index);
271 void readProblem(
const String& filename,
const String& format);
279 void writeProblem(
const String& filename,
const WriteFormat format)
const;
291 Int solve(SolverParam& solver_param,
const Size verbose_level = 0);
298 SolverStatus getStatus();
301 double getObjectiveValue();
302 double getColumnValue(
Int index);
304 Int getNumberOfNonZeroEntriesInRow(
Int idx);
305 void getMatrixRow(
Int idx, std::vector<Int>& indexes);
308 SOLVER getSolver()
const;
311 #if COINOR_SOLVER == 1
312 CoinModel * model_ =
nullptr;
313 std::vector<double> solution_;