📄 getmutation.m
字号:
% 函数功能: 按照惯性权值in_w,得到“变异”后新的序列
% |-思想:产生一个随机数r1,若 r1 < in_w 则变异,否则不变
% |- 变异:随机产生两个位置,交换对应的作业编号
function [out_mutJobSeq] = getMutation(in_jobSeq, in_w);
% 输入:
% |- in_jobSeq:原作业序列,(1 × jobCount)维
% |- in_w: 惯性权值,取值为[0, 1]
% 输出:
% |- out_mutJobSeq:变异后的序列,(1 × jobCount)维
[f_lowCount, f_jobCount] = size(in_jobSeq);
f_rand = rand(1);
out_mutJobSeq = in_jobSeq;
if (f_rand < in_w) % 变异
% 随机取两个位置 f_ind1,f_ind2
f_ind1 = ceil(rand(1) * (f_jobCount-1));
f_ind2 = ceil(rand(1) * (f_jobCount-1));
% 避免两位置相同,随机加上一个数,超出边界则修正为边界
if (f_ind1 == f_ind2)
f_add = ceil(rand(1) * (f_jobCount-1));
f_ind2 = f_ind2 + f_add;
if (f_ind2 > f_jobCount)
f_ind2 = f_jobCount;
end
end
f_swap = in_jobSeq(1, f_ind1);
out_mutJobSeq(1, f_ind1) = out_mutJobSeq(1, f_ind2);
out_mutJobSeq(1, f_ind2) = f_swap;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -