Currently Supported Operators

The operators currently supported are listed below. The operators with a check box have been subject to a large degree of scrutiny and have been implemented for both forward and reverse McCormick relaxations (Wechsung2015). Each McCormick object is associated with a parameter T <: RelaxTag which is either NS for nonsmooth relaxations (Mitsos2009, Scott2011), MV for multivariate relaxations (Tsoukalas2014, Najman2017), or Diff for differentiable relaxations (Khan2016, Khan2018, Khan2019). Conversion between NS, MV, and Diff relax tags is not currently supported. Convex and concave envelopes are used to compute relaxations of univariate functions.

Univariate McCormick Operators

Arbitrarily differentiable relaxations can be constructed for the following operators:

  • Inverse (inv)
  • Logarithms (log, log2, log10)
  • Exponential Functions (exp, exp2, exp10)
  • Square Root (sqrt)
  • Absolute Value (abs)

Both nonsmooth and Whitney-1 (once differentiable) relaxations are supported for the following operators:

  • Step Functions (step, sign)
  • Trigonometric Functions (sin, cos, tan)
  • Inverse Trigonometric Functions (asin, acos, atan)
  • Hyperbolic Functions (sinh, cosh, tanh)
  • Inverse Hyperbolic Functions (asinh, acosh, atanh)
  • Common Activation Functions (relu, leaky_relu, param_relu, sigmoid, bisigmoid, softsign, softplus, maxtanh, pentanh, gelu, elu, selu, swish)
  • Special Functions (erf)

Bivariate McCormick Operators

The following bivariate operators are supported for two MC objects. Both nonsmooth and Whitney-1 (once differentiable) relaxations are supported.

  • Multiplication (*)
  • Division (/)

Arbitrarily differentiable relaxations can be constructed for the following operators:

  • Addition (+)
  • Subtraction (-)
  • Minimization (min)
  • Maximization (max)

Common Subexpressions

The following functions can be used in place of common subexpressions encountered in optimization and will result in improved performance (in each case, the standard McCormick composition rules are often more expansive).

McCormick.xexpaxFunction

expax

The expax function is defined as expax(x, a) = x*exp(a*x).

Form defined in Najman, Jaromił, Dominik Bongartz, and Alexander Mitsos. "Relaxations of thermodynamic property and costing models in process engineering." Computers & Chemical Engineering 130 (2019): 106571.

source
McCormick.arhFunction

arh

The arrhenius function arh is defined as arh(x) = exp(-k/x).

source

Bound Setting Functions

The following functions are used to specify that known bounds on a subexpression exist and that the relaxation/interval bounds propagated should make use of this information. The utility functions can be helpful in avoiding domain violations that arise due to the overly expansive nature of composite relaxations. Improper use of these functions may lead to cases in which the resulting relaxations are empty, so the user is encouraged to use discretion.

McCormick.positiveFunction

positive(x::MC)

Sets the lower interval bound and the convex relaxation of x to a value of at least McCormick.MC_DOMAIN_TOL. (Sub)gradients are adjusted appropriately.

source
McCormick.negativeFunction

negative(x::MC)

Sets the upper interval bound and the concave relaxation of x to a value of at most -McCormick.MC_DOMAIN_TOL. (Sub)gradients are adjusted appropriately.

source
McCormick.lower_bndFunction

lower_bnd(x::MC, lb::Float64)

Sets the lower interval bound and the convex relaxation of x to a value of at least lb. (Sub)gradients are adjusted appropriately.

source
McCormick.upper_bndFunction

upper_bnd(x::MC, ub)

Sets the upper interval bound and the concave relaxation of x to a value of at most ub. (Sub)gradients are adjusted appropriately.

source
McCormick.bndFunction

bnd(x::MC, lb, ub)

Sets the lower interval bound and the convex relaxation of x to a value of at least lb. Sets the upper interval bound and the concave relaxation of x to a value of at most ub. (Sub)gradients are adjusted appropriately.

source

Specialized Activation Functions

McCormick.pentanhFunction

pentanh

The pentanh activation function pentanh(x) = x > 0.0 ? tanh(x) : tanh(0.25*x).

source
McCormick.leaky_reluFunction

leaky_relu

The leaky Rectified Linear Unit activation function leaky_relu(x) = max(x, 0.01x).

source
McCormick.param_reluFunction

param_relu

The parametric Rectified Linear Unit activation function param_relu(x, α) = (max(x, αx) with α in [0,1].

source

References

  • Khan KA, Watson HAJ, Barton PI (2017). Differentiable McCormick relaxations. Journal of Global Optimization, 67(4): 687-729.
  • Khan KA, Wilhelm ME, Stuber MD, Cao H, Watson HAJ, Barton PI (2018). Corrections to: Differentiable McCormick relaxations. Journal of Global Optimization, 70(3): 705-706.
  • Khan KA (2019). Whitney differentiability of optimal-value functions for bound-constrained convex programming problems. Optimization, 68(2-3): 691-711
  • Mitsos A, Chachuat B, and Barton PI. (2009). McCormick-based relaxations of algorithms. SIAM Journal on Optimization, 20(2): 573–601.
  • Najman J, Bongratz D, Tsoukalas A, and Mitsos A (2017). Erratum to: Multivariate McCormick relaxations. Journal of Global Optimization, 68: 219-225.
  • Scott JK, Stuber MD, and Barton PI. (2011). Generalized McCormick relaxations. Journal of Global Optimization, 51(4): 569–606.
  • Stuber MD, Scott JK, Barton PI (2015). Convex and concave relaxations of implicit functions. Optim. Methods Softw., 30(3): 424–460
  • Tsoukalas A and Mitsos A (2014). Multivariate McCormick Relaxations. Journal of Global Optimization, 59:633–662.
  • Wechsung A, Scott JK, Watson HAJ, and Barton PI. (2015). Reverse propagation of McCormick relaxations. Journal of Global Optimization, 63(1): 1-36.