Types

Types

MC

MC{N, T <: RelaxTag} <: Real is the McCormick (w/ (sub)gradient) structure which is used to overload standard calculations. The fields are:

  • cc::Float64: Concave relaxation
  • cv::Float64: Convex relaxation
  • cc_grad::SVector{N,Float64}: (Sub)gradient of concave relaxation
  • cv_grad::SVector{N,Float64}: (Sub)gradient of convex relaxation
  • Intv::Interval{Float64}: Interval bounds
  • cnst::Bool: Flag for whether the bounds are constant
RelaxTag

An abstract type the subtypes of which define the manner of relaxation that will be performed for each operator applied to the MC object. Currently, the struct NS which specifies that standard (Mitsos 2009) are to be used is fully supported. Limited support is provided for differentiable McCormick relaxations specified by struct Diff (Khan 2017) and struct MV struct MV (Tsoukalas 2011.)

Constructors for MC

EAGO.McCormick.MCMethod.
MC{N,T}(y::Interval{Float64})

Constructs McCormick relaxation with convex relaxation equal to y.lo and concave relaxation equal to y.hi.

MC{N,T}(y::Float64)

Constructs McCormick relaxation with convex relaxation equal to y and concave relaxation equal to y.

MC{N,T}(cv::Float64, cc::Float64)

Constructs McCormick relaxation with convex relaxation equal to cv and concave relaxation equal to cc.

MC{N,T}(val::Float64, Intv::Interval{Float64}, i::Int64)

Constructs McCormick relaxation with convex relaxation equal to val, concave relaxation equal to val, interval bounds of Intv, and a unit subgradient with nonzero's ith dimension of length N.