-/* LP/MIP problem object */
-
-#if !HAVE_LIBGLPK
-
-#ifndef GLP_PROB_DEFINED
-#define GLP_PROB_DEFINED
-typedef struct
-{
- double _opaque_prob[100];
-} glp_prob;
-#endif
-
-typedef struct
-{ /* integer optimizer control parameters */
- int msg_lev; /* message level (see glp_smcp) */
- int br_tech; /* branching technique: */
-#define GLP_BR_FFV 1 /* first fractional variable */
-#define GLP_BR_LFV 2 /* last fractional variable */
-#define GLP_BR_MFV 3 /* most fractional variable */
-#define GLP_BR_DTH 4 /* heuristic by Driebeck and Tomlin */
-#define GLP_BR_PCH 5 /* hybrid pseudocost heuristic */
- int bt_tech; /* backtracking technique: */
-#define GLP_BT_DFS 1 /* depth first search */
-#define GLP_BT_BFS 2 /* breadth first search */
-#define GLP_BT_BLB 3 /* best local bound */
-#define GLP_BT_BPH 4 /* best projection heuristic */
- double tol_int; /* mip.tol_int */
- double tol_obj; /* mip.tol_obj */
- int tm_lim; /* mip.tm_lim (milliseconds) */
- int out_frq; /* mip.out_frq (milliseconds) */
- int out_dly; /* mip.out_dly (milliseconds) */
- /* mip.cb_func */
- void *cb_info; /* mip.cb_info */
- int cb_size; /* mip.cb_size */
- int pp_tech; /* preprocessing technique: */
-#define GLP_PP_NONE 0 /* disable preprocessing */
-#define GLP_PP_ROOT 1 /* preprocessing only on root level */
-#define GLP_PP_ALL 2 /* preprocessing on all levels */
- double mip_gap; /* relative MIP gap tolerance */
- int mir_cuts; /* MIR cuts (GLP_ON/GLP_OFF) */
- int gmi_cuts; /* Gomory's cuts (GLP_ON/GLP_OFF) */
- int cov_cuts; /* cover cuts (GLP_ON/GLP_OFF) */
- int clq_cuts; /* clique cuts (GLP_ON/GLP_OFF) */
- int presolve; /* enable/disable using MIP presolver */
- int binarize; /* try to binarize integer variables */
- int fp_heur; /* feasibility pump heuristic */
-#if 1 /* 28/V-2010 */
- int alien; /* use alien solver */
-#endif
- double foo_bar[29]; /* (reserved) */
-} glp_iocp;
-
-typedef struct
-{ /* simplex method control parameters */
- int msg_lev; /* message level: */
-#define GLP_MSG_OFF 0 /* no output */
-#define GLP_MSG_ERR 1 /* warning and error messages only */
-#define GLP_MSG_ON 2 /* normal output */
-#define GLP_MSG_ALL 3 /* full output */
-#define GLP_MSG_DBG 4 /* debug output */
- int meth; /* simplex method option: */
-#define GLP_PRIMAL 1 /* use primal simplex */
-#define GLP_DUALP 2 /* use dual; if it fails, use primal */
-#define GLP_DUAL 3 /* use dual simplex */
- int pricing; /* pricing technique: */
-#define GLP_PT_STD 0x11 /* standard (Dantzig rule) */
-#define GLP_PT_PSE 0x22 /* projected steepest edge */
- int r_test; /* ratio test technique: */
-#define GLP_RT_STD 0x11 /* standard (textbook) */
-#define GLP_RT_HAR 0x22 /* two-pass Harris' ratio test */
- double tol_bnd; /* spx.tol_bnd */
- double tol_dj; /* spx.tol_dj */
- double tol_piv; /* spx.tol_piv */
- double obj_ll; /* spx.obj_ll */
- double obj_ul; /* spx.obj_ul */
- int it_lim; /* spx.it_lim */
- int tm_lim; /* spx.tm_lim (milliseconds) */
- int out_frq; /* spx.out_frq */
- int out_dly; /* spx.out_dly (milliseconds) */
- int presolve; /* enable/disable using LP presolver */
- double foo_bar[36]; /* (reserved) */
-} glp_smcp;
-
-/* optimization direction flag: */
-#define GLP_MIN 1 /* minimization */
-#define GLP_MAX 2 /* maximization */
-
-/* kind of structural variable: */
-#define GLP_CV 1 /* continuous variable */
-#define GLP_IV 2 /* integer variable */
-#define GLP_BV 3 /* binary variable */
-
-/* type of auxiliary/structural variable: */
-#define GLP_FR 1 /* free variable */
-#define GLP_LO 2 /* variable with lower bound */
-#define GLP_UP 3 /* variable with upper bound */
-#define GLP_DB 4 /* double-bounded variable */
-#define GLP_FX 5 /* fixed variable */
-
-/* solution indicator: */
-#define GLP_SOL 1 /* basic solution */
-#define GLP_IPT 2 /* interior-point solution */
-#define GLP_MIP 3 /* mixed integer solution */
-
-/* solution status: */
-#define GLP_UNDEF 1 /* solution is undefined */
-#define GLP_FEAS 2 /* solution is feasible */
-#define GLP_INFEAS 3 /* solution is infeasible */
-#define GLP_NOFEAS 4 /* no feasible solution exists */
-#define GLP_OPT 5 /* solution is optimal */
-#define GLP_UNBND 6 /* solution is unbounded */
-
-/* return codes: */
-#define GLP_EBADB 0x01 /* invalid basis */
-#define GLP_ESING 0x02 /* singular matrix */
-#define GLP_ECOND 0x03 /* ill-conditioned matrix */
-#define GLP_EBOUND 0x04 /* invalid bounds */
-#define GLP_EFAIL 0x05 /* solver failed */
-#define GLP_EOBJLL 0x06 /* objective lower limit reached */
-#define GLP_EOBJUL 0x07 /* objective upper limit reached */
-#define GLP_EITLIM 0x08 /* iteration limit exceeded */
-#define GLP_ETMLIM 0x09 /* time limit exceeded */
-#define GLP_ENOPFS 0x0A /* no primal feasible solution */
-#define GLP_ENODFS 0x0B /* no dual feasible solution */
-#define GLP_EROOT 0x0C /* root LP optimum not provided */
-#define GLP_ESTOP 0x0D /* search terminated by application */
-#define GLP_EMIPGAP 0x0E /* relative mip gap tolerance reached */
-#define GLP_ENOFEAS 0x0F /* no primal/dual feasible solution */
-#define GLP_ENOCVG 0x10 /* no convergence */
-#define GLP_EINSTAB 0x11 /* numerical instability */
-#define GLP_EDATA 0x12 /* invalid data */
-#define GLP_ERANGE 0x13 /* result out of range */
-
-/* enable/disable flag: */
-#define GLP_ON 1 /* enable something */
-#define GLP_OFF 0 /* disable something */
-
-#endif
-
-/*
- * Wrappers for GLPK Functions