I have a function that needs to be minimized. Since the function depends on real-time data (which is fetched every few hours, and the function is redefined according to the new data), I have to run the minimization several times a day.
NMinimize[{CoolFunction[g,v], 0 <= v <= 4, -20 <= g <= 20},
{{g, -20, 20}, {v, 0, 4}},
Method -> {"SimulatedAnnealing", "SearchPoints" -> 100,
"RandomSeed" -> ru, "PostProcess" -> False,
"InitialPoints" -> {{gbest, vbest}}}];
gbest and vbest are the best result found in the previous minimization; ru is a value that increases by one each time the minimization algorithm is run. Since the optimal values don't change very much each time the minimization algorithm is run, one of the initial points is the previous solution (this avoids the possibility that the solution found is worse than just using the previous solution).
(As a side note: I set "PostProcess" to False, since it seems like that setting that option to True causes the Mathematica kernel to crash randomly)
Ideally, Mathematica should select 99 points randomly with the algorithm it usually uses, and add the given initial point to the list of initial points. Since the documentation is not very specific in this regard, I am not sure if this what it is doing (for example, it could be ignoring the "SearchPoints" option, and just running the Simulated Annealing with the single point I gave; giving potentially sub-optimal solutions).
EvaluationMonitor
to "debug" your settings. $\endgroup$