フィルターのクリア

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

2 ビュー (過去 30 日間)
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

採用された回答

Alan Weiss
Alan Weiss 2015 年 1 月 7 日
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 件のコメント
John D'Errico
John D'Errico 2015 年 1 月 7 日
編集済み: John D'Errico 2015 年 1 月 7 日
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.
SreeHarish Muppirisetty
SreeHarish Muppirisetty 2015 年 1 月 7 日
Thanks Alan
Using rng default before lsqnonlin worked and is giving me reproducible results.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSolver Outputs and Iterative Display についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by