遗传算法(实数量子遗传,双链量子遗传、GA)解决Shaffer's F6函数练习
1,Shaffer's F6函数:
此函数有无限个局部极大点,(0,0)时候取全局最大1。自变量取值[-100,100]。
2,运用实数量子遗传(RQGA)解决:
clear;
clc;
close all;
NP=50;
L=2;
G=500;%遗传代数
Xx=-100;
Xs=100;%范围界限
scale=60;%调整步长 步长为0.01*pi*scale
fitness=zeros(NP,1);
trace=zeros(G,1);
best=struct('fitness',0,'xchrom',[],'chrom',[],'boundchrom',[]);
%'fitness',最优适应度,'xchrom',最优实数解,'chrom',最优染色体量子状态,'boundchrom',界限编码
fai=2*pi*rand(NP,L);
chrom=zeros(NP,L,2);
chrom=zeros(NP,L,2);
chrom(:,:,1)=cos(fai);
chrom(:,:,2)=sin(fai);%初始化种群
[xchrom,boundchrom]=collapse(chrom,Xx,Xs);%测量算子
for i=1:NP
x1=xchrom(i,1);x2=xchrom(i,2);
fitness(i)=0.5-((sin(sqrt(x1^2+x2^2)))^2-0.5)/(1+0.001*(x1^2+x2^2))^2;%计算适应度
end
[best.fitness,bestindex]=max(fitness);
best.chrom=chrom(bestindex,:,:);
best.xchrom=xchrom(bestindex,:);
best.boundchrom=boundchrom(bestindex,:);
trace(1