lemon/lp_glpk.cc
changeset 1460 7c58aabb9eea
parent 1458 7a483c1d38b5
child 1463 e8d27c74bd3b
     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()