diff -r 2ee881cf30a8 -r 7c58aabb9eea lemon/lp_glpk.cc --- a/lemon/lp_glpk.cc Thu Jun 09 09:49:56 2005 +0000 +++ b/lemon/lp_glpk.cc Thu Jun 09 15:03:58 2005 +0000 @@ -444,7 +444,7 @@ case LPX_D_UNDEF://Undefined (no solve has been run yet) return UNDEFINED; case LPX_D_NOFEAS://There is no feasible solution (primal, I guess) - case LPX_D_INFEAS://Infeasible +// case LPX_D_INFEAS://Infeasible return INFEASIBLE; case LPX_FEAS://Feasible int stat2= lpx_get_prim_stat(lp); @@ -464,30 +464,19 @@ LpGlpk::ProblemTypes LpGlpk::_problemType() { - int stat= lpx_get_status(lp); + //int stat= lpx_get_status(lp); int statp= lpx_get_prim_stat(lp); int statd= lpx_get_dual_stat(lp); - switch (stat) { - case LPX_UNDEF://Undefined (no solve has been run yet) - return UNDEFINED; - break; - case LPX_NOFEAS://There is no feasible solution (primal, I guess) - case LPX_INFEAS://Infeasible - return INFEASIBLE; - break; - case LPX_UNBND://Unbounded - return INFINITE; - break; - case LPX_FEAS://Feasible - return FEASIBLE; - break; - case LPX_OPT://Feasible - return OPTIMAL; - break; - default: - return UNDEFINED; //to avoid gcc warning - //FIXME error - } + if (statp==LP_P_FEAS && statd==LP_D_FEAS) + return PRIMAL_DUAL_FEASIBLE; + if (statp==LP_P_FEAS && statd==LP_D_NOFEAS) + return PRIMAL_FEASIBLE_DUAL_INFEASIBLE; + if (statp==LP_P_NOFEAS && statd==LP_D_FEAS) + return PRIMAL_INFEASIBLE_DUAL_FEASIBLE; + if (statp==LP_P_NOFEAS && statd==LP_D_NOFEAS) + return PRIMAL_DUAL_INFEASIBLE; + //In all other cases + return UNKNOWN; } void LpGlpk::_setMax()