Developer-focused chat about JuMP, M̶a̶t̶h̶P̶r̶o̶g̶B̶a̶s̶e̶, MathOptInterface, solver interfaces, and JuMP extensions. Towards JuMP 1.0! Basic usage questions will be answered more quickly at https://discourse.julialang.org/c/domain/opt.
blegat on custom_shell
Simplify documentation GH actio… (compare)
odow on gh-pages
build based on 24d1316 (compare)
odow on master
Fix printing of variable names … (compare)
odow on var_print
[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.
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?
modify
or something similar? Or do I need to use delete!
and then re-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
MOI.ConstraintPrimal