minimizing a complex cost function using fmincon and lsqnonlin

8 次查看(过去 30 天)
Dear all , I intend to minimize the above cost function (CF) using non-linear LS algorithm (fmincon and lsqnonlin) in matlab. the main purpose is estimating SM* and L-VOD* using SM*ini (intital value for SM*) and L-VOD*ini (intital value for L-VOD*). in other word, with the second and third terms we try to minimize the estimate value for unknown parameters (SM* and L-VOD*) and their associating intital values at each iteration. I just wondering how can I write and define this cost function at Matlab to understand the second the third term correctly. at the moment, I get wrong answers and only I have one iteration. my code cannot understand the it has to compare the estimated SM* and L-VOD* and their associating intial values. it substitute intital value directly and get zeros for the second and third part.
Any suggestion would be highly appreciated.
Thanks in advance for your help!
Regards,
Mina
  4 个评论
Sam Chak
Sam Chak 2024-2-27
@Mina Mino: I get wrong answers...
What are the expected 'correct values'?
This isn't a static optimization problem, right? Since there are initial values, I assume that the cost function changes over the off-screen parameter, time t. Is the cost function diverging, converging towards a steady value, or oscillating within certain limits over time?
Better reveal the MATLAB code for clarity...
Mina Mino
Mina Mino 2024-2-28
编辑:Sam Chak 2024-2-28
Thanks for your reply. indeed the parameters that I intend to determine by minimizing the cost function are and . The main part that should be minimize is the first term of the attached equation. simulated () is calculated using initial values ( (intital value for SM*) and (intital value for )) for unknown parameters.
However, minimizing this term is only ideal due to the presence of errors such as auxiliary data, that is why we need to consider the error between the inversion parameters ( and ) and the a priori knowledge ( (intital value for ) and (intital value for )) for constraint retrieval.the second and third term in the attached equation are added due to this issue.
I am just woundering it is correct to introduce the cost function in the following form or I have to do in other way.
Thanks in advance for any suggestion.
function rmse = cost_function3(params, inti_SM, int_VOD, observed_reflectivity, C, T, H_r, theta)
% W = params(1);
% tau_nad = params(2);
modeled_reflectivity = reflectivity_model(params,C, T, H_r, theta);
% rmse = ((sum((modeled_reflectivity - observed_reflectivity).^2))/(std(observed_reflectivity).^2))+ (W-inti_SM).^2/0.04 + (tau_nad-int_VOD).^2/0.04;
rmse1 = sum((modeled_reflectivity - observed_reflectivity).^2)/(std(observed_reflectivity).^2);
term1 = (params(1) - inti_SM).^2 / 0.04;
term2 = (params(2) - int_VOD).^2 / 0.04;
rmse = rmse1 + term1 + term2;
end

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Optimization Toolbox 的更多信息

产品


版本

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by