我有一个套管的数学(参数)模型。模型的输入是位移(正弦波),以力为输出(在各个时间步长)。
模型的参数将使用 GA 进行识别,力方程将使用 ode15s 求解器求解。
当假设一组参数(不使用 GA)时,求解器给出输出,但是当从 GA 调用时,我得到以下错误n
次数:
警告:矩阵是奇异的,接近奇异的或严重缩放的。结果可能不准确。RCOND = NaN。
最后
警告:在 t=1.570796e+000 时失败。如果不将步长减小到低于时间 t 允许的最小值 (3.552714e-015),则无法满足积分容差。
我有点困惑,因为代码在不使用 GA 而不是 GA 的情况下可以正常工作。我将非常感谢您的投入。
提前非常感谢。
代码:主调用
ga_custom={@GA_test,measurement_data,excitation};
[x,fval,exitflag,output,population,scores]=ga(ga_custom,no_of_vars,[],[],[],[],lb,ub,[],options);
GA_test 函数:
function error_fnc = GA_test(x,measurement_data,excitation)
error_fnc=0;
F=my_force_Curve(excitation,x);
for q=1:100
temp=(F(q)-measurement_data(q))^2;
error_fnc=error_fnc+temp;
end
end
my_force_Curve
计算单个模型的力:
[T,y]=ode15s(@(T,y)differential_BW(T,y,x),tspan,[0 0 0 0]);
并differential_BW
解方程:
function dy=differential_BW(t,y,initial_guess)
dy=zeros(4,1);
dy(1)=..
dy(2)=..
dy(3)=..
dy(4)=..
抱歉,如果它太长了。
再次感谢。