⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tranq2r.m

📁 量子遗传算法MATLAB源代码
💻 M
字号:
%使用轮盘赌选择法得到二进制观察态C,计算出十进制解R
%tranQ2R
function [R]=tranQ2R(ai,n,var,i,numLayer,bestIndR)
poi=rand(1,n);
for ii=1:n
    if poi(ii)<((abs(ai(ii)))^2)
        C(ii)=0;
    else
        C(ii)=1;
    end
end
%得到十进制解
if numLayer==1
    switch var
        case 1
            Rmin=-2;Rmax=2;
        case 2
            Rmin=-1;Rmax=1;
        case 3
            Rmin=-2;Rmax=2;
        case 4
            Rmin=-1;Rmax=1;
    end
else
    switch var
        case 1
            if (bestIndR(1,i)-((2/numLayer)*abs(bestIndR(1,i))))<-2
                Rmin=-2;
            else
                Rmin=bestIndR(1,i)-((2/numLayer)*abs(bestIndR(1,i)));
            end
            if (bestIndR(1,i)+((2/numLayer)*abs(bestIndR(1,i))))>2
                Rmax=2;
            else
                Rmax=bestIndR(1,i)+((2/numLayer)*abs(bestIndR(1,i)));
            end
        case 2
            if (bestIndR(2,i)-((2/numLayer)*abs(bestIndR(2,i))))<-1
                Rmin=-1;
            else
                Rmin=bestIndR(2,i)-((2/numLayer)*abs(bestIndR(2,i)));
            end
            if (bestIndR(2,i)+((2/numLayer)*abs(bestIndR(2,i))))>1
                Rmax=1;
            else
                Rmax=bestIndR(2,i)+((2/numLayer)*abs(bestIndR(2,i)));
            end
        case 3
            if (bestIndR(3,i)-((2/numLayer)*abs(bestIndR(3,i))))<-2
                Rmin=-2;
            else
                Rmin=bestIndR(3,i)-((2/numLayer)*abs(bestIndR(3,i)));
            end
            if (bestIndR(3,i)+((2/numLayer)*abs(bestIndR(3,i))))>2
                Rmax=2;
            else
                Rmax=bestIndR(3,i)+((2/numLayer)*abs(bestIndR(3,i)));
            end
        case 4
            if (bestIndR(4,i)-((2/numLayer)*abs(bestIndR(4,i))))<-1
                Rmin=-1;
            else
                Rmin=bestIndR(4,i)-((2/numLayer)*abs(bestIndR(4,i)));
            end
            if (bestIndR(4,i)+((2/numLayer)*abs(bestIndR(4,i))))>1
                Rmax=1;
            else
                Rmax=bestIndR(4,i)+((2/numLayer)*abs(bestIndR(4,i)));
            end
    end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
d=0;
for ii=1:n
   d=d+C(ii)*(2^(n-ii));
end
 R=Rmin+(Rmax-Rmin)*d/((2^n)-1);
 
 
 
 
 

⌨️ 快捷键说明

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