ブッシングの数学的 (パラメトリック) モデルがあります。モデルへの入力は変位 (正弦波) で、力は出力 (それぞれのタイムステップ) です。
モデルのパラメーターは 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)=..
長すぎる場合はお詫び申し上げます。
再度、感謝します。