?? main.m
字號:
%遺傳算法主程序
%Name:main
%定義遺傳算法參數(shù)
%定義各參數(shù)跨度x0=(x,y,tx,ty,z)=(±5,±5,±1,±1,50)
%取編碼精度(分辨率)0.01
%編碼長度log2(50/0.01)+1=14,為了計算方便,各個參量都取14位,總70位
%(x,y,tx,ty,z)對應(yīng)在個體中的位置為(a1-a14,a15-a28,a29-a42,a43-a56,a57-a70)
%最小損耗0.0042
NIND=40; %初始種群數(shù)目(Number of individuals)
MAXGEN=10; %最大遺傳代數(shù)(Maximum number of generations)
NVAR=5; %變量數(shù)目
PRECI=14; %變量的二進制位數(shù)(Precision of variables)
GGAP=0.9; %即復(fù)制概率
tic
%建立區(qū)域描述器(Build field descriptor)
FieldD=[rep([PRECI],[1,NVAR]);rep([-5 -5 -1 -1 0;5 5 1 1 50],[1,1]);rep([1;0;1;1],[1,NVAR])];
Chrom=crtbp(NIND, NVAR*PRECI); %創(chuàng)建初始種群
gen=0;
trace=zeros(MAXGEN, 2); %遺傳算法性能跟蹤初始值
x=bs2rv(Chrom, FieldD);
ObjV=fun(x(:,1),x(:,2),x(:,3),x(:,4),x(:,5)); %計算初始種群的目標函數(shù)值
while gen<MAXGEN
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); %子代十進制轉(zhuǎn)換
ObjVSel=fun(x(:,1),x(:,2),x(:,3),x(:,4),x(:,5));
[Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入
gen=gen+1;
[Y, I]=max(ObjV);
x0=bs2rv(Chrom(I,:),FieldD);
Y;x0; %輸出每一次的最優(yōu)解及其對應(yīng)的自變量值
trace(gen,1)=max(ObjV); %遺傳算法性能跟蹤
trace(gen,2)=sum(ObjV)/length(ObjV);
%if(gen==50) %迭代數(shù)為50時畫出目標函數(shù)值分布圖
% figure(1);
% plot(ObjV);hold on;
% plot(ObjV,'b*');grid;
%end
end
figure(7);clf;
plot(trace(:,1));hold on;
plot(trace(:,2),'-.');grid
legend('解的變化','種群均值的變化')
x0
if Y<0.99
[x,counts,y]=hillclimbing(x0',[3 1 4 0.99])
end
toc;
time=toc
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -