Skip to content

Commit e054402

Browse files
committed
[CP-SAT] small fixes, reindent
1 parent 76c3faf commit e054402

3 files changed

Lines changed: 43 additions & 37 deletions

File tree

ortools/sat/cp_model_solver.cc

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2335,6 +2335,19 @@ void RegisterSearchStatisticCallback(Model* global_model) {
23352335
response->set_num_lp_iterations(num_lp_iters);
23362336
});
23372337
}
2338+
2339+
void MergeParamsWithFlagsAndDefaults(SatParameters* params) {
2340+
#if !defined(__PORTABLE_PLATFORM__)
2341+
// Override parameters?
2342+
if (!absl::GetFlag(FLAGS_cp_model_params).empty()) {
2343+
SatParameters flag_params;
2344+
CHECK(google::protobuf::TextFormat::ParseFromString(
2345+
absl::GetFlag(FLAGS_cp_model_params), &flag_params));
2346+
params->MergeFrom(flag_params);
2347+
}
2348+
#endif // __PORTABLE_PLATFORM__
2349+
}
2350+
23382351
} // namespace
23392352

23402353
CpSolverResponse SolveCpModel(const CpModelProto& model_proto, Model* model) {
@@ -2355,20 +2368,12 @@ CpSolverResponse SolveCpModel(const CpModelProto& model_proto, Model* model) {
23552368
DumpModelProto(model_proto, model_proto.name());
23562369
}
23572370
}
2358-
2359-
// Override parameters?
2360-
if (!absl::GetFlag(FLAGS_cp_model_params).empty()) {
2361-
SatParameters params = *model->GetOrCreate<SatParameters>();
2362-
SatParameters flag_params;
2363-
CHECK(google::protobuf::TextFormat::ParseFromString(
2364-
absl::GetFlag(FLAGS_cp_model_params), &flag_params));
2365-
params.MergeFrom(flag_params);
2366-
*(model->GetOrCreate<SatParameters>()) = params;
2367-
}
23682371
#endif // __PORTABLE_PLATFORM__
23692372

2370-
// Enable the logging component.
2373+
MergeParamsWithFlagsAndDefaults(model->GetOrCreate<SatParameters>());
23712374
const SatParameters& params = *model->GetOrCreate<SatParameters>();
2375+
2376+
// Enable the logging component.
23722377
SolverLogger* logger = model->GetOrCreate<SolverLogger>();
23732378
logger->EnableLogging(params.log_search_progress());
23742379
logger->SetLogToStdOut(params.log_to_stdout());

ortools/sat/csharp/CpSolver.cs

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -134,33 +134,33 @@ public long Value(LinearExpr e)
134134
{
135135
switch (expr)
136136
{
137-
case LinearExprBuilder a:
138-
constant += coefficient * a.Offset;
139-
if (coefficient == 1)
137+
case LinearExprBuilder a:
138+
constant += coefficient * a.Offset;
139+
if (coefficient == 1)
140+
{
141+
foreach (var sub in a.Terms)
140142
{
141-
foreach (var sub in a.Terms)
142-
{
143-
_terms.Enqueue(sub);
144-
}
143+
_terms.Enqueue(sub);
145144
}
146-
else
145+
}
146+
else
147+
{
148+
foreach (var sub in a.Terms)
147149
{
148-
foreach (var sub in a.Terms)
149-
{
150-
_terms.Enqueue(new Term(sub.expr, sub.coefficient * coefficient));
151-
}
150+
_terms.Enqueue(new Term(sub.expr, sub.coefficient * coefficient));
152151
}
152+
}
153153

154-
break;
155-
case IntVar intVar:
156-
var index = intVar.GetIndex();
157-
var value = index >= 0 ? Response!.Solution[index] : -Response!.Solution[-index - 1];
158-
constant += coefficient * value;
159-
break;
160-
case NotBoolVar:
161-
throw new ArgumentException("Cannot evaluate a literal in an integer expression.");
162-
default:
163-
throw new ArgumentException("Cannot evaluate '" + expr + "' in an integer expression");
154+
break;
155+
case IntVar intVar:
156+
var index = intVar.GetIndex();
157+
var value = index >= 0 ? Response!.Solution[index] : -Response!.Solution[-index - 1];
158+
constant += coefficient * value;
159+
break;
160+
case NotBoolVar:
161+
throw new ArgumentException("Cannot evaluate a literal in an integer expression.");
162+
default:
163+
throw new ArgumentException("Cannot evaluate '" + expr + "' in an integer expression");
164164
}
165165

166166
if (!_terms.TryDequeue(out var term))
@@ -170,8 +170,7 @@ public long Value(LinearExpr e)
170170

171171
expr = term.expr;
172172
coefficient = term.coefficient;
173-
}
174-
while (true);
173+
} while (true);
175174

176175
return constant;
177176
}
@@ -250,7 +249,6 @@ class BestBoundCallbackDelegate : BestBoundCallback
250249
public BestBoundCallbackDelegate(DoubleToVoidDelegate del) => _delegate = del;
251250

252251
public override void NewBestBound(double bound) => _delegate(bound);
253-
254252
}
255253

256254
} // namespace Google.OrTools.Sat

ortools/sat/presolve_context.cc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -794,7 +794,10 @@ bool PresolveContext::HasUnusedAffineVariable() const {
794794

795795
// TODO(user): Also test var_to_constraints_ !!
796796
bool PresolveContext::ConstraintVariableUsageIsConsistent() {
797-
if (is_unsat_) return true; // We do not care in this case.
797+
// We do not care in these cases.
798+
if (is_unsat_) return true;
799+
if (time_limit_->LimitReached()) return true;
800+
798801
if (var_to_constraints_.size() != working_model->variables_size()) {
799802
LOG(INFO) << "Wrong var_to_constraints_ size!";
800803
return false;

0 commit comments

Comments
 (0)