-
Notifications
You must be signed in to change notification settings - Fork 94
Closed
Labels
Submodule: BridgesAbout the Bridges submoduleAbout the Bridges submodule
Description
When a VectorOfVariables
-in-Zeros
constraint gets added, for example:
MathOptInterface.jl/src/Test/test_conic.jl
Lines 298 to 299 in e9b1f4a
if use_VectorOfVariables | |
vs = MOI.add_constraint(model, vov, MOI.Zeros(1)) |
It may get bridged by
MathOptInterface.jl/src/Bridges/Variable/zeros.jl
Lines 1 to 17 in e9b1f4a
""" | |
ZerosBridge{T} <: Bridges.Variable.AbstractBridge | |
Transforms constrained variables in [`MathOptInterface.Zeros`](@ref) to zeros, | |
which ends up creating no variables in the underlying model. | |
The bridged variables are therefore similar to parameters with zero values. | |
Parameters with non-zero value can be created with constrained variables in | |
[`MOI.EqualTo`](@ref) by combining a [`VectorizeBridge`](@ref) and this bridge. | |
The functions cannot be unbridged, given a function, we cannot determine, if | |
the bridged variables were used. | |
The dual values cannot be determined by the bridge but they can be determined | |
by the bridged optimizer using [`MathOptInterface.Utilities.get_fallback`](@ref) | |
if a `CachingOptimizer` is used (since `ConstraintFunction` cannot be got | |
as functions cannot be unbridged). | |
""" |
The lack of dual variables causes problems in ECOS and Clp:
- https://github.com/jump-dev/Clp.jl/runs/5369296666?check_suite_focus=true
- Implement MOI.default_cache ECOS.jl#137 (comment)
The solution is just to remove the bridge. In what cases is it actually useful? I get that it can make some formulations simpler, but which ones? Why not just add the extra variables?
Metadata
Metadata
Assignees
Labels
Submodule: BridgesAbout the Bridges submoduleAbout the Bridges submodule