Skip to content

Commit 13f19e5

Browse files
committed
Switch from Assignment[] to Equation[]
Assignment[] and Equation[] do the same thing, and the structs AssignmentPair and AssignmentQuad ended up not being useful. Why not switch to Equation[] to be consistent with ModelingToolkit?
1 parent 4d9cc94 commit 13f19e5

File tree

6 files changed

+135
-131
lines changed

6 files changed

+135
-131
lines changed

src/SourceCodeMcCormick.jl

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,17 @@ abstract type AbstractTransform end
88
# ADD documentation for generic function here
99
function transform_rule end
1010

11-
struct AssignmentPair
12-
l::Assignment
13-
u::Assignment
14-
end
11+
# struct AssignmentPair
12+
# l::Assignment
13+
# u::Assignment
14+
# end
1515

16-
struct AssignmentQuad
17-
l::Assignment
18-
u::Assignment
19-
cv::Assignment
20-
cc::Assignment
21-
end
16+
# struct AssignmentQuad
17+
# l::Assignment
18+
# u::Assignment
19+
# cv::Assignment
20+
# cc::Assignment
21+
# end
2222

2323
include(joinpath(@__DIR__, "interval", "interval.jl"))
2424
include(joinpath(@__DIR__, "relaxation", "relaxation.jl"))

src/interval/rules.jl

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,39 +9,39 @@ using IfElse
99
Unitary Rules
1010
=#
1111
function transform_rule(::IntervalTransform, nothing, yL, yU, xL, xU)
12-
rl = Assignment(yL, xL)
13-
ru = Assignment(yU, xU)
14-
AssignmentPair(rl, ru)
12+
rl = Equation(yL, xL)
13+
ru = Equation(yU, xU)
14+
return rl, ru
1515
end
1616
function transform_rule(::IntervalTransform, ::typeof(exp), yL, yU, xL, xU)
17-
rl = Assignment(yL, exp(xL))
18-
ru = Assignment(yU, exp(xU))
17+
rl = Equation(yL, exp(xL))
18+
ru = Equation(yU, exp(xU))
1919
return rl, ru
2020
end
2121

2222
#=
2323
Binary Rules
2424
=#
2525
function transform_rule(::IntervalTransform, ::typeof(+), zL, zU, xL, xU, yL, yU)
26-
rl = Assignment(zL, xL + yL)
27-
ru = Assignment(zU, xU + yU)
26+
rl = Equation(zL, xL + yL)
27+
ru = Equation(zU, xU + yU)
2828
return rl, ru
2929
end
3030
function transform_rule(::IntervalTransform, ::typeof(-), zL, zU, xL, xU, yL, yU)
31-
rl = Assignment(zL, xL - yU)
32-
ru = Assignment(zU, xU - yL)
31+
rl = Equation(zL, xL - yU)
32+
ru = Equation(zU, xU - yL)
3333
return rl, ru
3434
end
3535
function transform_rule(::IntervalTransform, ::typeof(*), zL, zU, xL, xU, yL, yU)
36-
rl = Assignment(zL, IfElse.ifelse(yL >= 0.0,
36+
rl = Equation(zL, IfElse.ifelse(yL >= 0.0,
3737
IfElse.ifelse(xL >= 0.0, xL*yL,
3838
IfElse.ifelse(xU <= 0.0, xL*yU, xL*yU)),
3939
IfElse.ifelse(yU <= 0.0,
4040
IfElse.ifelse(xL >= 0.0, xU*yL,
4141
IfElse.ifelse(xU <= 0.0, xU*yU, xU*yL)),
4242
IfElse.ifelse(xL > 0.0, xU*yL,
4343
IfElse.ifelse(xU < 0.0, xL*yU, min(xU*yL, xU*yU))))))
44-
ru = Assignment(zU, IfElse.ifelse(yL >= 0.0,
44+
ru = Equation(zU, IfElse.ifelse(yL >= 0.0,
4545
IfElse.ifelse(xL >= 0.0, xU*yU,
4646
IfElse.ifelse(xU <= 0.0, xU*yL, xU*yU)),
4747
IfElse.ifelse(yU <= 0.0,
@@ -54,13 +54,13 @@ end
5454

5555

5656
function transform_rule(::IntervalTransform, ::typeof(min), zL, zU, xL, xU, yL, yU)
57-
rl = Assignment(zL, min(xL, yL))
58-
ru = Assignment(zU, min(xU, yU))
57+
rl = Equation(zL, min(xL, yL))
58+
ru = Equation(zU, min(xU, yU))
5959
return rl, ru
6060
end
6161
function transform_rule(::IntervalTransform, ::typeof(max), zL, zU, xL, xU, yL, yU)
62-
rl = Assignment(zL, max(xL, yL))
63-
ru = Assignment(zU, max(xU, yU))
62+
rl = Equation(zL, max(xL, yL))
63+
ru = Equation(zU, max(xU, yU))
6464
return rl, ru
6565
end
6666

src/relaxation/rules.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,25 @@ Unitary Rules
2727
function transform_rule(::McCormickTransform, ::typeof(exp), yL, yU, ycv, ycc, xL, xU, xcv, xcc)
2828
mcv = mid_expr(xcv, xcc, xL)
2929
mcc = mid_expr(xcv, xcc, xU)
30-
rcv = Assignment(ycv, exp(mcv))
31-
rcc = Assignment(ycc, line_expr(mcc, xL, xU, yL, yU))
30+
rcv = Equation(ycv, exp(mcv))
31+
rcc = Equation(ycc, line_expr(mcc, xL, xU, yL, yU))
3232
return rcv, rcc
3333
end
3434

3535
#=
3636
Binary Rules
3737
=#
3838
function transform_rule(::McCormickTransform, ::typeof(+), zL, zU, zcv, zcc, xL, xU, xcv, xcc, yL, yU, ycv, ycc)
39-
rcv = Assignment(zcv, xcv + ycv)
40-
rcc = Assignment(zcc, xcc + ycc)
39+
rcv = Equation(zcv, xcv + ycv)
40+
rcc = Equation(zcc, xcc + ycc)
4141
return rcv, rcc
4242
end
4343

4444

4545
# Rules for multiplication adapted from:
4646
# https://github.com/PSORLab/McCormick.jl/blob/master/src/forward_operators/multiplication.jl
4747
function transform_rule(::McCormickTransform, ::typeof(*), zL, zU, zcv, zcc, xL, xU, xcv, xcc, yL, yU, ycv, ycc)
48-
rcv = Assignment(zcv, IfElse.ifelse(xL >= 0.0,
48+
rcv = Equation(zcv, IfElse.ifelse(xL >= 0.0,
4949
IfElse.ifelse(yL >= 0.0, max(yU*xcv + xU*ycv - xU*yU, yL*xcv + xL*ycv - xL*yL),
5050
IfElse.ifelse(yU <= 0.0, -max((-yU)*xcv + xU*(-ycv) - xU*(-yU), (-yL)*xcv + xL*(-ycv) - xL*(-yL)),
5151
max(yU*xcv + xU*ycv - xU*yU, yL*xcc + xL*ycv - xL*yL))),
@@ -56,7 +56,7 @@ function transform_rule(::McCormickTransform, ::typeof(*), zL, zU, zcv, zcc, xL,
5656
IfElse.ifelse(yL >= 0.0, max(xU*ycv + yU*xcv - yU*xU, xL*ycc + yL*xcv - yL*xL),
5757
IfElse.ifelse(yU <= 0.0, -max(xU*(-ycv) + (-yU)*xcv - (-yU)*xU, xL*(-ycc) + (-yL)*xcv - (-yL)*xL),
5858
max(yU*xcv + xU*ycv - xU*yU, yL*xcc + xL*ycc - xL*yL))))))
59-
rcc = Assignment(zcc, IfElse.ifelse(xL >= 0.0,
59+
rcc = Equation(zcc, IfElse.ifelse(xL >= 0.0,
6060
IfElse.ifelse(yL >= 0.0, min(yL*xcc + xU*ycc - xU*yL, yU*xcc + xU*ycc - xL*yU),
6161
IfElse.ifelse(yU <= 0.0, -min((-yL)*xcc + xU*(-ycc) - xU*(-yL), (-yU)*xcc + xU*(-ycc) - xL*(-yU)),
6262
min(yL*xcv + xU*ycc - xU*yL, yU*xcc + xL*ycc - xL*yU))),

0 commit comments

Comments
 (0)