class_docstr: Broyden, Fletcher, Goldfarb, and Shanno algorithm
  
  This solver is actually a simple wrapping of `scipy.optimize.fmin_bfgs`
  BFGS (Broyden, Fletcher, Goldfarb, and Shanno) algorithm. This is a
  quasi-newton algotithm that builds iteratively approximations of the inverse
  Hessian. This solver can be used to minimize objectives of the form
  
  .. math::
      f(w) + g(w),
  
  for :math:`f` with a smooth gradient and only :math:`g` corresponding to
  the zero penalization (namely :class:`ProxZero <tick.prox.ProxZero>`)
  or ridge penalization (namely :class:`ProxL2sq <tick.prox.ProxL2sq>`).
  Function :math:`f` corresponds to the ``model.loss`` method of the model
  (passed with ``set_model`` to the solver) and :math:`g` corresponds to
  the ``prox.value`` method of the prox (passed with the ``set_prox`` method).
  The iterations stop whenever tolerance ``tol`` is achieved, or
  after ``max_iter`` iterations. The obtained solution :math:`w` is returned
  by the ``solve`` method, and is also stored in the ``solution`` attribute
  of the solver.
  
  Parameters
  ----------
  tol : `float`, default=1e-10
      The tolerance of the solver (iterations stop when the stopping
      criterion is below it)
  
  max_iter : `int`, default=10
      Maximum number of iterations of the solver
  
  verbose : `bool`, default=True
      If `True`, solver verboses history, otherwise nothing is displayed,
      but history is recorded anyway
  
  print_every : `int`, default=10
      Print history information every time the iteration number is a
      multiple of ``print_every``. Used only is ``verbose`` is True
  
  record_every : `int`, default=1
      Save history information every time the iteration number is a
      multiple of ``record_every``
  
  Attributes
  ----------
  model : `Model`
      The model used by the solver, passed with the ``set_model`` method
  
  prox : `Prox`
      Proximal operator used by the solver, passed with the ``set_prox``
      method
  
  solution : `numpy.array`, shape=(n_coeffs,)
      Minimizer found by the solver
  
  history : `dict`-like
      A dict-type of object that contains history of the solver along
      iterations. It should be accessed using the ``get_history`` method
  
  time_start : `str`
      Start date of the call to ``solve()``
  
  time_elapsed : `float`
      Duration of the call to ``solve()``, in seconds
  
  time_end : `str`
      End date of the call to ``solve()``
  
  dtype : `{'float64', 'float32'}`, default='float64'
      Type of the arrays used. This value is set from model and prox dtypes.
  
  References
  ----------
  * Quasi-Newton method of Broyden, Fletcher, Goldfarb and Shanno (BFGS),
    see Wright, and Nocedal 'Numerical Optimization', 1999, pg. 198.
class_docstr_tok: ["Broyden",",","Fletcher",",","Goldfarb",",","and","Shanno","algorithm","This","solver","is","actually","a","simple","wrapping","of","`","scipy.optimize.fmin_bfgs","`","BFGS","(","Broyden",",","Fletcher",",","Goldfarb",",","and","Shanno",")","algorithm",".","This","is","a","quasi-newton","algotithm","that","builds","iteratively","approximations","of","the","inverse","Hessian",".","This","solver","can","be","used","to","minimize","objectives","of","the","form","..","math",":",":","f","(","w",")","+","g","(","w",")",",","for",":","math",":","`","f","`","with","a","smooth","gradient","and","only",":","math",":","`","g","`","corresponding","to","the","zero","penalization","(","namely",":","class",":","`","ProxZero","<","tick.prox.ProxZero",">","`",")","or","ridge","penalization","(","namely",":","class",":","`","ProxL2sq","<","tick.prox.ProxL2sq",">","`",")",".","Function",":","math",":","`","f","`","corresponds","to","the","``","model.loss","``","method","of","the","model","(","passed","with","``","set_model","``","to","the","solver",")","and",":","math",":","`","g","`","corresponds","to","the","``","prox.value","``","method","of","the","prox","(","passed","with","the","``","set_prox","``","method",")",".","The","iterations","stop","whenever","tolerance","``","tol","``","is","achieved",",","or","after","``","max_iter","``","iterations",".","The","obtained","solution",":","math",":","`","w","`","is","returned","by","the","``","solve","``","method",",","and","is","also","stored","in","the","``","solution","``","attribute","of","the","solver",".","Parameters","--","--","--","--","--","tol",":","`","float","`",",","default=1e-10","The","tolerance","of","the","solver","(","iterations","stop","when","the","stopping","criterion","is","below","it",")","max_iter",":","`","int","`",",","default=10","Maximum","number","of","iterations","of","the","solver","verbose",":","`","bool","`",",","default=True","If","`","True","`",",","solver","verboses","history",",","otherwise","nothing","is","displayed",",","but","history","is","recorded","anyway","print_every",":","`","int","`",",","default=10","Print","history","information","every","time","the","iteration","number","is","a","multiple","of","``","print_every","``",".","Used","only","is","``","verbose","``","is","True","record_every",":","`","int","`",",","default=1","Save","history","information","every","time","the","iteration","number","is","a","multiple","of","``","record_every","``","Attributes","--","--","--","--","--","model",":","`","Model","`","The","model","used","by","the","solver",",","passed","with","the","``","set_model","``","method","prox",":","`","Prox","`","Proximal","operator","used","by","the","solver",",","passed","with","the","``","set_prox","``","method","solution",":","`","numpy.array","`",",","shape=","(","n_coeffs",",",")","Minimizer","found","by","the","solver","history",":","`","dict","`","-like","A","dict-type","of","object","that","contains","history","of","the","solver","along","iterations",".","It","should","be","accessed","using","the","``","get_history","``","method","time_start",":","`","str","`","Start","date","of","the","call","to","``","solve","(",")","``","time_elapsed",":","`","float","`","Duration","of","the","call","to","``","solve","(",")","``",",","in","seconds","time_end",":","`","str","`","End","date","of","the","call","to","``","solve","(",")","``","dtype",":","`","{","'float64","'",",","'float32","'","}","`",",","default='float64'","Type","of","the","arrays","used",".","This","value","is","set","from","model","and","prox","dtypes",".","References","--","--","--","--","--","*","Quasi-Newton","method","of","Broyden",",","Fletcher",",","Goldfarb","and","Shanno","(","BFGS",")",",","see","Wright",",","and","Nocedal","'Numerical","Optimization","'",",","1999",",","pg",".","198","."]
docstr: Launch the solver
  
  Parameters
  ----------
  x0 : `np.array`, shape=(n_coeffs,), default=`None`
      Starting point of the solver
  
  Returns
  -------
  output : `np.array`, shape=(n_coeffs,)
      Obtained minimizer for the problem
docstr_tok: ["Launch","the","solver","Parameters","--","--","--","--","--","x0",":","`","np.array","`",",","shape=","(","n_coeffs",",",")",",","default=","`","None","`","Starting","point","of","the","solver","Returns","--","--","--","-","output",":","`","np.array","`",",","shape=","(","n_coeffs",",",")","Obtained","minimizer","for","the","problem"]
code: def solve(self, x0=None):
      """
      Launch the solver
  
      Parameters
      ----------
      x0 : `np.array`, shape=(n_coeffs,), default=`None`
          Starting point of the solver
  
      Returns
      -------
      output : `np.array`, shape=(n_coeffs,)
          Obtained minimizer for the problem
      """
      self._start_solve()
      coeffs = self._solve(x0)
      self._set("solution", coeffs)
      self._end_solve()
      return self.solution
  
file_path: tick/tick/solver/bfgs.py
imports: import numpy
  from scipy.optimize import fmin_bfgs
  from tick.base_model import Model
  from tick.prox import ProxZero, ProxL2Sq
  from tick.prox.base import Prox
  from .base import SolverFirstOrder
  from .base.utils import relative_distance
label_desc: Use image node_id 3 for calling the BFGS obj's underlying member method code with example usage: obj.solve(x0) and returns: self