optiml.opti.unconstrained.proximal_bundle module
- class optiml.opti.unconstrained.proximal_bundle.ProximalBundle(f, x=None, mu=1, m1=0.01, eps=1e-06, tol=1e-08, max_iter=1000, m_inf=-inf, callback=None, callback_args=(), master_solver='clarabel', master_verbose=False, random_state=None, verbose=False)[source]
Bases:
OptimizerApply the Proximal Bundle Method for the minimization of the provided function f, which is assumed to be (possibly) nondifferentiable.
At each iteration a cutting-plane model of f is built from the subgradients collected so far and a stabilized master problem, regularized by a proximal term weighted by \(\mu\), is solved to compute the search direction; the candidate point is then accepted as a Serious Step or rejected as a Null Step according to an Armijo-like sufficient decrease condition.
- Parameters:
f – the objective function.
x – ([n x 1] real column vector, optional): the point where to start the algorithm from; if not provided, the default starting point provided by f() is used.
mu – (real scalar, optional, default value 1): the fixed weight to be given to the stabilizing term throughout all the algorithm. It must be a strictly positive number.
m1 – (real scalar, optional, default value 0.01): parameter of the Armijo-like condition used to declare a Serious Step; has to be in (0,1).
eps – (real scalar, optional, default value 1e-6): the accuracy in the stopping criterion: the algorithm is stopped when the norm of the direction (optimal solution of the master problem) is less than or equal to mu * eps. If a negative value is provided, this is used in a relative stopping criterion: the algorithm is stopped when the norm of the direction is less than or equal to mu * (- eps) * || norm of the first gradient ||.
tol – (real scalar, optional, default value 1e-8): the tolerance used to check the optimality conditions when f is a Lagrangian dual relaxation.
max_iter – (integer scalar, optional, default value 1000): the maximum number of iterations.
m_inf – (real scalar, optional, default value -inf): if the algorithm determines a value for f() <= m_inf this is taken as an indication that the problem is unbounded below and computation is stopped (a “finite -inf”).
callback – (callable, optional, default value None): a function called at each iteration with the optimizer instance as first argument.
callback_args – (tuple, optional, default value ()): additional arguments passed to callback.
master_solver – (string, optional, default value ‘clarabel’): the cvxpy solver used to solve the master problem at each iteration.
master_verbose – (boolean, optional, default value False): print details about the resolution of the master problem if True, nothing otherwise.
random_state – (integer scalar, optional, default value None): seed for the random number generator used to initialize the starting point when x is not provided.
verbose – (boolean, optional, default value False): print details about each iteration if True, nothing otherwise.
- Return x:
([n x 1] real column vector): the best solution found so far.
- Return status:
(string): the status of the algorithm at termination, one of:
optimal(x is a(n approximately) optimal solution),unbounded(f() was driven below m_inf, i.e., the problem looks unbounded below),stopped(the maximum number of iterations was reached) orerror(the master problem could not be solved at some iteration).
- callback(args=())
- check_lagrangian_dual_conditions()
- check_lagrangian_dual_optimality()
- is_augmented_lagrangian_dual()
- is_lagrangian_dual()
- is_verbose()