您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 基于多层编码遗传算法的车间调度算法
基于多层编码遗传算法的车间调度算法基于多层编码遗传算法的车间调度算法基于多层编码遗传算法的车间调度算法1案例背景遗传算法具有较强的问题求解能力,能够解决非线性优化问题。对于遗传算法中的染色体表示问题中的一个潜在最优解,对于简单的问题来说,染色体可以方便的表达问题的潜在解,然而,对于较为复杂的优化问题,一个染色体难以准确表达问题的解。多层编码遗传算法,把个体编码分为多层,每层编码均表示不同的含义,多层编码共同完整表达了问题的解,从而用一个染色体准确表达出了复杂问题的解。多层编码遗传算法扩展了遗传算法的使用领域,使得遗传算法可以方便用于复杂问题的求解。2、案例目录第十一章基于多层编码遗传算法的车间调度算法.111.1理论基础.111.2案例背景.111.2.1问题描述.111.2.2模型建立.211.2.3算法实现.311.3MATLAB程序实现.411.3.1主函数.411.3.2适应度值计算.511.3.3交叉函数.711.3.4变异函数.811.3.5仿真结果.811.4案例扩展.1011.4.1模糊目标.1011.4.2代码分析.1111.4.3仿真结果.1211.5参考文献.123、主程序:%%基本参数NIND=40;%个体数目MAXGEN=50;%最大遗传代数GGAP=0.9;%代沟XOVR=0.8;%交叉率MUTR=0.6;%变异率gen=0;%代计数器%PNumber工件个数MNumber工序个数[PNumberMNumber]=size(Jm);trace=zeros(2,MAXGEN);%寻优结果的初始值WNumber=PNumber*MNumber;%工序总个数%%初始化Number=zeros(1,PNumber);%PNumber工件个数fori=1:PNumberNumber(i)=MNumber;%MNumber工序个数end%代码2层,第一层工序,第二层机器Chrom=zeros(NIND,2*WNumber);forj=1:NINDWPNumberTemp=Number;fori=1:WNumber%随机产成工序val=unidrnd(PNumber);whileWPNumberTemp(val)==0val=unidrnd(PNumber);end%第一层代码表示工序Chrom(j,i)=val;WPNumberTemp(val)=WPNumberTemp(val)-1;%第2层代码表示机器Temp=Jm{val,MNumber-WPNumberTemp(val)};SizeTemp=length(Temp);%随机产成工序机器Chrom(j,i+WNumber)=unidrnd(SizeTemp);endend%计算目标函数值[PValObjVPS]=cal(Chrom,JmNumber,T,Jm);%%循环寻找whilegentrace(1,gen)Val1=PVal;Val2=P;MinVal=trace(1,gen);STemp=S;endend
本文标题:基于多层编码遗传算法的车间调度算法
链接地址:https://www.777doc.com/doc-4338539 .html