crossover.m

来自「kmeans算法,许多同学做毕设需要用到」· M 代码 · 共 26 行

M
26
字号
function [Pc]=Crossover(Ps,pc,data)
% 交叉操作
% input:
%       Ps    ---- 种群
%       pc    ---- 交叉概率
%       data  ---- 数据矩阵
% output:
%       Pc    ---- 交叉操作后的种群
%-------------------------------------------------------------------------%
N =size(Ps,1);                       % 染色体总数
d=size(data,2);                     % 染色体位数
for i=1:N
    r=rand;                          % (0,1)随机数
    if r<pc                          % 满足交叉概率
        chrom1=Ps(1,:);              % 第一个染色体chrom1
        pos=1+floor((16-1)*rand);     %随机产生交叉位
        nr=1+floor((N-1)*rand);      % 随机选取第二个染色体chrom2
        chrom2=Ps(nr,:);         
        temp=chrom1(pos:end);            % 两条染色体交叉
        chrom1(pos:end)=chrom2(pos:end);
        chrom2(pos:end)=temp;
        Ps(i,:)=chrom1;                %交叉后的染色体存储在种群中
        Ps(nr,:)=chrom2;
    end
end
Pc=Ps;

⌨️ 快捷键说明

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