COIN-OR::LEMON - Graph Library

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

Cplex interface has improved a lot.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/work/athos/lp/lp_cplex.cc

    r1303 r1319  
    2525  {
    2626    int i = CPXgetnumcols (env, lp);
    27     int lb[1],ub[1];
     27    Value lb[1],ub[1];
    2828    lb[0]=-INF;//-CPX_INFBOUND;
    2929    ub[0]=INF;//CPX_INFBOUND;
     
    3434  int LpCplex::_addRow()
    3535  {
     36    //We want a ranged row
     37    char sense[1];
     38    sense[0]='R';
     39
    3640    int i = CPXgetnumrows (env, lp);
    37     status = CPXnewrows (env, lp, 1, NULL, NULL, NULL, NULL, NULL);
     41    status = CPXnewrows (env, lp, 1, NULL, sense, NULL, NULL);
    3842    return i;
    3943  }
     
    4650  {
    4751    int rowlist[length+1];
     52    int* p=rowlist;
    4853    for (int k=1;k<=length;++k){
    4954      rowlist[k]=i;
     
    5156    status = CPXchgcoeflist(env, lp,
    5257                            length,
    53                             rowlist++,
    54                             inices++,
    55                             values++);
     58                            p++,
     59                            const_cast<int * >(indices++),
     60                            const_cast<Value * >(values++));
    5661  }
    5762 
     
    6267  {
    6368    int collist[length+1];
     69    int* p=collist;
    6470    for (int k=1;k<=length;++k){
    6571      collist[k]=i;
     
    6773    status = CPXchgcoeflist(env, lp,
    6874                            length,
    69                             inices++,
    70                             collist++,
    71                             values++);
     75                            const_cast<int * >(indices++),
     76                            p++,
     77                            const_cast<Value * >(values++));
    7278  }
    7379 
    7480  void LpCplex::_setColLowerBound(int i, Value value)
    7581  {
     82    int indices[1];
     83    indices[0]=i;
     84    char lu[1];
     85    lu[0]='L';
     86    Value bd[1];
     87    bd[0]=value;
     88    status = CPXchgbds (env, lp, 1, indices, lu, bd);
     89 
    7690  }
    7791 
    7892  void LpCplex::_setColUpperBound(int i, Value value)
    7993  {
     94    int indices[1];
     95    indices[0]=i;
     96    char lu[1];
     97    lu[0]='U';
     98    Value bd[1];
     99    bd[0]=value;
     100    status = CPXchgbds (env, lp, 1, indices, lu, bd);
    80101  }
    81102 
    82103  void LpCplex::_setRowLowerBound(int i, Value value)
    83104  {
     105    status = CPXchgcoef (env, lp, i, -1, value);
     106
    84107  }
    85108 
    86109  void LpCplex::_setRowUpperBound(int i, Value value)
    87110  {
     111    //TODO Ezt kell meg megirni
     112    //    Value lo=CPX
    88113  }
    89114 
    90115  void LpCplex::_setObjCoeff(int i, Value obj_coef)
    91116  {
     117    status = CPXchgcoef (env, lp, -1, i, obj_coef);
     118   }
     119
     120  LpCplex::SolveExitStatus LpCplex::_solve()
     121  {
     122    return SOLVED;
     123//     int i=  lpx_simplex(lp);
     124//     switch (i) {
     125//     case LPX_E_OK:
     126//       return SOLVED;
     127//       break;
     128//     default:
     129//       return UNSOLVED;
     130//     }
    92131  }
    93132
    94   LpCplex::SolutionStatus LpCplex::_solve()
    95   {
    96     return OPTIMAL;
    97   }
    98 
    99   LpCplex::Value LpCplex::_getSolution(int i)
     133  LpCplex::Value LpCplex::_getPrimal(int i)
    100134  {
    101135    return 0;
    102136  }
    103137 
     138  LpCplex::Value LpCplex::_getPrimalValue()
     139  {
     140    return 0;
     141  }
     142 
     143 
     144  LpCplex::SolutionStatus LpCplex::_getPrimalStatus()
     145  {
     146    return OPTIMAL;
     147//     int stat=  lpx_get_status(lp);
     148//     switch (stat) {
     149//     case LPX_UNDEF://Undefined (no solve has been run yet)
     150//       return UNDEFINED;
     151//       break;
     152//     case LPX_NOFEAS://There is no feasible solution (primal, I guess)
     153//     case LPX_INFEAS://Infeasible
     154//       return INFEASIBLE;
     155//       break;
     156//     case LPX_UNBND://Unbounded
     157//       return INFINITE;
     158//       break;
     159//     case LPX_FEAS://Feasible
     160//       return FEASIBLE;
     161//       break;
     162//     case LPX_OPT://Feasible
     163//       return OPTIMAL;
     164//       break;
     165//     default:
     166//       return UNDEFINED; //to avoid gcc warning
     167//       //FIXME error
     168//     }
     169  }
     170
     171
     172  void LpCplex::_setMax()
     173  {
     174    CPXchgobjsen (env, lp, CPX_MAX);
     175   }
     176  void LpCplex::_setMin()
     177  {
     178    CPXchgobjsen (env, lp, CPX_MIN);
     179   }
     180 
    104181} //namespace lemon
    105182
Note: See TracChangeset for help on using the changeset viewer.