-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[RFC] Translate empty column rule and reduction to apply! syntax #18
base: master
Are you sure you want to change the base?
Conversation
@@ -458,7 +458,7 @@ function presolve!(ps::PresolveData{T}) where {T} | |||
@_return_if_inferred remove_dominated_columns!(ps) | |||
end | |||
|
|||
@_return_if_inferred remove_empty_columns!(ps) | |||
@_return_if_inferred apply!(ps, RemoveEmptyColumns(), config) # Why this here?? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have no idea why this was here in the first place
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems fine, I only have a (very) minor suggestion :)
|
||
## Presolve | ||
|
||
If column $j$ is empty, variable $x_{j}$ is fixed to $x_{j}^{*}$ as follows |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit:
If column $j$ is empty, variable $x_{j}$ is fixed to $x_{j}^{*}$ as follows | |
If column $j$ is empty, variable $x_{j}$ is fixed to $x_{j}^{*}$ as follows: |
|
||
If column $j$ is empty, variable $x_{j}$ is fixed to $x_{j}^{*}$ as follows | ||
|
||
| $c_{j}$ | $l_{j}$ | $u_{j}$ | $x^{*}_{j}$ | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is all assuming minimization, correct?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Correct. I'll mention it in the docs.
This is mostly straightforward.
One open question: how should we handle unbounded columns with close-to-zero objective?
For instance: if a problem has an empty column with no lower bound and objective coeff of
1e-30
, should we declare it dual infeasible?Since empty columns are just empty rows in the dual, I would suggest to follow the same idea: we use a dual feasibility tolerance
ϵ_d
, and declare dual infeasibility if columnj
is empty, has no lower (resp. upper) bound and its objective is greater (resp. smaller) thanϵ_d
(resp.-ϵ_d
).Obviously, using a "dual feasibility" tolerance for MIPs could raise some eyebrows.