1.1 --- a/lemon/lp_glpk.cc Thu Jun 09 09:47:51 2005 +0000
1.2 +++ b/lemon/lp_glpk.cc Thu Jun 09 09:49:48 2005 +0000
1.3 @@ -396,11 +396,10 @@
1.4
1.5 LpGlpk::SolveExitStatus LpGlpk::_solve()
1.6 {
1.7 - int i= lpx_simplex(lp);
1.8 + int i = lpx_simplex(lp);
1.9 switch (i) {
1.10 case LPX_E_OK:
1.11 return SOLVED;
1.12 - break;
1.13 default:
1.14 return UNSOLVED;
1.15 }
1.16 @@ -423,6 +422,54 @@
1.17 switch (stat) {
1.18 case LPX_UNDEF://Undefined (no solve has been run yet)
1.19 return UNDEFINED;
1.20 + case LPX_NOFEAS://There is no feasible solution (primal, I guess)
1.21 + case LPX_INFEAS://Infeasible
1.22 + return INFEASIBLE;
1.23 + case LPX_UNBND://Unbounded
1.24 + return INFINITE;
1.25 + case LPX_FEAS://Feasible
1.26 + return FEASIBLE;
1.27 + case LPX_OPT://Feasible
1.28 + return OPTIMAL;
1.29 + default:
1.30 + return UNDEFINED; //to avoid gcc warning
1.31 + //FIXME error
1.32 + }
1.33 + }
1.34 +
1.35 + LpGlpk::SolutionStatus LpGlpk::_getDualStatus()
1.36 + {
1.37 + int stat= lpx_get_dual_stat(lp);
1.38 + switch (stat) {
1.39 + case LPX_D_UNDEF://Undefined (no solve has been run yet)
1.40 + return UNDEFINED;
1.41 + case LPX_D_NOFEAS://There is no feasible solution (primal, I guess)
1.42 + case LPX_D_INFEAS://Infeasible
1.43 + return INFEASIBLE;
1.44 + case LPX_FEAS://Feasible
1.45 + int stat2= lpx_get_prim_stat(lp);
1.46 + switch (stat2){
1.47 + case LPX_P_NOFEAS:
1.48 + return INFINITE;
1.49 + case LPX_OPT:
1.50 + return OPTIMAL;
1.51 + default:
1.52 + return FEASIBLE;
1.53 + }
1.54 + default:
1.55 + return UNDEFINED; //to avoid gcc warning
1.56 + //FIXME error
1.57 + }
1.58 + }
1.59 +
1.60 + LpGlpk::ProblemTypes LpGlpk::_problemType()
1.61 + {
1.62 + int stat= lpx_get_status(lp);
1.63 + int statp= lpx_get_prim_stat(lp);
1.64 + int statd= lpx_get_dual_stat(lp);
1.65 + switch (stat) {
1.66 + case LPX_UNDEF://Undefined (no solve has been run yet)
1.67 + return UNDEFINED;
1.68 break;
1.69 case LPX_NOFEAS://There is no feasible solution (primal, I guess)
1.70 case LPX_INFEAS://Infeasible
1.71 @@ -443,7 +490,6 @@
1.72 }
1.73 }
1.74
1.75 -
1.76 void LpGlpk::_setMax()
1.77 {
1.78 lpx_set_obj_dir(lp, LPX_MAX);