Relaxation of Implicit Functions
High-level functions
EAGO.McCormick.implicit_relax_h!
— Function.implicit_relax_h!
Relaxes the implicit function determined by h(x,p)
with x
in X
and p
in P
. The reference point for the affine relaxations is pmid
. The parameters generated from the relaxation at pmid
are param
and the basic parameters of the fixed point method are mc_opt
.
EAGO.McCormick.implicit_relax_fg
— Function.implicit_relax_fg
Relaxes the functions f(x,p)
and g(x,p)
by relaxation the state variable x
using the implicit function determined by h(x,p)
with x
in X
and p
in P
. The reference point for the affine relaxations is pmid
. The parameters generated from the relaxation at pmid
are param
and the basic parameters of the fixed point method are mc_opt
.
EAGO.McCormick.implicit_relax_f
— Function.implicit_relax_f
Relaxes the function f(x,p)
by relaxation the state variable x
using the implicit function determined by h(x,p)
with x
in X
and p
in P
. The reference point for the affine relaxations is pmid
. The parameters generated from the relaxation at pmid
are param
and the basic parameters of the fixed point method are mc_opt
.
Subroutines
EAGO.McCormick.affine_exp!
— Function.affine_exp!
Computates the affine relaxations of the state variable. Inputs are:
x
: State variable relaxationp::Vector{MC{N,T}}
: Decision variable relaxationp_ref::Vector{MC{N,T}}
: Reference variable relaxationxa::Vector{MC{N,T}}
: Lower affine relaxation of the state variablexA::Vector{MC{N,T}}
: Upper affine relaxation of the state variablez::Vector{MC{N,T}}
: Affine function inX
nx
: Number of state variableslambda
: Convex coefficient used to define z as a function ofxa
,xA
Populats the following vectors with results (xa,xA,z)
:
xa::Vector{MC{N,T}}
: Lower affine relaxation of the state variablexA::Vector{MC{N,T}}
: Upper affine relaxation of the state variablez::Vector{MC{N,T}}
: Affine function in X
EAGO.McCormick.correct_exp!
— Function.correct_exp!
Corrects the relaxation of the state variable x_mc
if the affine relaxation, 'z_mc', exceeds the interval bounds xL
or xU
.
z_mc::Vector{MC{N}}
: Affine relaxationx_mc::Vector{MC{N}}
: Relaxation of state variableX::Vector{IntervalType}
: Lower bound on state vectornx::Int64
: Size of the state vectorepsv::Float64
: Tolerance for checking that subgradient exceeds bound
EAGO.McCormick.final_cut
— Function.final_cut
An operator that cuts the x_mc
object using the x_mc_int bounds
in a differentiable or nonsmooth fashion to achieve a composite relaxation within x_mc_int
.
EAGO.McCormick.gen_expansion_params!
— Function.gen_expansion_params!
Generates the relaxations at pref_mc
that can be subsequentially used to compute affine relaxations for use in relaxing the implicit function.
EAGO.McCormick.mc_dense_krawczyk_cw!
— Function.mc_dense_krawczyk_cw!
Performs a single step of the dense-krawczyk componentwise parametric method after the inputs have been preconditioned.
EAGO.McCormick.mc_dense_newton_gs!
— Function.mc_dense_newton_gs!
Performs a single step of the dense-newton gauss-siedel parametric method after the inputs have been preconditioned.
EAGO.McCormick.pmc_kernel!
— Function.pmc_kernel!
Peforms the following steps in sequence:
- Evaluates the function
h!(H, x, xp, p, t)
in place withx = z_mc
,p = p_mc
,
xp = xp_mc
, t = flt_param
and preconditions H using an interval midpoint preconditioner if precond = true
.
- Evaluates the function
hj!(J, x, xp, p, t)
in place withx = aff_mc
,p = p_mc
,
xp = xp_mc
, t = flt_param
and preconditions J using an interval midpoint preconditioner if precond = true
.
- Lastly, applies a Newton-type contractor method. The parametric GS Newton
contractor if cntr = :Newton
and the componentwise Krawczyk contractor otherwise.