I had good experience with stochastic search methods. They basically create a set of markov-chains and sample the parameter space around previous estimates. They work well in situations with objective functions who have multiple local maxima/minima, strong discontinuities or costly function evaluations. Some of the algorithms even work well for stochastic functions.
Easy to implement algorithms include ASA (adaptive simulated annealing), DDS (dynamical dimensioned search), DE (differential evolution) or the adaptive variant JADE (which I use).
More complex algorithms include CMA(-ES) (Covariance matrix adaption) or surrogate assisted techniques like kriging.