Skip to content

Commit ead2edd

Browse files
committed
add spec/nuc cones to MOF
1 parent 6498687 commit ead2edd

File tree

5 files changed

+55
-5
lines changed

5 files changed

+55
-5
lines changed

src/FileFormats/MOF/MOF.jl

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,11 @@ MOI.Utilities.@model(InnerModel,
3030
(MOI.EqualTo, MOI.GreaterThan, MOI.LessThan, MOI.Interval,
3131
MOI.Semicontinuous, MOI.Semiinteger),
3232
(MOI.Reals, MOI.Zeros, MOI.Nonnegatives, MOI.Nonpositives,
33-
MOI.SecondOrderCone, MOI.RotatedSecondOrderCone,
34-
MOI.GeometricMeanCone,
33+
MOI.SecondOrderCone, MOI.RotatedSecondOrderCone, MOI.GeometricMeanCone, MOI.ExponentialCone, MOI.DualExponentialCone, MOI.NormOneCone,
34+
MOI.NormInfinityCone, MOI.NormSpectralCone, MOI.NormNuclearCone,
3535
MOI.RootDetConeTriangle, MOI.RootDetConeSquare,
3636
MOI.LogDetConeTriangle, MOI.LogDetConeSquare,
37-
MOI.PositiveSemidefiniteConeTriangle, MOI.PositiveSemidefiniteConeSquare,
38-
MOI.ExponentialCone, MOI.DualExponentialCone, MOI.NormOneCone,
39-
MOI.NormInfinityCone),
37+
MOI.PositiveSemidefiniteConeTriangle, MOI.PositiveSemidefiniteConeSquare),
4038
(MOI.PowerCone, MOI.DualPowerCone, MOI.SOS1, MOI.SOS2),
4139
(Nonlinear,),
4240
(MOI.ScalarAffineFunction, MOI.ScalarQuadraticFunction),

src/FileFormats/MOF/read.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,8 @@ end
307307
set_info(::Type{Val{:GeometricMeanCone}}) = (MOI.GeometricMeanCone, "dimension")
308308
set_info(::Type{Val{:NormOneCone}}) = (MOI.NormOneCone, "dimension")
309309
set_info(::Type{Val{:NormInfinityCone}}) = (MOI.NormInfinityCone, "dimension")
310+
set_info(::Type{Val{:NormSpectralCone}}) = (MOI.NormSpectralCone, "row_dim", "column_dim")
311+
set_info(::Type{Val{:NormNuclearCone}}) = (MOI.NormNuclearCone, "row_dim", "column_dim")
310312
function set_info(::Type{Val{:RootDetConeTriangle}})
311313
return MOI.RootDetConeTriangle, "side_dimension"
312314
end

src/FileFormats/MOF/v0.4.0.json

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -812,6 +812,40 @@
812812
"minimum": 2
813813
}
814814
}
815+
}, {
816+
"description": "(t, X) ∈ {R^{1+row_dim×column_dim}: t ≥ σ₁(X)}",
817+
"examples": ["{\"head\": \"NormSpectralCone\", \"row_dim\": 1, \"column_dim\": 2}"],
818+
"required": ["row_dim", "column_dim"],
819+
"properties": {
820+
"head": {
821+
"const": "NormSpectralCone"
822+
},
823+
"row_dim": {
824+
"type": "integer",
825+
"minimum": 1
826+
},
827+
"column_dim": {
828+
"type": "integer",
829+
"minimum": 1
830+
}
831+
}
832+
}, {
833+
"description": "(t, X) ∈ {R^{1+row_dim×column_dim}: t ≥ σ₁(X)}",
834+
"examples": ["{\"head\": \"NormNuclearCone\", \"row_dim\": 1, \"column_dim\": 2}"],
835+
"required": ["row_dim", "column_dim"],
836+
"properties": {
837+
"head": {
838+
"const": "NormNuclearCone"
839+
},
840+
"row_dim": {
841+
"type": "integer",
842+
"minimum": 1
843+
},
844+
"column_dim": {
845+
"type": "integer",
846+
"minimum": 1
847+
}
848+
}
815849
}]
816850
}
817851
}

src/FileFormats/MOF/write.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,8 @@ head_name(::Type{MOI.ExponentialCone}) = "ExponentialCone"
238238
head_name(::Type{MOI.DualExponentialCone}) = "DualExponentialCone"
239239
head_name(::Type{MOI.NormOneCone}) = "NormOneCone"
240240
head_name(::Type{MOI.NormInfinityCone}) = "NormInfinityCone"
241+
head_name(::Type{MOI.NormSpectralCone}) = "NormSpectralCone"
242+
head_name(::Type{MOI.NormNuclearCone}) = "NormNuclearCone"
241243
head_name(::Type{MOI.RootDetConeTriangle}) = "RootDetConeTriangle"
242244
head_name(::Type{MOI.RootDetConeSquare}) = "RootDetConeSquare"
243245
head_name(::Type{MOI.LogDetConeTriangle}) = "LogDetConeTriangle"

test/FileFormats/MOF/MOF.jl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,20 @@ end
393393
c2: x >= 0.0
394394
""", ["x", "y"], ["c1", "c2"])
395395
end
396+
@testset "NormSpectralCone" begin
397+
test_model_equality("""
398+
variables: x, y, z
399+
minobjective: x
400+
c1: [x, y, z] in NormSpectralCone(1, 2)
401+
""", ["x", "y", "z"], ["c1"])
402+
end
403+
@testset "NormNuclearCone" begin
404+
test_model_equality("""
405+
variables: x, y, z
406+
minobjective: x
407+
c1: [x, y, z] in NormNuclearCone(1, 2)
408+
""", ["x", "y", "z"], ["c1"])
409+
end
396410
# Clean up
397411
sleep(1.0) # allow time for unlink to happen
398412
rm(TEST_MOF_FILE, force=true)

0 commit comments

Comments
 (0)