From 087354995de645f60b2efa00dd1f350a8b58fb96 Mon Sep 17 00:00:00 2001 From: Lev Nachmanson Date: Sat, 11 Apr 2020 12:24:22 -0700 Subject: [PATCH] roll back in find_beneficial_column_in_row_tableau_rows Signed-off-by: Lev Nachmanson --- src/math/lp/lp_primal_core_solver.h | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/math/lp/lp_primal_core_solver.h b/src/math/lp/lp_primal_core_solver.h index d9e2a62bf..25a51089c 100644 --- a/src/math/lp/lp_primal_core_solver.h +++ b/src/math/lp/lp_primal_core_solver.h @@ -280,8 +280,8 @@ public: // a short row produces short infeasibility explanation and benefits at least one pivot operation int choice = -1; int nchoices = 0; - unsigned prev_damage = UINT_MAX; - unsigned len = UINT_MAX; + unsigned num_of_non_free_basics = 1000000; + unsigned len = 100000000; unsigned bj = this->m_basis[i]; bool bj_needs_to_grow = needs_to_grow(bj); for (unsigned k = 0; k < this->m_A.m_rows[i].size(); k++) { @@ -296,18 +296,14 @@ public: if (!monoid_can_increase(rc)) continue; } - unsigned damage = numeric_traits::is_big(rc.coeff())? prev_damage: - get_number_of_basic_vars_that_might_become_inf(j); - if (damage < prev_damage) { - prev_damage = damage; + unsigned damage = get_number_of_basic_vars_that_might_become_inf(j); + if (damage < num_of_non_free_basics) { + num_of_non_free_basics = damage; len = this->m_A.m_columns[j].size(); choice = k; nchoices = 1; - } else if (damage == prev_damage - && - this->m_A.m_columns[j].size() <= len - && - (this->m_settings.random_next() % (++nchoices))) { + } else if (damage == num_of_non_free_basics && + this->m_A.m_columns[j].size() <= len && (this->m_settings.random_next() % (++nchoices))) { choice = k; len = this->m_A.m_columns[j].size(); }