code.m

来自「用4个种群来优化函数」· M 代码 · 共 43 行

M
43
字号
function ret=Code(lenchrom,opts,bound)
%本函数将变量编码成染色体,用于随机初始化一个种群
% lenchrom   input : 染色体长度
% opts       input : 编码方法
% bound      input : 变量的取值范围
% ret        output: 染色体的编码值
switch opts
    case 'binary' % binary coding
        flag=0;
        while flag==0
            pick=rand(1,sum(lenchrom));
            bits=ceil(pick-0.5);
            temp=sum(lenchrom)-1:-1:0;
            ret=sum(bits.*(2.^temp));    %编码后以实数存入ret中
            flag = 1;
 %           flag=test(lenchrom,bound,ret,opts);         %检验染色体的可行性
        end
        
    case 'grey'   % grey coding
        flag=0;
        while flag==0
            pick=rand(1,sum(lenchrom));
            bits=ceil(pick-0.5);
            greybits=bits;
            for i=2:length(greybits)
                greybits(i)=bitxor(bits(i-1),bits(i));
            end
            temp=sum(lenchrom)-1:-1:0;
            ret=sum(greybits.*(2.^temp));   %编码后以实数存入ret中
            flag = 1;
%            flag=test(lenchrom,bound,ret,opts);     %检验染色体的可行性
        end
        
    case 'float'   % float coding
        flag=0;
        while flag==0
            pick=rand(1,length(lenchrom));
            ret=bound(:,1)'+(bound(:,2)-bound(:,1))'.*pick; %线性插值,编码结果以实数向量存入ret中
            flag = 1;
%            flag=test(lenchrom,bound,ret,opts);     %检验染色体的可行性
        end
        
end

⌨️ 快捷键说明

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