Skip to content

Commit 12157b1

Browse files
committed
Improved logic for boolean linear solver parameters [skip ci]
1 parent 94a1593 commit 12157b1

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

ext/or-tools/linear.cpp

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,13 @@ void init_linear(Rice::Module& m) {
108108
"presolve",
109109
[](MPSolverParameters& self) {
110110
int presolve = self.GetIntegerParam(MPSolverParameters::IntegerParam::PRESOLVE);
111-
return presolve != MPSolverParameters::PresolveValues::PRESOLVE_OFF;
111+
if (presolve == MPSolverParameters::PresolveValues::PRESOLVE_ON) {
112+
return Rice::True;
113+
} else if (presolve == MPSolverParameters::PresolveValues::PRESOLVE_OFF) {
114+
return Rice::False;
115+
} else {
116+
return Rice::Nil;
117+
}
112118
})
113119
.define_method(
114120
"incrementality=",
@@ -125,7 +131,13 @@ void init_linear(Rice::Module& m) {
125131
"incrementality",
126132
[](MPSolverParameters& self) {
127133
int incrementality = self.GetIntegerParam(MPSolverParameters::IntegerParam::INCREMENTALITY);
128-
return incrementality != MPSolverParameters::IncrementalityValues::INCREMENTALITY_OFF;
134+
if (incrementality == MPSolverParameters::IncrementalityValues::INCREMENTALITY_ON) {
135+
return Rice::True;
136+
} else if (incrementality == MPSolverParameters::IncrementalityValues::INCREMENTALITY_OFF) {
137+
return Rice::False;
138+
} else {
139+
return Rice::Nil;
140+
}
129141
})
130142
.define_method(
131143
"scaling=",
@@ -142,7 +154,13 @@ void init_linear(Rice::Module& m) {
142154
"scaling",
143155
[](MPSolverParameters& self) {
144156
int scaling = self.GetIntegerParam(MPSolverParameters::IntegerParam::SCALING);
145-
return scaling != MPSolverParameters::ScalingValues::SCALING_OFF;
157+
if (scaling == MPSolverParameters::ScalingValues::SCALING_ON) {
158+
return Rice::True;
159+
} else if (scaling == MPSolverParameters::ScalingValues::SCALING_OFF) {
160+
return Rice::False;
161+
} else {
162+
return Rice::Nil;
163+
}
146164
});
147165

148166
Rice::define_class_under<MPSolver>(m, "Solver")

test/linear_test.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,12 @@ def test_incrementality_parameter
149149

150150
def test_scaling_parameter
151151
params = ORTools::MPSolverParameters.new
152-
assert_equal true, params.scaling
152+
assert_nil params.scaling
153153

154154
params.scaling = false
155155
assert_equal false, params.scaling
156+
157+
params.scaling = true
158+
assert_equal true, params.scaling
156159
end
157160
end

0 commit comments

Comments
 (0)