Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 16:04
    Uroc327 commented #1241
  • 10:26
    blegat opened #1227
  • 10:26

    blegat on custom_shell

    Simplify documentation GH actio… (compare)

  • Jan 14 22:46
    dourouc05 edited #2227
  • Jan 14 22:45
    dourouc05 commented #2227
  • Jan 14 08:14
    blegat commented #1223
  • Jan 14 00:02
    odow transferred #2429
  • Jan 14 00:02
    odow commented #2429
  • Jan 13 23:25
    odow labeled #2425
  • Jan 13 23:14
    pulsipher opened #2429
  • Jan 13 20:09
    Wikunia commented #1223
  • Jan 13 19:27

    odow on gh-pages

    build based on 24d1316 (compare)

  • Jan 13 19:20
    odow edited #2426
  • Jan 13 19:19
    odow edited #2426
  • Jan 13 19:18

    odow on master

    Fix printing of variable names … (compare)

  • Jan 13 19:18

    odow on var_print

    (compare)

  • Jan 13 19:18
    odow closed #2423
  • Jan 13 19:18
    odow closed #2422
  • Jan 13 14:04
    blegat commented #1223
  • Jan 13 10:23
    Wikunia commented #1223
BridgingBot
@GitterIRCbot
[slack] <mtanneau> I wouldn’t be surprised if solver companies were accommodating to non-profit as well.
[slack] <pure_interpeter> Mhh, i guess i will write with them didn't dear to ask.
[slack] <pure_interpeter> This problem seems very different from what i have in mind. Mine is an relaxation of balanced Minimum Cut with additional conditions.
BridgingBot
@GitterIRCbot
[slack] <pure_interpeter> I am not sure what you are trying to tell me with this link.
BridgingBot
@GitterIRCbot
[slack] <mtanneau> It was a supporting argument: the last answer is from LocalSolver and says “LocalSolver is a commercial product but if you're interested to use it for free to solve this problem, you will be welcome”.
BridgingBot
@GitterIRCbot
[slack] <pure_interpeter> Ah, thanks i wasn't aware of that.
BridgingBot
@GitterIRCbot
[slack] <pure_interpeter> Is there a place for a place where we can list solver not yet tied to JuMP and discuss their merit (for example an GitHub issue documentation file)?
Oscar Dowson
@odow
This channel is an appropriate place to discuss solvers you want to add a JuMP interface to. (I recently clarified this in the documentation. See the note at the bottom of this section: https://jump.dev/JuMP.jl/dev/installation/#Supported-solvers)
BridgingBot
@GitterIRCbot
[slack] <matbesancon> @pure_interpeter I'm a bit late to the party, but another important aspect is that for many problems, proving optimality is what takes a lot of time, an optimal solution has often been found early in the MILP solution process. So with large enough tolerance gaps, this means you will get high quality solutions (often the best one)
BridgingBot
@GitterIRCbot
[slack] <pure_interpeter> There is no being late to the party.
BridgingBot
@GitterIRCbot
[slack] <ExpandingMan> that may not even be the case for all I know, but I do know that academic licenses are a very common thing, and if you go to a website they will have buttons for you to click on that say "academic", but if any of them offer anything for non-profits, I wouldn't even know how to find that out. Who knows, might be worth contacting someone
BridgingBot
@GitterIRCbot
[slack] <pure_interpeter> Is there any reasonable explanation why the same ILP problem has two differently good optimas between Gurobi and CBC?
Ok it is just CBC being drunk. CBC gives a different answer (but saying "Optimal solution found.") while Gurobi always gives the same.
BridgingBot
@GitterIRCbot

[slack] <mtanneau> If they have significantly different objective values, there's a problem.

Gurobi should be run-to-run deterministic, i.e., for the same problem on the same machine, it will return the same answer. That may not be true if, e.g., a time limit is hit (because there is randomness in computing times) or a non-deterministic concurrent optimizer is used.

I don't know whether Cbc is also deterministic. If you use multiple threads or you hit a time limit then it's possible that it's not.

BridgingBot
@GitterIRCbot
[slack] <pure_interpeter> I did ran multi-threaded but there was no time-limit on CBC.
The run-to-run difference with CBC was >10% of the gurobi objective.
[slack] <mtanneau> Then check the validity of both solutions (the solvers may have different tolerances).
Whichever reports an invalid result has a bug 🤷
BridgingBot
@GitterIRCbot
[slack] <pure_interpeter> Yeah I blame CBC because it comes up with different solutions everytime i run it (i mean that by run-to-run difference).
Miles Lubin
@mlubin
@/all Reminder: The monthly developer call will be tomorrow (Thursday) at 2pm US Eastern time on Zoom. Ping me or @odow for an invite.
Ole Kröger
@Wikunia

One small question about the bridges I mentioned yesterday. I was able to simply use the FlipSignBridge for strictly greater than -> strictly less than constraints. Thanks for that. I currently run into a problem when I want to use GreaterThan inside an indicator constraint. The _build_indicator_constraint doesn't exist:

MethodError: no method matching _build_indicator_constraint(::JuMP.var"#_error#68"{Symbol}, ::VariableRef, ::BridgeableConstraint{ScalarConstraint{GenericAffExpr{Float64,VariableRef},ConstraintSolver.GreaterThan{Float64}},UnionAll}, ::Type{MathOptInterface.IndicatorSet{MathOptInterface.ACTIVATE_ON_ONE,S} where S<:MathOptInterface.AbstractScalarSet})

I hoped it would call the indicator constraint with just the already briged ScalarConstraint as a type as

_build_indicator_constraint(
    _error::Function, variable::AbstractVariableRef,
    constraint::ScalarConstraint, ::Type{MOI.IndicatorSet{A}})

exists. How does this currently work with bridges?

Joey Huchette
@joehuchette
I would like to build an MOI model with a collection of variables constrained to lie in Intervals. I would then like to modify some of the values of the upper/lower bounds in these intervals. Is there a straightforward way to do this using modify or something similar? Or do I need to use delete! and then re-add?
Joaquim Dias Garcia
@joaquimg
If the ser type is the same (Interval) you can just:
MOI.set(model, MOI.ConstraintSet(), ci, MOI.Interval{Float64}(lb, ub))
Joey Huchette
@joehuchette
Perfect, thank you
Benoît Legat
@blegat
BridgeableConstraint is not an AbstractScalarConstraint
We should add
function _build_indicator_constraint(
    _error::Function, variable::AbstractVariableRef,
    constraint::BridgeableConstraint, I::Type{MOI.IndicatorSet{A}}) where A
    return BridgeableConstraint(
        _build_indicator_constraint(_error, variable, constraint.constraint, I),
        constraint.bridge_type
    )
end
Ole Kröger
@Wikunia
Thanks @blegat I think I'm making progress. One more question. If I want to add a completely new bridge: How do I call JuMP.add_bridge ? That needs the ::Model but I only know ::AbstractOptimizer (my own solver structure) Do I get the model somewhere?
Ole Kröger
@Wikunia
If I would build my own bridge for my own type I could use JuMP.build_constraint but currently I would like to bridge IndicatorSet{A,GreaterThan} to IndicatorSet{A,LessThan}(so I don't own the type)
Ole Kröger
@Wikunia
Or is the correct way to use a LazyBridgeOptimizer?
Mathieu Besançon
@matbesancon
if some people are interested, I wrote two quick posts on set distances and projections here:
If interested, I just wrote about some basics of the package here:
http://matbesancon.github.io/post/2020-12-23-chains_sets/
and here
http://matbesancon.github.io/post/2020-12-24-chains_sets2/
the second post covers ChainRules integration and derivatives
Benoît Legat
@blegat
@Wikunia it seems a proper solution would need jump-dev/MathOptInterface.jl#666
Joey Huchette
@joehuchette
Was there a conscious decision to omit a Real <: AbstractScalarSet from MOI? If so, why?
Miles Lubin
@mlubin
It's not a particularly natural set for any solver. If you're looking for the dual of the zeros cone, see Reals.
Joey Huchette
@joehuchette
I'm sketching out a way to model disjunctions through MOI and it would be useful for what I'm currently thinking. Would there be resistance to a PR adding Real to MOI?
Miles Lubin
@mlubin
Can the same functionality be covered by an interval [-Inf, Inf]?
Joey Huchette
@joehuchette
It would be functionally the same, though a bit uglier. Still trying to work out how much I care about that, though.
Benoît Legat
@blegat
Why does it need to be a scalar set? To be used with indicator?
Joey Huchette
@joehuchette
My thought was to create a vector set by stacking some number of scalar sets together
but I'm rethinking the design a bit
I just found it a bit odd there was no scalar counterpart
Ole Kröger
@Wikunia
One more question about bridges: Why does one need to define an inverse_map_set ? Under what circumstances is that called? i.e in the GreaterToLessBridge one wants the map_set when going from >= to <=, right? For the other way we have the LessToGreaterBridge if I'm not mistaken. Is it used for dual variables?
Benoît Legat
@blegat
Getting primal solution and primal start
Getting function
By primal solution, I mean MOI.ConstraintPrimal
These operations are not use extensively so if you don't define the inverse map, you might not notice it directly
Ole Kröger
@Wikunia
Great thanks! @blegat
Ole Kröger
@Wikunia
It's possible to get the name of a variable by the VariableIndex, correct? I see the set and get VariableName methods but don't see where the set method is called as it isn't in my case. I allow copy_names and I have the supports function for it. Anything I'm missing?