Relaxation of Implicit Functions

Relaxation of Implicit Functions

High-level functions

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.

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.

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

affine_exp!

Computates the affine relaxations of the state variable. Inputs are:

  • x: State variable relaxation
  • p::Vector{MC{N,T}}: Decision variable relaxation
  • p_ref::Vector{MC{N,T}}: Reference variable relaxation
  • xa::Vector{MC{N,T}}: Lower affine relaxation of the state variable
  • xA::Vector{MC{N,T}}: Upper affine relaxation of the state variable
  • z::Vector{MC{N,T}}: Affine function in X
  • nx: Number of state variables
  • lambda: Convex coefficient used to define z as a function of xa, xA

Populats the following vectors with results (xa,xA,z):

  • xa::Vector{MC{N,T}}: Lower affine relaxation of the state variable
  • xA::Vector{MC{N,T}}: Upper affine relaxation of the state variable
  • z::Vector{MC{N,T}}: Affine function in X

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 relaxation
  • x_mc::Vector{MC{N}}: Relaxation of state variable
  • X::Vector{IntervalType}: Lower bound on state vector
  • nx::Int64: Size of the state vector
  • epsv::Float64: Tolerance for checking that subgradient exceeds bound
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.

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.

mc_dense_krawczyk_cw!

Performs a single step of the dense-krawczyk componentwise parametric method after the inputs have been preconditioned.

mc_dense_newton_gs!

Performs a single step of the dense-newton gauss-siedel parametric method after the inputs have been preconditioned.

pmc_kernel!

Peforms the following steps in sequence:

  • Evaluates the function h!(H, x, xp, p, t) in place with x = 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 with x = 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.