mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 03:45:51 +00:00
push blocking code to optimizer context
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
b0fddd8e60
commit
bc44bcad10
11 changed files with 152 additions and 49 deletions
|
@ -6,10 +6,11 @@
|
|||
|
||||
namespace opt {
|
||||
|
||||
opt_solver::opt_solver(ast_manager & m, params_ref const & p, symbol const & l):
|
||||
solver_na2as(m),
|
||||
opt_solver::opt_solver(ast_manager & mgr, params_ref const & p, symbol const & l):
|
||||
solver_na2as(mgr),
|
||||
m_params(p),
|
||||
m_context(m, m_params),
|
||||
m_context(mgr, m_params),
|
||||
m(mgr),
|
||||
m_objective_enabled(false) {
|
||||
m_logic = l;
|
||||
if (m_logic != symbol::null)
|
||||
|
@ -139,9 +140,21 @@ namespace opt {
|
|||
return m_objective_vars.back();
|
||||
}
|
||||
|
||||
vector<opt_solver::inf_value> const& opt_solver::get_objective_values() {
|
||||
vector<inf_eps> const& opt_solver::get_objective_values() {
|
||||
return m_objective_values;
|
||||
}
|
||||
|
||||
expr_ref opt_solver::block_lower_bound(unsigned var, inf_eps const& val) {
|
||||
if (val.get_infinity().is_pos()) {
|
||||
return expr_ref(m.mk_false(), m);
|
||||
}
|
||||
else if (val.get_infinity().is_neg()) {
|
||||
return expr_ref(m.mk_true(), m);
|
||||
}
|
||||
else {
|
||||
return expr_ref(get_optimizer().block_lower_bound(m_objective_vars[var], val.get_numeral()), m);
|
||||
}
|
||||
}
|
||||
|
||||
void opt_solver::reset_objectives() {
|
||||
m_objective_vars.reset();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue