Choosing a solver for optimisation