418 |
417 |
419 |
418 |
420 LpGlpk::SolutionStatus LpGlpk::_getPrimalStatus() |
419 LpGlpk::SolutionStatus LpGlpk::_getPrimalStatus() |
421 { |
420 { |
422 int stat= lpx_get_status(lp); |
421 int stat= lpx_get_status(lp); |
|
422 switch (stat) { |
|
423 case LPX_UNDEF://Undefined (no solve has been run yet) |
|
424 return UNDEFINED; |
|
425 case LPX_NOFEAS://There is no feasible solution (primal, I guess) |
|
426 case LPX_INFEAS://Infeasible |
|
427 return INFEASIBLE; |
|
428 case LPX_UNBND://Unbounded |
|
429 return INFINITE; |
|
430 case LPX_FEAS://Feasible |
|
431 return FEASIBLE; |
|
432 case LPX_OPT://Feasible |
|
433 return OPTIMAL; |
|
434 default: |
|
435 return UNDEFINED; //to avoid gcc warning |
|
436 //FIXME error |
|
437 } |
|
438 } |
|
439 |
|
440 LpGlpk::SolutionStatus LpGlpk::_getDualStatus() |
|
441 { |
|
442 int stat= lpx_get_dual_stat(lp); |
|
443 switch (stat) { |
|
444 case LPX_D_UNDEF://Undefined (no solve has been run yet) |
|
445 return UNDEFINED; |
|
446 case LPX_D_NOFEAS://There is no feasible solution (primal, I guess) |
|
447 case LPX_D_INFEAS://Infeasible |
|
448 return INFEASIBLE; |
|
449 case LPX_FEAS://Feasible |
|
450 int stat2= lpx_get_prim_stat(lp); |
|
451 switch (stat2){ |
|
452 case LPX_P_NOFEAS: |
|
453 return INFINITE; |
|
454 case LPX_OPT: |
|
455 return OPTIMAL; |
|
456 default: |
|
457 return FEASIBLE; |
|
458 } |
|
459 default: |
|
460 return UNDEFINED; //to avoid gcc warning |
|
461 //FIXME error |
|
462 } |
|
463 } |
|
464 |
|
465 LpGlpk::ProblemTypes LpGlpk::_problemType() |
|
466 { |
|
467 int stat= lpx_get_status(lp); |
|
468 int statp= lpx_get_prim_stat(lp); |
|
469 int statd= lpx_get_dual_stat(lp); |
423 switch (stat) { |
470 switch (stat) { |
424 case LPX_UNDEF://Undefined (no solve has been run yet) |
471 case LPX_UNDEF://Undefined (no solve has been run yet) |
425 return UNDEFINED; |
472 return UNDEFINED; |
426 break; |
473 break; |
427 case LPX_NOFEAS://There is no feasible solution (primal, I guess) |
474 case LPX_NOFEAS://There is no feasible solution (primal, I guess) |