?? ga.m
字號:
clear
clc
echo on
GGAP=0.2;%代溝
XOVR=0.6;%交叉率
NVAR=20;%變量維數(shù)
MUTR=1/NVAR;%變異率
MAXGEN=60;%最大遺傳代數(shù)(迭代次數(shù))
INSR=0.9;%插入率
SUBPOP=10;%子種群數(shù)
MIGR=0.2;%遷移率
MIGGEN=60;%每20代遷移個體
NIND=20;%個體數(shù)目
RANGE=[0;1];%變量范圍
SEL_F='rws';%選擇函數(shù)名
XOV_F='recdis';%重組函數(shù)名
MUT_F='mutbga';%變異函數(shù)名()
%FieldDD=rep(RANGE,[1,NVAR])%變量范圍
FieldDD1=load('ganox1.txt')
FieldDD2=load('gaxl1.txt')
FieldDD3=load('gafuji1.txt')
trace=zeros(MAXGEN,2)%性能跟蹤
Chrom=crtrp(SUBPOP*NIND,FieldDD1)
Chrom1=crtrp(SUBPOP*NIND,FieldDD1)'%初始化種群
Chrom0=crtrp(SUBPOP*NIND,FieldDD2)
Chrom2=crtrp(SUBPOP*NIND,FieldDD2)'%初始化種群
Chrom5=crtrp(SUBPOP*NIND,FieldDD3)
Chrom7=crtrp(SUBPOP*NIND,FieldDD3)'%初始化種群
gen=0;
load testnox net%載入訓練好的網(wǎng)絡
ObjV=sim(net, Chrom1)%獲得目標函數(shù)
load testxl net%載入訓練好的網(wǎng)絡
ObjVV=sim(net, Chrom2)%獲得目標函數(shù)
load testfuji net%載入訓練好的網(wǎng)絡
ObjVVV=sim(net, Chrom7)%獲得目標函數(shù)
ObjV1=ObjV(1,:)'%優(yōu)化第一個參數(shù)
ObjV2=ObjVV(1,:)'%優(yōu)化第一個參數(shù)
ObjV3=ObjVVV(1,:)'%優(yōu)化第一個參數(shù)
while gen<MAXGEN,%代循環(huán)
FitnV=ranking(ObjV1,[2,0],SUBPOP)%分配適應度值
SelCh=select(SEL_F,Chrom,FitnV,GGAP,SUBPOP)%選擇
SelCh=recombin(XOV_F,SelCh,XOVR,SUBPOP)%重組
SelCh=mutate(MUT_F,SelCh,FieldDD1,[MUTR],SUBPOP)%變異
Chrom3=SelCh'
load testnox net%載入訓練好的網(wǎng)絡
ObjVOff1=sim(net, Chrom3)%計算子代目標函數(shù)
ObjVOff1=ObjVOff1(1,:)'%子代輸出中的第一個函數(shù)
[Chrom,ObjV1]=reins(Chrom,SelCh,SUBPOP,[1,INSR],ObjV1,ObjVOff1)%代替
FitnV1=ranking(ObjV2,[2,0],SUBPOP)%分配適應度值
SelCh1=select(SEL_F,Chrom0,FitnV1,GGAP,SUBPOP)%選擇
SelCh1=recombin(XOV_F,SelCh1,XOVR,SUBPOP)%重組
SelCh1=mutate(MUT_F,SelCh1,FieldDD2,[MUTR],SUBPOP)%變異
Chrom4=SelCh1'
load testxl net%載入訓練好的網(wǎng)絡
ObjVOff2=sim(net, Chrom4)%計算子代目標函數(shù)
ObjVOff2=ObjVOff2(1,:)'%子代輸出中的第一個函數(shù)
[Chrom0,ObjV2]=reins(Chrom0,SelCh1,SUBPOP,[1,INSR],ObjV2,ObjVOff2)%代替
FitnV2=ranking(ObjV3,[2,0],SUBPOP)%分配適應度值
SelCh2=select(SEL_F,Chrom5,FitnV2,GGAP,SUBPOP)%選擇
SelCh2=recombin(XOV_F,SelCh2,XOVR,SUBPOP)%重組
SelCh2=mutate(MUT_F,SelCh2,FieldDD3,[MUTR],SUBPOP)%變異
Chrom6=SelCh2'
load testfuji net%載入訓練好的網(wǎng)絡
ObjVOff3=sim(net, Chrom6)%計算子代目標函數(shù)
ObjVOff3=ObjVOff3(1,:)'%子代輸出中的第一個函數(shù)
[Chrom5,ObjV3]=reins(Chrom5,SelCh2,SUBPOP,[1,INSR],ObjV3,ObjVOff3)%代替
gen=gen+1
[trace(gen,1),I]=min(0.5*(1-ObjV1)+0.4*ObjV2+0.1*ObjV3)%
trace(gen,2)=mean(ObjV1)%解得平均值
end
%[Y1,I]=min(ObjV)
%[Y,I]=min(ObjV1)%最優(yōu)控制向量值及其序
%[Y,I]=min(0.6*(0.987-ObjV1)+0.4*(0.92603-ObjV2))%
[Y,I]=min(0.5*(1-ObjV1)+0.4*ObjV2+0.1*ObjV3)%
%t=Chrom(I,:)
%load testnox net%載入訓練好的網(wǎng)絡
t=Chrom0(I,:)
load testxl net%載入訓練好的網(wǎng)絡
%t=Chrom5(I,:)
%load testfuji net%載入訓練好的網(wǎng)絡
A=sim(net,t')
subplot(211)%最優(yōu)控制向量分布圖
plot(Chrom(I,:));hold on;
plot(Chrom(I,:),'.');grid
legend('最優(yōu)控制向量')
subplot(212);%遺傳算法性能跟蹤分布圖
%plot(trace(:,1));hold on;
plot(trace(:,1),'*');grid
plot(trace(:,2),'.')
legend('解的變化','種群均值的變化');xlabel('迭代次數(shù)')
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -