title: Function to determine a reasonable initial guess for scipy.optimize?
body: <p>I'm using <a href="http://docs.scipy.org/doc/scipy-0.16.1/reference/generated/scipy.optimize.minimize.html" rel="nofollow noreferrer">scipy.optimize.minimize</a> to find the minimum of a 4D function that is rather sensitive to the initial guess used. If I vary it a little bit, the solution will change considerably.</p>
  
  <p>There are many questions similar to this one already in SO (e.g.: <a href="https://stackoverflow.com/questions/31665653/initial-guess-for-levenberg-marquardt-using-genetic-algorithm">1</a>, <a href="https://stackoverflow.com/questions/20861788/initial-guess-using-scipy-optimize-in-python">2</a>, <a href="https://stackoverflow.com/questions/28187569/find-the-root-of-a-cubic-function/">3</a>), but no real answer.</p>
  
  <p>In an old question of mine, <a href="https://stackoverflow.com/a/17550515/1391441">one of the developers</a> of the zunzun.com site (apparently <a href="http://zunzun.com" rel="nofollow noreferrer">no longer online</a>) explained how they managed this:</p>
  
  <blockquote>
    <p>Zunzun.com uses the Differential Evolution genetic algorithm (DE) to find initial parameter estimates which are then passed to the Levenberg-Marquardt solver in scipy. DE is not actually used as a global optimizer per se, but rather as an "initial parameter guesser".</p>
  </blockquote>
  
  <p>The closest I've found to this algorithm is <a href="https://stackoverflow.com/a/15404827/1391441">this answer</a> where a <code>for</code> block is used to call the minimizing function many times with random initial guesses. This generates multiple minimized solutions, and finally the best (smallest value) one is picked.</p>
  
  <p>Is there something like what the zunzun dev described already implemented in Python?</p>