1.1 --- a/lemon/lp_glpk.cc Thu Jun 09 09:49:56 2005 +0000
1.2 +++ b/lemon/lp_glpk.cc Thu Jun 09 15:03:58 2005 +0000
1.3 @@ -444,7 +444,7 @@
1.4 case LPX_D_UNDEF://Undefined (no solve has been run yet)
1.5 return UNDEFINED;
1.6 case LPX_D_NOFEAS://There is no feasible solution (primal, I guess)
1.7 - case LPX_D_INFEAS://Infeasible
1.8 +// case LPX_D_INFEAS://Infeasible
1.9 return INFEASIBLE;
1.10 case LPX_FEAS://Feasible
1.11 int stat2= lpx_get_prim_stat(lp);
1.12 @@ -464,30 +464,19 @@
1.13
1.14 LpGlpk::ProblemTypes LpGlpk::_problemType()
1.15 {
1.16 - int stat= lpx_get_status(lp);
1.17 + //int stat= lpx_get_status(lp);
1.18 int statp= lpx_get_prim_stat(lp);
1.19 int statd= lpx_get_dual_stat(lp);
1.20 - switch (stat) {
1.21 - case LPX_UNDEF://Undefined (no solve has been run yet)
1.22 - return UNDEFINED;
1.23 - break;
1.24 - case LPX_NOFEAS://There is no feasible solution (primal, I guess)
1.25 - case LPX_INFEAS://Infeasible
1.26 - return INFEASIBLE;
1.27 - break;
1.28 - case LPX_UNBND://Unbounded
1.29 - return INFINITE;
1.30 - break;
1.31 - case LPX_FEAS://Feasible
1.32 - return FEASIBLE;
1.33 - break;
1.34 - case LPX_OPT://Feasible
1.35 - return OPTIMAL;
1.36 - break;
1.37 - default:
1.38 - return UNDEFINED; //to avoid gcc warning
1.39 - //FIXME error
1.40 - }
1.41 + if (statp==LP_P_FEAS && statd==LP_D_FEAS)
1.42 + return PRIMAL_DUAL_FEASIBLE;
1.43 + if (statp==LP_P_FEAS && statd==LP_D_NOFEAS)
1.44 + return PRIMAL_FEASIBLE_DUAL_INFEASIBLE;
1.45 + if (statp==LP_P_NOFEAS && statd==LP_D_FEAS)
1.46 + return PRIMAL_INFEASIBLE_DUAL_FEASIBLE;
1.47 + if (statp==LP_P_NOFEAS && statd==LP_D_NOFEAS)
1.48 + return PRIMAL_DUAL_INFEASIBLE;
1.49 + //In all other cases
1.50 + return UNKNOWN;
1.51 }
1.52
1.53 void LpGlpk::_setMax()