def METHOD_NAME(self, tol=1e-3, maxiter=1000,
                                           constraint_weight=1.):
    r"""
    This function tries to find the surface that approximately solves
    .. math::
        \min_S f(S) + 0.5 \texttt{constraint_weight} (\texttt{label} - \texttt{labeltarget})^2
    where :math:`f(S)` is the QFM residual defined in :mod:`surfaceobjectives.py.`
    This is done using LBFGS.
    """
    s = self.surface
    x = s.x
    fn = lambda x: self.qfm_penalty_constraints(
        x, derivatives=1, constraint_weight=constraint_weight)
    res = minimize(
        fn, x, jac=True, method='L-BFGS-B',
        options={'maxiter': maxiter, 'ftol': tol, 'gtol': tol,
                 'maxcor': 200})
    resdict = {
        "fun": res.fun, "gradient": res.jac, "iter": res.nit, "info": res,
        "success": res.success,
    }
    s.x = res.x
    resdict['s'] = s
    return resdict