docs: def execute(self, bounds=None, jacobian=None, hessian=None, constraints=None, **minimize_options):
          """
          Calls the wrapped algorithm.
  
          :param bounds: The bounds for the parameters. Usually filled by
              :class:`~symfit.core.minimizers.BoundedMinimizer`.
          :param jacobian: The Jacobian. Usually filled by
              :class:`~symfit.core.minimizers.ScipyGradientMinimize`.
          :param \*\*minimize_options: Further keywords to pass to
              :func:`scipy.optimize.minimize`. Note that your `method` will
              usually be filled by a specific subclass.
          """
          ans = minimize(
              self.objective,
              self.initial_guesses,
              method=self.method_name(),
              bounds=bounds,
              constraints=constraints,
              jac=jacobian,
              hess=hessian,
              **minimize_options
          )
          return self._pack_output(ans)