matlab遗传工具箱ga,用遗传算法工具箱(GA)识别Bouc-Wen模型微分方程参数
本帖最后由 hgrhgr520 于 2016-3-20 14:30 編輯
Bouc-Wen模型因數(shù)字處理方便簡(jiǎn)單而得到較為廣泛的應(yīng)用,力可以表示為:
QQ截圖20160320125352.jpg (3.2 KB, 下載次數(shù): 21)
2016-3-20 12:49 上傳
利用遺傳算法工具箱(GA)對(duì)Bouc-Wen模型進(jìn)行參數(shù)識(shí)別。
實(shí)驗(yàn)數(shù)據(jù)來(lái)源于對(duì)磁流變阻尼器(MR damper)進(jìn)行性能測(cè)試,試驗(yàn)獲得的數(shù)據(jù)包括力F,位移x,采用頻率已知,速度和加速度可以由位移求導(dǎo)得出。
參數(shù)識(shí)別出現(xiàn)程序如下:(文件名:Copy_0_of_BoucWen)
function j=myfung(x)
y0=[0];
yy=y0;
tspan=[]';
s=[]';
v=[]';
Ft=[]';
rr=max(size(s));%計(jì)算數(shù)據(jù)個(gè)數(shù)
i=1;
while (i1e5))%%判斷是否出現(xiàn)奇異點(diǎn),具體忘了。。
[t y]=ode45(@uubird,[tspan(i),tspan(i+1)],y0,[],v(i),x);%參考論壇的
y0=y(end,:);
yy=[yy;y0];
i=i+1;
kk=max(size(y));
if kk>150? ???%微分方程計(jì)算,停止是有條件的(具體沒(méi)去研究),這邊設(shè)置150次,不管有沒(méi)有收斂,都停止,不然整個(gè)程序運(yùn)行的實(shí)際太久,你也可以改成其他的,慢慢研究
break;
end
end
if??(i==rr)&(~isnan(yy(1,1)))==1%判斷是否出現(xiàn)奇異點(diǎn)(就是NAN),如果沒(méi)有出現(xiàn),就是正常的
F=x(:,4)*yy(:,1)+x(:,5)*(s-ones(size(s))*x(:,6))+x(:,7)*v;%x(:,4)代表alpha 5代表k0,6代表s0? ?7代表c0? ? 位移s就是公式中的x
j=sum((F-Ft).*(F-Ft));
i=i+1;
else??i
j=1e10;%因?yàn)槌霈F(xiàn)奇異值,所以隨便給一個(gè)目標(biāo)函數(shù)值(這個(gè)要足夠大),目的是排除這組優(yōu)化值(也就是這個(gè)種群不要)
i=rr;
end
function dy=uubird(t,y,v,x)
dy=-x(:,1)*abs(v)*y*abs(y)-x(:,2)*(v)*y^2+x(:,3)*v;% 1r 2beita 3A??取n=2
結(jié)果.jpg (112.33 KB, 下載次數(shù): 31)
2016-3-20 14:19 上傳
運(yùn)行結(jié)果
擬合效果對(duì)比程序(文件名BoucWenjianyan247):
clc
clear
datasorce=load('247-0.txt');
II=1;
a=2000;
b=3000;? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?%為了擬合。。
datasorce=datasorce(a:b,:);%去一個(gè)周期進(jìn)行對(duì)比
s=datasorce(:,1)*0.7857-0.027860;%位移換算(你不用管)
Ft=datasorce(:,4)*1000/3.44;? ???%力換算
sa=(max(s)-min(s))/2-max(s);
s=s+sa;
sFt=(max(Ft)-min(Ft))/2-max(Ft);
Ft=Ft+sFt;
for i=1:(b-a+1)
A(i)=i*0.001;
end
T=A';
p=polyfit(T,s(:),10);%擬合,用于求解
y10=polyval(p,T);
syms x
y= p(1)*x^10 + p(2)*x^9 +p(3)*x^8 + p(4)*x^7 + p(5)*x^6 + p(6)*x^5 + p(7)*x^4 + p(8)*x^3 +p(9)*x^2 + p(10)*x +p(11);
f=diff(y);
ac=diff(y,2);
for i=1:(b-a+1)
x=i*0.001;
v(i)=eval(f);
acc(i)=eval(ac);
vm(i)=(v(i)*v(i)-s(i)*acc(i))^0.5;
I(i)=0;
end
v=v';
T=T';
y0=[0];
yy=y0;
rr=max(size(s));
tspan=0:0.001:(rr-1)*0.001;
i=1;
x=[0.764? ?? ???-0.7651? ?? ???2.291? ?? ???3.108? ?? ???4.994? ?? ???2.163925? ?? ???3.002];%%參數(shù)識(shí)別出出來(lái)的結(jié)果
while (i
[t y]=ode45(@uubird,[tspan(i),tspan(i+1)],y0,[],v(i),x);
y0=y(end,:);
yy=[yy;y0];
i=i+1;
end
F=x(:,4)*yy(:,1)+x(:,5)*(s-ones(size(s))*x(:,6))+x(:,7)*v;%4alpha 5k0 6x0 7c0
s=s(100:2:800,:);
v=v(100:2:800,:);
F=F(100:2:800,:);
Ft=Ft(100:2:800,:);
figure(1),plot(v,Ft,'k',v,F,'r--'),hold on
figure(2),plot(s,Ft,'k',s,F,'r--'),hold on
擬合效果.jpg (77.58 KB, 下載次數(shù): 19)
2016-3-20 14:18 上傳
實(shí)線是試驗(yàn)測(cè)得的結(jié)果。
Bouc-Wen參數(shù)識(shí)別參考程序.rar
(59.77 KB, 下載次數(shù): 14324)
2016-3-20 14:28 上傳
點(diǎn)擊文件名下載附件
如果覺(jué)得效果不夠好,可以增加迭代次數(shù)。
完整程序參見(jiàn)附件
總結(jié)
以上是生活随笔為你收集整理的matlab遗传工具箱ga,用遗传算法工具箱(GA)识别Bouc-Wen模型微分方程参数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【开发】 eclipse汉化包
- 下一篇: matlab多目标遗传算法工具箱,运用M