Fitting a function to data (fminsearch) with limits

58 ビュー (過去 30 日間)
loes visser
loes visser 2016 年 8 月 30 日
回答済み: Stefan Schuberth 2022 年 11 月 8 日
Hey!
I try to fit a model to measured data. I already got a real close with the fminsearch option. However, I know the model will never fit completly to the measured data. I know the range wherein the unknown factors should be, how can I include this in the function.
This is a part of my code;
p= [0.31;114;3.5];
y2=fitfunc(TempZone1day,TempZone2day,TempZone3day,TempZone4day,TempZone5day,buitenTempday,FlowZone1day,FlowZone2day,FlowZone3day,FlowZone4day,KNMIwindday,SMA,p);
figure(1)
plot(tijd,WarmteCvday,'+',tijd,y2,'-')
a0=p;
aBest = fminsearch(@(a) SumErrfun1(a,TempZone1day,TempZone2day,TempZone3day,TempZone4day,TempZone5day,buitenTempday,FlowZone1day,FlowZone2day,FlowZone3day,FlowZone4day,KNMIwindday,SMA,WarmteCvday,tijd),a0);
disp(aBest)
For example, I know that p(1) should be within 0.1-0.5, p(2) within 100-200 and p(3) within 2-6. Because now aBest (the best combination) is [-0.0328; 61.8202; 0.4375], which is not even a possible option. How can I include these ranges?

採用された回答

John D'Errico
John D'Errico 2016 年 8 月 30 日
編集済み: John D'Errico 2016 年 8 月 30 日
fminsearch has no capability to take bounds on the search. If the objective is such that a better result lies outside of where you want it, too bad. :)
Having said that, you can use fminsearchbnd , a tool found on the file exchange. It does allow bounds on the variables. Just download and install that tool on your search path, then use it instead.
  1 件のコメント
loes visser
loes visser 2016 年 8 月 30 日
Super, thanks! It's working :)

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

その他の回答 (3 件)

Jie Jian
Jie Jian 2020 年 1 月 9 日
Or you can use the function 'mapping_parameters.m' to transfer unbounded parameters to bounded ones

kursat cihan
kursat cihan 2020 年 8 月 30 日
John D'Errico....much love from Germany, helped me a lot!!!
Bachelor Thesis in Material Modelling, used it for a parameter optimization in bringing simulations together with experimental data...PEACE
  1 件のコメント
Delme
Delme 2021 年 1 月 18 日
Haha, i'm doing exactly the same in my thesis!

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


Stefan Schuberth
Stefan Schuberth 2022 年 11 月 8 日
you can use q=f1*atan(p)+f2 to construct a limited parameter q from an unlimited parameter p :)

カテゴリ

Help Center および File ExchangeMATLAB についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by