Skip to content

Commit c584863

Browse files
committed
Update tolerances in feasibility checks
1 parent 0bc695b commit c584863

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

include/columngenerationsolver/commons.hpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,7 @@ class Solution
430430
std::ostream& os,
431431
int verbosity_level = 1) const
432432
{
433+
double tol = 1e-4;
433434
if (verbosity_level >= 1) {
434435
os
435436
<< "Feasible: " << feasible() << std::endl
@@ -458,8 +459,8 @@ class Solution
458459
row_id < (RowIdx)this->model().rows.size();
459460
++row_id) {
460461
const Row& row = this->model().rows[row_id];
461-
bool infeasible = (row_values_[row_id] > model_->rows[row_id].upper_bound + FFOT_TOL)
462-
|| (row_values_[row_id] < model_->rows[row_id].lower_bound - FFOT_TOL);
462+
bool infeasible = (row_values_[row_id] > model_->rows[row_id].upper_bound + tol)
463+
|| (row_values_[row_id] < model_->rows[row_id].lower_bound - tol);
463464
os
464465
<< std::setw(12) << row_id
465466
<< std::setw(36) << row.name
@@ -486,7 +487,7 @@ class Solution
486487
Value value = p.second;
487488
Value fractionality = std::fabs(value - std::round(value));
488489
bool integral = (p.first->type == VariableType::Continuous)
489-
|| !(fractionality > FFOT_TOL);
490+
|| !(fractionality > tol);
490491
os
491492
<< std::setw(12) << p.first->name
492493
<< std::setw(12) << ((p.first->type == VariableType::Continuous)? "C": "I")
@@ -572,6 +573,7 @@ class SolutionBuilder
572573
/** Compute the feasibility of the solution. */
573574
void compute_feasible()
574575
{
576+
double tol = 1e-4;
575577
//std::cout << "compute_feasible" << std::endl;
576578
solution_.row_values_ = std::vector<Value>(solution_.model_->rows.size(), 0.0);
577579
for (const auto& p: solution_.columns_) {
@@ -587,7 +589,7 @@ class SolutionBuilder
587589
for (RowIdx row = 0;
588590
row < (RowIdx)solution_.model_->rows.size();
589591
++row) {
590-
if (solution_.row_values_[row] > solution_.model_->rows[row].upper_bound + FFOT_TOL) {
592+
if (solution_.row_values_[row] > solution_.model_->rows[row].upper_bound + tol) {
591593
//std::cout << "row " << row
592594
// << " name " << solution_.model_->rows[row].name
593595
// << " lb " << solution_.model_->rows[row].lower_bound
@@ -597,7 +599,7 @@ class SolutionBuilder
597599
solution_.feasible_ = false;
598600
solution_.feasible_relaxation_ = false;
599601
}
600-
if (solution_.row_values_[row] < solution_.model_->rows[row].lower_bound - FFOT_TOL) {
602+
if (solution_.row_values_[row] < solution_.model_->rows[row].lower_bound - tol) {
601603
//std::cout << "row " << row
602604
// << " name " << solution_.model_->rows[row].name
603605
// << " lb " << solution_.model_->rows[row].lower_bound
@@ -614,7 +616,7 @@ class SolutionBuilder
614616
Value value = p.second;
615617
if (column.type == VariableType::Integer) {
616618
Value fractionality = std::fabs(value - std::round(value));
617-
if (fractionality > FFOT_TOL) {
619+
if (fractionality > tol) {
618620
//std::cout << "column " << column
619621
// << " value " << value
620622
// << " frac " << fractionality

0 commit comments

Comments
 (0)