Skip to content

Commit e31f37e

Browse files
committed
Added better logging (including warnings) for HPresolve::removeDependentEquations
1 parent 0890c8b commit e31f37e

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

src/presolve/HPresolve.cpp

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4540,10 +4540,6 @@ HPresolve::Result HPresolve::removeDependentEquations(
45404540

45414541
HighsSparseMatrix matrix;
45424542
matrix.num_col_ = equations.size();
4543-
highsLogDev(options->log_options, HighsLogType::kInfo,
4544-
"HPresolve::removeDependentEquations Got %d equations, checking "
4545-
"for dependent equations\n",
4546-
(int)matrix.num_col_);
45474543
matrix.num_row_ = model->num_col_ + 1;
45484544
matrix.start_.resize(matrix.num_col_ + 1);
45494545
matrix.start_[0] = 0;
@@ -4588,26 +4584,32 @@ HPresolve::Result HPresolve::removeDependentEquations(
45884584
std::max(1.0, std::min(0.01 * options->time_limit, 1000.0));
45894585
factor.setTimeLimit(time_limit);
45904586
// Determine rank deficiency of the equations
4587+
highsLogUser(options->log_options, HighsLogType::kInfo,
4588+
"Dependent equations search running on %d equations with time "
4589+
"limit of %.2fs\n",
4590+
int(matrix.num_col_), time_limit);
45914591
double time_taken = -this->timer->read();
45924592
HighsInt build_return = factor.build();
45934593
time_taken += this->timer->read();
45944594
if (build_return == kBuildKernelReturnTimeout) {
45954595
// HFactor::build has timed out, so just return
45964596
highsLogUser(options->log_options, HighsLogType::kInfo,
4597-
"Presolve dependent equations timed out after limit of %gs\n",
4598-
time_limit);
4597+
"Dependent equations search terminated after %.3gs due to "
4598+
"expected time exceeding limit\n",
4599+
time_taken);
45994600
analysis_.logging_on_ = logging_on;
46004601
if (logging_on)
46014602
analysis_.stopPresolveRuleLog(kPresolveRuleDependentFreeCols);
46024603
return Result::kOk;
46034604
} else {
4604-
double pct_off_timeout = std::fabs(time_taken - time_limit) / time_limit;
4605+
double pct_off_timeout =
4606+
1e2 * std::fabs(time_taken - time_limit) / time_limit;
46054607
if (pct_off_timeout < 1.0)
4606-
highsLogUser(
4607-
options->log_options, HighsLogType::kWarning,
4608-
"Presolve dependent equations finished within %g\% of limit of %gs: "
4609-
"risk of non-deterministic behaviour if solve is repeated\n",
4610-
pct_off_timeout, time_limit);
4608+
highsLogUser(options->log_options, HighsLogType::kWarning,
4609+
"Dependent equations search finished within %.2f%% of limit "
4610+
"of %.2fs: "
4611+
"risk of non-deterministic behaviour if solve is repeated\n",
4612+
pct_off_timeout, time_limit);
46114613
}
46124614
// build_return as rank_deficiency must be valid
46134615
assert(build_return >= 0);
@@ -4629,8 +4631,8 @@ HPresolve::Result HPresolve::removeDependentEquations(
46294631
}
46304632

46314633
highsLogUser(options->log_options, HighsLogType::kInfo,
4632-
"Presolve dependent equations removed %d rows and %d nonzeros "
4633-
"in %gs (limit = %gs)",
4634+
"Dependent equations search removed %d rows and %d nonzeros "
4635+
"in %.2fs (limit = %.2fs)\n",
46344636
int(num_removed_row), int(num_removed_nz), time_taken,
46354637
time_limit);
46364638

0 commit comments

Comments
 (0)