mutation.m

来自「包含遗传算法十进制编码的交叉子函数和变异子函数」· M 代码 · 共 22 行

M
22
字号
function v=mutation(v,L) %变异子函数,V为父代距阵,为一个N x 1的距阵,每一个元素都是一个十进制染色体,L为染色体原始二进制编码长度(编码时先用二进制,然后转化为十进制)

N = size(v,1);
pm = 0.01;

% mutation

   p=rand(1);
   if(p<p)
      i=floor(N*rand(1));%随机产生一个突变点
      a=floor((L-1)*rand(1));%0=<a<b<L 产生突变片段范围
      b=floor((L-1)*rand(1));
      if(a>b)
          temp=a;
          a=b;
          b=temp;
      end
      x1=mod(v(i,1),2^(b+1))-mod(v(i,1),2^a); %提取交叉点中的片段
      v(i,1)=((2^(b-a+1)-1)-x1/2^a)*2^a;%进行交叉
    
   end
    

⌨️ 快捷键说明

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