?? yj5.m
字號:
%定義遺傳算法參數
GGAP=0.8; %代溝(Generation gap)
XOVR=1; %交叉率
NVAR=20; %變量維數
MUTR=1/NVAR; %變異率
MAXGEN=200; %最大遺傳代數(Maximum number of generations)
INSR=0.9; %插入率
SUBPOP=12; %子種群數
MIGR=0.2; %遷移率
MIGGEN=20; %每20代遷移個體
NIND=20; %個體數目(Number of individuals)
RANGE=[0;10]; %變量范圍
SEL_F='sus'; %選擇函數名
XOV_F='recdis'; %重組函數名
MUT_F='mutbga'; %變異函數名
OBJ_F='objpush'; %目標函數名
FieldDD=rep(RANGE,[1,NVAR]);
trace=zeros(MAXGEN,2); %遺傳算法性能跟蹤
Chrom=crtrp(SUBPOP*NIND,FieldDD); %創建初始種群
gen=0;
ObjV=feval(OBJ_F,Chrom);
while gen<MAXGEN %代循環
FitnV=ranking(ObjV,[2 0],SUBPOP); %分配適應度值(Assign fitness values)
SelCh=select(SEL_F,Chrom,FitnV,GGAP,SUBPOP); %選擇
SelCh=recombin(XOV_F,SelCh,XOVR,SUBPOP); %重組
SelCh=mutate(MUT_F,SelCh,FieldDD,[MUTR],SUBPOP); %變異
ObjVOff=feval(OBJ_F,SelCh); %計算子代目標函數值
[Chrom, ObjV]=reins(Chrom,SelCh,SUBPOP,[1 INSR],ObjV,ObjVOff); %替代
gen=gen+1;
[trace(gen,1),I]=min(ObjV);
trace(gen,2)=mean(ObjV);
%在子種群之間遷移個體
if(rem(gen,MIGGEN)==0)
[Chrom, ObjV]=migrate(Chrom,SUBPOP,[MIGR, 1, 1],ObjV);
end
end
[Y,I]=min(ObjV); %最優控制向量值及其序號
subplot(211);
plot(Chrom(I,:));hold on;
plot(Chrom(I,:),'.');grid
subplot(212);
plot(trace(:,1));hold on;
plot(trace(:,2),'-.');grid
legend('解的變化','種群均值的變化');
xlabel('迭代次數')
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -