class_docstr: Abstract class :class:`Optimiser` for all optimisers.
  
  It must be implemented by all subclasses in this package.
  
  Every :class:`Optimiser` instance can be run for one single step using the
  :py:meth:`run_step` method. The :class:`Optimiser` does not perform the
  evaluation of the objective function but only proposes values from its
  domain. Therefore an evaluation history must be supplied via the
  :py:meth`update` method. The history can be erased and the
  :class:`Optimiser` brought to the initial state via the :py:meth:`reset`
  method.
class_docstr_tok: ["Abstract","class",":","class",":","`","Optimiser","`","for","all","optimisers",".","It","must","be","implemented","by","all","subclasses","in","this","package",".","Every",":","class",":","`","Optimiser","`","instance","can","be","run","for","one","single","step","using","the",":","py",":","meth",":","`","run_step","`","method",".","The",":","class",":","`","Optimiser","`","does","not","perform","the","evaluation","of","the","objective","function","but","only","proposes","values","from","its","domain",".","Therefore","an","evaluation","history","must","be","supplied","via","the",":","py",":","meth","`","update","`","method",".","The","history","can","be","erased","and","the",":","class",":","`","Optimiser","`","brought","to","the","initial","state","via","the",":","py",":","meth",":","`","reset","`","method","."]
docstr: Update the optimiser's history with new points.
  
  Args:
      x: :class:`Sample` or :obj:`List[Sample]`. The samples at which the
          objective function has been evaluated.
      fx: :class:`EvaluationScore` or :obj:`List[EvaluationScore]`. The
          evaluation scores at the corresponding samples.
docstr_tok: ["Update","the","optimiser","'s","history","with","new","points",".","Args",":","x",":",":","class",":","`","Sample","`","or",":","obj",":","`","List","[","Sample","]","`",".","The","samples","at","which","the","objective","function","has","been","evaluated",".","fx",":",":","class",":","`","EvaluationScore","`","or",":","obj",":","`","List","[","EvaluationScore","]","`",".","The","evaluation","scores","at","the","corresponding","samples","."]
code: def update(self, x, fx, **kwargs):
      """Update the optimiser's history with new points.
  
      Args:
          x: :class:`Sample` or :obj:`List[Sample]`. The samples at which the
              objective function has been evaluated.
          fx: :class:`EvaluationScore` or :obj:`List[EvaluationScore]`. The
              evaluation scores at the corresponding samples.
      """
      if isinstance(x, Sample):
          self._update_history(x, fx)
      elif (
          isinstance(x, Sequence)
          and isinstance(fx, Sequence)
          and len(x) == len(fx)
      ):
          for i, j in zip(x, fx):
              self._update_history(i, j)
      else:
          raise ValueError(
              "Update values for `x` and `f(x)` must be either "
              "a `Sample` and an evaluation or a list thereof."
          )
  
file_path: hypertunity/hypertunity/optimisation/base.py
imports: import abc
  import math
  from dataclasses import dataclass
  from typing import Any, Dict, List, Sequence
  from hypertunity.domain import Domain, Sample
label_desc: Use image node_id 5 for calling the Optimiser obj's underlying member method code with example usage: obj.update(x, fx) without return types