-
Notifications
You must be signed in to change notification settings - Fork 97
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