变异是根据[码丽莲梦露]博主写的变异 *** 作,按照自己的理解,编写了matlab代码。
用python实现改遗传算法解柔性作业车间调度问题的交叉和变异 *** 作_太剧烈的快乐与太剧烈的悲哀是有相同之点的——同样地需要远离人群!-CSDN博客_pox交叉 python
所谓变异,就是通过改变某些基因,而使染色体发生变化,最终提高解的质量。
首先,随机取几个位置,再判断每一个位置的工件所对应的是第几道工序,最后对这个位置所对应的机器片段,选择最短的加工时间机器。
下面附上代码:
%变异 *** 作 随机选取一个位置,将该位置所对应的加工机器换为加工时间最短的机器 function NewChrom = mutate(Chrom,MUTR,Jm,T) %UNTITLED 此处显示有关此函数的摘要 % 此处显示详细说明 %初始化 [NIND,WNumber]=size(Chrom); WNumber=WNumber/2; NewChrom=Chrom; for i=1:NIND %取一个个体 S=Chrom(i,:); number=randperm(WNumber); r=randi([1,WNumber]); % WPNumberTemp=Number; for k=1:r pos=number(k); workpiece=S(pos); numbershunxu =0; %% 判断现在是第几道工序 for b=1:pos if S(b)==workpiece numbershunxu=numbershunxu+1; end end JMTemp=Jm{workpiece, numbershunxu}; SizeTemp=length(JMTemp); %是否变异 if MUTR>rand %选择机器( 加工时间少) if SizeTemp==1 S(pos+WNumber)=1; else a=T{workpiece, numbershunxu}; [~,index]=min(a); S(pos+WNumber)=index;% end end end %数据放入新群 NewChrom(i,:)=S; end end
转发采用请注明出处~
欢迎批评指正,欢迎点赞~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)