-
Notifications
You must be signed in to change notification settings - Fork 31
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
Compute IIS #36
Compute IIS #36
Conversation
Right now, only tested when the model is feasible.
Got exception outside of a @test Stacktrace: [1] error(::String) at .\error.jl:33 [2] get_error_msg(::Xpress.Model) at C:\Users\kwsq4764\.julia\dev\Xpress\src\xprs_model.jl:82 [3] Xpress.XpressError(::Xpress.Model) at C:\Users\kwsq4764\.julia\dev\Xpress\src\xprs_model.jl:99 [4] getfirstiis(::Xpress.Model) at C:\Users\kwsq4764\.julia\dev\Xpress\src\xprs_model.jl:417 [5] compute_conflict(::Xpress.Optimizer) at C:\Users\kwsq4764\.julia\dev\Xpress\src\MOIWrapper.jl:573 [6] top-level scope at C:\Users\kwsq4764\.julia\dev\Xpress\test\MOIWrapper.jl:152 [7] top-level scope at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.1\Test\src\Test.jl:1083 [8] top-level scope at C:\Users\kwsq4764\.julia\dev\Xpress\test\MOIWrapper.jl:142 [9] top-level scope at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.1\Test\src\Test.jl:1083 [10] top-level scope at C:\Users\kwsq4764\.julia\dev\Xpress\test\MOIWrapper.jl:90 [11] top-level scope at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.1\Test\src\Test.jl:1083 [12] top-level scope at C:\Users\kwsq4764\.julia\dev\Xpress\test\MOIWrapper.jl:89 [13] include at .\boot.jl:326 [inlined] [14] include_relative(::Module, ::String) at .\loading.jl:1038 [15] include at .\sysimg.jl:29 [inlined] [16] include(::String) at .\loading.jl:1073 [17] top-level scope at none:0 [18] eval at .\boot.jl:328 [inlined] [19] evalfile(::String, ::Array{String,1}) at .\loading.jl:1069 (repeats 2 times) [20] top-level scope at C:\Users\kwsq4764\.julia\dev\Xpress\test\runtests.jl:29 [inlined] [21] top-level scope at .\none:0 [22] include at .\boot.jl:326 [inlined] [23] include_relative(::Module, ::String) at .\loading.jl:1038 [24] include(::Module, ::String) at .\sysimg.jl:29 [25] include(::String) at .\client.jl:403 [26] top-level scope at none:0 [27] eval(::Module, ::Any) at .\boot.jl:328 [28] exec_options(::Base.JLOptions) at .\client.jl:243 [29] _start() at .\client.jl:436
I guess that's pretty much it. I added tests for the C API, plus the MOI interface (basically, a copy-paste from CPLEX), plus tests. I had to remove everything that relates to SingleVariable, as it is not supported for Xpress. Right now, all the new tests are passing (I have many issues with the MOI tests not passing, most of them being that SingleVariable is not supported). Regarding the access to several IISes, I think it would be best to way until jump-dev/JuMP.jl@79f279a#diff-a4299a42a71a0a4a853f0c4324ce54ddR27 is solved (access to several solutions, which I believe is not possible for all solvers; then we can copy the mechanism for IISes). |
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 assume that the tests all pass. Looks good. It would be good to fix existing tests (in another PR). We shouldn't be in the state that tests are failing.
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.
We have to figure out whats the reason for tests not passing. We have to see what CPLEX and gurobi interfaces implement that we don't.
There is no difference in SUPPORTED_CONSTRAINTS with, for instance, CPLEX, except order and However, two failures are related to start values:
I could not find the relevant functions to call in Xpress in their manual, except for "warm-starting is nice when you reoptimize". I guess it means the user cannot specify a solution? For now, I used the same solution as CPLEX: disable the corresponding tests. There are also a couple of warnings about MPB:
Maybe there are still other MOI tests that do not pass, but the tests are just sluggish… (at least on this computer). |
those warning are expected. |
Should this be merged, now? |
Sure, I plan to doublecheck and merge tomorrow. |
Following jump-dev/JuMP.jl#1035: implement IIS support in a second package.
This is just the first basic, baby step: retrieve data from the solver (only low-level API). It is only tested when the model is feasible, right now. I don't see any general use of the values of the duals nor the isolation thing, as they are very specific to Xpress (as far as I can tell). Or should I still implement them in this PR? (Maybe using optional parameters to
getfirstiis
?) Also, I ignore the fact that Xpress can compute several IISes: maybe there should be another function to return them all, or a variant that returns an IIS iterator? (Just thinking out loud, right now, but I'd like feedback on these ideas, especially on whether they should be implemented in this PR or not.)I tried to be as close as possible to jump-dev/CPLEX.jl#233 (even copy-pasting the comments).