Skip to content

Commit 1f4a7bd

Browse files
committed
Refactor Constraint
1 parent ed63b35 commit 1f4a7bd

File tree

3 files changed

+19
-15
lines changed

3 files changed

+19
-15
lines changed

src/constraints/PositiveSemidefiniteConeConstraint.jl

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
1-
mutable struct PositiveSemidefiniteConeConstraint <: Constraint
2-
child::AbstractExpr
3-
size::Tuple{Int,Int}
4-
dual::Union{Value,Nothing}
5-
6-
function PositiveSemidefiniteConeConstraint(child::AbstractExpr)
7-
if child.size[1] != child.size[2]
8-
error("Positive semidefinite expressions must be square")
9-
end
10-
return new(child, child.size, nothing)
1+
const PositiveSemidefiniteConeConstraint = Constraint{MOI.PositiveSemidefiniteConeTriangle}
2+
function set_with_size(::Type{MOI.PositiveSemidefiniteConeTriangle}, sz::Tuple{Int,Int})
3+
if sz[1] != sz[2]
4+
error("Positive semidefinite expressions must be square")
115
end
6+
return MOI.PositiveSemidefiniteConeTriangle(sz[1])
127
end
138

149
head(io::IO, ::PositiveSemidefiniteConeConstraint) = print(io, "sdp")

src/constraints/SecondOrderConeConstraint.jl

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
mutable struct SecondOrderConeConstraint <: Constraint
2-
children::Tuple
3-
dual::Union{Value,Nothing}
1+
const SecondOrderConeConstraint = Constraint{MOI.SecondOrderCone}
42

5-
SecondOrderConeConstraint(args::AbstractExpr...) = new(args, nothing)
3+
function set_with_size(::Type{MOI.SecondOrderCone}, sz::Tuple{Int})
4+
return MOI.SecondOrderCone(sz[1])
65
end
76

87
head(io::IO, ::SecondOrderConeConstraint) = print(io, "soc")

src/expressions.jl

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,17 @@
2828

2929
abstract type AbstractExpr end
3030

31-
abstract type Constraint end
31+
struct Constraint{S<:MOI.AbstractSet}
32+
child::AbstractExpr
33+
set::S
34+
dual::ValueOrNothing
35+
function Constraint(child, set::MOI.AbstractSet)
36+
return new{typeof(set)}(child, set)
37+
end
38+
function Constraint{S}(child) where {S<:MOI.AbstractSet}
39+
return Constraint(child, set_with_size(S, size(child)))
40+
end
41+
end
3242

3343
const Value = Union{Number,AbstractArray}
3444

0 commit comments

Comments
 (0)