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_fgRelaxes 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_fRelaxes 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 inXnx: 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_cutAn 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.