使用 fmincon 进行参数估计

计算科学 优化 最小二乘
2021-12-17 02:01:49

这是对我之前在此处发布的问题的跟进我正在使用fminconMATLAB 解决优化问题。我的模型中没有等式约束。我想使用非线性约束 nlcon 参数将 ODE 作为约束传递给 fmincon。函数模型包含 odes

function dz = model(t, z, c)  
              dz(1) = ..
              dz(2) = ..

我想问一下如何在 fmincon(@objective,p0,A,b,Aeq,beq,lb,ub,nlcon) 中调用 ode 积分器来代替 nlcon。

%p0 = Initial Value of Parameters
A = [];
b = [];
Aeq = [];
beq = [];
nlcon  = ode45(@(t,z)model(t,z,x), tSpan, z0); % Is this correct?
p = fmincon(@objective,p0,A,b,Aeq,beq,lb,ub,nlcon); 

由于在 nlcon 中已经调用了 ode 函数,是否需要在目标函数内部再次调用函数模型?

function cost = objective(c,expZ,tSpan,z0)
sol = ode45(@(t,z)model(t,z,c), tSpan, z0); % Is this step required?
ModelZ = sol(end,:)%  the solutions obtained from model at end point of tSpan
cost = ModelZ-expZ; %expZ contains steady state values of z1,z2.. 

任何帮助将不胜感激。

0个回答
没有发现任何回复~