'Solves the problem using the specified method.
Parameters
method : function
The solve method to use.
solver : str, optional
The solver to use.
verbose : bool, optional
Overrides the default of hiding solver output.
solver_specific_opts : dict, optional
A dict of options that will be passed to the specific solver.
In general, these options will override any default settings
imposed by cvxpy.
Returns
float
The optimal value for the problem, or a string indicating
why the problem could not be solved.'

def solve(self, *args, **kwargs):

    func_name = kwargs.pop('method', None)
    if (func_name is not None):
        func = Problem.REGISTERED_SOLVE_METHODS[func_name]
        return func(self, *args, **kwargs)
    else:
        return self._solve(*args, **kwargs)
