mirror of
https://github.com/Z3Prover/z3
synced 2025-07-29 07:27:57 +00:00
add score access and reset
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
20b9690b01
commit
ac857aaf72
2 changed files with 19 additions and 0 deletions
|
@ -189,6 +189,7 @@ namespace smt {
|
||||||
unsigned_vector m_lit_occs; //!< occurrence count of literals
|
unsigned_vector m_lit_occs; //!< occurrence count of literals
|
||||||
svector<bool_var_data> m_bdata; //!< mapping bool_var -> data
|
svector<bool_var_data> m_bdata; //!< mapping bool_var -> data
|
||||||
svector<double> m_activity;
|
svector<double> m_activity;
|
||||||
|
svector<double[2]> m_scores;
|
||||||
clause_vector m_aux_clauses;
|
clause_vector m_aux_clauses;
|
||||||
clause_vector m_lemmas;
|
clause_vector m_lemmas;
|
||||||
vector<clause_vector> m_clauses_to_reinit;
|
vector<clause_vector> m_clauses_to_reinit;
|
||||||
|
@ -929,6 +930,13 @@ namespace smt {
|
||||||
ast_pp_util m_lemma_visitor;
|
ast_pp_util m_lemma_visitor;
|
||||||
void dump_lemma(unsigned n, literal const* lits);
|
void dump_lemma(unsigned n, literal const* lits);
|
||||||
void dump_axiom(unsigned n, literal const* lits);
|
void dump_axiom(unsigned n, literal const* lits);
|
||||||
|
void add_scores(unsigned n, literal const* lits);
|
||||||
|
void reset_scores() {
|
||||||
|
for (auto& s : m_scores) s[0] = s[1] = 0.0;
|
||||||
|
}
|
||||||
|
double get_score(literal l) const {
|
||||||
|
return m_scores[l.var()][l.sign()];
|
||||||
|
}
|
||||||
public:
|
public:
|
||||||
|
|
||||||
void ensure_internalized(expr* e);
|
void ensure_internalized(expr* e);
|
||||||
|
|
|
@ -928,6 +928,8 @@ namespace smt {
|
||||||
set_bool_var(id, v);
|
set_bool_var(id, v);
|
||||||
m_bdata.reserve(v+1);
|
m_bdata.reserve(v+1);
|
||||||
m_activity.reserve(v+1);
|
m_activity.reserve(v+1);
|
||||||
|
m_scores.reserve(v + 1);
|
||||||
|
m_scores[v][0] = m_scores[v][1] = 0.0;
|
||||||
m_bool_var2expr.reserve(v+1);
|
m_bool_var2expr.reserve(v+1);
|
||||||
m_bool_var2expr[v] = n;
|
m_bool_var2expr[v] = n;
|
||||||
literal l(v, false);
|
literal l(v, false);
|
||||||
|
@ -1416,6 +1418,7 @@ namespace smt {
|
||||||
break;
|
break;
|
||||||
case CLS_LEARNED:
|
case CLS_LEARNED:
|
||||||
dump_lemma(num_lits, lits);
|
dump_lemma(num_lits, lits);
|
||||||
|
add_scores(num_lits, lits);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -1524,6 +1527,14 @@ namespace smt {
|
||||||
}}
|
}}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void context::add_scores(unsigned n, literal const* lits) {
|
||||||
|
for (unsigned i = 0; i < n; ++i) {
|
||||||
|
auto lit = lits[i];
|
||||||
|
unsigned v = lit.var();
|
||||||
|
m_scores[v][lit.sign()] += 1.0 / n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void context::dump_axiom(unsigned n, literal const* lits) {
|
void context::dump_axiom(unsigned n, literal const* lits) {
|
||||||
if (m_fparams.m_axioms2files) {
|
if (m_fparams.m_axioms2files) {
|
||||||
literal_buffer tmp;
|
literal_buffer tmp;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue