Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 03:27
    codecov[bot] commented #3138
  • 03:27
    codecov[bot] commented #3138
  • 03:27

    odow on gh-pages

    build based on 09a736e (compare)

  • 03:21

    odow on gh-pages

    build based on 3850935 (compare)

  • 03:11
    codecov[bot] commented #3138
  • 03:07
    codecov[bot] commented #3138
  • 03:06
    codecov[bot] commented #3140
  • 03:05
    codecov[bot] commented #3138
  • 03:04
    codecov[bot] commented #3138
  • 03:04
    codecov[bot] commented #3140
  • 03:03
    codecov[bot] commented #3140
  • 03:02
    codecov[bot] commented #3140
  • 02:58
    codecov[bot] commented #3138
  • 02:49
    codecov[bot] commented #3138
  • 02:49
    codecov[bot] commented #3138
  • 02:49
    odow synchronize #3138
  • 02:49

    odow on multiple-solution-summary

    Report result_count in solution… Add a result kwarg to solution_… Remove unnecessary newline and 2 more (compare)

  • 02:48
    codecov[bot] commented #3140
  • 02:48
    codecov[bot] commented #3140
  • 02:47
    odow synchronize #3140
Mathieu Besançon
@matbesancon
Some people here might be interested, the MIP workshop is organizing a reoptimization competition (solving instances with limited changes in constraints or objectives across them)
https://github.com/ambros-gleixner/MIPcc23
^ rules and MOI starter in the repo
Mathieu Besançon
@matbesancon
in other news, SCIP is finally open-source: https://github.com/scipopt/scip/blob/master/LICENSE
1 reply
Robert Schwarz
@rschwarz
After so many years of hints and maybes :fireworks:
Oscar Dowson
@odow
:clap:
Should we make a new scip_jll build so we can (officially) officially distribute?
1 reply
Robert Schwarz
@rschwarz
It seems that only the licence of SCIP was updated, not that of the LP solver SoPlex. So, for a fully open-source MIP solver, one would have to build a SCIP-with-CLP or so.
Mathieu Besançon
@matbesancon
We should have a 8.0.4 release hopefully before the end of the year
That will package with the new license. And yes I am planning on adding a SCIP_HiGHS build in Yggdrasil
Mathieu Besançon
@matbesancon
edit: SoPLEX will also be on Apache 2.0, there was a hiccup in the license change PR
never merge at a release party
Mathieu Besançon
@matbesancon
okay SoPLEX will be updated in an hour or so
Miles Lubin
@mlubin
Open source SCIP is very big news!
Carleton Coffrin
@ccoffrin
:tada: :tada:
Benoît Legat
@blegat
That's excellent news 🥳
freemin7
@freemin7
The event where this was announced was awesome. I also attended the SCIP develeoper meet up a day later and the idea of moving some of their non compute intensive CI to GitHub to make it more inviting to external contributors was floated.
Chris Coey
@chriscoey
Exciting!
Chris Coey
@chriscoey
HiGHS seems to do pretty well on this benchmark vs SCIP: http://plato.asu.edu/ftp/milp.html
Just wondering, ignoring SCIP's flexibility and generality and callbacks etc, do people think that for solving your average MILP instance, SCIP and HiGHS are about as good as each other? or could that simple benchmark be a bit misleading?
Chris Coey
@chriscoey
@matbesancon SCIP.jl supports MIQP/MIQCP pretty reliably right?
Robert Schwarz
@rschwarz
I don't have much practical experience with HiGHS, but I think the reason to enjoy SCIP is not just the MIP performance, but the fact that it's a proper MINLP solver, with extensive callback support etc.
There are also some recent gimmicks, such as the "progress bar" indicator during tree search.
Mathieu Besançon
@matbesancon
@chriscoey yes, MIQCP only in native SCIP, nonlinear objectives must be reformulated as epigraph because they are separated. And yes overall reliably. As a MINLP solver SCIP is currently in an excellent place
Mathieu Besançon
@matbesancon
Overall, HiGHS is doing better on MIPs because it's a single MIP solver with everything baked in, the goal is not to have something super extensible for MIPs / other problems. So with the design decisions HiGHS has and with continuous development, I do expect it to stay faster than SCIP, but integrating new development can only be done from within HiGHS
SCIP's barrier to entry is high, but once one understands the whole plugin interface structure, it can be very fast to develop a realistically good branch and bound solver for larger or more specialized classes of problems
Mathieu Besançon
@matbesancon
in a talk at the SCIP workshop, there was an observation that OR practitioners were massively using commercial solvers in the last years, and more than before in proportion. The performance gap might explain a bit, but people also seem to value a lot being able to adapt the process with their own cutting planes and heuristics, even though they cannot analyze how they are processed by the solver
Chris Coey
@chriscoey
hey @matbesancon and @rschwarz, thanks so much for the info - that's very helpful
Mathieu Besançon
@matbesancon
one of the things I want a good implementation of is this relaxation handler: scipopt/SCIP.jl#251
basically lets you do arbitrary branch and bound with different relaxations at the nodes (other than the LP one)
Oscar Dowson
@odow
@/all a reminder that we have a nonlinear call, tomorrow Wednesday 9th at 2pm Eastern. Please ping me for an invite if you don't already have one. I've gotten side-tracked from our nonlinear expression work to re-factor how MutableArithmetics rewrites expressions: jump-dev/MutableArithmetics.jl#170
Carleton Coffrin
@ccoffrin
Random thought, should set_optimizer_attribiute be defined for objects of type OptimizerWithAttributes, similarly to how it works for the type Model?
Oscar Dowson
@odow
Potentially. I don't think we've thought about it. Open an issue?
Oscar Dowson
@odow
Probably should be in MOI, for set(::OptimizerWithAttributes, ::RawOptimizerAttribute, value)
tianxiandoudou1
@tianxiandoudou1
Hello, I intend to call the multi-objective optimization function of Gurobi, and I used convex.jl for modeling, but I don't know how to operate it.The documentation provides python modeling methods, such as MODEL.setObjectiveN(expression, index, priority=0, weight=1.0, abstol=0, reltol=0, name="). But I could not find any method to use convex.jl for modeling, so I don't know where to find the data, what should I do?thank you very much.
Oscar Dowson
@odow
Convex.jl does not support multi-objective optimization, and there are no work-arounds to access the lower-level of the Gurobi API.
JuMP has limited support for the multi-objective interface to Gurobi: https://discourse.julialang.org/t/gurobi-not-using-barrier-method/68078/7?u=odow. Improving that is on our roadmap: jump-dev/JuMP.jl#2099
Oscar Dowson
@odow
@/all JuliaCon opened submissions early this year to give people more time to apply for visas. That means we need to sort out what we want to do for JuMP-dev ASAP. If you want to help out on the organizing committee, please fill out https://doodle.com/meeting/participate/id/dBN2BKQd so we can have a call to discuss some options. Here's some of the backstory: jump-dev/jump-dev.github.io#90.
2 replies
Oscar Dowson
@odow
@/all a reminder that we have postponed our monthly meeting until December 8 because today is Thanksgiving (happy Thanksgiving!)
Joaquim Dias Garcia
@joaquimg
And because of Brazil’s match XD
Benoît Legat
@blegat
@joaquimg should we invite Richarlison to JuMP-dev?
Carleton Coffrin
@ccoffrin
@odow, I was digging into what was going on with these failures
It seems like the latest version of HiGHS returns result_count > 0 when the primal_status is NO_SOLUTION. possibly because the dual_status is INFEASIBILITY_CERTIFICATE
I am wondering if this is a bug in the semantics of HiGHS or how I have implemented this function, https://github.com/lanl-ansi/InfrastructureModels.jl/blob/master/src/core/solution.jl#L2-L31
Oscar Dowson
@odow
The problem is your function. A result count > 0 does not mean that there is a feasible primal solution available. See https://jump.dev/MathOptInterface.jl/stable/reference/models/#MathOptInterface.ResultCount. You should probably check primal_status(aim.model) == MOI.FEASIBLE_POINT instead.
Carleton Coffrin
@ccoffrin
Sounds good. This is a good sign then, the bug was hidden I guess because other solvers we were testing with in the past did not produce INFEASIBILITY_CERTIFICATE
Carleton Coffrin
@ccoffrin
@odow, I was looking into the fix for this and came around to thinking the the current semantics of InfrastructureModels is correct. The core idea is, if any kind of solution exists, we want to pass that info on to the user. It is the user's job in PowerModels (and similar) to interpret what that solution means based on the MOI status codes.
So I am going to update the PowerModels tests to better reflect the user's responsibility to check the status codes.
Oscar Dowson
@odow
:+1: that sounds like the right approach
Harsha Nagarajan
@harshangrjn
A question which is probably already answered in here: Does HiGHS support lazy callback and user callback for MIPs? (unlike Cbc)
Harsha Nagarajan
@harshangrjn
Looks like, it doesn't yet: ERROR: LoadError: MathOptInterface.UnsupportedAttribute{MathOptInterface.LazyConstraintCallback}: Attribute MathOptInterface.LazyConstraintCallback() is not supported by the model.
Is this by chance in the road map to be supported? :)
2 replies
Oscar Dowson
@odow
@/all two reminders: We will be holding JuMP-dev 2023 in conjunction with JuliaCon. See https://jump.dev/meetings/jumpdev2023/ for details and talk submissions.
Second, we have a monthly developer call this Thursday, 8 December at 2pm Eastern. This is a re-scheduled time to avoid Thanksgiving and Christmas. Your calendar invites should have been updated.