Opened 14 years ago
Closed 13 years ago
#441 closed defect (fixed)
LpBase::clear() bug
| Reported by: | Alpar Juttner | Owned by: | Alpar Juttner |
|---|---|---|---|
| Priority: | major | Milestone: | LEMON 1.3 release |
| Component: | core | Version: | hg main |
| Keywords: | Cc: | athos@… | |
| Revision id: |
Description
From: athos
There is something I don't understand: I add columns to an lp, then I say lp.clear(), then again I add columns, and it seems that it does not add the columns again. Can you explain this to me?
See the attached code.
#include <lemon/list_graph.h>
#include <lemon/glpk.h>
using namespace lemon;
typedef GlpkLp Lp;
///Query function about the LP
int numberOfCols(Lp & lp) {
int count=0;
for (Lp::ColIt c(lp); c!=lemon::INVALID; ++c) ++count;
return count;
}
int main(){
typedef lemon::ListGraph Graph;
Graph g;
Graph::Node a=g.addNode();
Graph::Node b=g.addNode();
g.addEdge(a,b);
Graph::EdgeMap< Lp::Col > x(g);
Lp lp;
lp.clear();
std::cout << "The number of columns="<<numberOfCols(lp)<< std::endl;
lp.addColSet(x);
std::cout << "The number of columns="<<numberOfCols(lp)<< std::endl;
lp.clear();
std::cout << "The number of columns="<<numberOfCols(lp)<< std::endl;
lp.addColSet(x);
std::cout << "The number of columns="<<numberOfCols(lp)<< std::endl;
}
Attachments (1)
Change History (5)
comment:1 Changed 14 years ago by
| Cc: | athos@… added |
|---|
Changed 14 years ago by
| Attachment: | 55c6560a7c0f.patch added |
|---|
comment:2 follow-up: 3 Changed 14 years ago by
comment:3 Changed 13 years ago by
Replying to deba:
The patch [55c6560a7c0f] should fix the problem. There was a bug in the clear() method of lemon::solver_bits::VarIndex?.
Thanks for the patch. Meanwhile, I pushed [8d281761dea4] to all affected branches (1.1, 1.2, main). In addition to your fix, it also moves to re-initialization of rows and cols to LpBase::clear()
comment:4 Changed 13 years ago by
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |


The patch [55c6560a7c0f] should fix the problem. There was a bug in the clear() method of lemon::solver_bits::VarIndex?.