lemon/lp_glpk.cc
changeset 1460 7c58aabb9eea
parent 1458 7a483c1d38b5
child 1463 e8d27c74bd3b
equal deleted inserted replaced
2:0754518ac522 3:eff9e79d15e1
   442     int stat=  lpx_get_dual_stat(lp);
   442     int stat=  lpx_get_dual_stat(lp);
   443     switch (stat) {
   443     switch (stat) {
   444     case LPX_D_UNDEF://Undefined (no solve has been run yet)
   444     case LPX_D_UNDEF://Undefined (no solve has been run yet)
   445       return UNDEFINED;
   445       return UNDEFINED;
   446     case LPX_D_NOFEAS://There is no feasible solution (primal, I guess)
   446     case LPX_D_NOFEAS://There is no feasible solution (primal, I guess)
   447     case LPX_D_INFEAS://Infeasible 
   447 //    case LPX_D_INFEAS://Infeasible 
   448       return INFEASIBLE;
   448       return INFEASIBLE;
   449     case LPX_FEAS://Feasible    
   449     case LPX_FEAS://Feasible    
   450       int stat2=  lpx_get_prim_stat(lp);
   450       int stat2=  lpx_get_prim_stat(lp);
   451       switch (stat2){
   451       switch (stat2){
   452       case LPX_P_NOFEAS:
   452       case LPX_P_NOFEAS:
   462     }
   462     }
   463   }
   463   }
   464 
   464 
   465   LpGlpk::ProblemTypes LpGlpk::_problemType()
   465   LpGlpk::ProblemTypes LpGlpk::_problemType()
   466   {
   466   {
   467     int stat=  lpx_get_status(lp);
   467       //int stat=  lpx_get_status(lp);
   468     int statp=  lpx_get_prim_stat(lp);
   468     int statp=  lpx_get_prim_stat(lp);
   469     int statd=  lpx_get_dual_stat(lp);
   469     int statd=  lpx_get_dual_stat(lp);
   470     switch (stat) {
   470     if (statp==LP_P_FEAS && statd==LP_D_FEAS)
   471     case LPX_UNDEF://Undefined (no solve has been run yet)
   471 	return PRIMAL_DUAL_FEASIBLE;
   472       return UNDEFINED;
   472     if (statp==LP_P_FEAS && statd==LP_D_NOFEAS)
   473       break;
   473 	return PRIMAL_FEASIBLE_DUAL_INFEASIBLE;
   474     case LPX_NOFEAS://There is no feasible solution (primal, I guess)
   474     if (statp==LP_P_NOFEAS && statd==LP_D_FEAS)
   475     case LPX_INFEAS://Infeasible 
   475 	return PRIMAL_INFEASIBLE_DUAL_FEASIBLE;
   476       return INFEASIBLE;
   476     if (statp==LP_P_NOFEAS && statd==LP_D_NOFEAS)
   477       break;
   477 	return PRIMAL_DUAL_INFEASIBLE;
   478     case LPX_UNBND://Unbounded
   478     //In all other cases
   479       return INFINITE;
   479     return UNKNOWN;
   480       break;
       
   481     case LPX_FEAS://Feasible
       
   482       return FEASIBLE;
       
   483       break;
       
   484     case LPX_OPT://Feasible
       
   485       return OPTIMAL;
       
   486       break;
       
   487     default:
       
   488       return UNDEFINED; //to avoid gcc warning
       
   489       //FIXME error
       
   490     }
       
   491   }
   480   }
   492 
   481 
   493   void LpGlpk::_setMax()
   482   void LpGlpk::_setMax()
   494   {
   483   {
   495     lpx_set_obj_dir(lp, LPX_MAX);
   484     lpx_set_obj_dir(lp, LPX_MAX);