[GIT] ppl/ppl(pip): Integrality check only on the original variables ( not slack ones).

Module: ppl/ppl Branch: pip Commit: 8e8d79ad7cef965e68277a902d51a9dcfe8b7d8a URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=8e8d79ad7cef9...
Author: François Galea francois.galea@uvsq.fr Date: Tue Oct 13 10:50:48 2009 +0200
Integrality check only on the original variables (not slack ones).
---
src/PIP_Tree.cc | 13 ++++++++----- 1 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/src/PIP_Tree.cc b/src/PIP_Tree.cc index 91406f7..833eb5e 100644 --- a/src/PIP_Tree.cc +++ b/src/PIP_Tree.cc @@ -1265,8 +1265,11 @@ PIP_Solution_Node::solve(PIP_Tree_Node*& parent_ref, const Matrix& ctx,
// Look for a row with non integer parameter coefficients (first is okay) const Coefficient& d = tableau.get_denominator(); - for (i=0; i<num_rows; ++i) { - const Row& row = tableau.t[i]; + for (i=0; i<num_vars; ++i) { + if (basis[i]) + // basic variable = 0 -> integer + continue; + const Row& row = tableau.t[mapping[i]]; for (j=0; j<num_params; ++j) { if (row[j] % d != 0) goto endsearch; @@ -1274,7 +1277,7 @@ PIP_Solution_Node::solve(PIP_Tree_Node*& parent_ref, const Matrix& ctx, } endsearch:
- if (i == num_rows) { + if (i == num_vars) { /* The solution is integer */ #ifdef NOISY_PIP std::cout << "Solution found for problem in current node." @@ -1288,8 +1291,8 @@ PIP_Solution_Node::solve(PIP_Tree_Node*& parent_ref, const Matrix& ctx, /* Look for row which will generate the "deepest" cut */ Coefficient score; Coefficient best = 0; - dimension_type best_i = i; - for (i_ = i; i_ < num_rows; ++i_) { + dimension_type best_i = 0; + for (i_ = 0; i_ < num_rows; ++i_) { const Row& row = tableau.t[i_]; score = 0; for (j = 0; j < num_params; ++j) {
participants (1)
-
François Galea