@@ -9,12 +9,12 @@ struct NormSpectralBridge{T, F, G} <: AbstractBridge
9
9
column_dim:: Int # column dimension of X
10
10
psd_index:: CI{F, MOI.PositiveSemidefiniteConeTriangle}
11
11
end
12
- function bridge_constraint (:: Type{NormSpectralBridge{T, F, G}} , model:: MOI.ModelLike , f:: MOI.AbstractVectorFunction , s:: MOI.NormSpectralCone ) where {T, F, G}
12
+ function bridge_constraint (:: Type{NormSpectralBridge{T, F, G}} , model:: MOI.ModelLike , f:: G , s:: MOI.NormSpectralCone ) where {T, F, G}
13
13
f_scalars = MOIU. eachscalar (f)
14
14
t = f_scalars[1 ]
15
15
row_dim = s. row_dim
16
16
column_dim = s. column_dim
17
- @assert row_dim <= column_dim # TODO informative error if not
17
+ @assert row_dim <= column_dim
18
18
side_dim = row_dim + column_dim
19
19
psd_set = MOI. PositiveSemidefiniteConeTriangle (side_dim)
20
20
psd_func = MOIU. zero_with_output_dimension (F, MOI. dimension (psd_set))
@@ -48,11 +48,9 @@ MOI.delete(model::MOI.ModelLike, c::NormSpectralBridge) = MOI.delete(model, c.ps
48
48
# Attributes, Bridge acting as a constraint
49
49
function MOI. get (model:: MOI.ModelLike , :: MOI.ConstraintFunction , c:: NormSpectralBridge{T, F, G} ) where {T, F, G}
50
50
psd_func = MOIU. eachscalar (MOI. get (model, MOI. ConstraintFunction (), c. psd_index))
51
- # TODO is it OK to just take the t value from first diagonal index?
52
51
t = psd_func[1 ]
53
52
side_dim = c. row_dim + c. column_dim
54
53
X = psd_func[[trimap (i, j) for j in 1 : c. column_dim for i in (c. column_dim + 1 ): side_dim]]
55
- # TODO need the convert_approx?
56
54
return MOIU. convert_approx (G, MOIU. operate (vcat, T, t, X))
57
55
end
58
56
MOI. get (model:: MOI.ModelLike , :: MOI.ConstraintSet , c:: NormSpectralBridge ) = MOI. NormSpectralCone (c. row_dim, c. column_dim)
@@ -88,11 +86,11 @@ struct NormNuclearBridge{T, F, G, H} <: AbstractBridge
88
86
ge_index:: CI{F, MOI.GreaterThan{T}}
89
87
psd_index:: CI{G, MOI.PositiveSemidefiniteConeTriangle}
90
88
end
91
- function bridge_constraint (:: Type{NormNuclearBridge{T, F, G, H}} , model:: MOI.ModelLike , f:: MOI.AbstractVectorFunction , s:: MOI.NormNuclearCone ) where {T, F, G, H}
89
+ function bridge_constraint (:: Type{NormNuclearBridge{T, F, G, H}} , model:: MOI.ModelLike , f:: H , s:: MOI.NormNuclearCone ) where {T, F, G, H}
92
90
f_scalars = MOIU. eachscalar (f)
93
91
row_dim = s. row_dim
94
92
column_dim = s. column_dim
95
- @assert row_dim <= column_dim # TODO informative error if not
93
+ @assert row_dim <= column_dim
96
94
side_dim = row_dim + column_dim
97
95
U_dim = div (column_dim * (column_dim + 1 ), 2 )
98
96
V_dim = div (row_dim * (row_dim + 1 ), 2 )
0 commit comments