车间调度算法(jobshopscheduling)彭博2012-11-21主要内容Job—shop调度问题遗传算法理论遗传算法在车间调度算法中的求解过程问题提出车间作业调度(Job-ShopScheduling),简称JSS,是一个典型的NP难问题,是OperationResearch领域中研究的重要课题。它的研究不仅具有重大的现实意义,而且具有深远的理论意义。长期以来,JSS研究的方法始终以启发式算法为主导,绝大部分的JSS研究工作也都围绕着启发式算法进行,如基于启发式算法的JSS仿真系统,基于启发式算法的并行JSS系统,基于启发式算法的JSS专家系统,等等,尽管这些研究取得了一定的应用效果,但是却存在着难以克服的弱点,如计算规模不可能较大,寻优结果不具备全局特性等等。近年来,又有学者提出了基于神经网络的车间作业调度系统,但此种方法在JSS规模较大时,却存在着计算速度慢与结构参数难以确定的弱点。由此可见,要想进一步研究JSS,选择一种有效的方法极为必要。问题描述:假设有n个工件{J1,J2,…,Jn}要在m台机器{M1,M2,…,Mm}上进行加工。每个工件以一定的次序在所有的机器上轮流加工。每个工件分成m个工序,而每个工序对应了相应的加工机器。其中,工序的加工时间给定。J1:M1M2M3J2:M3M1M2J3:M2M3M1工序1工序2工序3约束工件上约束:每个工件上的工序只能在上一个工序执行结束以后,才能开始执行下一个工序。机器上约束:每台机器每一个时刻最多只能执行一个工件,且该工序的执行时间是非抢占的。最大完工时间(Makespan):完成所有工序所需要的总时间。J1:M1M2M3J2:M3M1M2J3:M2M3M1工序1工序2工序3目标有M台机器及N个工件,由于工件的加工工艺的要求,每个工件使用M台机器的次序以及每道工序所花费的时间已经给定。如何安排在每台机器上工件的加工顺序,使得总的完工时间(Makespan)最小。Job—shop调度问题的实际应用在解决实际问题的时候,“工件”和“机器”可以拓展成相应的问题描述。譬如:在生产车间当中,把一个零件或是一组零件看是需要加工的“工件”,而把加工用的车床看成是“机器”;在飞机调度问题中,可以将若干个不同的飞机看成“工件”,而将飞机需要进行的操作,看成是需要操作的“机器”。因而,jobshopscheduling问题的实际应用是非常广泛的。遗传算法在解Job-shop调度问题方面的研究现状由于Job-Shop调度问题是一个NP难题,而遗传算法为求NP难度问题的近似解提供了一种有效手段,所以现在许多人都致力于用遗传算法解决Job-shop问题,各有特点。但就目前来看:(1)由于Job-Shop调度问题的特殊性,编码机制显得尤为重要,因为编码机制选择不当,遗传算法的杂交、变异算子很容易破坏原加工顺序。(2)死锁问题也是一个重要问题,如果处理不当,死锁的出现是无法预料的。(3)收敛性及收敛速度问题,应用GA解Job-Shop调度问题时很少有人考虑这两个问题,所以得到的结果与最佳值的接近程度无理论保证。Job-shop的求解方法局部搜索(LocalSearch)禁忌搜索(TabuSearch)遗传算法(GeneticAlgorithm)混合进化算法(MemeticAlgorithm)局部搜索算法领域结构(Neighborhood):将一个初始解进行微小变动以后,产生的解的集合。Neighborhood局部搜索算法从一个初始解开始,每次从领域结构中选择一个最好的邻居解作为下一个初始解,迭代搜索解空间的过程。局部搜索算法核心:领域结构的构造。在Job-shop中,对所有机器上的每个工件都考虑其领域结构,效率是非常低下的,也可能导致不可行解的产生。通常是考虑基于关键路劲的领域结构构造方法。关键路径:调度序列中的最长路径,它制约着整个调度的完工时间。局部搜索算法关键块•关键块:连续的一组关键工序,因而,可能存在多个关键块。•目前的领域结构都是基于关键块的,有多种领域操作,但都是基于移动关键块两端的工序。不产生不可行解,效率高。局部搜索算法的不足当遇到局部极值的时候,Localsearch的算法将遇到瓶颈,从而需要更多的策略或更好的算法跳出localoptima。跳坑策略以及ILS跳坑策略:对当前解进行大的改动(扰动)。迭代局部搜索算法:结合跳坑策略形成的算法。禁忌搜索(TabuSearch)提出:由美国工程院院士,冯若依曼理论奖获得者FredGlover最先在1986年提出TabuSearch算法。TabuSearch:将之前搜索过的解禁忌,每次只选择没被禁忌的解或满足解禁策略的解。因而,它可以接受比自身差的解,从而跳出局部极值点,去搜索新的解空间。解禁策略:遇到一个虽被禁忌,但却比历史最优解还要好的解时,解禁,选择此解。禁忌长度:每个解被禁忌的时间长度。禁忌对象:可以禁忌完整的解,也可以禁忌部分解或是领域动作。禁忌搜索(TabuSearch)禁忌对象的选择一般与相应的领域结构对应起来,效果会比较好。Job-shop中常用的禁忌对象:若JA插入JB之后,则将JA和JB之间的所有工序的排列和在机器上的位置禁忌住,标记在禁忌列表(Tabu_List)里。遗传算法概述遗传算法(GeneticAlgorithms,GA)研究的历史比较短,20世纪60年代末期到70年代初期,主要由美国Michigan大学的JohnHolland与其同事、学生们研究形成了一个较完整的理论和方法,从试图解释自然系统中生物的复杂适应过程入手,模拟生物进化的机制来构造人工系统的模型。随后经过20余年的发展,取得了丰硕的应用成果和理论研究的进展,特别是近年来世界范围形成的进化计算热潮,计算智能已作为人工智能研究的一个重要方向,以及后来的人工生命研究兴起,使遗传算法受到广泛的关注。遗传算法概述从1985年在美国卡耐基·梅隆大学召开的第一届国际遗传算法会议(InternationalConferenceonGeneticAlgorithms:ICGA’85),到1997年5月IEEETransactionsonEvolutionaryComputation创刊,遗传算法作为具有系统优化、适应和学习的高性能计算和建模方法的研究渐趋成熟。遗传算法基本概念和术语遗传算法是模拟前述生物进化过程的计算模型。下面先给出几个生物学的基本概念与术语,这对于理解遗传算法是非常重要的。染色体(chromosome):具有遗传性质基因序列。种群(population)染色体带有特征的个体的集合称为种群。该集合内个体数称为群体的大小。遗传算法基本概念和术语适应度(fitness)在研究自然界中生物的遗传和进化现象时,生物学家使用适应度这个术语来度量某个物种对于生存环境的适应程度。对生存环境适应程度较高的物种将获得更多的繁殖机会,而对生存环境适应程度较低的物种,其繁殖机会就会相对较少,甚至逐渐灭绝。选择(selection)指决定以一定的概率从种群中选择若干个体的操作。一般而言,选择的过程是一种基于适应度的优胜劣汰的过程。遗传算法基本概念和术语交叉(crossover)有性生殖生物在繁殖下一代时,两个同源染色体通过交叉而重组,亦即在两个染色体的某一相同位置处DNA被切断,其前后两串分别交叉组合形成两个新的染色体。这个过程又称基因重组(recombination),俗称“杂交”。变异(mutation)在细胞进行复制时可能以很小的概率产生某些复制差错,从而使DNA发生某种变异,产生出新的染色体,这些新的染色体表现出新的性状。基本遗传算法的实现方法各种不同的遗传算法都有相同的的特点,即通过对生物遗传和进化过程中选择、交叉、变异机理的模仿,来完成对问题最优解的自适应搜索过程。基于这个共同特点,Goldberg总结出了一种统一的最基本的遗传算法——基本遗传算法(SimpleGeneticAlgorithm,简称SGA)。SGA只使用选择算子、交叉算子和变异算子这三种基本遗传算子,其遗传进化操作过程简单,容易理解,是其他一些遗传算法的雏形和基础,它不仅给各种遗传算法提供了一个基本框架,同时也具有一定的应用价值。因此为方便起见,本文在以后的应用中用此方法。遗传算法解决Jobshop的几个重要构成要素(1)染色体编码方法{123;312;231}基本遗传算法的构成要素(2)交叉过程下面是一种基于最长公共子序列的交叉算符,对两个父亲个体的每个机器都进行如下操作,产生两个子代个体:遗传算法的几个重要构成要素(3)适应度评价函数函数的主要部分是基于最大完工时间(Makespan)。可以附加上个体之间的距离,保持交叉的两个个体的分散性,避免近亲的后果。特例:两个解相同个体的后代和父代的解也相同。遗传算法流程Step1.初始化种群(采用随机策略)Step2.随机选择两个个体交叉,产生新个体加入到种群。Step3.根据适应度函数,对种群进行维护,淘汰掉适应度低的个体。Step4.没有到达终止条件,就GotoStep2.HybridEvolutionAlgorithm-MemeticMemeticAlgorithm:将LocalSearch的方法融入到遗传算法的框架之中,是一种混合了LocalSearchandGeneticAlgorithm的算法,集合了局部搜索强大的集中性以及遗传算法强大的分散性。利用MemeticAlgorithm在解决Job–Shop时,可以取得非常好的效果。在165个标准算例中,能够算出31个新的上界。HybridEvolutionAlgorithm-Memetic部分算例的解:谢谢大家