Skip to content

Regression in dual-fixing presolve v1.14.0 -> v.1.15.1 #3140

Description

@slowjazz

Hello,
I'm observing that the dual-fixing presolve step seems to miss some reductions in v1.15.1, compared to v1.14.0.

test.lp

Minimize
 obj: 4 x0 + -3 x3 + -1 x4 + 4 x5 + -4 x6 + 1 x7 + -4 x9
Subject To
 r0: 2 x3 + 1 x1 + -3 x9 + -3 x8 + 1 x5 = 8
 r1: -3 x0 + -2 x9 + 3 x8 <= -3
 r2: -2 x0 + -1 x6 + 1 x7 = -1
 r3: -3 x4 + 1 x3 + 1 x6 + -3 x5 >= 1
 r4: 3 x8 + 2 x4 <= 3
Bounds
 0 <= x0 <= 10
 1 <= x1 <= 9
 2 <= x3 <= 8
 0 <= x4 <= 9
 0 <= x5 <= 6
 0 <= x6 <= 5
 0 <= x7 <= 7
 0 <= x8 <= 6
 0 <= x9 <= 7
End

repro.options

presolve_rule_logging=true
log_to_console=true
output_flag=true

Run on v.1.14

> ./bin/highs --model_file test.lp --options_file repro.options

Running HiGHS 1.14.0 (git hash: 7df0786de3): Copyright (c) 2026 under MIT licence terms
Command line parsed using CLI11 2.5.0: Copyright (c) 2017-2025 University of Cincinnati
LP test has 5 rows; 9 cols; 17 nonzeros
Coefficient ranges:
  Matrix  [1e+00, 3e+00]
  Cost    [1e+00, 4e+00]
  Bound   [1e+00, 1e+01]
  RHS     [1e+00, 8e+00]
Presolving model
5 rows, 7 cols, 12 nonzeros 0s
0 rows, 0 cols, 0 nonzeros 0s
-------------------------------------------------------
Presolve rule removed          Rows      Cols     Calls
-------------------------------------------------------
Singleton row                     3         1         3
Redundant row                     1         0         1
Empty column                      0         2         2
Fixed column                      0         3         3
Dominated col                     0         2         2
Doubleton equation                1         1         1
Aggregator                        0         0         1
Parallel rows and columns         0         0         1
-------------------------------------------------------
Total reductions                  5         9
-------------------------------------------------------
Original  model                   5         9
Presolved model                   0         0
-------------------------------------------------------
Presolve reductions: rows 0(-5); columns 0(-9); nonzeros 0(-17) - Reduced to empty
Performed postsolve
Solving the original LP from the solution after postsolve

Model name          : test
Model status        : Optimal
Objective value     : -6.4166666667e+01
P-D objective error :  1.0987774264e-16
HiGHS run time      :          0.00

Run on v1.15.1

> ./bin/highs --model_file test.lp --options_file repro.options

Running HiGHS 1.15.1 (git hash: 04024d701f): Copyright (c) 2026 under MIT licence terms
Includes third-party software components, see THIRD_PARTY_NOTICES.md for full details
Command line parsed using CLI11 2.5.0: Copyright (c) 2017-2025 University of Cincinnati
LP test has 5 rows; 9 cols; 17 nonzeros
Coefficient ranges:
  Matrix  [1e+00, 3e+00]
  Cost    [1e+00, 4e+00]
  Bound   [1e+00, 1e+01]
  RHS     [1e+00, 8e+00]
Presolving model
5 rows, 7 cols, 12 nonzeros 0s
Dependent equations search running on 1 equations with time limit of 1000.00s
Dependent equations search removed 0 rows and 0 nonzeros in 0.00s (limit = 1000.00s)
1 rows, 3 cols, 3 nonzeros 0s
-------------------------------------------------------
Presolve rule removed          Rows      Cols     Calls
-------------------------------------------------------
Singleton row                     1         0         1
Redundant row                     2         0         2
Empty column                      0         2         2
Fixed column                      0         2         2
Dominated col                     0         1         1
Doubleton equation                1         1         1
Dependent equations               0         0         1
Aggregator                        0         0         1
Parallel rows and columns         0         0         1
-------------------------------------------------------
Total reductions                  4         6
-------------------------------------------------------
Original  model                   5         9
Presolved model                   1         3
-------------------------------------------------------
Presolve reductions: rows 1(-4); columns 3(-6); nonzeros 3(-14)
Solving the presolved LP
Using dual simplex solver
  Iteration        Objective     Infeasibilities num(sum)
          0     0.0000000000e+00 Ph1: 0(0) 0.0s
          1    -6.4166666667e+01 Pr: 0(0) 0.0s

Performed postsolve
Solving the original LP from the solution after postsolve

Model name          : test
Model status        : Optimal
Simplex   iterations: 1
Objective value     : -6.4166666667e+01
P-D objective error :  1.0987774264e-16
HiGHS run time      :          0.00

The model still solves to optimality, but presolve leaves 1 row, 3 columns, and 3 nonzeros.

Metadata

Metadata

Assignees

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions