docs: def _adapt_params(self, stepsize, stepsize_bar, h_bar, mu, index_i, alpha, n_alpha=1):
          """
          Run tha adaptation for stepsize for better proposals of position
          """
          gamma = 0.05  # free parameter that controls the amount of shrinkage towards mu
          t0 = 10.0  # free parameter that stabilizes the initial iterations of the algorithm
          kappa = 0.75
          # See equation (6) section 3.2.1 for details
  
          estimate = 1.0 / (index_i + t0)
          h_bar = (1 - estimate) * h_bar + estimate * (self.delta - alpha / n_alpha)
  
          stepsize = np.exp(mu - sqrt(index_i) / gamma * h_bar)
          i_kappa = index_i ** (-kappa)
          stepsize_bar = np.exp(i_kappa * np.log(stepsize) + (1 - i_kappa) * np.log(stepsize_bar))
  
          return stepsize, stepsize_bar, h_bar