migration.m

来自「量子遗传算法MATLAB源代码」· M 代码 · 共 39 行

M
39
字号
% 移民函数
function [individualQ,individualR]=Migration(n,k,preGen,migGen,migRate,numLayer,bestIndR,individualQ,individualR)
number=floor(n*migRate);                   %单列量子变化个数(目前存在BUG,只能n=20,migRate=0.1)
for i=1:k
    for j=1:4
        while (1)
            poi=rand(1,number);
            if abs(poi(1)-poi(2))>(1/n)
                break
            end
        end
        for jj=1:number
            for ii=1:n
                if ((ii-1)/n)<=poi(jj)&poi(jj)<=(ii/n)       % 选择移民位置
                    p=rand(1,1);
                    if p>0.5
                        Ma=(1/sqrt(2));                      % 随机生成新的量子位
                    else
                        Ma=-(1/sqrt(2));
                    end
                   % Mb=sqrt(1-(Ma^2));
                    p=rand(1,1);
                    if p>0.5
                        Mb=(1/sqrt(2));
                    else
                        Mb=-(1/sqrt(2));
                    end
                    [individualQ(1,ii,j,i)]=Ma;
                    [individualQ(2,ii,j,i)]=Mb;
                end
            end
        end
        [individualR(j,i)]=tranQ2R(individualQ(1,:,j,i),n,j,k,numLayer,bestIndR);
    end
end

                
       
    

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?