Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
## 0.18.1 (unreleased)

- Added support for breaks for routing
- Added `fix_variables_to_their_hinted_value`, `log_search_progress`, and `max_deterministic_time` to `SatParameters`

## 0.18.0 (2026-07-06)

Expand Down
6 changes: 6 additions & 0 deletions ext/or-tools/constraint.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,14 @@ void init_constraint(Rice::Module& m) {
.define_method("cp_model_presolve=", &SatParameters::set_cp_model_presolve)
.define_method("enumerate_all_solutions", &SatParameters::enumerate_all_solutions)
.define_method("enumerate_all_solutions=", &SatParameters::set_enumerate_all_solutions)
.define_method("fix_variables_to_their_hinted_value", &SatParameters::fix_variables_to_their_hinted_value)
.define_method("fix_variables_to_their_hinted_value=", &SatParameters::set_fix_variables_to_their_hinted_value)
.define_method("linearization_level", &SatParameters::linearization_level)
.define_method("linearization_level=", &SatParameters::set_linearization_level)
.define_method("log_search_progress", &SatParameters::log_search_progress)
.define_method("log_search_progress=", &SatParameters::set_log_search_progress)
.define_method("max_deterministic_time", &SatParameters::max_deterministic_time)
.define_method("max_deterministic_time=", &SatParameters::set_max_deterministic_time)
.define_method("max_time_in_seconds", &SatParameters::max_time_in_seconds)
.define_method("max_time_in_seconds=", &SatParameters::set_max_time_in_seconds)
.define_method("num_workers", &SatParameters::num_workers)
Expand Down
44 changes: 44 additions & 0 deletions test/constraint_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,50 @@ def test_time_limit
assert_equal :unknown, status
end

def test_max_deterministic_time
model = ORTools::CpModel.new
num_vals = 3
x = model.new_int_var(0, num_vals - 1, "x")
y = model.new_int_var(0, num_vals - 1, "y")
model.add(x != y)

solver = ORTools::CpSolver.new
solver.parameters.max_deterministic_time = 0
assert_equal 0, solver.parameters.max_deterministic_time

status = solver.solve(model)
assert_equal :unknown, status
end

def test_fix_variables_to_their_hinted_value
model = ORTools::CpModel.new
x = model.new_int_var(0, 10, "x")
model.add_hint(x, 7)
model.minimize(x)

solver = ORTools::CpSolver.new
solver.parameters.fix_variables_to_their_hinted_value = true
assert solver.parameters.fix_variables_to_their_hinted_value

assert_equal :optimal, solver.solve(model)
assert_equal 7, solver.value(x)
end

def test_log_search_progress
model = ORTools::CpModel.new
x = model.new_int_var(0, 10, "x")
model.minimize(x)

solver = ORTools::CpSolver.new
solver.parameters.log_search_progress = true
assert solver.parameters.log_search_progress

stdout, _ = capture_subprocess_io do
assert_equal :optimal, solver.solve(model)
end
assert_match "Starting CP-SAT solver", stdout
end

def test_infeasible_value
model = ORTools::CpModel.new

Expand Down