退火炉优化调度算法
原创文章转载请注明:http://www.dianlu163.com,版权归江苏恒力炉业有限公司所有
退火炉优化调度算法如下。
假定有M个炉台,H个加热罩,C个冷却罩,L部行车,N个待排产的生产计划。
步骤1.启动遗传算法模块.遗传算法模块把N个待排产的生产计划从1到N
编号产生初始种群,初始种群的每个个体代表一个调度方案,采用自然数编码,例如(1,2,3,...,N一1, N)是一个个体,代表一种调度方案;而(N, N一1,...,3,2,1)是另一个个休,代表另一种调度方案,其生产顺序与上一种相反.把初始种群作为当前种群保存。
步骤2.判断是否达到规定的最大代数.若达到规定的最大代数,从仿真过的所有种群中选出具有最优生产指标的个体,该个体所代表的排产计划作为最优的调度方案,结束程序运行;否则进入下一步.
步骤3.把当前种群中的每个个体作为输入调用离散事件仿真模块.每个个体的仿真过程如步骤4至步骤11.
步骤4.仿真初始化.读入M个炉台的当前生产状态,把这些生产状态转换成对应的事件或者等待事件,事件按时间顺序放入事件队列,事件队列只有1个,等待事件放入等待事件队列,根据实际情况按优先级不同把等待事件分成4类,用4个二叉排序树存放这4类等待事件,每个二又排序树就是一个等待事件队列,相同优先级的等待事件按发生时问排序。然后,设置仿真时钟为0。
步骤5.判断有没有满足条件的等待事件。按优先级查看哪个等待事件所等待的条件可以得到满足如果满足,从等待事件队列中提出此等待事件,进入下一步;如果不满足则跳过下一步
步骤6执行满足条件的等待事件.其操作包括产生下一个事件,占用相关资源,销毁自身(即释放该等待事件对象占用的内存资源).将所有满足条件的等待事件都执行后,进入下一步.
步骤7.退火炉选择一个最早发生的非等待事件。从事件队列中选择一个发生时间最早的事件,如果不只一个,一并选择出来。
步骤8.将仿真时钟推进到该事件的发生时间。
步骤9.执行该非等待事件.操作包括释放与占用相关资源,产生下一个事件或者等待事件,销毁自身(即释放该非等待事件对象占用的内存资源)。
步骤10.判断仿真是否可以结束.判断结束条件是否满足,即判断事件队列是否为空,若为空则进入下一步;若不为空,则回到步骤5继续执行。
步骤11.结束仿真。
步骤12.进行选择运算.在仿真的执行过程当中,不断记录程序状态,包括等待受限资源的时间以及工作时间等.一个个体仿真结束后,利用所记录的数据计算式(1)的目标函数,并计算相应的适应度函数值送入遗传算法模块,遗传算法模块会根据当前种群中所有个体的适应度函数值采用轮盘赌的方法对这些个体进行选择。
步骤13.进行交又运算.将选择后的各个个体采用部分映射交叉(PMX)法交叉,按式(2)计算交义率。
步骤14.进行变异运算。退火炉采用的是互打:变异,随机的迭择两个位置,并将这两个位置互换,按式(3)计算变异率。
步骤15.识经过选择泛叉和变异的所有个体作为当前种群,返回步骤2。