COIN-OR::LEMON - Graph Library

Changeset 1542:0219ee65ffcc in lemon-0.x for lemon/lp_cplex.cc


Ignore:
Timestamp:
07/07/05 17:00:04 (14 years ago)
Author:
athos
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@2037
Message:

Some testing of the LP interface: bugs got fixed.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lemon/lp_cplex.cc

    r1508 r1542  
    243243    //CPX_PARAM_LPMETHOD
    244244    status = CPXlpopt(env, lp);
     245    //status = CPXprimopt(env, lp);
    245246    if (status == 0){
    246247      //We want to exclude some cases
     
    328329// ??case CPX_ABORT_CROSSOVER             
    329330// ??case CPX_INForUNBD                   
    330 // ??case CPX_PIVOT                       
     331// ??case CPX_PIVOT             
     332         
     333//Some more interesting stuff:
     334
     335// CPX_PARAM_LPMETHOD  1062  int  LPMETHOD
     336// 0 Automatic
     337// 1 Primal Simplex
     338// 2 Dual Simplex
     339// 3 Network Simplex
     340// 4 Standard Barrier
     341// Default: 0
     342// Description: Method for linear optimization.
     343// Determines which algorithm is used when CPXlpopt() (or "optimize" in the Interactive Optimizer) is called. Currently the behavior of the "Automatic" setting is that CPLEX simply invokes the dual simplex method, but this capability may be expanded in the future so that CPLEX chooses the method based on problem characteristics
     344  //Hulye cplex
     345  void statusSwitch(CPXENVptr env,int& stat){
     346    int lpmethod;
     347    CPXgetintparam (env,CPX_PARAM_LPMETHOD,&lpmethod);
     348    if (lpmethod==2){
     349      if (stat==CPX_UNBOUNDED){
     350        stat=CPX_INFEASIBLE;
     351      }
     352      else{
     353        if (stat==CPX_INFEASIBLE)
     354          stat=CPX_UNBOUNDED;
     355      }
     356    }
     357  }
    331358
    332359  LpCplex::SolutionStatus LpCplex::_getPrimalStatus()
    333360  {
     361   
    334362    int stat = CPXgetstat(env, lp);
     363    statusSwitch(env,stat);
     364    //CPXgetstat(env, lp);
    335365    //printf("A primal status: %d, CPX_OPTIMAL=%d \n",stat,CPX_OPTIMAL);
    336366    switch (stat) {
     
    340370      return OPTIMAL;
    341371    case CPX_UNBOUNDED://Unbounded
    342       return INFINITE;
     372      return INFEASIBLE;//In case of dual simplex
     373      //return INFINITE;
    343374    case CPX_INFEASIBLE://Infeasible
    344375 //    case CPX_IT_LIM_INFEAS:
     
    349380//     case CPX_ABORT_PRIM_INFEAS:           
    350381//     case CPX_ABORT_PRIM_DUAL_INFEAS:     
    351       return INFEASIBLE;
     382      return INFINITE;//In case of dual simplex
     383      //return INFEASIBLE;
    352384//     case CPX_OBJ_LIM:                   
    353385//     case CPX_IT_LIM_FEAS:             
     
    384416  {
    385417    int stat = CPXgetstat(env, lp);
     418    statusSwitch(env,stat);
    386419    switch (stat) {
    387420    case 0:
Note: See TracChangeset for help on using the changeset viewer.