I have been following the links below:
I find them helpful, but when I implement the method to my own system of ODE. I am generating wrong answers with the initial guesses I am using from a research manuscript I am following (the parameters used to refit the ode model does not match well with the exp data graphs). So I decided to randomly guess the initial parameter guess using rand. But the code takes over 2 hours to run, so I usually terminate it before the code actually finishes. I tried to use MultiStart to get better parameter initial guesses, but I am not sure if it is working. Am I doing something wrong with the code? Would it be best to use something else other than lsqcurvefit?
I have attached the excel file for the data and the code itself. Many thanks if this problem can be fixed, I have been stuck for weeks now!
I see that you mentioned SimBiology in a comment on the previous answer. I'm a developer on that product, so I wanted to share that it is designed specifically for this sort of problem. You can build the model graphically or programmatically with building blocks like reactions that more closely map to the underlying biology. (Not to mention the fact that this can save you a lot of bookkeeping.) You can also give variables more meaningful names, instead of having to figure out what y(6)/c(38) means.
There are also a lot of performance benefits. The way we do the ODE simulations in SimBiology is also typically quite a bit faster than doing the simulations in core MATLAB yourself. My rule of thumb is that we usually give at least a 20X speedup.
I personally have also spent a lot of time trying to make it easier and faster to do "large" fitting problems exactly like this. When using gradient-based optimization methods like lsqnonlin, we can often provide more accurate estimates of gradients than the default. This can help with the convergence of the algorithm. I have also worked on a couple of global optimization methods that make it easier to scan a large parameter space. Most recently, I implemented an enhanced scatter search algorithm that combines both global and local optimization techniques.
If this sounds interesting to you, I can take a look to see how much work I think it would be to convert your problem over to SimBiology.