| Did you know ... | Search Documentation: |
| Pack logtalk -- logtalk-3.102.0/docs/apis/_sources/barzilai_borwein_1.rst.txt |
.. index:: single: barzilai_borwein(Problem)
.. _barzilai_borwein/1:
.. rst-class:: right
object
barzilai_borwein(Problem)Problem - Problem object implementing local_optimization_problem_protocol and defining gradient/2.
Barzilai-Borwein (BB) gradient method with adaptive step sizes. Requires the problem to define gradient/2. Supports box constraints via projection, minimization and maximization, and BB1 / BB2 / alternating formulas.
| Availability:
| logtalk_load(local_optimization(loader))
| Author: Paulo Moura | Version: 1:0:0 | Date: 2026-09-03
| Compilation flags:
| static, context_switching_calls
| Imports:
| public :ref:`local_optimization_solver(Problem) <local_optimization_solver/1>`
| Uses:
| :ref:`linear_algebra <linear_algebra/0>`
| :ref:`list <list/0>`
| Remarks:
formula(bb1) uses alpha = (s*s)/(s*y) (long step). formula(bb2) uses alpha = (s*y)/(y*y) (short step). formula(alternate) (default) switches between BB1 and BB2 each iteration.[step_min, step_max], the previous accepted step (or step_size on the first iteration) is reused.line_search(none|armijo). The default none accepts the pure BB step.| Inherited public predicates: | Â :ref:`options_protocol/0::check_option/1` Â :ref:`options_protocol/0::check_options/1` Â :ref:`options_protocol/0::default_option/1` Â :ref:`options_protocol/0::default_options/1` Â :ref:`options_protocol/0::option/2` Â :ref:`options_protocol/0::option/3` Â :ref:`local_optimization_solver/1::run/2` Â :ref:`local_optimization_solver/1::run/3` Â :ref:`local_optimization_solver/1::run/4` Â :ref:`options_protocol/0::valid_option/1` Â :ref:`options_protocol/0::valid_options/1` Â
.. contents:: :local: :backlinks: top
(no local declarations; see entity ancestors if any)
(no local declarations; see entity ancestors if any)
(no local declarations; see entity ancestors if any)
(none)
.. seealso::
:ref:`local_optimization_problem_protocol <local_optimization_problem_protocol/0>`, :ref:`local_optimization_solver(Problem) <local_optimization_solver/1>`, :ref:`gradient_descent(Problem) <gradient_descent/1>`, :ref:`conjugate_gradient(Problem) <conjugate_gradient/1>`, :ref:`nelder_mead(Problem) <nelder_mead/1>`