?? matlab可靠性優化中的應用.txt
字號:
可靠性優化中的應用2007/06/02 23:54串聯結構:如果系統正常工作取決于組成系統的所有元件都正常工作,則稱n個元件的集合為串聯。
并聯結構:從可靠性的觀點出發,如果系統中至少有一個元件工作正常,系統就能工作正常。這樣的系統被稱為完全的冗余系統或足夠的冗余系統。
問題的目標是在受限于A類失效(整個系統滿足失效條件時)的子系統中具有并聯冗余單元的三個非線性約束條件下使系統可靠性達到最大,數學模型如下:
其中,m=[m1,m2,m3],對于子系統受限于一種O類實效(hi=1)和三種A類失效的四種失效模式(si=4),i=1,2,3,每個子系統的失效概率如下:
子系統 失效模式 失效概率
1 O 0.01
A 0.05
A 0.10
A 0.18
2 O 0.08
A 0.02
A 0.15
A 0.12
3 0 0.04
A 0.05
A 0.20
A 0.10
染色體: 變量mi的整數值用二進制串表達,串的長度取決于冗余單元的上界ui。本例中,每個子系統冗余單元的上界u1=1,u2=7,u3=7,因此決策變量mi需要3位二進制位,這樣表達m總共需要9位。
初始種群:每個染色體是一個9位的二進制串,隨機產生的染色體可能由于違背約束或超過上界而不可行,因此需要通過可行性檢查以保證所有的染色體是可行的。
染色體的評估:對于每個可行的染色體,適值賦予目標函數值R(m),而對于每個不可行的染色體,給予一個很大的懲罰。
遺傳算法參數設置:選擇二進制編碼,種群中的個體數目為10,二進制編碼序列的長度為9,交叉概率為0.4,變異概率為0.1
function [sol,eval]=f553(sol,options)
m(1)=sol(1);
m(2)=sol(2);
m(3)=sol(3);
%失效概率矩陣
q=[0.01 0.05 0.10 0.18;
0.08 0.02 0.15 0.12;
0.04 0.05 0.20 0.10];
%約束條件
g1=51-(m(1)+3).^2+m(2).^2+m(3).^2;
g2=20*sum(m+exp(-m))-120;
g3=20*sum(m.*exp(-m/4))-65;
%計算加懲罰項的適值
if ((g1>=0)&(g2>=0)&(g3>=0))
multi=1;
for i=1:3
summ=0;
for j=2:4
summ=summ+q(i,j).^(m(i)+1);
end
multi=multi*(1-(1-(1-q(i,1)).^(m(i)+1))-summ);
end
eval=multi;
else
%取M=500
eval=-500;
end
%維數n=3
%設置參數邊界
bounds =[1 4;1 7;1 7];
%遺傳算法優化
%二進制編碼
options=[1e-6 2];
%initPop=initializega(10,bounds,'f553',[],options);
%[m endPop] = ga(bounds,'f553',[],initPop,[1e-6 1 1],'maxGenTerm',100,'normGeomSelect',…
%[0.08],['arithXover'],[2], 'nonUnifMutation',[2 5 3]);
[p,endPop,bestSols,trace]=ga(bounds,'f553');
%性能跟蹤
plot(trace(:,1),trace(:,3),'b-');
hold on
plot(trace(:,1),trace(:,2),'r-');
xlabel('Generation');
ylabel('Fittness');
legend('解的變化','種群平均值的變化');
p =
2.7211 1.0566 1.6087 0.6854
即m=2.7 1.1 1.6
適值為0.6854
尋優性能跟蹤圖
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -