Skip to content

Commit a1673f2

Browse files
committed
fallback to Gomory cuts and gcd conflicts if dio fails
Signed-off-by: Lev Nachmanson <[email protected]>
1 parent cc1bb0a commit a1673f2

File tree

3 files changed

+7
-19
lines changed

3 files changed

+7
-19
lines changed

src/math/lp/dioph_eq.cpp

+6-1
Original file line numberDiff line numberDiff line change
@@ -2038,8 +2038,13 @@ namespace lp {
20382038

20392039
if (ret != lia_move::undef)
20402040
return ret;
2041-
if (ret == lia_move::undef)
2041+
if (ret == lia_move::undef) {
20422042
lra.settings().dio_calls_period() *= 2;
2043+
if (lra.settings().dio_calls_period() >= 16) {
2044+
lra.settings().dio_enable_gomory_cuts() = true;
2045+
lra.settings().set_run_gcd_test(true);
2046+
}
2047+
}
20432048
return ret;
20442049
}
20452050

src/math/lp/lp_settings.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ void lp::lp_settings::updt_params(params_ref const& _p) {
3737
m_dio = lp_p.dio();
3838
m_dio_enable_gomory_cuts = lp_p.dio_cuts_enable_gomory();
3939
m_dio_enable_hnf_cuts = lp_p.dio_cuts_enable_hnf();
40-
m_dio_branching_period = lp_p.dio_branching_period();
4140
m_dump_bound_lemmas = p.arith_dump_bound_lemmas();
4241
m_dio_ignore_big_nums = lp_p.dio_ignore_big_nums();
4342
m_dio_calls_period = lp_p.dio_calls_period();

src/math/lp/lp_settings.h

+1-17
Original file line numberDiff line numberDiff line change
@@ -133,13 +133,7 @@ struct statistics {
133133
unsigned m_fixed_eqs = 0;
134134
unsigned m_dio_calls = 0;
135135
unsigned m_dio_tighten_conflicts = 0;
136-
unsigned m_dio_branch_iterations= 0;
137-
unsigned m_dio_branching_depth = 0;
138-
unsigned m_dio_branch_from_proofs = 0;
139-
unsigned m_dio_branching_infeasibles = 0;
140136
unsigned m_dio_rewrite_conflicts = 0;
141-
unsigned m_dio_branching_sats = 0;
142-
unsigned m_dio_branching_conflicts = 0;
143137
unsigned m_bounds_tightening_conflicts = 0;
144138
unsigned m_bounds_tightenings = 0;
145139
::statistics m_st = {};
@@ -176,14 +170,7 @@ struct statistics {
176170
st.update("arith-bounds-improvements", m_nla_bounds_improvements);
177171
st.update("arith-dio-calls", m_dio_calls);
178172
st.update("arith-dio-tighten-conflicts", m_dio_tighten_conflicts);
179-
st.update("arith-dio-branch-iterations", m_dio_branch_iterations);
180-
st.update("arith-dio-branch-depths", m_dio_branching_depth);
181-
st.update("arith-dio-branch-from-proofs", m_dio_branch_from_proofs);
182-
st.update("arith-dio-branching-infeasibles", m_dio_branching_infeasibles);
183173
st.update("arith-dio-rewrite-conflicts", m_dio_rewrite_conflicts);
184-
st.update("arith-dio-branching-sats", m_dio_branching_sats);
185-
st.update("arith-dio-branching-depth", m_dio_branching_depth);
186-
st.update("arith-dio-branching-conflicts", m_dio_branching_conflicts);
187174
st.update("arith-bounds-tightening-conflicts", m_bounds_tightening_conflicts);
188175
st.update("arith-bounds-tightenings", m_bounds_tightenings);
189176
st.copy(m_st);
@@ -261,8 +248,6 @@ struct lp_settings {
261248
bool m_dio = false;
262249
bool m_dio_enable_gomory_cuts = false;
263250
bool m_dio_enable_hnf_cuts = true;
264-
unsigned m_dio_branching_period = 100; // do branching rarely
265-
unsigned m_dio_report_branch_with_term_tigthening_period = 10000000; // period of reporting the branch with term tigthening
266251
bool m_dump_bound_lemmas = false;
267252
bool m_dio_ignore_big_nums = false;
268253
unsigned m_dio_calls_period = 4;
@@ -277,13 +262,12 @@ struct lp_settings {
277262
unsigned random_next() { return m_rand(); }
278263
unsigned random_next(unsigned u ) { return m_rand(u); }
279264
bool dio() { return m_dio; }
265+
bool & dio_enable_gomory_cuts() { return m_dio_enable_gomory_cuts; }
280266
bool dio_enable_gomory_cuts() const { return m_dio && m_dio_enable_gomory_cuts; }
281267
bool dio_run_gcd() const { return m_dio && m_dio_run_gcd; }
282268
bool dio_enable_hnf_cuts() const { return m_dio && m_dio_enable_hnf_cuts; }
283-
unsigned dio_branching_period() const { return m_dio_branching_period; }
284269
bool dio_ignore_big_nums() const { return m_dio_ignore_big_nums; }
285270
void set_random_seed(unsigned s) { m_rand.set_seed(s); }
286-
unsigned dio_report_branch_with_term_tigthening_period() const { return m_dio_report_branch_with_term_tigthening_period; }
287271
bool bound_progation() const {
288272
return m_bound_propagation;
289273
}

0 commit comments

Comments
 (0)