3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-22 16:45:31 +00:00

bugfix for bvsls_opt_engine

Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
This commit is contained in:
Christoph M. Wintersteiger 2014-04-14 15:24:47 +01:00
parent 1db7e0a149
commit 71af72eed4
2 changed files with 9 additions and 1 deletions

View file

@ -347,6 +347,11 @@ namespace opt {
unsigned bv_size = 0;
m_bvsls.get_model(m_model);
VERIFY(bv.is_numeral(res.optimum, m_lower, bv_size));
for (unsigned i = 0; i < m_soft.size(); ++i) {
expr_ref tmp(m);
m_model->eval(m_soft[i].get(), tmp, true);
m_assignment[i] = m.is_true(tmp);
}
break;
}
case l_false:

View file

@ -100,6 +100,8 @@ expr_ref bvsls_opt_engine::maximize(expr_ref const & objective)
m_mpz_manager.set(score, top_score());
m_mpz_manager.set(max_score, m_powers(obj_bv_sz)); m_mpz_manager.dec(max_score);
IF_IVERBOSE(10, verbose_stream() << "Initial score: " << m_mpz_manager.to_string(score) << std::endl;);
save_model(score);
while (check_restart((unsigned)m_stats.m_stopwatch.get_current_seconds()) &&
@ -126,7 +128,8 @@ expr_ref bvsls_opt_engine::maximize(expr_ref const & objective)
m_mpz_manager.set(score, top_score());
}
else {
TRACE("sls_opt", tout << "New best: " << m_mpz_manager.to_string(score) << std::endl;);
TRACE("sls_opt", tout << "New optimum: " << m_mpz_manager.to_string(score) << std::endl;);
IF_IVERBOSE(10, verbose_stream() << "New optimum: " << m_mpz_manager.to_string(score) << std::endl;);
func_decl * fd = consts[new_const];
incremental_score(fd, new_value);
m_obj_evaluator.update(fd, new_value);