Infeasibility depends on sense and presolve
Closed this issue · 5 comments
Here is a small example:
NAME Demo
OBJSENSE
MAX
ROWS
N Obj
L r0
L r1
L r2
L r3
COLUMNS
c0 Obj 9
c0 r0 3
c0 r2 -10
c1 Obj -2
c2 Obj -2
c2 r1 -5
c2 r2 6
c2 r3 -2
c3 r0 -8
c3 r3 9
RHS
RHS_V r0 -67
RHS_V r1 -39
RHS_V r2 86
RHS_V r3 60
RANGES
RANGE r1 31
RANGE r2 19
BOUNDS
LO BOUND c0 -91
UP BOUND c0 50
LO BOUND c1 -62
UP BOUND c1 104
LO BOUND c2 -49
UP BOUND c2 96
LO BOUND c3 -53
UP BOUND c3 100
ENDATA
highs
says:
Running HiGHS 1.6.0: Copyright (c) 2023 HiGHS under MIT licence terms
LP presolve-fail has 4 rows; 4 cols; 7 nonzeros
Presolving model
3 rows, 3 cols, 6 nonzeros
2 rows, 2 cols, 4 nonzeros
Problem status detected on presolve: Infeasible
Model status : Infeasible
Objective value : 0.0000000000e+00
HiGHS run time : 0.00
If I change OBJSENSE
to MIN
, then highs
can optimize it, though. If I disable presolver, then highs
can also optimize. glpksol
and clp
also think it is feasible and can optimize.
Strange. I'll investigate
Sounds similar to this one: #1517
Btw. I am using github/HiGHS/HEAD.
I've reproduced the behaviour that you observe, both with your model, and without the OBJSENSE MAX
but with negated objective coefficients. It's clearly a bug in presolve where an illegal dual reduction is performed that results in false detection of infeasibility. Since it's such a small problem, it should be easy to track down. However, I'm travelling this week and it's hard to do work like this on a small laptop screen.