25 return kissat_reluctant_triggered (&
solver->reluctant);
26 const double fast =
AVERAGE (fast_glue);
27 const double slow =
AVERAGE (slow_glue);
28 const double margin = (100.0 +
GET_OPTION (restartmargin)) / 100.0;
29 const double limit = margin * slow;
31 "restart glue limit %g = "
32 "%.02f * %g (slow glue) %c %g (fast glue)",
38 return (limit <= fast);
44 uint64_t restarts =
solver->statistics_.restarts;
50 "focused restart limit at %" PRIu64
51 " after %" PRIu64
" conflicts ",
58 const double limit = kissat_get_heap_score (
scores, next_idx);
59 unsigned level =
solver->level, res = 0;
63 const double score = kissat_get_heap_score (
scores, idx);
75 LOG (
"next decision variable stamp %u", limit);
76 unsigned level =
solver->level, res = 0;
98 res = reuse_stable_trail (
solver);
100 res = reuse_focused_trail (
solver);
102 LOG (
"matching trail level %u", res);
105 INC (restarts_reused_trails);
106 ADD (restarts_reused_levels, res);
107 LOG (
"restart reuses trail at decision level %u", res);
109 LOG (
"restarts does not reuse the trail");
119 INC (stable_restarts);
121 INC (focused_restarts);
122 unsigned level = reuse_trail (
solver);
124 "restarting after %" PRIu64
" conflicts"
125 " (limit %" PRIu64
")",
127 LOG (
"restarting to level %u", level);
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
void kissat_backtrack_in_consistent_state(kissat *solver, unsigned new_level)
unsigned kissat_next_decision_variable(kissat *solver)
ABC_NAMESPACE_IMPL_START double kissat_logn(uint64_t count)
#define KISSAT_assert(ignore)
#define kissat_extremely_verbose(...)
ABC_NAMESPACE_IMPL_START bool kissat_restarting(kissat *solver)
void kissat_update_focused_restart_limit(kissat *solver)
void kissat_restart(kissat *solver)
struct limits::@317277023072347355124305102271146250361353123031 restart