📄 crossover.m
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -