-
Notifications
You must be signed in to change notification settings - Fork 25
Update to MOI v0.9 #66
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
Conversation
* Drop LQOI and bump MOI version in dependencies * Re-write the MOI wrapper based on MOI.copy_to
Not sure. I'd just follow the MPB wrapper.
Is this a
No rush to include. Can be latest PR. But not sure how well it's tested.
You should not assume that the passed function is canonicalized; call
I think we've kept the parameters.
You should throw
Bug in MOI. Wait for new tag.
Not sure. |
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.
Nice job!
* Remove support for SingleVariable objective (will be handled by bridge) * Throw MOI exceptions instead of general errors * Use more compact notation when applicable * Canonicalize linear constraints before passing them to Clp * Bump MOI version requirement to MOIv0.9.4 * Update silent parameter
This is next on the TODO list.
Doesn't appear so. I tried with baby examples, and the objective offset seems to be always negated.
It will be left for future work then
That will be done together with the
These are related to infeasibility rays taking wrong values. Also causes failures on |
* Add ClpSolve options to Clp.Optimizer * Copy solver parameters when calling MOI.empty!
Solver parameters / solve option are now tracked automatically, and they are not discarded during an Currently in the pipeline: implement these The last two things left to do are 1) whether |
I removed the tests that query infeasibility certificates, and de-activated The latter needs MOI0.9.6 to work. Once the new version is tagged all tests should pass. If that's satisfactory then the PR can be merged then. |
Fix exported symbols in BB
As of now, the MOI re-write is partially working.
Still some work to do but I think most heavy-lifting is done 😅
Existential questions
Clp.ClpSolve
? So far, I have not integrated that in the MOI wrapper.Sounds like I should, but I don't know how it integrates with the rest.
-f.constant
toset_objective_offset
seems to have fixed problems. Not sure whether it's the actual Clp convetion, or just me who did something wrong.Things that remain to be implemented
TimeLimitSec
: Clp behaves weird, cf maximum_seconds returns weird results #65[EDIT: not supported until Clp's behaviour is fixed]
SolveTime
: I did not find the corresponding function is ClpPossible workaround: use an
@elapsed
when calling the Clp-level solve, and store that value at the wrapper level.[EDIT: not supported]
DualObjectiveValue
: I'm not sure whether Clp has a corresponding function.I thought it would be
Clp.dual_bound
, but that essentially returned + infinity when I tried it[EDIT: not supported]
NumberOfThreads
: I don't know whether Clp is always single-threaded (in which case we could return 1 if queried, but prevent the user from setting it), or if this should just not be supported. Did not find a thread-related function in the C interface.[EDIT: not supported]
[EDIT: left for future work]
ScalarAffineFunction
constraints. I do not check that at the wrapper level, rather I'm assuming that the cache automatically gives functions in canonical formMOI.Silent
is set tofalse
at the beginning of the tests, and its value is kept intact whenMOI.empty!
is called, Clp still prints during the tests. Help welcome.empty!
. Should parameters also be reset to their default values?Tests that still fail
Non-exhaustive list. See which tests I removed here
solve_result_index
: I removed it from the tests, it callsMOI.get(m, MOI.ObjectiveValue(2))
.Not sure how this should be handled here.
VectorAffineFunction
orVectorOfVariables
. I though these should be handled by the bridge. See for instance error message belowlinear8a
: some of the duals appear to be wrong it's likely something on my end.[EDIT:
linear8a
andlinear12
were excluded from the tests]