'lsqnonlin' giving non-identical results from multiple trials considering same data and starting parameter values

5 views (last 30 days)
Hi
I implemented lsqnonlin for estimating 30 parameters in my Model. My objective function is of the order 18000X22.
My lsqnonlin settings are:
1. I have parameter bounds set
2. I use trust-region-reflective algorithm.
Strangely, I get non-identical values of estimates for the 30 parameters under consideration with multiple trials using the same code, data going into lsqnonlin for estimation and with same starting values.
As far as I know, lsqnonlin is a deterministic optimization algorithm . So, I am supposed to get identical results from these trials.
Any inputs would be helpful in understanding this variability in results from independent estimation trials. using same data and parameter starting values.
Thanks for your time

Accepted Answer

Alan Weiss
Alan Weiss on 7 Jan 2015
lsqnonlin is indeed a deterministic solver. If you have the same data in, then you should get the same iterative steps. Since you don't, then there is likely something nondeterministic in your objective function.
Try an experiment. Execute the line
rng default
immediately before running lsqnonlin. Then execute the line and lsqnonlin again. I would be surprised if there is any difference between the two runs, unless your objective function calls an external piece of code that keeps its own state.
Alan Weiss
MATLAB mathematical toolbox documentation
  3 Comments
John D'Errico
John D'Errico on 7 Jan 2015
Edited: John D'Errico on 7 Jan 2015
That somebody supplied random starting values for an optimization need not make it always a good idea. In that thread, it was the person asking the question who used random starting values. There is no presumption that they knew what they were doing.
In fact, it is often a poor idea since those randomly chosen starting values may send the optimizer to a sub-optimal local solution. Far better is to use a well chosen set of starting values. And if one knows nothing about the parameters to enable one to make a semi-intelligent choice for them, then it is a good idea to think about the model.
It is quite possible that something in your code has a random element inside it. For example, eigs and svds, while they might appear to be deterministic, use a random start point.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!