COIN-OR::LEMON - Graph Library

Changeset 955:8d281761dea4 in lemon-1.2


Ignore:
Timestamp:
05/05/12 10:22:44 (7 years ago)
Author:
Alpar Juttner <alpar@…>
Branch:
default
Children:
956:4764031c082c, 957:7440937d154b
Phase:
public
Message:

Fix buggy reinitialization in _solver_bits::VarIndex::clear() (#441)

  • In addition, rows.clear() and cols.clear() are moved up to LpBase::clear()
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • lemon/bits/solver_bits.h

    r519 r955  
    4545      void clear() {
    4646        first_item = -1;
     47        last_item = -1;
    4748        first_free_item = -1;
    4849        items.clear();
  • lemon/cbc.cc

    r951 r955  
    424424
    425425    _prob = new CoinModel();
    426     rows.clear();
    427     cols.clear();
    428426  }
    429427
  • lemon/clp.cc

    r576 r955  
    425425    delete _prob;
    426426    _prob = new ClpSimplex();
    427     rows.clear();
    428     cols.clear();
    429427    _col_names_ref.clear();
    430428    _clear_temporals();
  • lemon/cplex.cc

    r576 r955  
    438438    int status;
    439439    _prob = CPXcreateprob(cplexEnv(), &status, "Cplex problem");
    440     rows.clear();
    441     cols.clear();
    442440  }
    443441
  • lemon/glpk.cc

    r576 r955  
    521521  void GlpkBase::_clear() {
    522522    glp_erase_prob(lp);
    523     rows.clear();
    524     cols.clear();
    525523  }
    526524
  • lemon/lp_base.h

    r932 r955  
    15431543
    15441544    ///Clears the problem
    1545     void clear() { _clear(); }
     1545    void clear() { _clear(); rows.clear(); cols.clear(); }
    15461546
    15471547    /// Sets the message level of the solver
  • test/lp_test.cc

    r932 r955  
    4242using namespace lemon;
    4343
     44int countCols(LpBase & lp) {
     45  int count=0;
     46  for (LpBase::ColIt c(lp); c!=INVALID; ++c) ++count;
     47  return count;
     48}
     49
     50int countRows(LpBase & lp) {
     51  int count=0;
     52  for (LpBase::RowIt r(lp); r!=INVALID; ++r) ++count;
     53  return count;
     54}
     55
     56
    4457void lpTest(LpSolver& lp)
    4558{
    4659
    4760  typedef LpSolver LP;
     61
     62  // Test LpBase::clear()
     63  check(countRows(lp)==0, "Wrong number of rows");
     64  check(countCols(lp)==0, "Wrong number of cols");
     65  lp.addCol(); lp.addRow(); lp.addRow();
     66  check(countRows(lp)==2, "Wrong number of rows");
     67  check(countCols(lp)==1, "Wrong number of cols");
     68  lp.clear();
     69  check(countRows(lp)==0, "Wrong number of rows");
     70  check(countCols(lp)==0, "Wrong number of cols");
     71  lp.addCol(); lp.addCol(); lp.addCol(); lp.addRow();
     72  check(countRows(lp)==1, "Wrong number of rows");
     73  check(countCols(lp)==3, "Wrong number of cols");
     74  lp.clear();
    4875
    4976  std::vector<LP::Col> x(10);
Note: See TracChangeset for help on using the changeset viewer.