www.gusucode.com > 《MATLAB智能算法30个案例》分析源代码 > 《MATLAB智能算法30个案例》分析源代码/code/chapter11/aberranceJm.m
function ChromNew=aberranceJm(Chrom,MUTR,Jm,T) %初始化 [NIND,WNumber]=size(Chrom); WNumber=WNumber/2; ChromNew=Chrom; [PNumber MNumber]=size(Jm); Number=zeros(1,PNumber); for i=1:PNumber Number(i)=1; end for i=1:NIND %取一个个体 S=Chrom(i,:); WPNumberTemp=Number; for j=1:WNumber JMTemp=Jm{S(j), WPNumberTemp(S(j))}; SizeTemp=length(JMTemp); %是否变异 if MUTR>rand; % 选择机器(随机选择) % S(j+WNumber)=unidrnd(SizeTemp); %选择机器( 加工时间少的选择几率大) if SizeTemp==1 S(j+WNumber)=1; else S(j+WNumber)=selectJm(S(j++WNumber),T{S(j),WPNumberTemp(S(j))}); end end WPNumberTemp(S(j))=WPNumberTemp(S(j))+1; end %数据放入新群 ChromNew(i,:)=S; end