插入变异的matlab代码实现(遗传算法解JSP)
插入变异
插入变异(insertion mutation)通过将某基因座上的基因插入到染色体的其他基因座上产生新的染色体,具体操作过程如下。
Step1:随机选择一条染色体𝑃;
Step2:随机选择染色体𝑃上的一个基因,将这个基因随机移动到染色体中的其他基因座上,生成子代染色体𝑂。
伪代码
顺序选择种群个体,设置变异概率,选择个体中OS编码部分;
产生两个1:D之间的随机数pos1和pos2,判断pos1、pos2的大小,若pos1<pos2,将pos1、pos2之间的基因向前移一个位置,再将pos1赋值给pos2;
若pos1>pos2,将pos1、pos2之间的基因向后移一个位置,再将pos1赋值给pos2。
matlab代码实现
%% 插入变异
% 选择基因
temp = [];
for gene = 1:D % D染色体长度
temp= [temp Offspring_group1(i,gene)]; % 选择染色体
end
% 交换基因
if rand(1)<Pm % 设置变异概率
pos1=randi([1,D