📄 qgate.asv
字号:
function ret=Qgate(individuals,best,sizepop,lenchrom)
% 根据<一种基于量子染色体的遗传算法>中的量子门调整策略编写
% quantum gate
global delta
for i=1:sizepop
for j=1:sum(lenchrom)
A=individuals.chrom(2*i-1,j); % α
B=individuals.chrom(2*i,j); % β
x=individuals.binary(i,j);
b=best.binary(j);
deltae=0.01*pi; % 旋转角的大小
if ((x==0)&(b==0))||(x==0&b==1&(individuals.fitness(i)<best.fitness))
deltae=0;
s=0; % s为旋转角的符号,即旋转方向
elseif ((x==0)&(b==1)&(individuals.fitness(i)>=best.fitness))||((x==1)&(b==0)&(individuals.fitness(i)<best.fitness))
if A*B>0
s=-1;
elseif A*B<0
s=1;
elseif A==0
s=sign(randn);
elseif B==0
s=0;
end
elseif ((x==1)&(b==1))||(((x==1)&(b==0)&(individuals.fitness(i)>=best.fitness)))
if A*B>0
s=1;
elseif A*B<0
s=-1;
elseif A==0
s=0;
elseif B==0
s=sign(randn);
end
end
e=s*deltae; % e为旋转角
u=[cos(e) -sin(e);sin(e) cos(e)]; % 量子旋转门
y=u*[A B]'; % y为更新后的量子位
chrom(2*i-1,j)=y(1);
chrom(2*i,j)=y(2);
end
end
ret=chrom;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -