Skip to content

Commit b461eca

Browse files
committed
add dual_set for NormCone
1 parent c96c902 commit b461eca

2 files changed

Lines changed: 16 additions & 0 deletions

File tree

src/sets.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -760,6 +760,9 @@ NormCone(set::NormOneCone) = NormCone(1, set.dimension)
760760
NormCone(set::SecondOrderCone) = NormCone(2, set.dimension)
761761
NormCone(set::NormInfinityCone) = NormCone(Inf, set.dimension)
762762

763+
dual_set(s::NormCone) = NormCone(inv(1 - inv(s.p)), s.dimension)
764+
dual_set_type(::Type{NormCone}) = NormCone
765+
763766
"""
764767
GeometricMeanCone(dimension::Int)
765768

test/General/test_sets.jl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,19 @@ function test_sets_dual_norm()
229229
return
230230
end
231231

232+
function test_sets_dual_pnorm()
233+
norminf = MOI.NormCone(Inf, 3)
234+
normone = MOI.NormCone(1.0, 3)
235+
normtwo = MOI.NormCone(2.0, 3)
236+
normfive = MOI.NormCone(5.0, 3)
237+
normfivedual = MOI.NormCone(1.25, 3)
238+
_dual_set_test(normone, norminf)
239+
_self_dual_set_test(normtwo)
240+
@test MOI.dual_set(normfive).p normfivedual.p
241+
@test MOI.dual_set(normfivedual).p normfive.p
242+
return
243+
end
244+
232245
function test_sets_dual_soc()
233246
soc2 = MOI.SecondOrderCone(2)
234247
soc3 = MOI.SecondOrderCone(3)

0 commit comments

Comments
 (0)