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.
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
repro.options
Run on v.1.14
Run on v1.15.1
The model still solves to optimality, but presolve leaves
1row,3columns, and3nonzeros.