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

📄 sg_mutation.m

📁 免疫算法实现多峰、多极值函数平面曲面拟合
💻 M
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function new_antibody=sg_mutation(antibody)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 下层变异(参数基因的变异)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
bit_length=9;
new_antibody=antibody;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for j=1:size(antibody,1)
    % 将个体的第j个基因译码为45位二进编码
    temp(size(antibody,2)-1)=antibody(j,size(antibody,2))*60;
    temp(1:size(antibody,2)-2)=antibody(j,2:size(antibody,2)-1)*120+240;
    bin=rem(floor(round(temp)'*pow2(1-bit_length:0)),2);
    % 执行变异操作,变异率0.001
    count=find(rand(1,bit_length*(size(antibody,2)-1))<.001);
    bin(count)=~bin(count);
    % 将变异完的二进编码串恢复为基因形式
    twos = pow2(bit_length-1:-1:0);
    new_antibody(j,2:size(antibody,2))=sum(bin.* twos(ones(size(antibody,2)-1,1),:),2)'/120;
    new_antibody(j,size(antibody,2))=new_antibody(j,size(antibody,2))*2;
    new_antibody(j,2:size(antibody,2)-1)=new_antibody(j,2:size(antibody,2)-1)-2;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

⌨️ 快捷键说明

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