mirror of
https://github.com/Z3Prover/z3
synced 2025-08-20 02:00:22 +00:00
simplify lar_solver::get_model
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
This commit is contained in:
parent
fa5d10b6dd
commit
0dbe8982ce
4 changed files with 12 additions and 9 deletions
|
@ -1252,15 +1252,18 @@ void lar_solver::get_infeasibility_explanation_for_inf_sign(
|
|||
|
||||
void lar_solver::get_model(std::unordered_map<var_index, mpq> & variable_values) const {
|
||||
lp_assert(m_mpq_lar_core_solver.m_r_solver.calc_current_x_is_feasible_include_non_basis());
|
||||
if (m_status != lp_status::OPTIMAL)
|
||||
return;
|
||||
mpq delta = mpq(1, 2); // start from 0.5 to have less clashes
|
||||
unsigned i;
|
||||
unsigned n = m_mpq_lar_core_solver.m_r_x.size();
|
||||
variable_values.resize(n);
|
||||
do {
|
||||
// different pairs have to produce different singleton values
|
||||
std::unordered_set<impq> set_of_different_pairs;
|
||||
std::unordered_set<mpq> set_of_different_singles;
|
||||
delta = m_mpq_lar_core_solver.find_delta_for_strict_bounds(delta);
|
||||
TRACE("get_model", tout << "delta=" << delta << "size = " << m_mpq_lar_core_solver.m_r_x.size() << std::endl;);
|
||||
for (i = 0; i < m_mpq_lar_core_solver.m_r_x.size(); i++ ) {
|
||||
for (i = 0; i < n; i++ ) {
|
||||
const numeric_pair<mpq> & rp = m_mpq_lar_core_solver.m_r_x[i];
|
||||
set_of_different_pairs.insert(rp);
|
||||
mpq x = rp.x + delta * rp.y;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue