22 #define LP_MAX_ITER 9999999
32 void CPX_check_error
PROTO((
const char *erring_func));
34 #elif defined(__OSL__)
40 #include <ekk_c_api.h>
42 void OSL_check_error
PROTO((
const char *erring_func));
44 #elif defined(__OSI_CPLEX__) || defined(__OSI_OSL__) || defined(__OSI_CLP__) \
45 || defined(__OSI_XPRESS__) || defined(__OSI_SOPLEX__) || defined(__OSI_VOL__) \
46 || defined(__OSI_DYLP__) || defined (__OSI_GLPK__)
82 #include "OsiOslSolverInterface.hpp"
83 typedef OsiOslSolverInterface OsiXSolverInterface;
102 #include "OsiVolSolverInterface.hpp"
103 typedef OsiVolSolverInterface OsiXSolverInterface;
107 #include "OsiDylpSolverInterface.hpp"
108 typedef OsiDylpSolverInterface OsiXSolverInterface;
118 #error ###################################
119 #error # Undefined or unknown LP solver.
120 #error # Please edit SYMPHONY/Makefile
121 #error # and define LP_SOLVER properly.
122 #error ###################################
167 #if defined(__OSI_CPLEX__) || defined(__OSI_OSL__) || defined(__OSI_CLP__) \
168 || defined(__OSI_XPRESS__) || defined(__OSI_SOPLEX__) || defined(__OSI_VOL__) \
169 || defined(__OSI_DYLP__) || defined (__OSI_GLPK__)
170 OsiXSolverInterface * si;
219 double *pseudo_costs_one;
220 double *pseudo_costs_zero;
233 double dot_product
PROTO((
double *val,
int *ind,
int collen,
double *col));
236 void size_lp_arrays
PROTO((
LPdata *lp_data,
char do_realloc,
char set_max,
237 int row_num,
int col_num,
int nzcnt));
240 void load_lp_prob
PROTO((
LPdata *lp_data,
int scaling,
int fastmip));
241 int reset_lp_prob
PROTO ((
LPdata *lp_data,
int scaling,
int fastmip));
244 void load_basis
PROTO((
LPdata *lp_data,
int *cstat,
int *rstat));
246 void add_rows
PROTO((
LPdata *lp_data,
int rcnt,
int nzcnt,
double *rhs,
247 char *sense,
int *rmatbeg,
int *rmatind,
double *rmatval));
248 void add_cols
PROTO((
LPdata *lp_data,
int ccnt,
int nzcnt,
double *obj,
249 int *cmatbeg,
int *cmatind,
double *cmatval,
250 double *lb,
double *ub,
char *where_to_move));
251 void change_row
PROTO((
LPdata *lp_data,
int row_ind,
252 char sense,
double rhs,
double range));
253 void change_col
PROTO((
LPdata *lp_data,
int col_ind,
254 char sense,
double lb,
double ub));
255 int initial_lp_solve
PROTO((
LPdata *lp_data,
int *iterd));
256 int dual_simplex
PROTO((
LPdata *lp_data,
int *iterd));
257 int solve_hotstart
PROTO((
LPdata *lp_data,
int *iterd));
261 void get_binvcol
PROTO((
LPdata *lp_data,
int j,
double *col));
262 void get_binvrow
PROTO((
LPdata *lp_data,
int i,
double *row));
263 void get_basis
PROTO((
LPdata *lp_data,
int *cstat,
int *rstat));
264 void set_obj_upper_lim
PROTO((
LPdata *lp_data,
double lim));
265 void set_timelim
PROTO((
LPdata *lp_data,
double timelim));
266 void set_itlim
PROTO((
LPdata *lp_data,
int itlim));
267 void set_itlim_hotstart
PROTO((
LPdata *lp_data,
int itlim));
269 double *colval,
int *colind,
int *collen,
double *cj));
271 double *rowval,
int *rowind,
int *rowlen,
272 double *rowub,
double *rowlb));
273 int get_proof_of_infeas
PROTO((
LPdata *lp_data,
int *infind));
277 void change_range
PROTO((
LPdata *lp_data,
int rowind,
double value));
279 int rownum,
int *rhsind,
double *rhsval));
280 void change_sense
PROTO((
LPdata *lp_data,
int cnt,
int *index,
char *sense));
282 int cnt,
int *index,
char *lu,
double *bd));
283 void change_lbub
PROTO((
LPdata *lp_data,
int j,
double lb,
double ub));
284 void change_ub
PROTO((
LPdata *lp_data,
int j,
double ub));
285 void change_lb
PROTO((
LPdata *lp_data,
int j,
double lb));
286 void get_ub
PROTO((
LPdata *lp_data,
int j,
double *ub));
287 void get_lb
PROTO((
LPdata *lp_data,
int j,
double *lb));
289 void get_objcoef
PROTO((
LPdata *lp_data,
int j,
double *objcoef));
292 const int* indexLast,
double *coeffs);
295 void delete_rows
PROTO((
LPdata *lp_data,
int deletable,
int *free_rows));
296 void delete_rows_with_ind
PROTO((
LPdata *lp_data,
int deletable,
int *rowind));
297 int delete_cols
PROTO((
LPdata *lp_data,
int delnum,
int *delstat));
298 void release_var
PROTO((
LPdata *lp_data,
int j,
int where_to_move));
299 void free_row_set
PROTO((
LPdata *lp_data,
int length,
int *index));
300 void constrain_row_set
PROTO((
LPdata *lp_data,
int length,
int *index));
303 void write_mps
PROTO((
LPdata *lp_data,
char *fname));
304 void write_lp
PROTO((
LPdata *lp_data,
char *fname));
305 void write_mip_desc_mps
PROTO((
MIPdesc *mip,
char *fname));
306 void write_mip_desc_lp
PROTO((
MIPdesc *mip,
char *fname));
307 void write_sav
PROTO((
LPdata *lp_data,
char *fname));
309 void generate_cgl_cuts(
LPdata *lp_data,
int *num_cuts,
cut_data ***cuts,
310 char send_to_pool,
int bc_index,
int bc_level,
311 int node_iter_limit,
int max_cuts_before_resolve,
312 double ub,
int *bnd_changes,
315 int check_cuts(
OsiCuts &cutlist,
LPdata *lp_data,
int bc_level,
int
316 *num_cuts,
cut_data ***cuts,
char send_to_pool,
int *bnd_changes,
318 int should_generate_this_cgl_cut(
int cut_num,
int max_cuts_before_resolve,
319 int generation_flag,
int freq,
int bc_level,
int bc_index,
320 int cuts_in_root,
int *should_generate);
329 int read_gmpl
PROTO((
MIPdesc *mip,
char *modelfile,
char *datafile,
int copy_lp_data(LPdata *lp_data, LPdata *new_data)
SoPlex Solver Interface Instantiation of OsiSpxSolverInterface for SoPlex.
void get_objcoeffs(LPdata *lp_data)
Collections of row cuts and column cuts.
unsigned int verbosity
Verbosity level of unit tests.
XPRESS-MP Solver Interface.
struct TEMPORARY temporary
struct cpxenv * CPXENVptr
void change_objcoeff(LPdata *lp_data, const int *indexFirst, const int *indexLast, double *coeffs)
void get_rhs_rng_sense(LPdata *lp_data)