COIN-OR::LEMON - Graph Library

Changeset 2363:2aabce558574 in lemon-0.x for lemon/lp_glpk.cc


Ignore:
Timestamp:
02/15/07 15:22:08 (17 years ago)
Author:
Balazs Dezso
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@3174
Message:

Changes on the LP interface

_FixId => LpId?

  • handling of not common ids soplex

LpGlpk? row and col erase bug fix

  • calling lpx_std_basis before simplex

LpSoplex?

  • added getter functions
  • better m4 file
  • integration to the tests
  • better handling of unsolved lps
File:
1 edited

Legend:

Unmodified
Added
Removed
  • lemon/lp_glpk.cc

    r2349 r2363  
    2525
    2626
    27   LpGlpk::LpGlpk() : Parent(),
    28                      lp(lpx_create_prob()) {
    29     ///\todo constrol function for this:
     27  LpGlpk::LpGlpk() : Parent() {
     28    rows = _lp_bits::LpId(1);
     29    cols = _lp_bits::LpId(1);
     30    lp = lpx_create_prob();
     31    ///\todo control function for this:
    3032    lpx_set_int_parm(lp, LPX_K_DUAL, 1);
    3133    messageLevel(0);
    3234  }
    3335 
    34   LpGlpk::LpGlpk(const LpGlpk &glp) : Parent(glp),
    35                                       lp(lpx_create_prob()) {
    36     ///\todo constrol function for this:
     36  LpGlpk::LpGlpk(const LpGlpk &glp) : Parent() {
     37    rows = _lp_bits::LpId(1);
     38    cols = _lp_bits::LpId(1);
     39    lp = lpx_create_prob();
     40    ///\todo control function for this:
    3741    lpx_set_int_parm(lp, LPX_K_DUAL, 1);
    3842    messageLevel(0);
     
    350354  }
    351355 
    352 //   void LpGlpk::_setRowLowerBound(int i, Value lo)
    353 //   {
    354 //     if (lo==INF) {
    355 //       //FIXME error
    356 //     }
    357 //     int b=lpx_get_row_type(lp, i);
    358 //     double up=lpx_get_row_ub(lp, i);
    359 //     if (lo==-INF) {
    360 //       switch (b) {
    361 //       case LPX_FR:
    362 //       case LPX_LO:
    363 //      lpx_set_row_bnds(lp, i, LPX_FR, lo, up);
    364 //      break;
    365 //       case LPX_UP:
    366 //      break;
    367 //       case LPX_DB:
    368 //       case LPX_FX:
    369 //      lpx_set_row_bnds(lp, i, LPX_UP, lo, up);
    370 //      break;
    371 //       default: ;
    372 //      //FIXME error
    373 //       }
    374 //     } else {
    375 //       switch (b) {
    376 //       case LPX_FR:
    377 //       case LPX_LO:
    378 //      lpx_set_row_bnds(lp, i, LPX_LO, lo, up);
    379 //      break;
    380 //       case LPX_UP:     
    381 //       case LPX_DB:
    382 //       case LPX_FX:
    383 //      if (lo==up)
    384 //        lpx_set_row_bnds(lp, i, LPX_FX, lo, up);
    385 //      else
    386 //        lpx_set_row_bnds(lp, i, LPX_DB, lo, up);
    387 //      break;
    388 //       default: ;
    389 //      //FIXME error
    390 //       }
    391 //     }
    392 //   }
    393  
    394 //   void LpGlpk::_setRowUpperBound(int i, Value up)
    395 //   {
    396 //     if (up==-INF) {
    397 //       //FIXME error
    398 //     }
    399 //     int b=lpx_get_row_type(lp, i);
    400 //     double lo=lpx_get_row_lb(lp, i);
    401 //     if (up==INF) {
    402 //       switch (b) {
    403 //       case LPX_FR:
    404 //       case LPX_LO:
    405 //      break;
    406 //       case LPX_UP:
    407 //      lpx_set_row_bnds(lp, i, LPX_FR, lo, up);
    408 //      break;
    409 //       case LPX_DB:
    410 //       case LPX_FX:
    411 //      lpx_set_row_bnds(lp, i, LPX_LO, lo, up);
    412 //      break;
    413 //       default: ;
    414 //      //FIXME error
    415 //       }
    416 //     } else {
    417 //       switch (b) {
    418 //       case LPX_FR:
    419 //      lpx_set_row_bnds(lp, i, LPX_UP, lo, up);
    420 //      break;
    421 //       case LPX_UP:
    422 //      lpx_set_row_bnds(lp, i, LPX_UP, lo, up);
    423 //      break;
    424 //       case LPX_LO:
    425 //       case LPX_DB:
    426 //       case LPX_FX:
    427 //      if (lo==up)
    428 //        lpx_set_row_bnds(lp, i, LPX_FX, lo, up);
    429 //      else
    430 //        lpx_set_row_bnds(lp, i, LPX_DB, lo, up);
    431 //      break;
    432 //       default: ;
    433 //      //FIXME error
    434 //       }
    435 //     }
    436 //   }
    437 
    438356  void LpGlpk::_setRowBounds(int i, Value lb, Value ub)
    439357  {
     
    509427    }
    510428  }
    511 //   void LpGlpk::_setObj(int length,
    512 //                     int  const * indices,
    513 //                     Value  const * values )
    514 //   {
    515 //     Value new_values[1+lpx_num_cols()];
    516 //     for (i=0;i<=lpx_num_cols();++i){
    517 //       new_values[i]=0;
    518 //     }
    519 //     for (i=1;i<=length;++i){
    520 //       new_values[indices[i]]=values[i];
    521 //     }
    522    
    523 //     for (i=0;i<=lpx_num_cols();++i){
    524 //       lpx_set_obj_coef(lp, i, new_values[i]);
    525 //     }
    526 //   }
    527429
    528430  LpGlpk::SolveExitStatus LpGlpk::_solve()
     
    531433    //lpx_write_cpxlp(lp,"naittvan.cpx");   
    532434
     435    lpx_std_basis(lp);
    533436    int i =  lpx_simplex(lp);
     437   
    534438    switch (i) {
    535439    case LPX_E_OK:
Note: See TracChangeset for help on using the changeset viewer.