or-tools 0.18.0 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c2d774f3459e19c0fc640d1c60c05cb896edec872fafb765b1162e08c79e921b
4
- data.tar.gz: 40199c012d102d861fe405d7e93e51bf5232bcb402fa563ee63de6fe00db5ec8
3
+ metadata.gz: b4b9e112aef49d6377cfb072df599cc64adb317169212e9811ba601946cda981
4
+ data.tar.gz: 437a96678ed5b1d0b83ae2a8535a9d7b2165ebb28f1b8bf3bac62e3495e65ec4
5
5
  SHA512:
6
- metadata.gz: ac775e43751213a80c29ac82f38487e287891243d96b26e622474c034c44683135e412b5caa86e47232c36b32f1bfafec4b7152cab9fc652c1384a399e002072
7
- data.tar.gz: f3a47294fd32b8464e33e566b277936c9ed687b79dfd3fece814cd9d5247252395131ddaf79b05cc2db8c8a76ad1e19610e9a151d8aaa5ea72d5d8cbd76135bb
6
+ metadata.gz: 6cd5ae717f0d0a9f01b3d44e52d311b0b93c82369c48a9dee7b71ca83dbbd094f48b29033d02ec319f4e69233a4366b9b6bd1025670a08b58514d1d068a0b261
7
+ data.tar.gz: 4806b7bff7d478eda84bb8b5169f683e7df7c08dc0d146d5b0a7bddf52a1c8dd164f4ee0338a5e01841b7057303c20ecb82cb8d4c01e309ea7ebc3478ef305c5
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## 0.18.1 (2026-10-02)
2
+
3
+ - Added support for breaks for routing
4
+ - Added support for more constraints for routing
5
+ - Added more methods to `ConstraintSolverParameters`
6
+ - Added more methods to `RoutingModelParameters`
7
+ - Added more methods to `RoutingSearchParameters`
8
+ - Added more methods to `SatParameters`
9
+
1
10
  ## 0.18.0 (2026-07-06)
2
11
 
3
12
  - Added support for releasing GVL
@@ -29,6 +29,7 @@ using operations_research::sat::TableConstraint;
29
29
 
30
30
  using Rice::Array;
31
31
  using Rice::Class;
32
+ using Rice::Hash;
32
33
  using Rice::Object;
33
34
  using Rice::String;
34
35
  using Rice::Symbol;
@@ -54,8 +55,8 @@ namespace Rice::detail {
54
55
  LinearExpr convert(VALUE v) {
55
56
  LinearExpr expr;
56
57
 
57
- Rice::Object utils = Rice::define_module("ORTools").const_get("Utils");
58
- Rice::Hash coeffs = utils.call("index_expression", Object(v));
58
+ Object utils = Rice::define_module("ORTools").const_get("Utils");
59
+ Hash coeffs = utils.call("index_expression", Object(v));
59
60
 
60
61
  for (const auto& entry : coeffs) {
61
62
  Object var = entry.key;
@@ -136,18 +137,580 @@ void init_constraint(Rice::Module& m) {
136
137
 
137
138
  Rice::define_class_under<SatParameters>(m, "SatParameters")
138
139
  .define_constructor(Rice::Constructor<SatParameters>())
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)
139
208
  .define_method("cp_model_presolve", &SatParameters::cp_model_presolve)
140
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)
141
252
  .define_method("enumerate_all_solutions", &SatParameters::enumerate_all_solutions)
142
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)
143
346
  .define_method("linearization_level", &SatParameters::linearization_level)
144
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)
145
410
  .define_method("max_time_in_seconds", &SatParameters::max_time_in_seconds)
146
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)
147
466
  .define_method("num_workers", &SatParameters::num_workers)
148
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)
149
528
  .define_method("random_seed", &SatParameters::random_seed)
150
- .define_method("random_seed=", &SatParameters::set_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);
151
714
 
152
715
  Rice::define_class_under<CpModelBuilder>(m, "CpModel")
153
716
  .define_constructor(Rice::Constructor<CpModelBuilder>())
@@ -10,6 +10,7 @@ using operations_research::Assignment;
10
10
  using operations_research::ConstraintSolverParameters;
11
11
  using operations_research::DefaultRoutingSearchParameters;
12
12
  using operations_research::FirstSolutionStrategy;
13
+ using operations_research::IntervalVarElement;
13
14
  using operations_research::LocalSearchMetaheuristic;
14
15
  using operations_research::RoutingDimension;
15
16
  using operations_research::RoutingDisjunctionIndex;
@@ -22,6 +23,7 @@ using operations_research::RoutingSearchStatus;
22
23
 
23
24
  using Rice::Array;
24
25
  using Rice::Class;
26
+ using Rice::Hash;
25
27
  using Rice::Module;
26
28
  using Rice::Object;
27
29
  using Rice::String;
@@ -96,13 +98,111 @@ namespace Rice::detail {
96
98
  };
97
99
  } // namespace Rice::detail
98
100
 
101
+ int64_t int64_strict(VALUE v) {
102
+ if (!Object(v).is_a(rb_cInteger)) {
103
+ throw std::invalid_argument{"Coefficient must be integer"};
104
+ }
105
+ return Rice::detail::From_Ruby<int64_t>().convert(v);
106
+ }
107
+
108
+ operations_research::IntExpr* int_expr(operations_research::Solver& solver, Object o) {
109
+ Object utils = Rice::define_module("ORTools").const_get("Utils");
110
+ Hash rb_coeffs = utils.call("index_expression", o);
111
+
112
+ std::vector<operations_research::IntVar*> vars;
113
+ std::vector<int64_t> coeffs;
114
+ int64_t constant = 0;
115
+
116
+ for (const auto& entry : rb_coeffs) {
117
+ auto coeff = int64_strict(entry.value.value());
118
+ if (Object(entry.key).is_nil()) {
119
+ constant = coeff;
120
+ } else {
121
+ vars.push_back(Rice::detail::From_Ruby<operations_research::IntVar*>().convert(entry.key.value()));
122
+ coeffs.push_back(coeff);
123
+ }
124
+ }
125
+
126
+ operations_research::IntExpr* expr = solver.MakeScalProd(vars, coeffs);
127
+ if (constant != 0) {
128
+ expr = solver.MakeSum(expr, constant);
129
+ }
130
+ return expr;
131
+ }
132
+
99
133
  void init_routing(Rice::Module& m) {
100
134
  auto rb_cRoutingSearchParameters = Rice::define_class_under<RoutingSearchParameters>(m, "RoutingSearchParameters");
101
135
  auto rb_cIntVar = Rice::define_class_under<operations_research::IntVar>(m, "RoutingIntVar");
102
136
 
103
137
  m.define_singleton_function("default_routing_search_parameters", &DefaultRoutingSearchParameters);
104
138
 
139
+ Rice::define_class_under<RoutingSearchParameters::ImprovementSearchLimitParameters>(rb_cRoutingSearchParameters, "ImprovementSearchLimitParameters")
140
+ .define_method("improvement_rate_coefficient", &RoutingSearchParameters::ImprovementSearchLimitParameters::improvement_rate_coefficient)
141
+ .define_method("improvement_rate_coefficient=", &RoutingSearchParameters::ImprovementSearchLimitParameters::set_improvement_rate_coefficient)
142
+ .define_method("improvement_rate_solutions_distance", &RoutingSearchParameters::ImprovementSearchLimitParameters::improvement_rate_solutions_distance)
143
+ .define_method("improvement_rate_solutions_distance=", &RoutingSearchParameters::ImprovementSearchLimitParameters::set_improvement_rate_solutions_distance);
144
+
105
145
  rb_cRoutingSearchParameters
146
+ .define_method("christofides_use_minimum_matching", &RoutingSearchParameters::christofides_use_minimum_matching)
147
+ .define_method("christofides_use_minimum_matching=", &RoutingSearchParameters::set_christofides_use_minimum_matching)
148
+ .define_method("fallback_to_cp_sat_size_threshold", &RoutingSearchParameters::fallback_to_cp_sat_size_threshold)
149
+ .define_method("fallback_to_cp_sat_size_threshold=", &RoutingSearchParameters::set_fallback_to_cp_sat_size_threshold)
150
+ .define_method("first_solution_optimization_period", &RoutingSearchParameters::first_solution_optimization_period)
151
+ .define_method("first_solution_optimization_period=", &RoutingSearchParameters::set_first_solution_optimization_period)
152
+ .define_method("guided_local_search_lambda_coefficient", &RoutingSearchParameters::guided_local_search_lambda_coefficient)
153
+ .define_method("guided_local_search_lambda_coefficient=", &RoutingSearchParameters::set_guided_local_search_lambda_coefficient)
154
+ .define_method("guided_local_search_penalize_with_vehicle_classes", &RoutingSearchParameters::guided_local_search_penalize_with_vehicle_classes)
155
+ .define_method("guided_local_search_penalize_with_vehicle_classes=", &RoutingSearchParameters::set_guided_local_search_penalize_with_vehicle_classes)
156
+ .define_method("guided_local_search_reset_penalties_on_new_best_solution", &RoutingSearchParameters::guided_local_search_reset_penalties_on_new_best_solution)
157
+ .define_method("guided_local_search_reset_penalties_on_new_best_solution=", &RoutingSearchParameters::set_guided_local_search_reset_penalties_on_new_best_solution)
158
+ .define_method("heuristic_close_nodes_lns_num_nodes", &RoutingSearchParameters::heuristic_close_nodes_lns_num_nodes)
159
+ .define_method("heuristic_close_nodes_lns_num_nodes=", &RoutingSearchParameters::set_heuristic_close_nodes_lns_num_nodes)
160
+ .define_method("heuristic_expensive_chain_lns_num_arcs_to_consider", &RoutingSearchParameters::heuristic_expensive_chain_lns_num_arcs_to_consider)
161
+ .define_method("heuristic_expensive_chain_lns_num_arcs_to_consider=", &RoutingSearchParameters::set_heuristic_expensive_chain_lns_num_arcs_to_consider)
162
+ .define_method("log_cost_offset", &RoutingSearchParameters::log_cost_offset)
163
+ .define_method("log_cost_offset=", &RoutingSearchParameters::set_log_cost_offset)
164
+ .define_method("log_cost_scaling_factor", &RoutingSearchParameters::log_cost_scaling_factor)
165
+ .define_method("log_cost_scaling_factor=", &RoutingSearchParameters::set_log_cost_scaling_factor)
166
+ .define_method("log_search", &RoutingSearchParameters::log_search)
167
+ .define_method("log_search=", &RoutingSearchParameters::set_log_search)
168
+ .define_method("log_tag", &RoutingSearchParameters::log_tag)
169
+ // .define_method("log_tag=", &RoutingSearchParameters::set_log_tag)
170
+ .define_method("ls_operator_min_neighbors", &RoutingSearchParameters::ls_operator_min_neighbors)
171
+ .define_method("ls_operator_min_neighbors=", &RoutingSearchParameters::set_ls_operator_min_neighbors)
172
+ .define_method("ls_operator_neighbors_ratio", &RoutingSearchParameters::ls_operator_neighbors_ratio)
173
+ .define_method("ls_operator_neighbors_ratio=", &RoutingSearchParameters::set_ls_operator_neighbors_ratio)
174
+ .define_method("max_swap_active_chain_size", &RoutingSearchParameters::max_swap_active_chain_size)
175
+ .define_method("max_swap_active_chain_size=", &RoutingSearchParameters::set_max_swap_active_chain_size)
176
+ .define_method("multi_armed_bandit_compound_operator_exploration_coefficient", &RoutingSearchParameters::multi_armed_bandit_compound_operator_exploration_coefficient)
177
+ .define_method("multi_armed_bandit_compound_operator_exploration_coefficient=", &RoutingSearchParameters::set_multi_armed_bandit_compound_operator_exploration_coefficient)
178
+ .define_method("multi_armed_bandit_compound_operator_memory_coefficient", &RoutingSearchParameters::multi_armed_bandit_compound_operator_memory_coefficient)
179
+ .define_method("multi_armed_bandit_compound_operator_memory_coefficient=", &RoutingSearchParameters::set_multi_armed_bandit_compound_operator_memory_coefficient)
180
+ .define_method("num_max_local_optima_before_metaheuristic_switch", &RoutingSearchParameters::num_max_local_optima_before_metaheuristic_switch)
181
+ .define_method("num_max_local_optima_before_metaheuristic_switch=", &RoutingSearchParameters::set_num_max_local_optima_before_metaheuristic_switch)
182
+ .define_method("number_of_solutions_to_collect", &RoutingSearchParameters::number_of_solutions_to_collect)
183
+ .define_method("number_of_solutions_to_collect=", &RoutingSearchParameters::set_number_of_solutions_to_collect)
184
+ .define_method("optimization_step", &RoutingSearchParameters::optimization_step)
185
+ .define_method("optimization_step=", &RoutingSearchParameters::set_optimization_step)
186
+ .define_method("relocate_expensive_chain_num_arcs_to_consider", &RoutingSearchParameters::relocate_expensive_chain_num_arcs_to_consider)
187
+ .define_method("relocate_expensive_chain_num_arcs_to_consider=", &RoutingSearchParameters::set_relocate_expensive_chain_num_arcs_to_consider)
188
+ .define_method("report_intermediate_cp_sat_solutions", &RoutingSearchParameters::report_intermediate_cp_sat_solutions)
189
+ .define_method("report_intermediate_cp_sat_solutions=", &RoutingSearchParameters::set_report_intermediate_cp_sat_solutions)
190
+ .define_method("secondary_ls_time_limit_ratio", &RoutingSearchParameters::secondary_ls_time_limit_ratio)
191
+ .define_method("secondary_ls_time_limit_ratio=", &RoutingSearchParameters::set_secondary_ls_time_limit_ratio)
192
+ .define_method("solution_limit", &RoutingSearchParameters::solution_limit)
193
+ .define_method("solution_limit=", &RoutingSearchParameters::set_solution_limit)
194
+ .define_method("use_depth_first_search", &RoutingSearchParameters::use_depth_first_search)
195
+ .define_method("use_depth_first_search=", &RoutingSearchParameters::set_use_depth_first_search)
196
+ .define_method("use_full_propagation", &RoutingSearchParameters::use_full_propagation)
197
+ .define_method("use_full_propagation=", &RoutingSearchParameters::set_use_full_propagation)
198
+ .define_method("use_guided_local_search_penalties_in_local_search_operators", &RoutingSearchParameters::use_guided_local_search_penalties_in_local_search_operators)
199
+ .define_method("use_guided_local_search_penalties_in_local_search_operators=", &RoutingSearchParameters::set_use_guided_local_search_penalties_in_local_search_operators)
200
+ .define_method("use_iterated_local_search", &RoutingSearchParameters::use_iterated_local_search)
201
+ .define_method("use_iterated_local_search=", &RoutingSearchParameters::set_use_iterated_local_search)
202
+ .define_method("use_multi_armed_bandit_concatenate_operators", &RoutingSearchParameters::use_multi_armed_bandit_concatenate_operators)
203
+ .define_method("use_multi_armed_bandit_concatenate_operators=", &RoutingSearchParameters::set_use_multi_armed_bandit_concatenate_operators)
204
+ .define_method("use_unfiltered_first_solution_strategy", &RoutingSearchParameters::use_unfiltered_first_solution_strategy)
205
+ .define_method("use_unfiltered_first_solution_strategy=", &RoutingSearchParameters::set_use_unfiltered_first_solution_strategy)
106
206
  .define_method(
107
207
  "first_solution_strategy=",
108
208
  [](RoutingSearchParameters& self, Object value) {
@@ -163,16 +263,7 @@ void init_routing(Rice::Module& m) {
163
263
 
164
264
  return self.set_local_search_metaheuristic(v);
165
265
  })
166
- .define_method(
167
- "log_search=",
168
- [](RoutingSearchParameters& self, bool value) {
169
- self.set_log_search(value);
170
- })
171
- .define_method(
172
- "solution_limit=",
173
- [](RoutingSearchParameters& self, int64_t value) {
174
- self.set_solution_limit(value);
175
- })
266
+ .define_method("improvement_limit_parameters", &RoutingSearchParameters::mutable_improvement_limit_parameters)
176
267
  .define_method(
177
268
  "time_limit=",
178
269
  [](RoutingSearchParameters& self, int64_t value) {
@@ -198,14 +289,32 @@ void init_routing(Rice::Module& m) {
198
289
  .define_method("index_to_node", &RoutingIndexManager::IndexToNode)
199
290
  .define_method("node_to_index", &RoutingIndexManager::NodeToIndex);
200
291
 
292
+
293
+ Rice::define_class_under<IntervalVarElement>(m, "IntervalVarElement")
294
+ .define_method("var", &IntervalVarElement::Var)
295
+ .define_method("start_value", &IntervalVarElement::StartValue)
296
+ .define_method("duration_value", &IntervalVarElement::DurationValue)
297
+ .define_method("end_value", &IntervalVarElement::EndValue)
298
+ .define_method("performed_value", &IntervalVarElement::PerformedValue);
299
+
300
+ Rice::define_class_under<Assignment::IntervalContainer>(m, "IntervalContainer")
301
+ .define_method("size", &Assignment::IntervalContainer::Size)
302
+ .define_method(
303
+ "element",
304
+ [](Assignment::IntervalContainer& self, int index) {
305
+ return self.Element(index);
306
+ });
307
+
201
308
  Rice::define_class_under<Assignment>(m, "Assignment")
202
309
  .define_method("objective_value", &Assignment::ObjectiveValue)
203
310
  .define_method("value", &Assignment::Value)
204
311
  .define_method("min", &Assignment::Min)
205
- .define_method("max", &Assignment::Max);
312
+ .define_method("max", &Assignment::Max)
313
+ .define_method("interval_var_container", &Assignment::IntervalVarContainer);
206
314
 
207
315
  // not to be confused with operations_research::sat::IntVar
208
316
  rb_cIntVar
317
+ .define_method("name", &operations_research::IntVar::name)
209
318
  .define_method("var?", &operations_research::IntVar::IsVar)
210
319
  .define_method("value", &operations_research::IntVar::Value)
211
320
  .define_method("remove_value", &operations_research::IntVar::RemoveValue)
@@ -223,6 +332,7 @@ void init_routing(Rice::Module& m) {
223
332
  });
224
333
 
225
334
  Rice::define_class_under<operations_research::IntervalVar>(m, "IntervalVar")
335
+ .define_method("name", &operations_research::IntervalVar::name)
226
336
  .define_method("start_min", &operations_research::IntervalVar::StartMin)
227
337
  .define_method("start_max", &operations_research::IntervalVar::StartMax)
228
338
  .define_method("set_start_min", &operations_research::IntervalVar::SetStartMin)
@@ -250,6 +360,8 @@ void init_routing(Rice::Module& m) {
250
360
  .define_method("set_global_span_cost_coefficient", &RoutingDimension::SetGlobalSpanCostCoefficient)
251
361
  // alias
252
362
  .define_method("global_span_cost_coefficient=", &RoutingDimension::SetGlobalSpanCostCoefficient)
363
+ .define_method("set_slack_cost_coefficient_for_vehicle", &RoutingDimension::SetSlackCostCoefficientForVehicle)
364
+ .define_method("set_slack_cost_coefficient_for_all_vehicles", &RoutingDimension::SetSlackCostCoefficientForAllVehicles)
253
365
  .define_method("set_cumul_var_soft_upper_bound", &RoutingDimension::SetCumulVarSoftUpperBound)
254
366
  .define_method("cumul_var_soft_upper_bound?", &RoutingDimension::HasCumulVarSoftUpperBound)
255
367
  .define_method("cumul_var_soft_upper_bound", &RoutingDimension::GetCumulVarSoftUpperBound)
@@ -257,7 +369,12 @@ void init_routing(Rice::Module& m) {
257
369
  .define_method("set_cumul_var_soft_lower_bound", &RoutingDimension::SetCumulVarSoftLowerBound)
258
370
  .define_method("cumul_var_soft_lower_bound?", &RoutingDimension::HasCumulVarSoftLowerBound)
259
371
  .define_method("cumul_var_soft_lower_bound", &RoutingDimension::GetCumulVarSoftLowerBound)
260
- .define_method("cumul_var_soft_lower_bound_coefficient", &RoutingDimension::GetCumulVarSoftLowerBoundCoefficient);
372
+ .define_method("cumul_var_soft_lower_bound_coefficient", &RoutingDimension::GetCumulVarSoftLowerBoundCoefficient)
373
+ .define_method(
374
+ "set_break_intervals_of_vehicle",
375
+ [](RoutingDimension& self, std::vector<operations_research::IntervalVar*> breaks, int vehicle, std::vector<int64_t> node_visit_transits) {
376
+ self.SetBreakIntervalsOfVehicle(breaks, vehicle, node_visit_transits);
377
+ });
261
378
 
262
379
  Rice::define_class_under<RoutingDisjunctionIndex>(m, "RoutingDisjunctionIndex");
263
380
 
@@ -271,11 +388,20 @@ void init_routing(Rice::Module& m) {
271
388
  [](operations_research::Solver& self, Object o) {
272
389
  operations_research::Constraint* constraint;
273
390
  if (o.respond_to("left")) {
274
- operations_research::IntExpr* left(Rice::detail::From_Ruby<operations_research::IntVar*>().convert(o.call("left")));
275
- operations_research::IntExpr* right(Rice::detail::From_Ruby<operations_research::IntVar*>().convert(o.call("right")));
391
+ auto left = int_expr(self, o.call("left"));
392
+ auto right = int_expr(self, o.call("right"));
276
393
  std::string op = o.call("op").to_s().str();
394
+
277
395
  if (op == "==") {
278
396
  constraint = self.MakeEquality(left, right);
397
+ } else if (op == "!=") {
398
+ constraint = self.MakeNonEquality(left, right);
399
+ } else if (op == ">") {
400
+ constraint = self.MakeGreater(left, right);
401
+ } else if (op == ">=") {
402
+ constraint = self.MakeGreaterOrEqual(left, right);
403
+ } else if (op == "<") {
404
+ constraint = self.MakeLess(left, right);
279
405
  } else if (op == "<=") {
280
406
  constraint = self.MakeLessOrEqual(left, right);
281
407
  } else {
@@ -291,6 +417,11 @@ void init_routing(Rice::Module& m) {
291
417
  [](operations_research::Solver& self, operations_research::IntVar& start_variable, int64_t duration, const std::string& name) {
292
418
  return self.MakeFixedDurationIntervalVar(&start_variable, duration, name);
293
419
  })
420
+ .define_method(
421
+ "fixed_duration_interval_var",
422
+ [](operations_research::Solver& self, int64_t start_min, int64_t start_max, int64_t duration, bool optional, const std::string& name) {
423
+ return self.MakeFixedDurationIntervalVar(start_min, start_max, duration, optional, name);
424
+ })
294
425
  .define_method(
295
426
  "cumulative",
296
427
  [](operations_research::Solver& self, Array rb_intervals, const std::vector<int64_t>& demands, int64_t capacity, const std::string& name) {
@@ -302,18 +433,64 @@ void init_routing(Rice::Module& m) {
302
433
  });
303
434
 
304
435
  Rice::define_class_under<ConstraintSolverParameters>(m, "ConstraintSolverParameters")
305
- .define_method(
306
- "trace_propagation=",
307
- [](ConstraintSolverParameters& self, bool value) {
308
- self.set_trace_propagation(value);
309
- })
310
- .define_method(
311
- "trace_search=",
312
- [](ConstraintSolverParameters& self, bool value) {
313
- self.set_trace_search(value);
314
- });
436
+ .define_method("array_split_size", &ConstraintSolverParameters::array_split_size)
437
+ .define_method("array_split_size=", &ConstraintSolverParameters::set_array_split_size)
438
+ .define_method("check_solution_period", &ConstraintSolverParameters::check_solution_period)
439
+ .define_method("check_solution_period=", &ConstraintSolverParameters::set_check_solution_period)
440
+ .define_method("diffn_use_cumulative", &ConstraintSolverParameters::diffn_use_cumulative)
441
+ .define_method("diffn_use_cumulative=", &ConstraintSolverParameters::set_diffn_use_cumulative)
442
+ .define_method("disable_solve", &ConstraintSolverParameters::disable_solve)
443
+ .define_method("disable_solve=", &ConstraintSolverParameters::set_disable_solve)
444
+ .define_method("max_edge_finder_size", &ConstraintSolverParameters::max_edge_finder_size)
445
+ .define_method("max_edge_finder_size=", &ConstraintSolverParameters::set_max_edge_finder_size)
446
+ .define_method("name_all_variables", &ConstraintSolverParameters::name_all_variables)
447
+ .define_method("name_all_variables=", &ConstraintSolverParameters::set_name_all_variables)
448
+ .define_method("name_cast_variables", &ConstraintSolverParameters::name_cast_variables)
449
+ .define_method("name_cast_variables=", &ConstraintSolverParameters::set_name_cast_variables)
450
+ .define_method("print_added_constraints", &ConstraintSolverParameters::print_added_constraints)
451
+ .define_method("print_added_constraints=", &ConstraintSolverParameters::set_print_added_constraints)
452
+ .define_method("print_local_search_profile", &ConstraintSolverParameters::print_local_search_profile)
453
+ .define_method("print_local_search_profile=", &ConstraintSolverParameters::set_print_local_search_profile)
454
+ .define_method("print_model", &ConstraintSolverParameters::print_model)
455
+ .define_method("print_model=", &ConstraintSolverParameters::set_print_model)
456
+ .define_method("print_model_stats", &ConstraintSolverParameters::print_model_stats)
457
+ .define_method("print_model_stats=", &ConstraintSolverParameters::set_print_model_stats)
458
+ .define_method("profile_file", &ConstraintSolverParameters::profile_file)
459
+ // .define_method("profile_file=", &ConstraintSolverParameters::set_profile_file)
460
+ .define_method("profile_local_search", &ConstraintSolverParameters::profile_local_search)
461
+ .define_method("profile_local_search=", &ConstraintSolverParameters::set_profile_local_search)
462
+ .define_method("profile_propagation", &ConstraintSolverParameters::profile_propagation)
463
+ .define_method("profile_propagation=", &ConstraintSolverParameters::set_profile_propagation)
464
+ .define_method("skip_locally_optimal_paths", &ConstraintSolverParameters::skip_locally_optimal_paths)
465
+ .define_method("skip_locally_optimal_paths=", &ConstraintSolverParameters::set_skip_locally_optimal_paths)
466
+ .define_method("store_names", &ConstraintSolverParameters::store_names)
467
+ .define_method("store_names=", &ConstraintSolverParameters::set_store_names)
468
+ .define_method("trace_propagation", &ConstraintSolverParameters::trace_propagation)
469
+ .define_method("trace_propagation=", &ConstraintSolverParameters::set_trace_propagation)
470
+ .define_method("trace_search", &ConstraintSolverParameters::trace_search)
471
+ .define_method("trace_search=", &ConstraintSolverParameters::set_trace_search)
472
+ .define_method("trail_block_size", &ConstraintSolverParameters::trail_block_size)
473
+ .define_method("trail_block_size=", &ConstraintSolverParameters::set_trail_block_size)
474
+ .define_method("use_all_possible_disjunctions", &ConstraintSolverParameters::use_all_possible_disjunctions)
475
+ .define_method("use_all_possible_disjunctions=", &ConstraintSolverParameters::set_use_all_possible_disjunctions)
476
+ .define_method("use_cumulative_edge_finder", &ConstraintSolverParameters::use_cumulative_edge_finder)
477
+ .define_method("use_cumulative_edge_finder=", &ConstraintSolverParameters::set_use_cumulative_edge_finder)
478
+ .define_method("use_cumulative_time_table", &ConstraintSolverParameters::use_cumulative_time_table)
479
+ .define_method("use_cumulative_time_table=", &ConstraintSolverParameters::set_use_cumulative_time_table)
480
+ .define_method("use_cumulative_time_table_sync", &ConstraintSolverParameters::use_cumulative_time_table_sync)
481
+ .define_method("use_cumulative_time_table_sync=", &ConstraintSolverParameters::set_use_cumulative_time_table_sync)
482
+ .define_method("use_element_rmq", &ConstraintSolverParameters::use_element_rmq)
483
+ .define_method("use_element_rmq=", &ConstraintSolverParameters::set_use_element_rmq)
484
+ .define_method("use_sequence_high_demand_tasks", &ConstraintSolverParameters::use_sequence_high_demand_tasks)
485
+ .define_method("use_sequence_high_demand_tasks=", &ConstraintSolverParameters::set_use_sequence_high_demand_tasks)
486
+ .define_method("use_small_table", &ConstraintSolverParameters::use_small_table)
487
+ .define_method("use_small_table=", &ConstraintSolverParameters::set_use_small_table);
315
488
 
316
489
  Rice::define_class_under<RoutingModelParameters>(m, "RoutingModelParameters")
490
+ .define_method("reduce_vehicle_cost_model", &RoutingModelParameters::reduce_vehicle_cost_model)
491
+ .define_method("reduce_vehicle_cost_model=", &RoutingModelParameters::set_reduce_vehicle_cost_model)
492
+ .define_method("max_callback_cache_size", &RoutingModelParameters::max_callback_cache_size)
493
+ .define_method("max_callback_cache_size=", &RoutingModelParameters::set_max_callback_cache_size)
317
494
  .define_method(
318
495
  "solver_parameters",
319
496
  [](RoutingModelParameters& self) {
@@ -481,7 +658,17 @@ void init_routing(Rice::Module& m) {
481
658
  .define_method("write_assignment", &RoutingModel::WriteAssignment)
482
659
  .define_method("read_assignment", &RoutingModel::ReadAssignment)
483
660
  .define_method("restore_assignment", &RoutingModel::RestoreAssignment)
484
- .define_method("read_assignment_from_routes", &RoutingModel::ReadAssignmentFromRoutes)
661
+ .define_method(
662
+ "_read_assignment_from_routes",
663
+ [](RoutingModel& self, const std::vector<std::vector<int64_t>>& routes, bool ignore_inactive_indices, bool release_gvl) {
664
+ if (release_gvl) {
665
+ return Rice::detail::no_gvl([&]() {
666
+ return self.ReadAssignmentFromRoutes(routes, ignore_inactive_indices);
667
+ });
668
+ } else {
669
+ return self.ReadAssignmentFromRoutes(routes, ignore_inactive_indices);
670
+ }
671
+ })
485
672
  .define_method("routes_to_assignment", &RoutingModel::RoutesToAssignment)
486
673
  .define_method("assignment_to_routes", &RoutingModel::AssignmentToRoutes)
487
674
  .define_method("compact_assignment", &RoutingModel::CompactAssignment)
@@ -30,6 +30,10 @@ module ORTools
30
30
  _solve_from_assignment_with_parameters(assignment, search_parameters, !@ruby_callback)
31
31
  end
32
32
 
33
+ def read_assignment_from_routes(routes, ignore_inactive_indices)
34
+ _read_assignment_from_routes(routes, ignore_inactive_indices, !@ruby_callback)
35
+ end
36
+
33
37
  def register_unary_transit_callback(callback)
34
38
  @ruby_callback = true
35
39
  _register_unary_transit_callback(callback)
@@ -1,3 +1,3 @@
1
1
  module ORTools
2
- VERSION = "0.18.0"
2
+ VERSION = "0.18.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: or-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.0
4
+ version: 0.18.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
@@ -86,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
86
  - !ruby/object:Gem::Version
87
87
  version: '0'
88
88
  requirements: []
89
- rubygems_version: 4.0.14
89
+ rubygems_version: 4.0.20
90
90
  specification_version: 4
91
91
  summary: Operations research tools for Ruby
92
92
  test_files: []