[PPL-devel] [GIT] ppl/ppl(sparse_matrices): MIP_Problem: fix regression in textbook_entering_index(), introduced in commit 6880A6.

Marco Poletti poletti.marco at gmail.com
Tue Sep 14 14:25:33 CEST 2010


Module: ppl/ppl
Branch: sparse_matrices
Commit: 07dfb14d484ef7b552388152934e3e0ae6f1099b
URL:    http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=07dfb14d484ef7b552388152934e3e0ae6f1099b

Author: Marco Poletti <poletti.marco at gmail.com>
Date:   Tue Sep 14 14:26:46 2010 +0200

MIP_Problem: fix regression in textbook_entering_index(), introduced in commit 6880A6.

---

 src/MIP_Problem.cc |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/MIP_Problem.cc b/src/MIP_Problem.cc
index 3538b33..560b47a 100644
--- a/src/MIP_Problem.cc
+++ b/src/MIP_Problem.cc
@@ -1266,9 +1266,13 @@ PPL::MIP_Problem::textbook_entering_index() const {
   const dimension_type cost_sign_index = working_cost.size() - 1;
   const int cost_sign = sgn(working_cost.get(cost_sign_index));
   PPL_ASSERT(cost_sign != 0);
-  for (working_cost_type::const_iterator
-       i = working_cost.lower_bound(1), i_end = working_cost.end();
-       i != i_end; ++i)
+
+  working_cost_type::const_iterator i = working_cost.lower_bound(1);
+  // Note that find() is used instead of lower_bound() because they are
+  // equivalent when searching the last element in the row.
+  working_cost_type::const_iterator i_end
+    = working_cost.find(cost_sign_index);
+  for ( ; i != i_end; ++i)
     if (sgn(*i) == cost_sign)
       return i.index();
   // No variable has to enter the base:




More information about the PPL-devel mailing list