or-tools 0.17.1 → 0.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -0
- data/README.md +14 -10
- data/ext/or-tools/assignment.cpp +1 -1
- data/ext/or-tools/bin_packing.cpp +3 -3
- data/ext/or-tools/channel.hpp +37 -0
- data/ext/or-tools/constraint.cpp +685 -63
- data/ext/or-tools/ext.cpp +1 -1
- data/ext/or-tools/linear.cpp +8 -8
- data/ext/or-tools/math_opt.cpp +8 -8
- data/ext/or-tools/network_flows.cpp +2 -2
- data/ext/or-tools/routing.cpp +256 -49
- data/ext/or-tools/vendor.rb +22 -53
- data/lib/or_tools/cp_solver.rb +1 -16
- data/lib/or_tools/cp_solver_solution_callback.rb +4 -0
- data/lib/or_tools/routing_model.rb +22 -0
- data/lib/or_tools/version.rb +1 -1
- metadata +4 -3
data/ext/or-tools/constraint.cpp
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
#include <atomic>
|
|
2
|
+
#include <chrono>
|
|
3
|
+
#include <optional>
|
|
1
4
|
#include <string>
|
|
2
5
|
#include <vector>
|
|
3
6
|
|
|
@@ -6,24 +9,27 @@
|
|
|
6
9
|
#include <rice/rice.hpp>
|
|
7
10
|
#include <rice/stl.hpp>
|
|
8
11
|
|
|
12
|
+
#include "channel.hpp"
|
|
13
|
+
|
|
9
14
|
using operations_research::Domain;
|
|
10
15
|
using operations_research::sat::BoolVar;
|
|
11
16
|
using operations_research::sat::Constraint;
|
|
12
|
-
using operations_research::sat::TableConstraint;
|
|
13
17
|
using operations_research::sat::CpModelBuilder;
|
|
14
18
|
using operations_research::sat::CpSolverResponse;
|
|
15
19
|
using operations_research::sat::CpSolverStatus;
|
|
16
|
-
using operations_research::sat::LinearExpr;
|
|
17
|
-
using operations_research::sat::IntVar;
|
|
18
20
|
using operations_research::sat::IntervalVar;
|
|
21
|
+
using operations_research::sat::IntVar;
|
|
22
|
+
using operations_research::sat::LinearExpr;
|
|
19
23
|
using operations_research::sat::Model;
|
|
20
24
|
using operations_research::sat::NewFeasibleSolutionObserver;
|
|
21
25
|
using operations_research::sat::SatParameters;
|
|
22
26
|
using operations_research::sat::SolutionBooleanValue;
|
|
23
27
|
using operations_research::sat::SolutionIntegerValue;
|
|
28
|
+
using operations_research::sat::TableConstraint;
|
|
24
29
|
|
|
25
30
|
using Rice::Array;
|
|
26
31
|
using Rice::Class;
|
|
32
|
+
using Rice::Hash;
|
|
27
33
|
using Rice::Object;
|
|
28
34
|
using Rice::String;
|
|
29
35
|
using Rice::Symbol;
|
|
@@ -49,8 +55,8 @@ namespace Rice::detail {
|
|
|
49
55
|
LinearExpr convert(VALUE v) {
|
|
50
56
|
LinearExpr expr;
|
|
51
57
|
|
|
52
|
-
|
|
53
|
-
|
|
58
|
+
Object utils = Rice::define_module("ORTools").const_get("Utils");
|
|
59
|
+
Hash coeffs = utils.call("index_expression", Object(v));
|
|
54
60
|
|
|
55
61
|
for (const auto& entry : coeffs) {
|
|
56
62
|
Object var = entry.key;
|
|
@@ -131,37 +137,580 @@ void init_constraint(Rice::Module& m) {
|
|
|
131
137
|
|
|
132
138
|
Rice::define_class_under<SatParameters>(m, "SatParameters")
|
|
133
139
|
.define_constructor(Rice::Constructor<SatParameters>())
|
|
134
|
-
.define_method(
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
.define_method(
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
.define_method(
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
.define_method("
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
.define_method("
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
.define_method("
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
.define_method("
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
140
|
+
.define_method("absolute_gap_limit", &SatParameters::absolute_gap_limit)
|
|
141
|
+
.define_method("absolute_gap_limit=", &SatParameters::set_absolute_gap_limit)
|
|
142
|
+
.define_method("add_cg_cuts", &SatParameters::add_cg_cuts)
|
|
143
|
+
.define_method("add_cg_cuts=", &SatParameters::set_add_cg_cuts)
|
|
144
|
+
.define_method("add_clique_cuts", &SatParameters::add_clique_cuts)
|
|
145
|
+
.define_method("add_clique_cuts=", &SatParameters::set_add_clique_cuts)
|
|
146
|
+
.define_method("add_lin_max_cuts", &SatParameters::add_lin_max_cuts)
|
|
147
|
+
.define_method("add_lin_max_cuts=", &SatParameters::set_add_lin_max_cuts)
|
|
148
|
+
.define_method("add_lp_constraints_lazily", &SatParameters::add_lp_constraints_lazily)
|
|
149
|
+
.define_method("add_lp_constraints_lazily=", &SatParameters::set_add_lp_constraints_lazily)
|
|
150
|
+
.define_method("add_mir_cuts", &SatParameters::add_mir_cuts)
|
|
151
|
+
.define_method("add_mir_cuts=", &SatParameters::set_add_mir_cuts)
|
|
152
|
+
.define_method("add_objective_cut", &SatParameters::add_objective_cut)
|
|
153
|
+
.define_method("add_objective_cut=", &SatParameters::set_add_objective_cut)
|
|
154
|
+
.define_method("add_rlt_cuts", &SatParameters::add_rlt_cuts)
|
|
155
|
+
.define_method("add_rlt_cuts=", &SatParameters::set_add_rlt_cuts)
|
|
156
|
+
.define_method("add_zero_half_cuts", &SatParameters::add_zero_half_cuts)
|
|
157
|
+
.define_method("add_zero_half_cuts=", &SatParameters::set_add_zero_half_cuts)
|
|
158
|
+
.define_method("also_bump_variables_in_conflict_reasons", &SatParameters::also_bump_variables_in_conflict_reasons)
|
|
159
|
+
.define_method("also_bump_variables_in_conflict_reasons=", &SatParameters::set_also_bump_variables_in_conflict_reasons)
|
|
160
|
+
.define_method("alternative_pool_size", &SatParameters::alternative_pool_size)
|
|
161
|
+
.define_method("alternative_pool_size=", &SatParameters::set_alternative_pool_size)
|
|
162
|
+
.define_method("at_most_one_max_expansion_size", &SatParameters::at_most_one_max_expansion_size)
|
|
163
|
+
.define_method("at_most_one_max_expansion_size=", &SatParameters::set_at_most_one_max_expansion_size)
|
|
164
|
+
.define_method("auto_detect_greater_than_at_least_one_of", &SatParameters::auto_detect_greater_than_at_least_one_of)
|
|
165
|
+
.define_method("auto_detect_greater_than_at_least_one_of=", &SatParameters::set_auto_detect_greater_than_at_least_one_of)
|
|
166
|
+
.define_method("binary_search_num_conflicts", &SatParameters::binary_search_num_conflicts)
|
|
167
|
+
.define_method("binary_search_num_conflicts=", &SatParameters::set_binary_search_num_conflicts)
|
|
168
|
+
.define_method("blocking_restart_multiplier", &SatParameters::blocking_restart_multiplier)
|
|
169
|
+
.define_method("blocking_restart_multiplier=", &SatParameters::set_blocking_restart_multiplier)
|
|
170
|
+
.define_method("blocking_restart_window_size", &SatParameters::blocking_restart_window_size)
|
|
171
|
+
.define_method("blocking_restart_window_size=", &SatParameters::set_blocking_restart_window_size)
|
|
172
|
+
.define_method("boolean_encoding_level", &SatParameters::boolean_encoding_level)
|
|
173
|
+
.define_method("boolean_encoding_level=", &SatParameters::set_boolean_encoding_level)
|
|
174
|
+
.define_method("catch_sigint_signal", &SatParameters::catch_sigint_signal)
|
|
175
|
+
.define_method("catch_sigint_signal=", &SatParameters::set_catch_sigint_signal)
|
|
176
|
+
.define_method("check_drat_proof", &SatParameters::check_drat_proof)
|
|
177
|
+
.define_method("check_drat_proof=", &SatParameters::set_check_drat_proof)
|
|
178
|
+
.define_method("check_lrat_proof", &SatParameters::check_lrat_proof)
|
|
179
|
+
.define_method("check_lrat_proof=", &SatParameters::set_check_lrat_proof)
|
|
180
|
+
.define_method("check_merged_lrat_proof", &SatParameters::check_merged_lrat_proof)
|
|
181
|
+
.define_method("check_merged_lrat_proof=", &SatParameters::set_check_merged_lrat_proof)
|
|
182
|
+
.define_method("chronological_backtrack_min_conflicts", &SatParameters::chronological_backtrack_min_conflicts)
|
|
183
|
+
.define_method("chronological_backtrack_min_conflicts=", &SatParameters::set_chronological_backtrack_min_conflicts)
|
|
184
|
+
.define_method("clause_activity_decay", &SatParameters::clause_activity_decay)
|
|
185
|
+
.define_method("clause_activity_decay=", &SatParameters::set_clause_activity_decay)
|
|
186
|
+
.define_method("clause_cleanup_lbd_bound", &SatParameters::clause_cleanup_lbd_bound)
|
|
187
|
+
.define_method("clause_cleanup_lbd_bound=", &SatParameters::set_clause_cleanup_lbd_bound)
|
|
188
|
+
.define_method("clause_cleanup_lbd_tier1", &SatParameters::clause_cleanup_lbd_tier1)
|
|
189
|
+
.define_method("clause_cleanup_lbd_tier1=", &SatParameters::set_clause_cleanup_lbd_tier1)
|
|
190
|
+
.define_method("clause_cleanup_lbd_tier2", &SatParameters::clause_cleanup_lbd_tier2)
|
|
191
|
+
.define_method("clause_cleanup_lbd_tier2=", &SatParameters::set_clause_cleanup_lbd_tier2)
|
|
192
|
+
.define_method("clause_cleanup_period", &SatParameters::clause_cleanup_period)
|
|
193
|
+
.define_method("clause_cleanup_period=", &SatParameters::set_clause_cleanup_period)
|
|
194
|
+
.define_method("clause_cleanup_period_increment", &SatParameters::clause_cleanup_period_increment)
|
|
195
|
+
.define_method("clause_cleanup_period_increment=", &SatParameters::set_clause_cleanup_period_increment)
|
|
196
|
+
.define_method("clause_cleanup_ratio", &SatParameters::clause_cleanup_ratio)
|
|
197
|
+
.define_method("clause_cleanup_ratio=", &SatParameters::set_clause_cleanup_ratio)
|
|
198
|
+
.define_method("clause_cleanup_target", &SatParameters::clause_cleanup_target)
|
|
199
|
+
.define_method("clause_cleanup_target=", &SatParameters::set_clause_cleanup_target)
|
|
200
|
+
.define_method("convert_intervals", &SatParameters::convert_intervals)
|
|
201
|
+
.define_method("convert_intervals=", &SatParameters::set_convert_intervals)
|
|
202
|
+
.define_method("core_minimization_level", &SatParameters::core_minimization_level)
|
|
203
|
+
.define_method("core_minimization_level=", &SatParameters::set_core_minimization_level)
|
|
204
|
+
.define_method("count_assumption_levels_in_lbd", &SatParameters::count_assumption_levels_in_lbd)
|
|
205
|
+
.define_method("count_assumption_levels_in_lbd=", &SatParameters::set_count_assumption_levels_in_lbd)
|
|
206
|
+
.define_method("cover_optimization", &SatParameters::cover_optimization)
|
|
207
|
+
.define_method("cover_optimization=", &SatParameters::set_cover_optimization)
|
|
208
|
+
.define_method("cp_model_presolve", &SatParameters::cp_model_presolve)
|
|
209
|
+
.define_method("cp_model_presolve=", &SatParameters::set_cp_model_presolve)
|
|
210
|
+
.define_method("cp_model_probing_level", &SatParameters::cp_model_probing_level)
|
|
211
|
+
.define_method("cp_model_probing_level=", &SatParameters::set_cp_model_probing_level)
|
|
212
|
+
.define_method("cp_model_use_sat_presolve", &SatParameters::cp_model_use_sat_presolve)
|
|
213
|
+
.define_method("cp_model_use_sat_presolve=", &SatParameters::set_cp_model_use_sat_presolve)
|
|
214
|
+
.define_method("create_1uip_boolean_during_icr", &SatParameters::create_1uip_boolean_during_icr)
|
|
215
|
+
.define_method("create_1uip_boolean_during_icr=", &SatParameters::set_create_1uip_boolean_during_icr)
|
|
216
|
+
.define_method("cut_active_count_decay", &SatParameters::cut_active_count_decay)
|
|
217
|
+
.define_method("cut_active_count_decay=", &SatParameters::set_cut_active_count_decay)
|
|
218
|
+
.define_method("cut_cleanup_target", &SatParameters::cut_cleanup_target)
|
|
219
|
+
.define_method("cut_cleanup_target=", &SatParameters::set_cut_cleanup_target)
|
|
220
|
+
.define_method("cut_level", &SatParameters::cut_level)
|
|
221
|
+
.define_method("cut_level=", &SatParameters::set_cut_level)
|
|
222
|
+
.define_method("cut_max_active_count_value", &SatParameters::cut_max_active_count_value)
|
|
223
|
+
.define_method("cut_max_active_count_value=", &SatParameters::set_cut_max_active_count_value)
|
|
224
|
+
.define_method("debug_crash_if_lrat_check_fails", &SatParameters::debug_crash_if_lrat_check_fails)
|
|
225
|
+
.define_method("debug_crash_if_lrat_check_fails=", &SatParameters::set_debug_crash_if_lrat_check_fails)
|
|
226
|
+
.define_method("debug_crash_if_presolve_breaks_hint", &SatParameters::debug_crash_if_presolve_breaks_hint)
|
|
227
|
+
.define_method("debug_crash_if_presolve_breaks_hint=", &SatParameters::set_debug_crash_if_presolve_breaks_hint)
|
|
228
|
+
.define_method("debug_crash_on_bad_hint", &SatParameters::debug_crash_on_bad_hint)
|
|
229
|
+
.define_method("debug_crash_on_bad_hint=", &SatParameters::set_debug_crash_on_bad_hint)
|
|
230
|
+
.define_method("debug_max_num_presolve_operations", &SatParameters::debug_max_num_presolve_operations)
|
|
231
|
+
.define_method("debug_max_num_presolve_operations=", &SatParameters::set_debug_max_num_presolve_operations)
|
|
232
|
+
.define_method("debug_postsolve_with_full_solver", &SatParameters::debug_postsolve_with_full_solver)
|
|
233
|
+
.define_method("debug_postsolve_with_full_solver=", &SatParameters::set_debug_postsolve_with_full_solver)
|
|
234
|
+
.define_method("decision_subsumption_during_conflict_analysis", &SatParameters::decision_subsumption_during_conflict_analysis)
|
|
235
|
+
.define_method("decision_subsumption_during_conflict_analysis=", &SatParameters::set_decision_subsumption_during_conflict_analysis)
|
|
236
|
+
.define_method("default_restart_algorithms", &SatParameters::default_restart_algorithms)
|
|
237
|
+
// .define_method("default_restart_algorithms=", &SatParameters::set_default_restart_algorithms)
|
|
238
|
+
.define_method("detect_linearized_product", &SatParameters::detect_linearized_product)
|
|
239
|
+
.define_method("detect_linearized_product=", &SatParameters::set_detect_linearized_product)
|
|
240
|
+
.define_method("detect_table_with_cost", &SatParameters::detect_table_with_cost)
|
|
241
|
+
.define_method("detect_table_with_cost=", &SatParameters::set_detect_table_with_cost)
|
|
242
|
+
.define_method("disable_constraint_expansion", &SatParameters::disable_constraint_expansion)
|
|
243
|
+
.define_method("disable_constraint_expansion=", &SatParameters::set_disable_constraint_expansion)
|
|
244
|
+
.define_method("diversify_lns_params", &SatParameters::diversify_lns_params)
|
|
245
|
+
.define_method("diversify_lns_params=", &SatParameters::set_diversify_lns_params)
|
|
246
|
+
.define_method("eagerly_subsume_last_n_conflicts", &SatParameters::eagerly_subsume_last_n_conflicts)
|
|
247
|
+
.define_method("eagerly_subsume_last_n_conflicts=", &SatParameters::set_eagerly_subsume_last_n_conflicts)
|
|
248
|
+
.define_method("encode_complex_linear_constraint_with_integer", &SatParameters::encode_complex_linear_constraint_with_integer)
|
|
249
|
+
.define_method("encode_complex_linear_constraint_with_integer=", &SatParameters::set_encode_complex_linear_constraint_with_integer)
|
|
250
|
+
.define_method("encode_cumulative_as_reservoir", &SatParameters::encode_cumulative_as_reservoir)
|
|
251
|
+
.define_method("encode_cumulative_as_reservoir=", &SatParameters::set_encode_cumulative_as_reservoir)
|
|
252
|
+
.define_method("enumerate_all_solutions", &SatParameters::enumerate_all_solutions)
|
|
253
|
+
.define_method("enumerate_all_solutions=", &SatParameters::set_enumerate_all_solutions)
|
|
254
|
+
.define_method("expand_alldiff_constraints", &SatParameters::expand_alldiff_constraints)
|
|
255
|
+
.define_method("expand_alldiff_constraints=", &SatParameters::set_expand_alldiff_constraints)
|
|
256
|
+
.define_method("expand_reservoir_constraints", &SatParameters::expand_reservoir_constraints)
|
|
257
|
+
.define_method("expand_reservoir_constraints=", &SatParameters::set_expand_reservoir_constraints)
|
|
258
|
+
.define_method("expand_reservoir_using_circuit", &SatParameters::expand_reservoir_using_circuit)
|
|
259
|
+
.define_method("expand_reservoir_using_circuit=", &SatParameters::set_expand_reservoir_using_circuit)
|
|
260
|
+
.define_method("exploit_all_lp_solution", &SatParameters::exploit_all_lp_solution)
|
|
261
|
+
.define_method("exploit_all_lp_solution=", &SatParameters::set_exploit_all_lp_solution)
|
|
262
|
+
.define_method("exploit_all_precedences", &SatParameters::exploit_all_precedences)
|
|
263
|
+
.define_method("exploit_all_precedences=", &SatParameters::set_exploit_all_precedences)
|
|
264
|
+
.define_method("exploit_best_solution", &SatParameters::exploit_best_solution)
|
|
265
|
+
.define_method("exploit_best_solution=", &SatParameters::set_exploit_best_solution)
|
|
266
|
+
.define_method("exploit_integer_lp_solution", &SatParameters::exploit_integer_lp_solution)
|
|
267
|
+
.define_method("exploit_integer_lp_solution=", &SatParameters::set_exploit_integer_lp_solution)
|
|
268
|
+
.define_method("exploit_objective", &SatParameters::exploit_objective)
|
|
269
|
+
.define_method("exploit_objective=", &SatParameters::set_exploit_objective)
|
|
270
|
+
.define_method("exploit_relaxation_solution", &SatParameters::exploit_relaxation_solution)
|
|
271
|
+
.define_method("exploit_relaxation_solution=", &SatParameters::set_exploit_relaxation_solution)
|
|
272
|
+
.define_method("extra_subsumption_during_conflict_analysis", &SatParameters::extra_subsumption_during_conflict_analysis)
|
|
273
|
+
.define_method("extra_subsumption_during_conflict_analysis=", &SatParameters::set_extra_subsumption_during_conflict_analysis)
|
|
274
|
+
.define_method("feasibility_jump_batch_dtime", &SatParameters::feasibility_jump_batch_dtime)
|
|
275
|
+
.define_method("feasibility_jump_batch_dtime=", &SatParameters::set_feasibility_jump_batch_dtime)
|
|
276
|
+
.define_method("feasibility_jump_decay", &SatParameters::feasibility_jump_decay)
|
|
277
|
+
.define_method("feasibility_jump_decay=", &SatParameters::set_feasibility_jump_decay)
|
|
278
|
+
.define_method("feasibility_jump_enable_restarts", &SatParameters::feasibility_jump_enable_restarts)
|
|
279
|
+
.define_method("feasibility_jump_enable_restarts=", &SatParameters::set_feasibility_jump_enable_restarts)
|
|
280
|
+
.define_method("feasibility_jump_linearization_level", &SatParameters::feasibility_jump_linearization_level)
|
|
281
|
+
.define_method("feasibility_jump_linearization_level=", &SatParameters::set_feasibility_jump_linearization_level)
|
|
282
|
+
.define_method("feasibility_jump_max_expanded_constraint_size", &SatParameters::feasibility_jump_max_expanded_constraint_size)
|
|
283
|
+
.define_method("feasibility_jump_max_expanded_constraint_size=", &SatParameters::set_feasibility_jump_max_expanded_constraint_size)
|
|
284
|
+
.define_method("feasibility_jump_restart_factor", &SatParameters::feasibility_jump_restart_factor)
|
|
285
|
+
.define_method("feasibility_jump_restart_factor=", &SatParameters::set_feasibility_jump_restart_factor)
|
|
286
|
+
.define_method("feasibility_jump_var_perburbation_range_ratio", &SatParameters::feasibility_jump_var_perburbation_range_ratio)
|
|
287
|
+
.define_method("feasibility_jump_var_perburbation_range_ratio=", &SatParameters::set_feasibility_jump_var_perburbation_range_ratio)
|
|
288
|
+
.define_method("feasibility_jump_var_randomization_probability", &SatParameters::feasibility_jump_var_randomization_probability)
|
|
289
|
+
.define_method("feasibility_jump_var_randomization_probability=", &SatParameters::set_feasibility_jump_var_randomization_probability)
|
|
290
|
+
.define_method("fill_additional_solutions_in_response", &SatParameters::fill_additional_solutions_in_response)
|
|
291
|
+
.define_method("fill_additional_solutions_in_response=", &SatParameters::set_fill_additional_solutions_in_response)
|
|
292
|
+
.define_method("fill_tightened_domains_in_response", &SatParameters::fill_tightened_domains_in_response)
|
|
293
|
+
.define_method("fill_tightened_domains_in_response=", &SatParameters::set_fill_tightened_domains_in_response)
|
|
294
|
+
.define_method("filter_sat_postsolve_clauses", &SatParameters::filter_sat_postsolve_clauses)
|
|
295
|
+
.define_method("filter_sat_postsolve_clauses=", &SatParameters::set_filter_sat_postsolve_clauses)
|
|
296
|
+
.define_method("find_big_linear_overlap", &SatParameters::find_big_linear_overlap)
|
|
297
|
+
.define_method("find_big_linear_overlap=", &SatParameters::set_find_big_linear_overlap)
|
|
298
|
+
.define_method("find_clauses_that_are_exactly_one", &SatParameters::find_clauses_that_are_exactly_one)
|
|
299
|
+
.define_method("find_clauses_that_are_exactly_one=", &SatParameters::set_find_clauses_that_are_exactly_one)
|
|
300
|
+
.define_method("find_multiple_cores", &SatParameters::find_multiple_cores)
|
|
301
|
+
.define_method("find_multiple_cores=", &SatParameters::set_find_multiple_cores)
|
|
302
|
+
.define_method("fix_variables_to_their_hinted_value", &SatParameters::fix_variables_to_their_hinted_value)
|
|
303
|
+
.define_method("fix_variables_to_their_hinted_value=", &SatParameters::set_fix_variables_to_their_hinted_value)
|
|
304
|
+
.define_method("glucose_decay_increment", &SatParameters::glucose_decay_increment)
|
|
305
|
+
.define_method("glucose_decay_increment=", &SatParameters::set_glucose_decay_increment)
|
|
306
|
+
.define_method("glucose_decay_increment_period", &SatParameters::glucose_decay_increment_period)
|
|
307
|
+
.define_method("glucose_decay_increment_period=", &SatParameters::set_glucose_decay_increment_period)
|
|
308
|
+
.define_method("glucose_max_decay", &SatParameters::glucose_max_decay)
|
|
309
|
+
.define_method("glucose_max_decay=", &SatParameters::set_glucose_max_decay)
|
|
310
|
+
.define_method("hint_conflict_limit", &SatParameters::hint_conflict_limit)
|
|
311
|
+
.define_method("hint_conflict_limit=", &SatParameters::set_hint_conflict_limit)
|
|
312
|
+
.define_method("ignore_names", &SatParameters::ignore_names)
|
|
313
|
+
.define_method("ignore_names=", &SatParameters::set_ignore_names)
|
|
314
|
+
.define_method("infer_all_diffs", &SatParameters::infer_all_diffs)
|
|
315
|
+
.define_method("infer_all_diffs=", &SatParameters::set_infer_all_diffs)
|
|
316
|
+
.define_method("initial_variables_activity", &SatParameters::initial_variables_activity)
|
|
317
|
+
.define_method("initial_variables_activity=", &SatParameters::set_initial_variables_activity)
|
|
318
|
+
.define_method("inprocessing_dtime_ratio", &SatParameters::inprocessing_dtime_ratio)
|
|
319
|
+
.define_method("inprocessing_dtime_ratio=", &SatParameters::set_inprocessing_dtime_ratio)
|
|
320
|
+
.define_method("inprocessing_minimization_dtime", &SatParameters::inprocessing_minimization_dtime)
|
|
321
|
+
.define_method("inprocessing_minimization_dtime=", &SatParameters::set_inprocessing_minimization_dtime)
|
|
322
|
+
.define_method("inprocessing_minimization_use_all_orderings", &SatParameters::inprocessing_minimization_use_all_orderings)
|
|
323
|
+
.define_method("inprocessing_minimization_use_all_orderings=", &SatParameters::set_inprocessing_minimization_use_all_orderings)
|
|
324
|
+
.define_method("inprocessing_minimization_use_conflict_analysis", &SatParameters::inprocessing_minimization_use_conflict_analysis)
|
|
325
|
+
.define_method("inprocessing_minimization_use_conflict_analysis=", &SatParameters::set_inprocessing_minimization_use_conflict_analysis)
|
|
326
|
+
.define_method("inprocessing_probing_dtime", &SatParameters::inprocessing_probing_dtime)
|
|
327
|
+
.define_method("inprocessing_probing_dtime=", &SatParameters::set_inprocessing_probing_dtime)
|
|
328
|
+
.define_method("inprocessing_use_congruence_closure", &SatParameters::inprocessing_use_congruence_closure)
|
|
329
|
+
.define_method("inprocessing_use_congruence_closure=", &SatParameters::set_inprocessing_use_congruence_closure)
|
|
330
|
+
.define_method("inprocessing_use_sat_sweeping", &SatParameters::inprocessing_use_sat_sweeping)
|
|
331
|
+
.define_method("inprocessing_use_sat_sweeping=", &SatParameters::set_inprocessing_use_sat_sweeping)
|
|
332
|
+
.define_method("instantiate_all_variables", &SatParameters::instantiate_all_variables)
|
|
333
|
+
.define_method("instantiate_all_variables=", &SatParameters::set_instantiate_all_variables)
|
|
334
|
+
.define_method("interleave_batch_size", &SatParameters::interleave_batch_size)
|
|
335
|
+
.define_method("interleave_batch_size=", &SatParameters::set_interleave_batch_size)
|
|
336
|
+
.define_method("interleave_search", &SatParameters::interleave_search)
|
|
337
|
+
.define_method("interleave_search=", &SatParameters::set_interleave_search)
|
|
338
|
+
.define_method("keep_all_feasible_solutions_in_presolve", &SatParameters::keep_all_feasible_solutions_in_presolve)
|
|
339
|
+
.define_method("keep_all_feasible_solutions_in_presolve=", &SatParameters::set_keep_all_feasible_solutions_in_presolve)
|
|
340
|
+
.define_method("keep_symmetry_in_presolve", &SatParameters::keep_symmetry_in_presolve)
|
|
341
|
+
.define_method("keep_symmetry_in_presolve=", &SatParameters::set_keep_symmetry_in_presolve)
|
|
342
|
+
.define_method("lb_relax_num_workers_threshold", &SatParameters::lb_relax_num_workers_threshold)
|
|
343
|
+
.define_method("lb_relax_num_workers_threshold=", &SatParameters::set_lb_relax_num_workers_threshold)
|
|
344
|
+
.define_method("linear_split_size", &SatParameters::linear_split_size)
|
|
345
|
+
.define_method("linear_split_size=", &SatParameters::set_linear_split_size)
|
|
346
|
+
.define_method("linearization_level", &SatParameters::linearization_level)
|
|
347
|
+
.define_method("linearization_level=", &SatParameters::set_linearization_level)
|
|
348
|
+
.define_method("lns_initial_deterministic_limit", &SatParameters::lns_initial_deterministic_limit)
|
|
349
|
+
.define_method("lns_initial_deterministic_limit=", &SatParameters::set_lns_initial_deterministic_limit)
|
|
350
|
+
.define_method("lns_initial_difficulty", &SatParameters::lns_initial_difficulty)
|
|
351
|
+
.define_method("lns_initial_difficulty=", &SatParameters::set_lns_initial_difficulty)
|
|
352
|
+
.define_method("load_at_most_ones_in_sat_presolve", &SatParameters::load_at_most_ones_in_sat_presolve)
|
|
353
|
+
.define_method("load_at_most_ones_in_sat_presolve=", &SatParameters::set_load_at_most_ones_in_sat_presolve)
|
|
354
|
+
.define_method("log_prefix", &SatParameters::log_prefix)
|
|
355
|
+
// .define_method("log_prefix=", &SatParameters::set_log_prefix)
|
|
356
|
+
.define_method("log_search_progress", &SatParameters::log_search_progress)
|
|
357
|
+
.define_method("log_search_progress=", &SatParameters::set_log_search_progress)
|
|
358
|
+
.define_method("log_subsolver_statistics", &SatParameters::log_subsolver_statistics)
|
|
359
|
+
.define_method("log_subsolver_statistics=", &SatParameters::set_log_subsolver_statistics)
|
|
360
|
+
.define_method("log_to_response", &SatParameters::log_to_response)
|
|
361
|
+
.define_method("log_to_response=", &SatParameters::set_log_to_response)
|
|
362
|
+
.define_method("log_to_stdout", &SatParameters::log_to_stdout)
|
|
363
|
+
.define_method("log_to_stdout=", &SatParameters::set_log_to_stdout)
|
|
364
|
+
.define_method("lp_dual_tolerance", &SatParameters::lp_dual_tolerance)
|
|
365
|
+
.define_method("lp_dual_tolerance=", &SatParameters::set_lp_dual_tolerance)
|
|
366
|
+
.define_method("lp_primal_tolerance", &SatParameters::lp_primal_tolerance)
|
|
367
|
+
.define_method("lp_primal_tolerance=", &SatParameters::set_lp_primal_tolerance)
|
|
368
|
+
.define_method("max_all_diff_cut_size", &SatParameters::max_all_diff_cut_size)
|
|
369
|
+
.define_method("max_all_diff_cut_size=", &SatParameters::set_max_all_diff_cut_size)
|
|
370
|
+
.define_method("max_alldiff_domain_size", &SatParameters::max_alldiff_domain_size)
|
|
371
|
+
.define_method("max_alldiff_domain_size=", &SatParameters::set_max_alldiff_domain_size)
|
|
372
|
+
.define_method("max_backjump_levels", &SatParameters::max_backjump_levels)
|
|
373
|
+
.define_method("max_backjump_levels=", &SatParameters::set_max_backjump_levels)
|
|
374
|
+
.define_method("max_clause_activity_value", &SatParameters::max_clause_activity_value)
|
|
375
|
+
.define_method("max_clause_activity_value=", &SatParameters::set_max_clause_activity_value)
|
|
376
|
+
.define_method("max_consecutive_inactive_count", &SatParameters::max_consecutive_inactive_count)
|
|
377
|
+
.define_method("max_consecutive_inactive_count=", &SatParameters::set_max_consecutive_inactive_count)
|
|
378
|
+
.define_method("max_cut_rounds_at_level_zero", &SatParameters::max_cut_rounds_at_level_zero)
|
|
379
|
+
.define_method("max_cut_rounds_at_level_zero=", &SatParameters::set_max_cut_rounds_at_level_zero)
|
|
380
|
+
.define_method("max_deterministic_time", &SatParameters::max_deterministic_time)
|
|
381
|
+
.define_method("max_deterministic_time=", &SatParameters::set_max_deterministic_time)
|
|
382
|
+
.define_method("max_domain_size_for_linear2_expansion", &SatParameters::max_domain_size_for_linear2_expansion)
|
|
383
|
+
.define_method("max_domain_size_for_linear2_expansion=", &SatParameters::set_max_domain_size_for_linear2_expansion)
|
|
384
|
+
.define_method("max_domain_size_when_encoding_eq_neq_constraints", &SatParameters::max_domain_size_when_encoding_eq_neq_constraints)
|
|
385
|
+
.define_method("max_domain_size_when_encoding_eq_neq_constraints=", &SatParameters::set_max_domain_size_when_encoding_eq_neq_constraints)
|
|
386
|
+
.define_method("max_drat_time_in_seconds", &SatParameters::max_drat_time_in_seconds)
|
|
387
|
+
.define_method("max_drat_time_in_seconds=", &SatParameters::set_max_drat_time_in_seconds)
|
|
388
|
+
.define_method("max_integer_rounding_scaling", &SatParameters::max_integer_rounding_scaling)
|
|
389
|
+
.define_method("max_integer_rounding_scaling=", &SatParameters::set_max_integer_rounding_scaling)
|
|
390
|
+
.define_method("max_lin_max_size_for_expansion", &SatParameters::max_lin_max_size_for_expansion)
|
|
391
|
+
.define_method("max_lin_max_size_for_expansion=", &SatParameters::set_max_lin_max_size_for_expansion)
|
|
392
|
+
.define_method("max_memory_in_mb", &SatParameters::max_memory_in_mb)
|
|
393
|
+
.define_method("max_memory_in_mb=", &SatParameters::set_max_memory_in_mb)
|
|
394
|
+
.define_method("max_num_cuts", &SatParameters::max_num_cuts)
|
|
395
|
+
.define_method("max_num_cuts=", &SatParameters::set_max_num_cuts)
|
|
396
|
+
.define_method("max_num_deterministic_batches", &SatParameters::max_num_deterministic_batches)
|
|
397
|
+
.define_method("max_num_deterministic_batches=", &SatParameters::set_max_num_deterministic_batches)
|
|
398
|
+
.define_method("max_num_intervals_for_timetable_edge_finding", &SatParameters::max_num_intervals_for_timetable_edge_finding)
|
|
399
|
+
.define_method("max_num_intervals_for_timetable_edge_finding=", &SatParameters::set_max_num_intervals_for_timetable_edge_finding)
|
|
400
|
+
.define_method("max_number_of_conflicts", &SatParameters::max_number_of_conflicts)
|
|
401
|
+
.define_method("max_number_of_conflicts=", &SatParameters::set_max_number_of_conflicts)
|
|
402
|
+
.define_method("max_pairs_pairwise_reasoning_in_no_overlap_2d", &SatParameters::max_pairs_pairwise_reasoning_in_no_overlap_2d)
|
|
403
|
+
.define_method("max_pairs_pairwise_reasoning_in_no_overlap_2d=", &SatParameters::set_max_pairs_pairwise_reasoning_in_no_overlap_2d)
|
|
404
|
+
.define_method("max_presolve_iterations", &SatParameters::max_presolve_iterations)
|
|
405
|
+
.define_method("max_presolve_iterations=", &SatParameters::set_max_presolve_iterations)
|
|
406
|
+
.define_method("max_sat_reverse_assumption_order", &SatParameters::max_sat_reverse_assumption_order)
|
|
407
|
+
.define_method("max_sat_reverse_assumption_order=", &SatParameters::set_max_sat_reverse_assumption_order)
|
|
408
|
+
.define_method("max_size_to_create_precedence_literals_in_disjunctive", &SatParameters::max_size_to_create_precedence_literals_in_disjunctive)
|
|
409
|
+
.define_method("max_size_to_create_precedence_literals_in_disjunctive=", &SatParameters::set_max_size_to_create_precedence_literals_in_disjunctive)
|
|
410
|
+
.define_method("max_time_in_seconds", &SatParameters::max_time_in_seconds)
|
|
411
|
+
.define_method("max_time_in_seconds=", &SatParameters::set_max_time_in_seconds)
|
|
412
|
+
.define_method("max_variable_activity_value", &SatParameters::max_variable_activity_value)
|
|
413
|
+
.define_method("max_variable_activity_value=", &SatParameters::set_max_variable_activity_value)
|
|
414
|
+
.define_method("maximum_regions_to_split_in_disconnected_no_overlap_2d", &SatParameters::maximum_regions_to_split_in_disconnected_no_overlap_2d)
|
|
415
|
+
.define_method("maximum_regions_to_split_in_disconnected_no_overlap_2d=", &SatParameters::set_maximum_regions_to_split_in_disconnected_no_overlap_2d)
|
|
416
|
+
.define_method("merge_at_most_one_work_limit", &SatParameters::merge_at_most_one_work_limit)
|
|
417
|
+
.define_method("merge_at_most_one_work_limit=", &SatParameters::set_merge_at_most_one_work_limit)
|
|
418
|
+
.define_method("merge_no_overlap_work_limit", &SatParameters::merge_no_overlap_work_limit)
|
|
419
|
+
.define_method("merge_no_overlap_work_limit=", &SatParameters::set_merge_no_overlap_work_limit)
|
|
420
|
+
.define_method("min_orthogonality_for_lp_constraints", &SatParameters::min_orthogonality_for_lp_constraints)
|
|
421
|
+
.define_method("min_orthogonality_for_lp_constraints=", &SatParameters::set_min_orthogonality_for_lp_constraints)
|
|
422
|
+
.define_method("minimize_reduction_during_pb_resolution", &SatParameters::minimize_reduction_during_pb_resolution)
|
|
423
|
+
.define_method("minimize_reduction_during_pb_resolution=", &SatParameters::set_minimize_reduction_during_pb_resolution)
|
|
424
|
+
.define_method("minimize_shared_clauses", &SatParameters::minimize_shared_clauses)
|
|
425
|
+
.define_method("minimize_shared_clauses=", &SatParameters::set_minimize_shared_clauses)
|
|
426
|
+
.define_method("mip_automatically_scale_variables", &SatParameters::mip_automatically_scale_variables)
|
|
427
|
+
.define_method("mip_automatically_scale_variables=", &SatParameters::set_mip_automatically_scale_variables)
|
|
428
|
+
.define_method("mip_check_precision", &SatParameters::mip_check_precision)
|
|
429
|
+
.define_method("mip_check_precision=", &SatParameters::set_mip_check_precision)
|
|
430
|
+
.define_method("mip_compute_true_objective_bound", &SatParameters::mip_compute_true_objective_bound)
|
|
431
|
+
.define_method("mip_compute_true_objective_bound=", &SatParameters::set_mip_compute_true_objective_bound)
|
|
432
|
+
.define_method("mip_drop_tolerance", &SatParameters::mip_drop_tolerance)
|
|
433
|
+
.define_method("mip_drop_tolerance=", &SatParameters::set_mip_drop_tolerance)
|
|
434
|
+
.define_method("mip_max_activity_exponent", &SatParameters::mip_max_activity_exponent)
|
|
435
|
+
.define_method("mip_max_activity_exponent=", &SatParameters::set_mip_max_activity_exponent)
|
|
436
|
+
.define_method("mip_max_bound", &SatParameters::mip_max_bound)
|
|
437
|
+
.define_method("mip_max_bound=", &SatParameters::set_mip_max_bound)
|
|
438
|
+
.define_method("mip_max_valid_magnitude", &SatParameters::mip_max_valid_magnitude)
|
|
439
|
+
.define_method("mip_max_valid_magnitude=", &SatParameters::set_mip_max_valid_magnitude)
|
|
440
|
+
.define_method("mip_presolve_level", &SatParameters::mip_presolve_level)
|
|
441
|
+
.define_method("mip_presolve_level=", &SatParameters::set_mip_presolve_level)
|
|
442
|
+
.define_method("mip_scale_large_domain", &SatParameters::mip_scale_large_domain)
|
|
443
|
+
.define_method("mip_scale_large_domain=", &SatParameters::set_mip_scale_large_domain)
|
|
444
|
+
.define_method("mip_treat_high_magnitude_bounds_as_infinity", &SatParameters::mip_treat_high_magnitude_bounds_as_infinity)
|
|
445
|
+
.define_method("mip_treat_high_magnitude_bounds_as_infinity=", &SatParameters::set_mip_treat_high_magnitude_bounds_as_infinity)
|
|
446
|
+
.define_method("mip_var_scaling", &SatParameters::mip_var_scaling)
|
|
447
|
+
.define_method("mip_var_scaling=", &SatParameters::set_mip_var_scaling)
|
|
448
|
+
.define_method("mip_wanted_precision", &SatParameters::mip_wanted_precision)
|
|
449
|
+
.define_method("mip_wanted_precision=", &SatParameters::set_mip_wanted_precision)
|
|
450
|
+
.define_method("name", &SatParameters::name)
|
|
451
|
+
// .define_method("name=", &SatParameters::set_name)
|
|
452
|
+
.define_method("new_constraints_batch_size", &SatParameters::new_constraints_batch_size)
|
|
453
|
+
.define_method("new_constraints_batch_size=", &SatParameters::set_new_constraints_batch_size)
|
|
454
|
+
.define_method("new_linear_propagation", &SatParameters::new_linear_propagation)
|
|
455
|
+
.define_method("new_linear_propagation=", &SatParameters::set_new_linear_propagation)
|
|
456
|
+
.define_method("no_overlap_2d_boolean_relations_limit", &SatParameters::no_overlap_2d_boolean_relations_limit)
|
|
457
|
+
.define_method("no_overlap_2d_boolean_relations_limit=", &SatParameters::set_no_overlap_2d_boolean_relations_limit)
|
|
458
|
+
.define_method("num_conflicts_before_strategy_changes", &SatParameters::num_conflicts_before_strategy_changes)
|
|
459
|
+
.define_method("num_conflicts_before_strategy_changes=", &SatParameters::set_num_conflicts_before_strategy_changes)
|
|
460
|
+
.define_method("num_full_subsolvers", &SatParameters::num_full_subsolvers)
|
|
461
|
+
.define_method("num_full_subsolvers=", &SatParameters::set_num_full_subsolvers)
|
|
462
|
+
.define_method("num_search_workers", &SatParameters::num_search_workers)
|
|
463
|
+
.define_method("num_search_workers=", &SatParameters::set_num_search_workers)
|
|
464
|
+
.define_method("num_violation_ls", &SatParameters::num_violation_ls)
|
|
465
|
+
.define_method("num_violation_ls=", &SatParameters::set_num_violation_ls)
|
|
466
|
+
.define_method("num_workers", &SatParameters::num_workers)
|
|
467
|
+
.define_method("num_workers=", &SatParameters::set_num_workers)
|
|
468
|
+
.define_method("only_add_cuts_at_level_zero", &SatParameters::only_add_cuts_at_level_zero)
|
|
469
|
+
.define_method("only_add_cuts_at_level_zero=", &SatParameters::set_only_add_cuts_at_level_zero)
|
|
470
|
+
.define_method("only_solve_ip", &SatParameters::only_solve_ip)
|
|
471
|
+
.define_method("only_solve_ip=", &SatParameters::set_only_solve_ip)
|
|
472
|
+
.define_method("optimize_with_core", &SatParameters::optimize_with_core)
|
|
473
|
+
.define_method("optimize_with_core=", &SatParameters::set_optimize_with_core)
|
|
474
|
+
.define_method("optimize_with_lb_tree_search", &SatParameters::optimize_with_lb_tree_search)
|
|
475
|
+
.define_method("optimize_with_lb_tree_search=", &SatParameters::set_optimize_with_lb_tree_search)
|
|
476
|
+
.define_method("optimize_with_max_hs", &SatParameters::optimize_with_max_hs)
|
|
477
|
+
.define_method("optimize_with_max_hs=", &SatParameters::set_optimize_with_max_hs)
|
|
478
|
+
.define_method("output_drat_proof", &SatParameters::output_drat_proof)
|
|
479
|
+
.define_method("output_drat_proof=", &SatParameters::set_output_drat_proof)
|
|
480
|
+
.define_method("output_lrat_proof", &SatParameters::output_lrat_proof)
|
|
481
|
+
.define_method("output_lrat_proof=", &SatParameters::set_output_lrat_proof)
|
|
482
|
+
.define_method("pb_cleanup_increment", &SatParameters::pb_cleanup_increment)
|
|
483
|
+
.define_method("pb_cleanup_increment=", &SatParameters::set_pb_cleanup_increment)
|
|
484
|
+
.define_method("pb_cleanup_ratio", &SatParameters::pb_cleanup_ratio)
|
|
485
|
+
.define_method("pb_cleanup_ratio=", &SatParameters::set_pb_cleanup_ratio)
|
|
486
|
+
.define_method("permute_presolve_constraint_order", &SatParameters::permute_presolve_constraint_order)
|
|
487
|
+
.define_method("permute_presolve_constraint_order=", &SatParameters::set_permute_presolve_constraint_order)
|
|
488
|
+
.define_method("permute_variable_randomly", &SatParameters::permute_variable_randomly)
|
|
489
|
+
.define_method("permute_variable_randomly=", &SatParameters::set_permute_variable_randomly)
|
|
490
|
+
.define_method("polarity_exploit_ls_hints", &SatParameters::polarity_exploit_ls_hints)
|
|
491
|
+
.define_method("polarity_exploit_ls_hints=", &SatParameters::set_polarity_exploit_ls_hints)
|
|
492
|
+
.define_method("polarity_rephase_increment", &SatParameters::polarity_rephase_increment)
|
|
493
|
+
.define_method("polarity_rephase_increment=", &SatParameters::set_polarity_rephase_increment)
|
|
494
|
+
.define_method("polish_lp_solution", &SatParameters::polish_lp_solution)
|
|
495
|
+
.define_method("polish_lp_solution=", &SatParameters::set_polish_lp_solution)
|
|
496
|
+
.define_method("presolve_blocked_clause", &SatParameters::presolve_blocked_clause)
|
|
497
|
+
.define_method("presolve_blocked_clause=", &SatParameters::set_presolve_blocked_clause)
|
|
498
|
+
.define_method("presolve_bva_threshold", &SatParameters::presolve_bva_threshold)
|
|
499
|
+
.define_method("presolve_bva_threshold=", &SatParameters::set_presolve_bva_threshold)
|
|
500
|
+
.define_method("presolve_bve_clause_weight", &SatParameters::presolve_bve_clause_weight)
|
|
501
|
+
.define_method("presolve_bve_clause_weight=", &SatParameters::set_presolve_bve_clause_weight)
|
|
502
|
+
.define_method("presolve_bve_threshold", &SatParameters::presolve_bve_threshold)
|
|
503
|
+
.define_method("presolve_bve_threshold=", &SatParameters::set_presolve_bve_threshold)
|
|
504
|
+
.define_method("presolve_extract_integer_enforcement", &SatParameters::presolve_extract_integer_enforcement)
|
|
505
|
+
.define_method("presolve_extract_integer_enforcement=", &SatParameters::set_presolve_extract_integer_enforcement)
|
|
506
|
+
.define_method("presolve_inclusion_work_limit", &SatParameters::presolve_inclusion_work_limit)
|
|
507
|
+
.define_method("presolve_inclusion_work_limit=", &SatParameters::set_presolve_inclusion_work_limit)
|
|
508
|
+
.define_method("presolve_probing_deterministic_time_limit", &SatParameters::presolve_probing_deterministic_time_limit)
|
|
509
|
+
.define_method("presolve_probing_deterministic_time_limit=", &SatParameters::set_presolve_probing_deterministic_time_limit)
|
|
510
|
+
.define_method("presolve_substitution_level", &SatParameters::presolve_substitution_level)
|
|
511
|
+
.define_method("presolve_substitution_level=", &SatParameters::set_presolve_substitution_level)
|
|
512
|
+
.define_method("presolve_use_bva", &SatParameters::presolve_use_bva)
|
|
513
|
+
.define_method("presolve_use_bva=", &SatParameters::set_presolve_use_bva)
|
|
514
|
+
.define_method("probing_deterministic_time_limit", &SatParameters::probing_deterministic_time_limit)
|
|
515
|
+
.define_method("probing_deterministic_time_limit=", &SatParameters::set_probing_deterministic_time_limit)
|
|
516
|
+
.define_method("probing_num_combinations_limit", &SatParameters::probing_num_combinations_limit)
|
|
517
|
+
.define_method("probing_num_combinations_limit=", &SatParameters::set_probing_num_combinations_limit)
|
|
518
|
+
.define_method("propagation_loop_detection_factor", &SatParameters::propagation_loop_detection_factor)
|
|
519
|
+
.define_method("propagation_loop_detection_factor=", &SatParameters::set_propagation_loop_detection_factor)
|
|
520
|
+
.define_method("pseudo_cost_reliability_threshold", &SatParameters::pseudo_cost_reliability_threshold)
|
|
521
|
+
.define_method("pseudo_cost_reliability_threshold=", &SatParameters::set_pseudo_cost_reliability_threshold)
|
|
522
|
+
.define_method("push_all_tasks_toward_start", &SatParameters::push_all_tasks_toward_start)
|
|
523
|
+
.define_method("push_all_tasks_toward_start=", &SatParameters::set_push_all_tasks_toward_start)
|
|
524
|
+
.define_method("random_branches_ratio", &SatParameters::random_branches_ratio)
|
|
525
|
+
.define_method("random_branches_ratio=", &SatParameters::set_random_branches_ratio)
|
|
526
|
+
.define_method("random_polarity_ratio", &SatParameters::random_polarity_ratio)
|
|
527
|
+
.define_method("random_polarity_ratio=", &SatParameters::set_random_polarity_ratio)
|
|
528
|
+
.define_method("random_seed", &SatParameters::random_seed)
|
|
529
|
+
.define_method("random_seed=", &SatParameters::set_random_seed)
|
|
530
|
+
.define_method("randomize_search", &SatParameters::randomize_search)
|
|
531
|
+
.define_method("randomize_search=", &SatParameters::set_randomize_search)
|
|
532
|
+
.define_method("relative_gap_limit", &SatParameters::relative_gap_limit)
|
|
533
|
+
.define_method("relative_gap_limit=", &SatParameters::set_relative_gap_limit)
|
|
534
|
+
.define_method("remove_fixed_variables_early", &SatParameters::remove_fixed_variables_early)
|
|
535
|
+
.define_method("remove_fixed_variables_early=", &SatParameters::set_remove_fixed_variables_early)
|
|
536
|
+
.define_method("repair_hint", &SatParameters::repair_hint)
|
|
537
|
+
.define_method("repair_hint=", &SatParameters::set_repair_hint)
|
|
538
|
+
.define_method("restart_dl_average_ratio", &SatParameters::restart_dl_average_ratio)
|
|
539
|
+
.define_method("restart_dl_average_ratio=", &SatParameters::set_restart_dl_average_ratio)
|
|
540
|
+
.define_method("restart_lbd_average_ratio", &SatParameters::restart_lbd_average_ratio)
|
|
541
|
+
.define_method("restart_lbd_average_ratio=", &SatParameters::set_restart_lbd_average_ratio)
|
|
542
|
+
.define_method("restart_period", &SatParameters::restart_period)
|
|
543
|
+
.define_method("restart_period=", &SatParameters::set_restart_period)
|
|
544
|
+
.define_method("restart_running_window_size", &SatParameters::restart_running_window_size)
|
|
545
|
+
.define_method("restart_running_window_size=", &SatParameters::set_restart_running_window_size)
|
|
546
|
+
.define_method("root_lp_iterations", &SatParameters::root_lp_iterations)
|
|
547
|
+
.define_method("root_lp_iterations=", &SatParameters::set_root_lp_iterations)
|
|
548
|
+
.define_method("routing_cut_dp_effort", &SatParameters::routing_cut_dp_effort)
|
|
549
|
+
.define_method("routing_cut_dp_effort=", &SatParameters::set_routing_cut_dp_effort)
|
|
550
|
+
.define_method("routing_cut_max_infeasible_path_length", &SatParameters::routing_cut_max_infeasible_path_length)
|
|
551
|
+
.define_method("routing_cut_max_infeasible_path_length=", &SatParameters::set_routing_cut_max_infeasible_path_length)
|
|
552
|
+
.define_method("routing_cut_subset_size_for_binary_relation_bound", &SatParameters::routing_cut_subset_size_for_binary_relation_bound)
|
|
553
|
+
.define_method("routing_cut_subset_size_for_binary_relation_bound=", &SatParameters::set_routing_cut_subset_size_for_binary_relation_bound)
|
|
554
|
+
.define_method("routing_cut_subset_size_for_exact_binary_relation_bound", &SatParameters::routing_cut_subset_size_for_exact_binary_relation_bound)
|
|
555
|
+
.define_method("routing_cut_subset_size_for_exact_binary_relation_bound=", &SatParameters::set_routing_cut_subset_size_for_exact_binary_relation_bound)
|
|
556
|
+
.define_method("routing_cut_subset_size_for_shortest_paths_bound", &SatParameters::routing_cut_subset_size_for_shortest_paths_bound)
|
|
557
|
+
.define_method("routing_cut_subset_size_for_shortest_paths_bound=", &SatParameters::set_routing_cut_subset_size_for_shortest_paths_bound)
|
|
558
|
+
.define_method("routing_cut_subset_size_for_tight_binary_relation_bound", &SatParameters::routing_cut_subset_size_for_tight_binary_relation_bound)
|
|
559
|
+
.define_method("routing_cut_subset_size_for_tight_binary_relation_bound=", &SatParameters::set_routing_cut_subset_size_for_tight_binary_relation_bound)
|
|
560
|
+
.define_method("save_lp_basis_in_lb_tree_search", &SatParameters::save_lp_basis_in_lb_tree_search)
|
|
561
|
+
.define_method("save_lp_basis_in_lb_tree_search=", &SatParameters::set_save_lp_basis_in_lb_tree_search)
|
|
562
|
+
.define_method("search_random_variable_pool_size", &SatParameters::search_random_variable_pool_size)
|
|
563
|
+
.define_method("search_random_variable_pool_size=", &SatParameters::set_search_random_variable_pool_size)
|
|
564
|
+
.define_method("share_binary_clauses", &SatParameters::share_binary_clauses)
|
|
565
|
+
.define_method("share_binary_clauses=", &SatParameters::set_share_binary_clauses)
|
|
566
|
+
.define_method("share_glue_clauses", &SatParameters::share_glue_clauses)
|
|
567
|
+
.define_method("share_glue_clauses=", &SatParameters::set_share_glue_clauses)
|
|
568
|
+
.define_method("share_glue_clauses_dtime", &SatParameters::share_glue_clauses_dtime)
|
|
569
|
+
.define_method("share_glue_clauses_dtime=", &SatParameters::set_share_glue_clauses_dtime)
|
|
570
|
+
.define_method("share_level_zero_bounds", &SatParameters::share_level_zero_bounds)
|
|
571
|
+
.define_method("share_level_zero_bounds=", &SatParameters::set_share_level_zero_bounds)
|
|
572
|
+
.define_method("share_linear2_bounds", &SatParameters::share_linear2_bounds)
|
|
573
|
+
.define_method("share_linear2_bounds=", &SatParameters::set_share_linear2_bounds)
|
|
574
|
+
.define_method("share_objective_bounds", &SatParameters::share_objective_bounds)
|
|
575
|
+
.define_method("share_objective_bounds=", &SatParameters::set_share_objective_bounds)
|
|
576
|
+
.define_method("shared_tree_balance_tolerance", &SatParameters::shared_tree_balance_tolerance)
|
|
577
|
+
.define_method("shared_tree_balance_tolerance=", &SatParameters::set_shared_tree_balance_tolerance)
|
|
578
|
+
.define_method("shared_tree_max_nodes_per_worker", &SatParameters::shared_tree_max_nodes_per_worker)
|
|
579
|
+
.define_method("shared_tree_max_nodes_per_worker=", &SatParameters::set_shared_tree_max_nodes_per_worker)
|
|
580
|
+
.define_method("shared_tree_num_workers", &SatParameters::shared_tree_num_workers)
|
|
581
|
+
.define_method("shared_tree_num_workers=", &SatParameters::set_shared_tree_num_workers)
|
|
582
|
+
.define_method("shared_tree_open_leaves_per_worker", &SatParameters::shared_tree_open_leaves_per_worker)
|
|
583
|
+
.define_method("shared_tree_open_leaves_per_worker=", &SatParameters::set_shared_tree_open_leaves_per_worker)
|
|
584
|
+
.define_method("shared_tree_split_min_dtime", &SatParameters::shared_tree_split_min_dtime)
|
|
585
|
+
.define_method("shared_tree_split_min_dtime=", &SatParameters::set_shared_tree_split_min_dtime)
|
|
586
|
+
.define_method("shared_tree_worker_enable_phase_sharing", &SatParameters::shared_tree_worker_enable_phase_sharing)
|
|
587
|
+
.define_method("shared_tree_worker_enable_phase_sharing=", &SatParameters::set_shared_tree_worker_enable_phase_sharing)
|
|
588
|
+
.define_method("shared_tree_worker_enable_trail_sharing", &SatParameters::shared_tree_worker_enable_trail_sharing)
|
|
589
|
+
.define_method("shared_tree_worker_enable_trail_sharing=", &SatParameters::set_shared_tree_worker_enable_trail_sharing)
|
|
590
|
+
.define_method("shared_tree_worker_min_restarts_per_subtree", &SatParameters::shared_tree_worker_min_restarts_per_subtree)
|
|
591
|
+
.define_method("shared_tree_worker_min_restarts_per_subtree=", &SatParameters::set_shared_tree_worker_min_restarts_per_subtree)
|
|
592
|
+
.define_method("shaving_deterministic_time_in_probing_search", &SatParameters::shaving_deterministic_time_in_probing_search)
|
|
593
|
+
.define_method("shaving_deterministic_time_in_probing_search=", &SatParameters::set_shaving_deterministic_time_in_probing_search)
|
|
594
|
+
.define_method("shaving_search_deterministic_time", &SatParameters::shaving_search_deterministic_time)
|
|
595
|
+
.define_method("shaving_search_deterministic_time=", &SatParameters::set_shaving_search_deterministic_time)
|
|
596
|
+
.define_method("shaving_search_threshold", &SatParameters::shaving_search_threshold)
|
|
597
|
+
.define_method("shaving_search_threshold=", &SatParameters::set_shaving_search_threshold)
|
|
598
|
+
.define_method("solution_pool_diversity_limit", &SatParameters::solution_pool_diversity_limit)
|
|
599
|
+
.define_method("solution_pool_diversity_limit=", &SatParameters::set_solution_pool_diversity_limit)
|
|
600
|
+
.define_method("solution_pool_size", &SatParameters::solution_pool_size)
|
|
601
|
+
.define_method("solution_pool_size=", &SatParameters::set_solution_pool_size)
|
|
602
|
+
.define_method("stop_after_first_solution", &SatParameters::stop_after_first_solution)
|
|
603
|
+
.define_method("stop_after_first_solution=", &SatParameters::set_stop_after_first_solution)
|
|
604
|
+
.define_method("stop_after_presolve", &SatParameters::stop_after_presolve)
|
|
605
|
+
.define_method("stop_after_presolve=", &SatParameters::set_stop_after_presolve)
|
|
606
|
+
.define_method("stop_after_root_propagation", &SatParameters::stop_after_root_propagation)
|
|
607
|
+
.define_method("stop_after_root_propagation=", &SatParameters::set_stop_after_root_propagation)
|
|
608
|
+
.define_method("strategy_change_increase_ratio", &SatParameters::strategy_change_increase_ratio)
|
|
609
|
+
.define_method("strategy_change_increase_ratio=", &SatParameters::set_strategy_change_increase_ratio)
|
|
610
|
+
.define_method("subsume_during_vivification", &SatParameters::subsume_during_vivification)
|
|
611
|
+
.define_method("subsume_during_vivification=", &SatParameters::set_subsume_during_vivification)
|
|
612
|
+
.define_method("subsumption_during_conflict_analysis", &SatParameters::subsumption_during_conflict_analysis)
|
|
613
|
+
.define_method("subsumption_during_conflict_analysis=", &SatParameters::set_subsumption_during_conflict_analysis)
|
|
614
|
+
.define_method("symmetry_detection_deterministic_time_limit", &SatParameters::symmetry_detection_deterministic_time_limit)
|
|
615
|
+
.define_method("symmetry_detection_deterministic_time_limit=", &SatParameters::set_symmetry_detection_deterministic_time_limit)
|
|
616
|
+
.define_method("symmetry_level", &SatParameters::symmetry_level)
|
|
617
|
+
.define_method("symmetry_level=", &SatParameters::set_symmetry_level)
|
|
618
|
+
.define_method("table_compression_level", &SatParameters::table_compression_level)
|
|
619
|
+
.define_method("table_compression_level=", &SatParameters::set_table_compression_level)
|
|
620
|
+
.define_method("transitive_precedences_work_limit", &SatParameters::transitive_precedences_work_limit)
|
|
621
|
+
.define_method("transitive_precedences_work_limit=", &SatParameters::set_transitive_precedences_work_limit)
|
|
622
|
+
.define_method("use_absl_random", &SatParameters::use_absl_random)
|
|
623
|
+
.define_method("use_absl_random=", &SatParameters::set_use_absl_random)
|
|
624
|
+
.define_method("use_all_different_for_circuit", &SatParameters::use_all_different_for_circuit)
|
|
625
|
+
.define_method("use_all_different_for_circuit=", &SatParameters::set_use_all_different_for_circuit)
|
|
626
|
+
.define_method("use_area_energetic_reasoning_in_no_overlap_2d", &SatParameters::use_area_energetic_reasoning_in_no_overlap_2d)
|
|
627
|
+
.define_method("use_area_energetic_reasoning_in_no_overlap_2d=", &SatParameters::set_use_area_energetic_reasoning_in_no_overlap_2d)
|
|
628
|
+
.define_method("use_blocking_restart", &SatParameters::use_blocking_restart)
|
|
629
|
+
.define_method("use_blocking_restart=", &SatParameters::set_use_blocking_restart)
|
|
630
|
+
.define_method("use_chronological_backtracking", &SatParameters::use_chronological_backtracking)
|
|
631
|
+
.define_method("use_chronological_backtracking=", &SatParameters::set_use_chronological_backtracking)
|
|
632
|
+
.define_method("use_combined_no_overlap", &SatParameters::use_combined_no_overlap)
|
|
633
|
+
.define_method("use_combined_no_overlap=", &SatParameters::set_use_combined_no_overlap)
|
|
634
|
+
.define_method("use_conservative_scale_overload_checker", &SatParameters::use_conservative_scale_overload_checker)
|
|
635
|
+
.define_method("use_conservative_scale_overload_checker=", &SatParameters::set_use_conservative_scale_overload_checker)
|
|
636
|
+
.define_method("use_disjunctive_constraint_in_cumulative", &SatParameters::use_disjunctive_constraint_in_cumulative)
|
|
637
|
+
.define_method("use_disjunctive_constraint_in_cumulative=", &SatParameters::set_use_disjunctive_constraint_in_cumulative)
|
|
638
|
+
.define_method("use_dual_scheduling_heuristics", &SatParameters::use_dual_scheduling_heuristics)
|
|
639
|
+
.define_method("use_dual_scheduling_heuristics=", &SatParameters::set_use_dual_scheduling_heuristics)
|
|
640
|
+
.define_method("use_dynamic_precedence_in_cumulative", &SatParameters::use_dynamic_precedence_in_cumulative)
|
|
641
|
+
.define_method("use_dynamic_precedence_in_cumulative=", &SatParameters::set_use_dynamic_precedence_in_cumulative)
|
|
642
|
+
.define_method("use_dynamic_precedence_in_disjunctive", &SatParameters::use_dynamic_precedence_in_disjunctive)
|
|
643
|
+
.define_method("use_dynamic_precedence_in_disjunctive=", &SatParameters::set_use_dynamic_precedence_in_disjunctive)
|
|
644
|
+
.define_method("use_energetic_reasoning_in_no_overlap_2d", &SatParameters::use_energetic_reasoning_in_no_overlap_2d)
|
|
645
|
+
.define_method("use_energetic_reasoning_in_no_overlap_2d=", &SatParameters::set_use_energetic_reasoning_in_no_overlap_2d)
|
|
646
|
+
.define_method("use_erwa_heuristic", &SatParameters::use_erwa_heuristic)
|
|
647
|
+
.define_method("use_erwa_heuristic=", &SatParameters::set_use_erwa_heuristic)
|
|
648
|
+
.define_method("use_exact_lp_reason", &SatParameters::use_exact_lp_reason)
|
|
649
|
+
.define_method("use_exact_lp_reason=", &SatParameters::set_use_exact_lp_reason)
|
|
650
|
+
.define_method("use_extended_probing", &SatParameters::use_extended_probing)
|
|
651
|
+
.define_method("use_extended_probing=", &SatParameters::set_use_extended_probing)
|
|
652
|
+
.define_method("use_feasibility_jump", &SatParameters::use_feasibility_jump)
|
|
653
|
+
.define_method("use_feasibility_jump=", &SatParameters::set_use_feasibility_jump)
|
|
654
|
+
.define_method("use_feasibility_pump", &SatParameters::use_feasibility_pump)
|
|
655
|
+
.define_method("use_feasibility_pump=", &SatParameters::set_use_feasibility_pump)
|
|
656
|
+
.define_method("use_hard_precedences_in_cumulative", &SatParameters::use_hard_precedences_in_cumulative)
|
|
657
|
+
.define_method("use_hard_precedences_in_cumulative=", &SatParameters::set_use_hard_precedences_in_cumulative)
|
|
658
|
+
.define_method("use_implied_bounds", &SatParameters::use_implied_bounds)
|
|
659
|
+
.define_method("use_implied_bounds=", &SatParameters::set_use_implied_bounds)
|
|
660
|
+
.define_method("use_lb_relax_lns", &SatParameters::use_lb_relax_lns)
|
|
661
|
+
.define_method("use_lb_relax_lns=", &SatParameters::set_use_lb_relax_lns)
|
|
662
|
+
.define_method("use_linear3_for_no_overlap_2d_precedences", &SatParameters::use_linear3_for_no_overlap_2d_precedences)
|
|
663
|
+
.define_method("use_linear3_for_no_overlap_2d_precedences=", &SatParameters::set_use_linear3_for_no_overlap_2d_precedences)
|
|
664
|
+
.define_method("use_lns", &SatParameters::use_lns)
|
|
665
|
+
.define_method("use_lns=", &SatParameters::set_use_lns)
|
|
666
|
+
.define_method("use_lns_only", &SatParameters::use_lns_only)
|
|
667
|
+
.define_method("use_lns_only=", &SatParameters::set_use_lns_only)
|
|
668
|
+
.define_method("use_ls_only", &SatParameters::use_ls_only)
|
|
669
|
+
.define_method("use_ls_only=", &SatParameters::set_use_ls_only)
|
|
670
|
+
.define_method("use_new_integer_conflict_resolution", &SatParameters::use_new_integer_conflict_resolution)
|
|
671
|
+
.define_method("use_new_integer_conflict_resolution=", &SatParameters::set_use_new_integer_conflict_resolution)
|
|
672
|
+
.define_method("use_objective_lb_search", &SatParameters::use_objective_lb_search)
|
|
673
|
+
.define_method("use_objective_lb_search=", &SatParameters::set_use_objective_lb_search)
|
|
674
|
+
.define_method("use_objective_shaving_search", &SatParameters::use_objective_shaving_search)
|
|
675
|
+
.define_method("use_objective_shaving_search=", &SatParameters::set_use_objective_shaving_search)
|
|
676
|
+
.define_method("use_optimization_hints", &SatParameters::use_optimization_hints)
|
|
677
|
+
.define_method("use_optimization_hints=", &SatParameters::set_use_optimization_hints)
|
|
678
|
+
.define_method("use_optional_variables", &SatParameters::use_optional_variables)
|
|
679
|
+
.define_method("use_optional_variables=", &SatParameters::set_use_optional_variables)
|
|
680
|
+
.define_method("use_overload_checker_in_cumulative", &SatParameters::use_overload_checker_in_cumulative)
|
|
681
|
+
.define_method("use_overload_checker_in_cumulative=", &SatParameters::set_use_overload_checker_in_cumulative)
|
|
682
|
+
.define_method("use_pb_resolution", &SatParameters::use_pb_resolution)
|
|
683
|
+
.define_method("use_pb_resolution=", &SatParameters::set_use_pb_resolution)
|
|
684
|
+
.define_method("use_phase_saving", &SatParameters::use_phase_saving)
|
|
685
|
+
.define_method("use_phase_saving=", &SatParameters::set_use_phase_saving)
|
|
686
|
+
.define_method("use_precedences_in_disjunctive_constraint", &SatParameters::use_precedences_in_disjunctive_constraint)
|
|
687
|
+
.define_method("use_precedences_in_disjunctive_constraint=", &SatParameters::set_use_precedences_in_disjunctive_constraint)
|
|
688
|
+
.define_method("use_probing_search", &SatParameters::use_probing_search)
|
|
689
|
+
.define_method("use_probing_search=", &SatParameters::set_use_probing_search)
|
|
690
|
+
.define_method("use_rins_lns", &SatParameters::use_rins_lns)
|
|
691
|
+
.define_method("use_rins_lns=", &SatParameters::set_use_rins_lns)
|
|
692
|
+
.define_method("use_sat_inprocessing", &SatParameters::use_sat_inprocessing)
|
|
693
|
+
.define_method("use_sat_inprocessing=", &SatParameters::set_use_sat_inprocessing)
|
|
694
|
+
.define_method("use_shared_tree_search", &SatParameters::use_shared_tree_search)
|
|
695
|
+
.define_method("use_shared_tree_search=", &SatParameters::set_use_shared_tree_search)
|
|
696
|
+
.define_method("use_strong_propagation_in_disjunctive", &SatParameters::use_strong_propagation_in_disjunctive)
|
|
697
|
+
.define_method("use_strong_propagation_in_disjunctive=", &SatParameters::set_use_strong_propagation_in_disjunctive)
|
|
698
|
+
.define_method("use_symmetry_in_lp", &SatParameters::use_symmetry_in_lp)
|
|
699
|
+
.define_method("use_symmetry_in_lp=", &SatParameters::set_use_symmetry_in_lp)
|
|
700
|
+
.define_method("use_timetable_edge_finding_in_cumulative", &SatParameters::use_timetable_edge_finding_in_cumulative)
|
|
701
|
+
.define_method("use_timetable_edge_finding_in_cumulative=", &SatParameters::set_use_timetable_edge_finding_in_cumulative)
|
|
702
|
+
.define_method("use_timetabling_in_no_overlap_2d", &SatParameters::use_timetabling_in_no_overlap_2d)
|
|
703
|
+
.define_method("use_timetabling_in_no_overlap_2d=", &SatParameters::set_use_timetabling_in_no_overlap_2d)
|
|
704
|
+
.define_method("use_try_edge_reasoning_in_no_overlap_2d", &SatParameters::use_try_edge_reasoning_in_no_overlap_2d)
|
|
705
|
+
.define_method("use_try_edge_reasoning_in_no_overlap_2d=", &SatParameters::set_use_try_edge_reasoning_in_no_overlap_2d)
|
|
706
|
+
.define_method("variable_activity_decay", &SatParameters::variable_activity_decay)
|
|
707
|
+
.define_method("variable_activity_decay=", &SatParameters::set_variable_activity_decay)
|
|
708
|
+
.define_method("variables_shaving_level", &SatParameters::variables_shaving_level)
|
|
709
|
+
.define_method("variables_shaving_level=", &SatParameters::set_variables_shaving_level)
|
|
710
|
+
.define_method("violation_ls_compound_move_probability", &SatParameters::violation_ls_compound_move_probability)
|
|
711
|
+
.define_method("violation_ls_compound_move_probability=", &SatParameters::set_violation_ls_compound_move_probability)
|
|
712
|
+
.define_method("violation_ls_perturbation_period", &SatParameters::violation_ls_perturbation_period)
|
|
713
|
+
.define_method("violation_ls_perturbation_period=", &SatParameters::set_violation_ls_perturbation_period);
|
|
165
714
|
|
|
166
715
|
Rice::define_class_under<CpModelBuilder>(m, "CpModel")
|
|
167
716
|
.define_constructor(Rice::Constructor<CpModelBuilder>())
|
|
@@ -193,32 +742,32 @@ void init_constraint(Rice::Module& m) {
|
|
|
193
742
|
})
|
|
194
743
|
.define_method(
|
|
195
744
|
"new_interval_var",
|
|
196
|
-
[](CpModelBuilder& self, IntVar start, IntVar size, IntVar end, const std::string& name) {
|
|
745
|
+
[](CpModelBuilder& self, const IntVar& start, const IntVar& size, const IntVar& end, const std::string& name) {
|
|
197
746
|
return self.NewIntervalVar(start, size, end).WithName(name);
|
|
198
747
|
})
|
|
199
748
|
.define_method(
|
|
200
749
|
"new_optional_interval_var",
|
|
201
|
-
[](CpModelBuilder& self, IntVar start, IntVar size, IntVar end, BoolVar presence, const std::string& name) {
|
|
750
|
+
[](CpModelBuilder& self, const IntVar& start, const IntVar& size, const IntVar& end, const BoolVar& presence, const std::string& name) {
|
|
202
751
|
return self.NewOptionalIntervalVar(start, size, end, presence).WithName(name);
|
|
203
752
|
})
|
|
204
753
|
.define_method(
|
|
205
754
|
"add_bool_or",
|
|
206
|
-
[](CpModelBuilder& self, std::vector<BoolVar
|
|
755
|
+
[](CpModelBuilder& self, const std::vector<BoolVar>& literals) {
|
|
207
756
|
return self.AddBoolOr(literals);
|
|
208
757
|
})
|
|
209
758
|
.define_method(
|
|
210
759
|
"add_bool_and",
|
|
211
|
-
[](CpModelBuilder& self, std::vector<BoolVar
|
|
760
|
+
[](CpModelBuilder& self, const std::vector<BoolVar>& literals) {
|
|
212
761
|
return self.AddBoolAnd(literals);
|
|
213
762
|
})
|
|
214
763
|
.define_method(
|
|
215
764
|
"add_bool_xor",
|
|
216
|
-
[](CpModelBuilder& self, std::vector<BoolVar
|
|
765
|
+
[](CpModelBuilder& self, const std::vector<BoolVar>& literals) {
|
|
217
766
|
return self.AddBoolXor(literals);
|
|
218
767
|
})
|
|
219
768
|
.define_method(
|
|
220
769
|
"add_implication",
|
|
221
|
-
[](CpModelBuilder& self, BoolVar a, BoolVar b) {
|
|
770
|
+
[](CpModelBuilder& self, const BoolVar& a, const BoolVar& b) {
|
|
222
771
|
return self.AddImplication(a, b);
|
|
223
772
|
})
|
|
224
773
|
.define_method(
|
|
@@ -253,7 +802,7 @@ void init_constraint(Rice::Module& m) {
|
|
|
253
802
|
})
|
|
254
803
|
.define_method(
|
|
255
804
|
"add_linear_expression_in_domain",
|
|
256
|
-
[](CpModelBuilder& self, LinearExpr expr, Domain domain) {
|
|
805
|
+
[](CpModelBuilder& self, LinearExpr expr, const Domain& domain) {
|
|
257
806
|
return self.AddLinearConstraint(expr, domain);
|
|
258
807
|
})
|
|
259
808
|
.define_method(
|
|
@@ -263,7 +812,7 @@ void init_constraint(Rice::Module& m) {
|
|
|
263
812
|
})
|
|
264
813
|
.define_method(
|
|
265
814
|
"add_all_different",
|
|
266
|
-
[](CpModelBuilder& self, std::vector<IntVar
|
|
815
|
+
[](CpModelBuilder& self, const std::vector<IntVar>& vars) {
|
|
267
816
|
return self.AddAllDifferent(vars);
|
|
268
817
|
})
|
|
269
818
|
.define_method(
|
|
@@ -278,7 +827,7 @@ void init_constraint(Rice::Module& m) {
|
|
|
278
827
|
})
|
|
279
828
|
.define_method(
|
|
280
829
|
"add_inverse_constraint",
|
|
281
|
-
[](CpModelBuilder& self, std::vector<IntVar
|
|
830
|
+
[](CpModelBuilder& self, const std::vector<IntVar>& variables, const std::vector<IntVar>& inverse_variables) {
|
|
282
831
|
return self.AddInverseConstraint(variables, inverse_variables);
|
|
283
832
|
})
|
|
284
833
|
.define_method(
|
|
@@ -313,7 +862,7 @@ void init_constraint(Rice::Module& m) {
|
|
|
313
862
|
})
|
|
314
863
|
.define_method(
|
|
315
864
|
"add_no_overlap",
|
|
316
|
-
[](CpModelBuilder& self, std::vector<IntervalVar
|
|
865
|
+
[](CpModelBuilder& self, const std::vector<IntervalVar>& vars) {
|
|
317
866
|
return self.AddNoOverlap(vars);
|
|
318
867
|
})
|
|
319
868
|
.define_method(
|
|
@@ -348,12 +897,12 @@ void init_constraint(Rice::Module& m) {
|
|
|
348
897
|
})
|
|
349
898
|
.define_method(
|
|
350
899
|
"add_assumption",
|
|
351
|
-
[](CpModelBuilder& self, BoolVar lit) {
|
|
900
|
+
[](CpModelBuilder& self, const BoolVar& lit) {
|
|
352
901
|
self.AddAssumption(lit);
|
|
353
902
|
})
|
|
354
903
|
.define_method(
|
|
355
904
|
"add_assumptions",
|
|
356
|
-
[](CpModelBuilder& self, std::vector<BoolVar
|
|
905
|
+
[](CpModelBuilder& self, const std::vector<BoolVar>& literals) {
|
|
357
906
|
self.AddAssumptions(literals);
|
|
358
907
|
})
|
|
359
908
|
.define_method(
|
|
@@ -370,7 +919,9 @@ void init_constraint(Rice::Module& m) {
|
|
|
370
919
|
"to_s",
|
|
371
920
|
[](CpModelBuilder& self) {
|
|
372
921
|
std::string proto_string;
|
|
373
|
-
google::protobuf::TextFormat::PrintToString(self.Proto(), &proto_string)
|
|
922
|
+
if (!google::protobuf::TextFormat::PrintToString(self.Proto(), &proto_string)) {
|
|
923
|
+
throw Rice::Exception(rb_eRuntimeError, "PrintToString failed");
|
|
924
|
+
}
|
|
374
925
|
return proto_string;
|
|
375
926
|
});
|
|
376
927
|
|
|
@@ -402,7 +953,7 @@ void init_constraint(Rice::Module& m) {
|
|
|
402
953
|
} else if (status == CpSolverStatus::UNKNOWN) {
|
|
403
954
|
return Symbol("unknown");
|
|
404
955
|
} else {
|
|
405
|
-
throw std::runtime_error
|
|
956
|
+
throw std::runtime_error{"Unknown solver status"};
|
|
406
957
|
}
|
|
407
958
|
})
|
|
408
959
|
.define_method(
|
|
@@ -426,34 +977,105 @@ void init_constraint(Rice::Module& m) {
|
|
|
426
977
|
"_solve",
|
|
427
978
|
[](Object self, CpModelBuilder& model, SatParameters& parameters, Object callback) {
|
|
428
979
|
Model m;
|
|
980
|
+
m.Add(NewSatParameters(parameters));
|
|
429
981
|
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
982
|
+
std::atomic<bool> done{false};
|
|
983
|
+
Channel<CpSolverResponse> channel;
|
|
984
|
+
Rice::Object ruby_thread;
|
|
985
|
+
std::optional<Rice::Exception> exception;
|
|
433
986
|
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
987
|
+
auto with_gvl = [](std::function<void()> f) {
|
|
988
|
+
auto ruby_wrapper = [](void* arg) -> void* {
|
|
989
|
+
(*static_cast<decltype(f)*>(arg))();
|
|
990
|
+
return nullptr;
|
|
991
|
+
};
|
|
992
|
+
rb_thread_call_with_gvl(ruby_wrapper, &f);
|
|
993
|
+
};
|
|
994
|
+
|
|
995
|
+
auto ruby_observer = [&]() {
|
|
996
|
+
return Rice::detail::no_gvl([&]() {
|
|
997
|
+
while (true) {
|
|
998
|
+
if (done.load() && channel.empty()) {
|
|
999
|
+
break;
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
while (true) {
|
|
1003
|
+
std::optional<CpSolverResponse> response = channel.recv_timeout(std::chrono::milliseconds(10));
|
|
1004
|
+
if (!response) {
|
|
1005
|
+
break;
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
bool stop = false;
|
|
1009
|
+
with_gvl([&]() {
|
|
1010
|
+
try {
|
|
1011
|
+
try {
|
|
1012
|
+
callback.call("response=", response.value());
|
|
1013
|
+
callback.call("on_solution_callback");
|
|
1014
|
+
stop = static_cast<bool>(callback.attr_get("@stopped"));
|
|
1015
|
+
} catch (const Rice::Exception& e) {
|
|
1016
|
+
exception = e;
|
|
1017
|
+
stop = true;
|
|
1018
|
+
}
|
|
1019
|
+
callback.call("response=", Object(Qnil));
|
|
1020
|
+
} catch (const Rice::Exception& e) {
|
|
1021
|
+
exception = e;
|
|
1022
|
+
stop = true;
|
|
1023
|
+
}
|
|
1024
|
+
});
|
|
1025
|
+
|
|
1026
|
+
if (stop) {
|
|
1027
|
+
StopSearch(&m);
|
|
1028
|
+
return Qnil;
|
|
1029
|
+
}
|
|
438
1030
|
}
|
|
439
1031
|
|
|
440
|
-
|
|
441
|
-
|
|
1032
|
+
with_gvl([]() {
|
|
1033
|
+
Rice::detail::protect(rb_thread_schedule);
|
|
1034
|
+
});
|
|
1035
|
+
}
|
|
1036
|
+
return Qnil;
|
|
1037
|
+
});
|
|
1038
|
+
};
|
|
1039
|
+
|
|
1040
|
+
auto ruby_wrapper = [](void* arg) {
|
|
1041
|
+
return (*static_cast<decltype(ruby_observer)*>(arg))();
|
|
1042
|
+
};
|
|
1043
|
+
|
|
1044
|
+
if (!callback.is_nil()) {
|
|
1045
|
+
ruby_thread = Rice::detail::protect([&]() {
|
|
1046
|
+
return rb_thread_create(ruby_wrapper, &ruby_observer);
|
|
1047
|
+
});
|
|
1048
|
+
|
|
1049
|
+
m.Add(NewFeasibleSolutionObserver(
|
|
1050
|
+
[&](const CpSolverResponse& response) {
|
|
1051
|
+
channel.send(response);
|
|
442
1052
|
})
|
|
443
1053
|
);
|
|
444
1054
|
}
|
|
445
1055
|
|
|
446
|
-
|
|
447
|
-
|
|
1056
|
+
CpSolverResponse response = Rice::detail::no_gvl([&]() {
|
|
1057
|
+
return SolveCpModel(model.Build(), &m);
|
|
1058
|
+
});
|
|
1059
|
+
|
|
1060
|
+
if (!callback.is_nil()) {
|
|
1061
|
+
done = true;
|
|
1062
|
+
ruby_thread.call("value");
|
|
1063
|
+
|
|
1064
|
+
if (exception.has_value()) {
|
|
1065
|
+
throw exception.value();
|
|
1066
|
+
}
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
return response;
|
|
448
1070
|
})
|
|
449
1071
|
.define_method(
|
|
450
1072
|
"_solution_integer_value",
|
|
451
|
-
[](Object self, const CpSolverResponse& response, IntVar x) {
|
|
1073
|
+
[](Object self, const CpSolverResponse& response, const IntVar& x) {
|
|
452
1074
|
return SolutionIntegerValue(response, x);
|
|
453
1075
|
})
|
|
454
1076
|
.define_method(
|
|
455
1077
|
"_solution_boolean_value",
|
|
456
|
-
[](Object self, const CpSolverResponse& response, BoolVar x) {
|
|
1078
|
+
[](Object self, const CpSolverResponse& response, const BoolVar& x) {
|
|
457
1079
|
return SolutionBooleanValue(response, x);
|
|
458
1080
|
});
|
|
459
1081
|
}
|