mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 09:35:32 +00:00
add API for setting variable activity
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
e4c6dcd84c
commit
89bf2d4368
22 changed files with 125 additions and 1 deletions
|
@ -80,6 +80,11 @@ namespace smt {
|
|||
m_queue.decreased(v);
|
||||
}
|
||||
|
||||
void activity_decreased_eh(bool_var v) override {
|
||||
if (m_queue.contains(v))
|
||||
m_queue.increased(v);
|
||||
}
|
||||
|
||||
void mk_var_eh(bool_var v) override {
|
||||
m_queue.reserve(v+1);
|
||||
SASSERT(!m_queue.contains(v));
|
||||
|
@ -167,6 +172,14 @@ namespace smt {
|
|||
m_delayed_queue.decreased(v);
|
||||
}
|
||||
|
||||
void activity_decreased_eh(bool_var v) override {
|
||||
act_case_split_queue::activity_decreased_eh(v);
|
||||
if (m_queue.contains(v))
|
||||
m_queue.increased(v);
|
||||
if (m_delayed_queue.contains(v))
|
||||
m_delayed_queue.increased(v);
|
||||
}
|
||||
|
||||
void mk_var_eh(bool_var v) override {
|
||||
m_queue.reserve(v+1);
|
||||
m_delayed_queue.reserve(v+1);
|
||||
|
@ -324,6 +337,8 @@ namespace smt {
|
|||
|
||||
void activity_increased_eh(bool_var v) override {}
|
||||
|
||||
void activity_decreased_eh(bool_var v) override {}
|
||||
|
||||
void mk_var_eh(bool_var v) override {}
|
||||
|
||||
void del_var_eh(bool_var v) override {}
|
||||
|
@ -509,6 +524,8 @@ namespace smt {
|
|||
|
||||
void activity_increased_eh(bool_var v) override {}
|
||||
|
||||
void activity_decreased_eh(bool_var v) override {}
|
||||
|
||||
void mk_var_eh(bool_var v) override {
|
||||
if (m_context.is_searching()) {
|
||||
SASSERT(v >= m_bs_num_bool_vars);
|
||||
|
@ -753,6 +770,8 @@ namespace smt {
|
|||
|
||||
void activity_increased_eh(bool_var v) override {}
|
||||
|
||||
void activity_decreased_eh(bool_var v) override {}
|
||||
|
||||
void mk_var_eh(bool_var v) override {}
|
||||
|
||||
void del_var_eh(bool_var v) override {}
|
||||
|
@ -1133,6 +1152,11 @@ namespace smt {
|
|||
m_queue.decreased(v);
|
||||
}
|
||||
|
||||
void activity_decreased_eh(bool_var v) override {
|
||||
if (m_queue.contains(v))
|
||||
m_queue.increased(v);
|
||||
}
|
||||
|
||||
void mk_var_eh(bool_var v) override {
|
||||
m_queue.reserve(v+1);
|
||||
m_queue.insert(v);
|
||||
|
|
|
@ -32,6 +32,7 @@ namespace smt {
|
|||
class case_split_queue {
|
||||
public:
|
||||
virtual void activity_increased_eh(bool_var v) = 0;
|
||||
virtual void activity_decreased_eh(bool_var v) = 0;
|
||||
virtual void mk_var_eh(bool_var v) = 0;
|
||||
virtual void del_var_eh(bool_var v) = 0;
|
||||
virtual void assign_lit_eh(literal l) {}
|
||||
|
|
|
@ -412,10 +412,19 @@ namespace smt {
|
|||
return m_activity[v];
|
||||
}
|
||||
|
||||
void set_activity(bool_var v, double & act) {
|
||||
void set_activity(bool_var v, double const & act) {
|
||||
m_activity[v] = act;
|
||||
}
|
||||
|
||||
void activity_changed(bool_var v, bool increased) {
|
||||
if (increased) {
|
||||
m_case_split_queue->activity_increased_eh(v);
|
||||
}
|
||||
else {
|
||||
m_case_split_queue->activity_decreased_eh(v);
|
||||
}
|
||||
}
|
||||
|
||||
bool is_assumption(bool_var v) const {
|
||||
return get_bdata(v).m_assumption;
|
||||
}
|
||||
|
|
|
@ -154,6 +154,13 @@ namespace smt {
|
|||
expr_ref_vector get_trail() {
|
||||
return m_kernel.get_trail();
|
||||
}
|
||||
|
||||
void set_activity(expr* lit, double act) {
|
||||
auto v = m_kernel.get_bool_var(lit);
|
||||
double old_act = m_kernel.get_activity(v);
|
||||
m_kernel.set_activity(v, act);
|
||||
m_kernel.activity_changed(v, act > old_act);
|
||||
}
|
||||
|
||||
failure last_failure() const {
|
||||
return m_kernel.get_last_search_failure();
|
||||
|
@ -412,5 +419,9 @@ namespace smt {
|
|||
return m_imp->get_trail();
|
||||
}
|
||||
|
||||
void kernel::set_activity(expr* lit, double activity) {
|
||||
m_imp->set_activity(lit, activity);
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
|
|
@ -229,6 +229,11 @@ namespace smt {
|
|||
*/
|
||||
expr_ref_vector get_trail();
|
||||
|
||||
/**
|
||||
\brief set activity of literal
|
||||
*/
|
||||
void set_activity(expr* lit, double activity);
|
||||
|
||||
/**
|
||||
\brief (For debubbing purposes) Prints the state of the kernel
|
||||
*/
|
||||
|
|
|
@ -203,6 +203,10 @@ namespace smt {
|
|||
return m_context.get_trail();
|
||||
}
|
||||
|
||||
void set_activity(expr* lit, double activity) override {
|
||||
m_context.set_activity(lit, activity);
|
||||
}
|
||||
|
||||
struct scoped_minimize_core {
|
||||
smt_solver& s;
|
||||
expr_ref_vector m_assumptions;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue