Relaxation Schemes
In the literature this constraints are called the Lifted Nonlinear Cuts (LNCs)
PowerModels.relaxation_complex_product
— Method.constraint: c^2 + d^2 <= a*b
c^2 + d^2 <= a*b*getupperbound(z)
c^2 + d^2 <= getupperbound(a)*b*getupperbound(z)
c^2 + d^2 <= a*getupperbound(b)*z
PowerModels.relaxation_cos
— Method.general relaxation of a cosine term, in -pi/2 to pi/2
PowerModels.relaxation_cos_on_off
— Method.general relaxation of a cosine term, in -pi/2 to pi/2
PowerModels.relaxation_equality_on_off
— Method.x - getupperbound(x)*(1-z) <= y <= x - getlowerbound(x)*(1-z)
PowerModels.relaxation_product
— Method.general relaxation of binlinear term (McCormick)
z >= getlowerbound(x)*y + getlowerbound(y)*x - getlowerbound(x)*getlowerbound(y)
z >= getupperbound(x)*y + getupperbound(y)*x - getupperbound(x)*getupperbound(y)
z <= getlowerbound(x)*y + getupperbound(y)*x - getlowerbound(x)*getupperbound(y)
z <= getupperbound(x)*y + getlowerbound(y)*x - getupperbound(x)*getlowerbound(y)
PowerModels.relaxation_product_on_off
— Method.On/Off variant of binlinear term (McCormick) requires that all variables (x,y,z) go to zero with ind
PowerModels.relaxation_sin
— Method.general relaxation of a sine term, in -pi/2 to pi/2
PowerModels.relaxation_sin_on_off
— Method.general relaxation of a sine term, in -pi/2 to pi/2
PowerModels.relaxation_sqr
— Method.general relaxation of a square term
x^2 <= y <= (getupperbound(x)+getlowerbound(x))*x - getupperbound(x)*getlowerbound(x)
PowerModels.relaxation_trilinear
— Method.convex hull relaxation of trilinear term
w₁ = getlowerbound(x)*getlowerbound(y)*getlowerbound(z)
w₂ = getlowerbound(x)*getlowerbound(y)*getupperbound(z)
w₃ = getlowerbound(x)*getupperbound(y)*getlowerbound(z)
w₄ = getlowerbound(x)*getupperbound(y)*getupperbound(z)
w₅ = getupperbound(x)*getlowerbound(y)*getlowerbound(z)
w₆ = getupperbound(x)*getlowerbound(y)*getupperbound(z)
w₇ = getupperbound(x)*getupperbound(y)*getlowerbound(z)
w₈ = getupperbound(x)*getupperbound(y)*getupperbound(z)
w = λ₁*w₁ + λ₂*w₂ + λ₃*w₃ + λ₄*w₄ + λ₅*w₅ + λ₆*w₆ + λ₇*w₇ + λ₈*w₈
x = (λ₁ + λ₂ + λ₃ + λ₄)*getlowerbound(x) + (λ₅ + λ₆ + λ₇ + λ₈)*getupperbound(x)
y = (λ₁ + λ₂ + λ₅ + λ₆)*getlowerbound(x) + (λ₃ + λ₄ + λ₇ + λ₈)*getupperbound(x)
z = (λ₁ + λ₃ + λ₅ + λ₇)*getlowerbound(x) + (λ₂ + λ₄ + λ₆ + λ₈)*getupperbound(x)
λ₁ + λ₂ + λ₃ + λ₄ + λ₅ + λ₆ + λ₇ + λ₈ = 1