插入变异的matlab代码实现(遗传算法解JSP)

插入变异的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
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

从心开始@_@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值