lemon/lp_glpk.cc
changeset 1458 7a483c1d38b5
parent 1436 e0beb94d08bf
child 1460 7c58aabb9eea
     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);