資源簡介
遺傳算法 GA 最優保留 輪盤賭算子、單點交叉算子、位點變異算子 最后繪制最優適應度進化曲線

代碼片段和文件信息
clc;
%初始化參數
T=100;%仿真代數
N=80;%?群體規模
pm=0.05;pc=0.8;%交叉變異概率
umax=2.048;umin=-2.048;%參數取值范圍
L=10;%單個參數字串長度,總編碼長度2L
bval=round(rand(N2*L));%初始種群???%%RAND返回0到1的均勻分布隨機數
bestv=-inf;%最優適應度初值
%迭代開始
for?ii=1:T
%解碼,計算適應度
for?i=1:N
????????y1=0;y2=0;
????????for?j=1:1:L
???????????y1=y1+bval(ij)*2^(L-j);
????????end
????????x1=(umax-umin)*y1/(2^L-1)+umin;
????????for?j=(L+1):1:2*L
???????????y2=y2+bval(ij)*2^(2*L-j);
????????end
????????x2=(umax-umin)*y2/(2^L-1)+umin;
????????obj(i)=100*(x1*x1-x2)^2+(1-x1)^2;?%目標函數?
????????xx(i:)=[x1x2];%用以記錄當前x1和x2的值
????end
func=obj;%目標函數轉換為適應度函數
p=func/sum(func);
q=cumsum(p);%累加
[fmaxindmax]=max(func);%求當代最佳個體
???if?fmax>=bestv
??????bestv=fmax;%到目前為止最優適應度值
??????bvalxx=bval(indmax:);%到目前為止最佳位串
??????optxx=xx(indmax:);%到目前為止最優參數
???end???
???Bfit1(ii)=bestv;?%?存儲每代的最優適應度
%%%%遺傳操作開始
%輪盤賭選擇
?for?i=1:(N-1)
????r=rand;
????tmp=find(r<=q);
????newbval(i:)=bval(tmp(1):);
?end?
??newbval(N:)=bvalxx;%最優保留
??bval=newbval;
%單點交叉
for?i=1:2:(N-1)
???cc=rand;
???if?cc ???????point=ceil(rand*(2*L-1));%取得一個1到2L-1的整數
???????ch=bval(i:);
???????bval(ipoint+1:2*L)=bval(i+1point+1:2*L);
???????bval(i+1point+1:2*L)=ch(1point+1:2*L);
????end
end???
bval(N:)=bvalxx;%最優保留
%位點變異
mm=rand(N2*L) mm(N:)=zeros(12*L);%最后一行不變異,強制賦0
bval(mm)=1-bval(mm);?
end
%輸出
plot(Bfit1‘red‘);%?繪制最優適應度進化曲線
title(‘函數最大值‘);
bestv???%輸出最優適應度值
optxx????%輸出最優參數
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1679??2012-12-18?22:22??zuiyoubaoliu.m
-----------?---------??----------?-----??----
?????????????????1679????????????????????1
- 上一篇:Rinex說明文檔
- 下一篇:group lasso
評論
共有 條評論