Relaxation of Implicit Functions

High-Level Functions

McCormick.implicit_relax_h!Function
implicit_relax_h!(d)
implicit_relax_h!(d, interval_bnds)

Compute relaxations of x(p) defined by h(x,p) = 0 where h is specifed as h(out, x, p).

source

Data Structures

McCormick.NewtonGSType
struct NewtonGS <: McCormick.AbstractContractorMC

The Gauss-Seidel implementation of the Newton contractor used in the implicit relaxation scheme.

source
McCormick.KrawczykCWType
struct KrawczykCW <: McCormick.AbstractContractorMC

The componentwise implementation of the Krawczyk contractor used in the implicit relaxation scheme.

source
McCormick.DenseMidInvType
struct DenseMidInv{S<:VecOrMat{Float64}} <: McCormick.AbstractPreconditionerMC

A dense LU preconditioner for implicit McCormick relaxation.

source
McCormick.AbstractMCCallbackType
abstract type AbstractMCCallback

An abstract type for each manner of callback functions used in the implicit function relaxation algorithms.

source
McCormick.MCCallbackType
mutable struct MCCallback{FH, FJ, C<:McCormick.AbstractContractorMC, PRE<:McCormick.AbstractPreconditionerMC, N, T<:RelaxTag, AMAT<:(AbstractMatrix)} <: AbstractMCCallback

A structure used to compute implicit relaxations.

  • h!::Any: Function h(x,p) = 0 defined in place by h!(out,x,p)

  • hj!::Any: Jacobian of h(x,p) w.r.t x

  • H::Array{MC{N, T}, 1} where {N, T<:RelaxTag}: Intermediate inplace storage for output of h!

  • J::AbstractMatrix: Intermediate inplace storage for output of hj!

  • J0::Vector{AMAT} where AMAT<:(AbstractMatrix)

  • xz0::Vector{AMAT} where AMAT<:(AbstractMatrix)

  • xmid::Vector{Float64}

  • X::Vector{Interval{Float64}}: State space x interval bounds

  • P::Vector{Interval{Float64}}: Decision space p interval bounds

  • nx::Int64: State space dimension

  • np::Int64: Decision space dimension

  • λ::Float64: Convex combination parameter

  • eps::Float64: Tolerance for interval equality

  • kmax::Int64: Number of contractor steps to take

  • pref_mc::Array{MC{N, T}, 1} where {N, T<:RelaxTag}: Reference decision point at which affine relaxations are calculated (and used in subsequent calculations).

  • p_mc::Array{MC{N, T}, 1} where {N, T<:RelaxTag}: Decision point at which relaxation is evaluated.

  • p_temp_mc::Array{MC{N, T}, 1} where {N, T<:RelaxTag}: Vector used to temporarily store p in genexpansionparams! routine.

  • x0_mc::Array{MC{N, T}, 1} where {N, T<:RelaxTag}

  • x_mc::Array{MC{N, T}, 1} where {N, T<:RelaxTag}

  • xa_mc::Array{MC{N, T}, 1} where {N, T<:RelaxTag}

  • xA_mc::Array{MC{N, T}, 1} where {N, T<:RelaxTag}

  • aff_mc::Array{MC{N, T}, 1} where {N, T<:RelaxTag}

  • z_mc::Array{MC{N, T}, 1} where {N, T<:RelaxTag}

  • contractor::McCormick.AbstractContractorMC: Type of contractor used in implicit relaxation routine.

  • preconditioner::McCormick.AbstractPreconditionerMC: Preconditioner used in the implicit relaxation routine.

  • apply_precond::Bool: Boolean indicating that the preconditioner should be applied

  • param::Array{Array{MC{N, T}, 1}, 1} where {N, T<:RelaxTag}: Vector of relaxations of x at each iteration used to generated affine relaxations used in intermediate calculation.

  • use_apriori::Bool: Indicates that subgradient-based apriori relaxations of multiplication should be used.

source

Subroutines

McCormick.contract!Function

Performs a single step of the parametric method associated with t assumes that the inputs have been preconditioned.

source
McCormick.final_cutFunction
final_cut(x, y)

An operator that cuts the x object using the y bounds in a differentiable or nonsmooth fashion to achieve a composite relaxation within y.

source