Skip to content

Commit 3fe3c19

Browse files
authored
Extract set instead of caching it (#6)
* Extract set instead of caching it * Fix * Fix
1 parent 0d43183 commit 3fe3c19

1 file changed

Lines changed: 12 additions & 11 deletions

File tree

src/bridge.jl

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,17 @@ from the iterators for each combination and converts each expanded expression
1515
to the type `F` declared by the `FunctionGenerator{F}` type parameter.
1616
If the expanded expression cannot be converted to `F`, an error is thrown.
1717
"""
18-
struct FunctionGeneratorBridge{T,F,S,VS<:MOI.Utilities.VectorLinearSet} <:
19-
MOI.Bridges.Constraint.AbstractBridge
18+
struct FunctionGeneratorBridge{T,F,S} <: MOI.Bridges.Constraint.AbstractBridge
2019
constraints::Vector{MOI.ConstraintIndex{F,S}}
2120
func::FunctionGenerator{F}
22-
set::VS
2321
end
2422

2523
function MOI.Bridges.Constraint.bridge_constraint(
26-
::Type{FunctionGeneratorBridge{T,F,S,VS}},
24+
::Type{FunctionGeneratorBridge{T,F,S}},
2725
model::MOI.ModelLike,
2826
func::FunctionGenerator{F},
29-
set::VS,
30-
) where {T,F,S,VS<:MOI.Utilities.VectorLinearSet}
27+
set::MOI.Utilities.VectorLinearSet,
28+
) where {T,F,S}
3129
scalar_set = S(zero(T))
3230
constraints = MOI.ConstraintIndex{F,S}[]
3331
sizes = Tuple(length.(func.iterators))
@@ -44,7 +42,7 @@ function MOI.Bridges.Constraint.bridge_constraint(
4442
)
4543
push!(constraints, ci)
4644
end
47-
return FunctionGeneratorBridge{T,F,S,VS}(constraints, func, set)
45+
return FunctionGeneratorBridge{T,F,S}(constraints, func)
4846
end
4947

5048
function MOI.supports_constraint(
@@ -61,7 +59,7 @@ function MOI.Bridges.Constraint.concrete_bridge_type(
6159
VS::Type{<:MOI.Utilities.VectorLinearSet},
6260
) where {T,F}
6361
S = MOI.Utilities.scalar_set_type(VS, T)
64-
return FunctionGeneratorBridge{T,F,S,VS}
62+
return FunctionGeneratorBridge{T,F,S}
6563
end
6664

6765
function MOI.Bridges.added_constraint_types(
@@ -101,9 +99,12 @@ end
10199
function MOI.get(
102100
::MOI.ModelLike,
103101
::MOI.ConstraintSet,
104-
bridge::FunctionGeneratorBridge,
105-
)
106-
return bridge.set
102+
bridge::FunctionGeneratorBridge{T,F,S},
103+
) where {T,F,S}
104+
return MOI.Utilities.set_with_dimension(
105+
MOI.Utilities.vector_set_type(S),
106+
length(bridge.constraints),
107+
)
107108
end
108109

109110
function MOI.delete(model::MOI.ModelLike, bridge::FunctionGeneratorBridge)

0 commit comments

Comments
 (0)