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 andmessage
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.