function f4=paper_lq(x1,x2,x3,x4)
theta=0;
mu_ra=0.0645;
mu_rb=0.0889;
mu_rc=0.043;
sigma_ra=0.008;
sigma_rb=0.07;
sigma_rc=0.004;
i=1;
M=384;
sum_f=0;
while i<100
f_1=cos(theta)*(x1+x3*normrnd(0,1)+normrnd(mu_rb,sigma_rb)*cos(unifrnd(0,2*pi))-normrnd(mu_ra,sigma_ra)*cos(unifrnd(0,2*pi)))+sqrt((x2+x4*normrnd(0,1)+normrnd(mu_rc,sigma_rc)*cos(unifrnd(0,2*pi))).^2-(x1+x3*normrnd(0,1)+normrnd(mu_rb,sigma_rb)*cos(unifrnd(0,2*pi))-normrnd(mu_ra,sigma_ra)*sin(theta)).^2);
f_2=cos(theta+0.0063)*(x1+x3*normrnd(0,1)+normrnd(mu_rb,sigma_rb)*cos(unifrnd(0,2*pi))-normrnd(mu_ra,sigma_ra)*cos(unifrnd(0,2*pi)))+sqrt((x2+x4*normrnd(0,1)+normrnd(mu_rc,sigma_rc)*cos(unifrnd(0,2*pi))).^2-(x1+x3*normrnd(0,1)+normrnd(mu_rb,sigma_rb)*cos(unifrnd(0,2*pi))-normrnd(mu_ra,sigma_ra)*sin(theta+0.0063)).^2);
f3=abs(f_1-f_2);
g1=(M*sqrt(M^2+f3.^2)-M)/(2*sqrt(M^2+f3.^2))-0.05;
g2=f3.*M/(2*sqrt(M^2+f3.^2))-0.5;
if(g1<=0)&(g2<=0)
f3=abs(f_1-f_2);
else
f3=abs(f_1-f_2)+10000;
end
sum_f=sum_f+f3;
i=i+1;
end
f4=sum_f/i;
大家?guī)臀铱聪聭土P函數(shù)處 f3=abs(f_1-f_2)+10000;這樣取對(duì)不對(duì)呢
下面的是遺傳算法程序
tic
theta=0;
%定義遺傳算法參數(shù)
NIND=500; %個(gè)體數(shù)目(Number of individuals)
MAXGEN=500; %最大遺傳代數(shù)(Maximum number of generations)
NVAR=4; %變量數(shù)目
PRECI=25; %變量的二進(jìn)制位數(shù)(Precision of variables)
GGAP=0.9; %代溝(Generation gap)
%建立區(qū)域描述器(Build field descriptor)
FieldD=[rep([PRECI],[1,NVAR]);rep([45 330 0.002 0.007;55 340 0.02 0.07],[1,1]);rep([1;0;1;1],[1,NVAR])];
Chrom=crtbp(NIND, NVAR*PRECI); %創(chuàng)建初始種群
gen=0;
trace=zeros(MAXGEN, 4); %遺傳算法性能跟蹤初始值
x=bs2rv(Chrom, FieldD); %初始種群十進(jìn)制轉(zhuǎn)換
ObjV=paper_lq(x(:,1),x(:,2),x(:,3),x(:,4)); %計(jì)算初始種群的目標(biāo)函數(shù)值
while gen
FitnV=ranking(ObjV); %分配適應(yīng)度值(Assign fitness values)
SelCh=select('sus',Chrom,FitnV,GGAP); %選擇
SelCh=recombin('xovsp',SelCh,0.7); %重組
SelCh=mut(SelCh); %變異
x=bs2rv(SelCh,FieldD); %子代十進(jìn)制轉(zhuǎn)換
ObjVSel=paper_lq(x(:,1),x(:,2),x(:,3),x(:,4));
[Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入
gen=gen+1;
[Y, I]=min(ObjV);
Y,bs2rv(Chrom(I, ,FieldD) %輸出每一次的最優(yōu)解及其對(duì)應(yīng)的自變量值
trace(gen,1)=min(ObjV); %遺傳算法性能跟蹤
trace(gen,2)=sum(ObjV)/length(ObjV);
if(gen==MAXGEN) %迭代數(shù)為MAXGEN時(shí)畫出目標(biāo)函數(shù)值分布圖
figure(1);
plot(ObjV);hold on;
plot(ObjV,'b*');grid;
end
end
figure(2);clf;
plot(trace(:,1));hold on;
plot(trace(:,2),'-.');grid
legend('解的變化','種群均值的變化')
toc
大家?guī)臀铱聪聝?yōu)化后的結(jié)果怎么樣,這樣的結(jié)果怎么樣呢
![]()
171342vgfkc9frwwv5wcwv.jpg.thumb.jpg
![]()
迭代后結(jié)果 |