hrsrashid / opt-met

Optimization methods university class
1 stars 0 forks source link

Using scipy's genetic algorithm for initial parameter estimation in gradient descent #1

Open zunzun opened 7 years ago

zunzun commented 7 years ago

I see on your GitHub project page's TODO list that you plan to write Python code for gradient descent. A general problem for gradient descent, particularly for more complex equations, is the choice of initial parameters. Without good starting parameters, the algorithm will stop in a local error minimum. For this reason the authors of scipy have added a genetic algorithm for initial parameter estimation to use in gradient descent and other non-linear solvers. The module is named scipy.optimize.differential_evolution, and it uses the Latin Hypercube algorithm to ensure a thorough search of parameter space.

I have used scipy's Differential Evolution genetic algorithm to determine initial parameters for fitting a double Lorentzian peak equation to Raman spectroscopy of carbon nanotubes and found that the results were excellent. The GitHub project, with a test spectroscopy data file, is:

https://github.com/zunzun/RamanSpectroscopyFit

If you have any questions, please let me know. My background is in nuclear engineering and industrial radiation physics, and I love Python, so I will be glad to help.

James Phillips

hrsrashid commented 7 years ago

Thank you, James, for your hint!