@@ -103,6 +103,7 @@ struct statistics {
103103 unsigned m_make_feasible = 0 ;
104104 unsigned m_total_iterations = 0 ;
105105 unsigned m_iters_with_no_cost_growing = 0 ;
106+ unsigned m_num_factorizations = 0 ;
106107 unsigned m_num_of_implied_bounds = 0 ;
107108 unsigned m_need_to_solve_inf = 0 ;
108109 unsigned m_max_cols = 0 ;
@@ -136,47 +137,45 @@ struct statistics {
136137 unsigned m_bounds_tightening_conflicts = 0 ;
137138 unsigned m_bounds_tightenings = 0 ;
138139 unsigned m_nla_throttled_lemmas = 0 ;
139- unsigned m_nla_bounds_lemmas = 0 ;
140- unsigned m_nla_bounds_propagations = 0 ;
140+
141141 ::statistics m_st = {};
142142
143143 void reset () {
144144 *this = statistics{};
145145 }
146146 void collect_statistics (::statistics& st) const {
147- st.update (" arith-lp-make-feasible" , m_make_feasible);
148- st.update (" arith-lp-max-columns" , m_max_cols);
149- st.update (" arith-lp-max-rows" , m_max_rows);
150- st.update (" arith-lp-offset-eqs" , m_offset_eqs);
151- st.update (" arith-lp-fixed-eqs" , m_fixed_eqs);
152- st.update (" arith-lia-patches" , m_patches);
153- st.update (" arith-lia-patches-success" , m_patches_success);
154- st.update (" arith-lia-gcd-calls" , m_gcd_calls);
155- st.update (" arith-lia-gcd-conflict" , m_gcd_conflicts);
156- st.update (" arith-lia-cube-calls" , m_cube_calls);
157- st.update (" arith-lia-cube-success" , m_cube_success);
158- st.update (" arith-lia-hermite-calls" , m_hnf_cutter_calls);
159- st.update (" arith-lia-hermite-cuts" , m_hnf_cuts);
160- st.update (" arith-lia-gomory-cuts" , m_gomory_cuts);
161- st.update (" arith-lia-diophantine-calls" , m_dio_calls);
162- st.update (" arith-lia-diophantine-tighten-conflicts" , m_dio_tighten_conflicts);
163- st.update (" arith-lia-diophantine-rewrite-conflicts" , m_dio_rewrite_conflicts);
164- st.update (" arith-lia-bounds-tightening-conflicts" , m_bounds_tightening_conflicts);
165- st.update (" arith-lia-bounds-tightenings" , m_bounds_tightenings);
166- st.update (" arith-nla-horner-calls" , m_horner_calls);
167- st.update (" arith-nla-horner-conflicts" , m_horner_conflicts);
168- st.update (" arith-nla-horner-cross-nested-forms" , m_cross_nested_forms);
169- st.update (" arith-nla-grobner-calls" , m_grobner_calls);
170- st.update (" arith-nla-grobner-conflicts" , m_grobner_conflicts);
147+ st.update (" arith-factorizations" , m_num_factorizations);
148+ st.update (" arith-make-feasible" , m_make_feasible);
149+ st.update (" arith-max-columns" , m_max_cols);
150+ st.update (" arith-max-rows" , m_max_rows);
151+ st.update (" arith-gcd-calls" , m_gcd_calls);
152+ st.update (" arith-gcd-conflict" , m_gcd_conflicts);
153+ st.update (" arith-cube-calls" , m_cube_calls);
154+ st.update (" arith-cube-success" , m_cube_success);
155+ st.update (" arith-patches" , m_patches);
156+ st.update (" arith-patches-success" , m_patches_success);
157+ st.update (" arith-hnf-calls" , m_hnf_cutter_calls);
158+ st.update (" arith-hnf-cuts" , m_hnf_cuts);
159+ st.update (" arith-gomory-cuts" , m_gomory_cuts);
160+ st.update (" arith-horner-calls" , m_horner_calls);
161+ st.update (" arith-horner-conflicts" , m_horner_conflicts);
162+ st.update (" arith-horner-cross-nested-forms" , m_cross_nested_forms);
163+ st.update (" arith-grobner-calls" , m_grobner_calls);
164+ st.update (" arith-grobner-conflicts" , m_grobner_conflicts);
165+ st.update (" arith-offset-eqs" , m_offset_eqs);
166+ st.update (" arith-fixed-eqs" , m_fixed_eqs);
171167 st.update (" arith-nla-add-bounds" , m_nla_add_bounds);
172168 st.update (" arith-nla-propagate-bounds" , m_nla_propagate_bounds);
173169 st.update (" arith-nla-propagate-eq" , m_nla_propagate_eq);
174170 st.update (" arith-nla-lemmas" , m_nla_lemmas);
175- st.update (" arith-nla-nra-calls" , m_nra_calls);
176- st.update (" arith-nla-bounds-improvements" , m_nla_bounds_improvements);
171+ st.update (" arith-nra-calls" , m_nra_calls);
172+ st.update (" arith-bounds-improvements" , m_nla_bounds_improvements);
173+ st.update (" arith-dio-calls" , m_dio_calls);
174+ st.update (" arith-dio-tighten-conflicts" , m_dio_tighten_conflicts);
175+ st.update (" arith-dio-rewrite-conflicts" , m_dio_rewrite_conflicts);
176+ st.update (" arith-bounds-tightening-conflicts" , m_bounds_tightening_conflicts);
177+ st.update (" arith-bounds-tightenings" , m_bounds_tightenings);
177178 st.update (" arith-nla-throttled-lemmas" , m_nla_throttled_lemmas);
178- st.update (" arith-nla-bounds-lemmas" , m_nla_bounds_lemmas);
179- st.update (" artih-nla-bounds-propagations" , m_nla_bounds_propagations);
180179 st.copy (m_st);
181180 }
182181};
@@ -223,11 +222,13 @@ struct lp_settings {
223222 unsigned percent_of_entering_to_check = 5 ; // we try to find a profitable column in a percentage of the columns
224223 bool use_scaling = true ;
225224 unsigned max_number_of_iterations_with_no_improvements = 2000000 ;
226- double time_limit; // the maximum time limit of the total run time in seconds
225+ double time_limit; // the maximum time limit of the total run time in seconds
227226 // end of dual section
228227 bool m_bound_propagation = true ;
229228 bool presolve_with_double_solver_for_lar = true ;
230229 simplex_strategy_enum m_simplex_strategy;
230+
231+ unsigned m_max_conflicts = 0 ;
231232
232233 int report_frequency = 1000 ;
233234 bool print_statistics = false ;
0 commit comments