Interpolators

SmoothStronglyConvexInterpolator

class PEPit.interpolators.SmoothStronglyConvexInterpolator(func, L=inf, mu=0, options='lowest')[source]

Bases: Interpolator

The class Interpolator is designed to help identifying worst-case examples.

This class implements the construction [1, Theorem 3.14] that allows to interpolate smooth strongly convex functions. That is, given a set of triplets \((x_i,g_i,f_i)\) for which there exists such an interpolating function (see [2, Theorem 4]).

Interpolators are interfaced to PEPit via the Function. More precisely, functions associated to interpolation conditions and constructive interpolating constructions are featured with the get_interpolator() method, that allows to receive an interpolator associated with the triplets of the corresponding solved PEP.

A complete demo is available here.

Attributes:
  • func (Function) – PEPit function that contains the list of triplets.

  • L (float) – smoothness parameter for the interpolant.

  • mu (float) – strong convexity parameter for the interpolant.

  • options (str) – Either “lowest” or “highest”; determines whether to use the minimum or maximum possible interpolant.

References:

[1] A. Taylor (2017). Convex interpolation and performance estimation of first-order methods for convex optimization. PhD thesis, UCLouvain.

[2] A. Taylor, J. Hendrickx, F. Glineur (2017). Smooth strongly convex interpolation and exact worst-case performance of first-order methods. Mathematical Programming, 161(1-2), 307-345.

evaluate(x)[source]

Computes the specific (lowest/highest) smooth strongly convex interpolant. The interpolation is formulated and solved as an optimization problem [1, Theorem 3.14].