How to solve two coupled first order ODEs and use the solution (through curve fitting to experimental data) to optimize the parameters through fminsearch
2 views (last 30 days)
Show older comments
I am solving two coupled ODEs with the intention of optimising the parameters of the analytical solution using fminsearch. I am also following the example of Monod kinetics and curve fitting. However both the Monod example and my solution gives various errors, as I try different things to solve the problem. I can not figure out where am I going wrong.
See the attached m-files.
0 Comments
Answers (1)
Star Strider
on 6 Mar 2018
The lambertw function could be a problem with respect to fitting your equation system. It is not always possible to use fminsearch (even though it is ‘derivative-free’) and other such optimisation functions and achieve a reasonable result.
If you have the Global Optimization Toolbox, I have found the ga function (see this Comment to HELP ME PLEASE! How to find parameter estimation with fminsearch? (link)) to provide good results. I used a very large, random, initial population. I got a very good fit to the data. It took a while, and as I see it, the time was well spent.
Gradient-descent nonlinear parameter estimation routines are sensitive to the initial parameter estimates, whereas ga, given a large initial population and enough time, will converge on the best result possible. If you don’t have access to the ga function, simple unconstrained genetic algorithm codes are relatively easy to write. (If it is not already obvious, I really like genetic algorithm optimisations!)
I have not run your code, or experimented with using ga to optimise it. I leave this for you to experiment with first.
0 Comments
See Also
Categories
Find more on Nonlinear Optimization in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!