3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-06 22:23:22 +00:00

fallback stats

This commit is contained in:
Jakob Rath 2022-08-04 08:51:24 +02:00
parent b9588af07a
commit 014fe4e3fd
2 changed files with 9 additions and 6 deletions

View file

@ -554,6 +554,7 @@ namespace polysat {
m_justification[v] = justification::unassigned(); m_justification[v] = justification::unassigned();
if (!is_valid) { if (!is_valid) {
LOG_H2("Chosen assignment " << assignment_pp(*this, v, val) << " is not actually viable!"); LOG_H2("Chosen assignment " << assignment_pp(*this, v, val) << " is not actually viable!");
++m_stats.m_num_viable_fallback;
// Try to find a valid replacement value // Try to find a valid replacement value
switch (m_viable_fallback.find_viable(v, val)) { switch (m_viable_fallback.find_viable(v, val)) {
case dd::find_t::singleton: case dd::find_t::singleton:
@ -1194,12 +1195,13 @@ namespace polysat {
} }
void solver::collect_statistics(statistics& st) const { void solver::collect_statistics(statistics& st) const {
st.update("polysat iterations", m_stats.m_num_iterations); st.update("polysat iterations", m_stats.m_num_iterations);
st.update("polysat decisions", m_stats.m_num_decisions); st.update("polysat decisions", m_stats.m_num_decisions);
st.update("polysat conflicts", m_stats.m_num_conflicts); st.update("polysat conflicts", m_stats.m_num_conflicts);
st.update("polysat bailouts", m_stats.m_num_bailouts); st.update("polysat bailouts", m_stats.m_num_bailouts);
st.update("polysat propagations", m_stats.m_num_propagations); st.update("polysat propagations", m_stats.m_num_propagations);
st.update("polysat restarts", m_stats.m_num_restarts); st.update("polysat restarts", m_stats.m_num_restarts);
st.update("polysat viable fallback", m_stats.m_num_viable_fallback);
} }
bool solver::invariant() { bool solver::invariant() {

View file

@ -54,6 +54,7 @@ namespace polysat {
unsigned m_num_conflicts; unsigned m_num_conflicts;
unsigned m_num_bailouts; unsigned m_num_bailouts;
unsigned m_num_restarts; unsigned m_num_restarts;
unsigned m_num_viable_fallback; ///< how often did we query the univariate solver
void reset() { memset(this, 0, sizeof(*this)); } void reset() { memset(this, 0, sizeof(*this)); }
stats() { reset(); } stats() { reset(); }
}; };