copt.minimize_three_split

copt.minimize_three_split(f_grad, x0, prox_1=None, prox_2=None, tol=1e-06, max_iter=1000, verbose=0, callback=None, line_search=True, step_size=None, max_iter_backtracking=100, backtracking_factor=0.7, h_Lipschitz=None, args_prox=())

Davis-Yin three operator splitting method.

This algorithm can solve problems of the form

minimize_x f(x) + g(x) + h(x)

where f is a smooth function and g and h are (possibly non-smooth) functions for which the proximal operator is known.

Parameters
  • f_grad – callable Returns the function value and gradient of the objective function. With return_gradient=False, returns only the function value.

  • x0 – array-like Initial guess

  • prox_1 – callable or None prox_1(x, alpha, *args) returns the proximal operator of g at xa with parameter alpha.

  • prox_2 – callable or None prox_2(x, alpha, *args) returns the proximal operator of g at xa with parameter alpha.

  • tol – float Tolerance of the stopping criterion.

  • max_iter – int Maximum number of iterations.

  • verbose – int Verbosity level, from 0 (no output) to 2 (output on each iteration)

  • callback – callable. callback function (optional). Takes a single argument (x) with the current coefficients in the algorithm. The algorithm will exit if callback returns False.

  • line_search – boolean Whether to perform line-search to estimate the step size.

  • step_size – float Starting value for the line-search procedure.

  • max_iter_backtracking – int maximun number of backtracking iterations. Used in line search.

  • backtracking_factor – float the amount to backtrack by during line search.

  • args_prox – tuple optional Extra arguments passed to the prox functions

Returns

OptimizeResult

The optimization result represented as a scipy.optimize.OptimizeResult object. Important attributes are: x the solution array, success a Boolean flag indicating if the optimizer exited successfully and message which describes the cause of the termination. See scipy.optimize.OptimizeResult for a description of other attributes.

Return type

res

References

[1] Davis, Damek, and Wotao Yin. “A three-operator splitting scheme and its optimization applications.” Set-Valued and Variational Analysis, 2017.

[2] Pedregosa, Fabian, and Gauthier Gidel. “Adaptive Three Operator Splitting.” Proceedings of the 35th International Conference on Machine Learning, 2018.