智能工厂,不能不知道的调度算法
一、排产调度问题的提出
敏捷制造作为21世纪企业的先进制造模式,综合了精益JIT、并行工程等多种先进制造模式的哲理,其目的是要以最低成本制造出顾客满意的产品,即是完全面向顾客的。
在这种模式下,如何进行组织管理,包括如何组织动态联盟、如何重构车间和单元、如何安排生产计划、如何进行排产调度都是我们面临的问题。其中车间作业排产调度与控制技术是实现生产高效率、高柔性和高可靠性的关键,有效实用的排产调度方法和优化技术的研究与应用已成为智能制造技术实践的基础。排产调度问题主要集中在车间的计划与排产调度方面,是针对一项可分解的工作(如产品制造),探讨在在尽可能满足约束条件(如交货期、工艺路线、资源情况)的前提下,通过下达生产指令,安排其组成部分(操作)使用哪些资源、其加工时间及加工的先后顺序,以获得产品制造时间或成本的最优化。在理论研究中,生产排产调度问题常被称为排序问题或资源分配问题。
二、排产调度问题的分类
生产排产调度系统的分类方法很多,主要有以下几种:(1) 根据加工系统的复杂度,可分为单机、多台并行机、Flow Shop(流水线加工)和 Job Shop(任务型加工)。
单机排产调度问题是所有的操作任务都在单台机器上完成,为此存在任务的优化排队问题,多台并行机的排产调度问题更复杂,因而优化问题更突出。
Flow Shop型问题假设所有作业都在同样的设备上加工,并有一致的加工操作和加工顺序。Job Shop是最一般的排产调度类型、并不限制作业的操作的加工设备,并允许一个作业加工具有不同的加工路径。
根据性能指标,分为基于排产调度成本和排产调度性能的指标两大类。
根据生产环境的特点,可将排产调度问题分为确定性排产调度和随机性排产调度问题。
根据作业的加工特点,可将排产调度问题分为静态排产调度和动态排产调度。
静态排产调度是指所有待安排加工的工作均处于待加工状态,因而进行—次排产调度后、各作业的加工被确定、在以后的加工过程中就不再改变;动态排产调度是指作业依次进入待加工状态、各种作业不断进入系统接受加工、同时完成加工的作业又不断离开,还要考虑作业环境中不断出现的动态扰动、如作业的加工超时、设备的损坏等。因此动态排产调度要根据系统中作业、设备等的状况,不断地进行排产调度。实际排产调度的类型往往是Job Shop型且是动态的。
三、生产排产调度的环境特征
一般的排产调度问题都是对于具体生产环境中复杂的、动态的、多目标的排产调度问题的一种抽象和简化,因而,一个排产调度算法可以通过其如何表述这些复杂性来进行分类。 由于实际生产环境是千差万别的,那末,一个排产调度算法就应该根据其是否能适合对应的生产环境的重要特征来进行评估。为了帮助区别不同的生产排产调度策略,给出了典型生产排产调度环境的五个特征,这将有助于我们了解各种不同的排产调度算法的应用环境。
1、 边界条件:
生产排产调度常常是一个重排产调度问题,即修改已有的生产排产调度去适应新的作业。为提供重排产调度,排产调度算法应能处理生产系统中有关的初始状态。类似的生产排产调度通常是在一个有限的时间区域里进行的,系统的最优解(或次优解)亦是在限定的边界范围内来获取。
2、 分批大小和调整成本:
为有效地解决实际生产中的排产调度问题,往往将任务分成多批进行,并考虑改变已有排产调度结果所付出的代价(调整成本)。
3、 加工路径:
在实际生产中,作业的加工路径可能需要动态改变,工艺顺序可能是半有序的(Semi order)。
4、 随机事件和扰动:
出现关键作业、设备损坏、加工操作失败、原料短缺、加工时间、到达时间、交货期的改变等。
5、 性能指标和多目标:
追求不同的性能指标往往会得到不同的优化解,同时,系统目标也以多目标为主。
四、排产调度问题的特点
实际的排产调度问题有以下特点:
(1) 复杂性
由于装卸作业、装卸设备、库场、搬运系统之间相互影响、相互作用、每个作业又要考虑它的到达时间、装卸时间、准备时间、操作顺序、交货期等,因而相当复杂。 由于排产调度问题是在等式或不等式约束下求性能指标的优化,在计算量上往往是NP(多项式复杂性)完全问题,即随着问题规模的增大,对于求解最优化的计算量呈指数增长,使得一些常规的最优化方法往往无能为力。
(2) 动态随机性
在实际的生产排产调度系统中存在很多随机的和不确定的因素,比如作业到达时间的不确定性、作业的加工时间也有一定的随机性,而且生产系统中常出现一些实发偶然事件,如设备的损坏、修复、作业交货期的改变等。
(3) 多目标。
实际的计划排产调度往往是多目标的,并且这些目标间可能发生冲突。排产调度目标分为基于排产调度成本和排产调度性能的指标两大类。 也有排产调度目标分三类:基于作业交货期的目标、基于作业完成时间的目标、基于生产成本的目标。这种多目标性导致排产调度的复杂性和计算量急剧增加。
五、排产调度问题的研究方法
—般的排产调度问题都是对于具体生产环境中复杂的、动态的、多目标的排产调度问题的一种抽象和简化,因而一个排产调度算法可以通过其如何表述这些复杂性进行分类。由于实际中生产环境是千差万别的,那么一个排产调度算法就应该根据其是否能适合对应的生产环境的重要特征进行评估。
在对排产调度问题进行研究的方法上,最初是集中在整数规划、仿真和简单的规则上,这些方法不是排产调度结果不理想就是难以解决复杂的问题。随着各种新的相关学科与优化技术的建立与发展,在排产调度领域也出现了许多新的优化方法,比如神经网络、模拟退火法、遗传算法、禁忌搜索法等,使得排产调度问题的研究方法向多元化方向发展。下面我们分别对这些方法进行总结:
(1) 运筹学方法
运筹学方法是将生产排产调度问题简化为数学规划模型,采用基于枚举思想的分枝定界法或动态规划算法进行解决排产调度最优化或近优化问题,属于精确方法。不同的分枝定界法,其不同点主要在于分析规则、定界机制和上界的产生这三方面存在差异。这类方法虽然从理论上能求得最优解,但由于其计算复杂性的原因、因而不能获得真正的实用。
对于复杂的问题,这种纯数学方法有模型抽取困难、运算量大、算法难以实现的弱点,对于生产环境中的动态排产调度实现复杂,解决不了动态及快速响应市场的问题。
(2) 基于规则的方法
对生产加工任务进行排产调度的最传统的方法是使用排产调度规则(Dispatching Rules),已经有许多排产调度规则被应用,因其排产调度规则简单、易于实现、计算复杂度低等原因,能够用于动态实时排产调度系统中,许多年来一直受到广泛研究,并不断涌现出新的排产调度规则。如较优的单元零件加工排产调度算法,在减少等待时间、提高生产率等诸多约束条件下达到了一种较为科学有效的排产调度效果。
规则按形式分为了三类:简单规则、复合规则、启发式规则;随着计算机运算速度的飞速提高,人们希望寻找新的近似排产调度方法,它以合理的额外计算时间为代价,换得比单纯启发式规则所得到的排产调度更好的排产调度。在这方面比较有代表性的有移动瓶颈方法(Bottle Neck Procedure),用来解决以最小化 Make Span(制造时间)为目标的 Job Shop排产调度问题,它通过不断地对移动的瓶颈设备进行单机排产调度,来获取更好的次优解。
总的说来,启发式规则直观、简单、易于实现。但是近研究表明并不存在一个全局最优的排产调度规则,它们的有效性依赖于对特殊性能需求的标准及生产条件。
它是局部优化方法,难以得到全局优化结果,并且不能对得到的结果进行次优性的定量评估。顾客需求的个性化及要求企业响应市场的敏捷性,往往在生产加工过程中加入了更多的不确定性及复杂性约束,寻找排产调度最优算法本身是一个NP完全问题,这些使得基于规则的排产调度思想已不能适合敏捷化制造的要求。
(3)系统仿真的方法
仿真方法是不单纯追求系统的数学模型,侧重对系统中运行的逻辑关系的描述,能够对生产排产调度方案进行比较评价,分析系统的动态性能,并选择系统的动态结构参数。由于制造系统的复杂性,很难用一个精确的解析模型来进行描述和分析。而通过运行仿真模型来收集数据,则能对实际系统进行性能、状态等方面的分析,从而,能对系统采用合适的控制排产调度方法。
仿真方法最早被用来作为测试排产调度启发式规则及分派规则的工具。后来,人们发现,通过将简单的优先权规则进行组合,或用一个简单的优先权规则将一些启发式规则进行组合,这样的排产调度优于单独的优先权规则。 于是,仿真方法逐渐发展为一种人机交互的柔性仿真工具,并用来进行车间排产调度。这样,就能通过仿真而动态地展现Job Shop车间的状态,分析在不同的排产调度方法下的系统性能,并运用知识和经验去选择合适的排产调度方法(规则),从而改善排产调度性能。
基于纯仿真法虽然可以包含解析模型无法描述的因素,并且可以提供给使用者一个排产调度性能测试的机会,但其不可避免地存在以下问题:
- 鉴于其实验性,因此,很难对生产排产调度的理论作出贡献。
- 应用仿真进行生产排产调度的成本很高,不仅在于产生排产调度的计算时间上,而且在于设计、建立、运行仿真模型上的高成本。
- 仿真的准确性受编程人员的判断和技巧的限制,甚至很高精度的仿真模型也无法保证通过实验总能找到最优或次优的排产调度。
(4) 基于 DEDS的解析模型方法
由于制造系统是一类典型的离散事件系统,因此,可以用研究离散事件系统的解析模型和方法去探讨车间排产调度问题,诸如排队论、极大/极小代数模型、Petri网等。
排产调度中的排队论方法是一种随机优化方法,它将每个设备看成一个服务台,将每个作业作为一个客户。作业的各种复杂的可变特性及复杂的路径,可通过将其加工时间及到达时间假设为一个随机分布来进行描述。
总的说来,排队网络模型由于从随机统计的角度来描述制造系统,难以表述系统中存在的某些特性(如有限的缓存空间等),同时,产生的输出是基于系统稳态操作的平均量,因此,很难得到比较具体的细节。
Petri网作为一种图形建模工具可以形象地表示和分析FMS中加工过程的并发和分布特征以及多项作业共享资源时的冲突现象,具有很强的建模能力,对于描述系统的不确定性和随机性也具有一定的优越性。在制造自动化领域,利用 Petri网及其扩展形式的模型进行死锁分析、排产调度决策和性能评价等。
目前,Petri网模型用于排产调度还存在以下的问题:
- 节点语义的单义性,使得所携带的系统信息量不够丰富。
- 重用性差。Petri网多是基于制造中作业的加工流程建模,当作业需求或工艺稍有变动时,必须修改模型结构,这难于适应制造中存在的不确定因素。
- 不能对高级的排产调度规则加以建模,通常只能用禁止弧机制体现一些低级控制。
(5)基于排序的方法
该方法是先有可行性加工顺序,然后才确定每个操作的开工时间,并对这个顺序进行优化,它虽然属于近似算法,但有可能达到最优的排产调度方案。它主要包括邻近搜索法,它在生产排产调度领域得到了相当广泛的应用,在探索解空间时,仅对选定的成本函数值的变化做出响应,因而通用性强。
这类方法包括局部探索(Local Search)、模拟退火法(Simulated Annealing)、列表寻优法(Table Search),遗传算法(Genetic Algorithms)。邻近搜索虽然可能得到最优的排产调度方案,但也存在各自的不足, 很多采取混合算法来弥补单一方法的不足。
启发式图搜索法
对于表述为整数规划的排产调度问题,最初采用分枝定界法来解决,而后其他的启发式图搜索法也被应用于解决排产调度问题。
将排产调度排序问题用一个图来表示,首先构造一个可行解,采用基于隐枚举的搜索方法不断提高解的次优性;采用束搜索法(beam search)来识别瓶颈机器,进行排产调度;为了解决搜索空间太大的问题,通过对分枝定界法和约束搜索法进行系统的分析,提出了一种过滤束搜索法(filter beam search),用来解决单台机器提前/延期问题和加权延期的 Flow Shop问题;对于图搜索算法,如何提高搜索效率并减少内存使用以解决规模较大的问题,还需要进一步探索。
模拟退火法
模拟退火算法(SA)将组合优化问题与统计力学中的热平衡问题类比,另辟了求解组合优化问题的新途径。它通过模拟退火过程,可找到全局(或近似)最优解。其基本思想为:把每种组合状态 Si看成某一物质系统的微观状态,而将其对应的目标函数C(Si)看成该物质系统在状态Si下的内能;用控制参数T类比温度,让T从一个足够高的值慢慢下降,对每个T,用 Metropolis抽样法在计算机上模拟该体系在此T下的热平衡态,即如果 C(s’),对当前状态Si作随机扰动以产生一个新状态s’。
模拟退火法的几个重要部分为:生成函数(generation)、容忍函数(acceptance function)、 Markov链长、降温过程和结束准则。模拟退火法的改进算法有加温退火法、有记忆的模拟退火法等。 为Flow Shop问题求解构造了一类模拟退火法,并通过六种不同的随机抽样方式分析了算法渐近收敛于全局最优解,分别解决了具有最小Make Span指标且具有无限中间存储(UIS)、有限中间存储(FIS)和无中间存储(NIS)的 Flow Shop排序问题;
一种改进的模拟退火法,用来解决具有最小 Make span指标的 Flow Shop排序问题,并与禁忌搜索法等进行了比较;另外,模拟退火法也可与其他方法相结合进行求解,如先用贪心法(greedy法)搜索,将得到的作业序列作为初始解,再用模拟退火法求解单机排产调度问题,其结果表明这种方法比单纯用模拟退火法和贪心法要好;将模拟退火法与启发式算法相结合的方法,求解具有交货期约束的Job Shop排产调度问题。
由于模拟退火法能以一定的概率接受差的能量值,因而有可能跳出局部极小,但它的收敛速度较慢,很难用于实时动态排产调度环境。
禁忌搜索法
对于复杂的组合优化问题,禁忌搜索也是一种通过领域搜索以获取最优解的方法。禁忌搜索是一种迭代方法,它开始于一个初始可行解S,然后移动到领域N(S)中最好的解s’,即s’,对于目标函数F(S)在领域 N(S)中是最优的。然后,从新的开始点重复此法。
为了避免死循环,禁忌搜索把最近进行的T个移动(T可固定也可变化)放在一个称作 tabu list的表中(也称短期记忆),在目前的迭代中这些移动是被禁止的,在一定数目的迭代之后它们又被释放出来。这样的tabu list是一个循环表,它被循环地修改,其长度T称作Tabu size。最后,还须定义一个停止准则来终止整个算法。由于tabu list的限制,使其在搜索中有可能跳出局部极小。针对求解交货期下带有等待时间惩罚的提前/拖期单机排产调度问题。
神经网络优化
Hopfield神经网络模型的提出为求解各种有约束优化问题开辟了一条新途径,它的主要思路是:通过一个Lyaplmov能量函数构造网络的极值,当网络迭代收敛时,能量函数达到极小,使与能量函数对应的目标函数得到优化。
随机 Hopfield网络来解决 Job Shop排产调度问题的方法;改进的Hopfield网络的整数线性规划神经网络方法来解决 Job Shop排产调度问题。
遗传算法
美国Michigan大学的J.H.Holland于本世纪末提出了一种新的并行优化搜索方法:遗传算法(Genetic Algorithm),它是一种基于进化论优胜劣汰、自然选择、适者生存和物种遗传思想的随机优化搜索算法,通过群体的进化来进行全局性优化搜索。
它以其很强的并行性和很高的计算效率正日益受到人们的关注。它对组合优化问题求解的主要过程是:给定一组初始解作为一个群体,通过选择、交换和变异等遗传操作符来搜索问题的最优解。
基于遗传算法的启发式方法,用于解决以最小化Make span为指标的flow shop排产调度问题;可以将遗传算法与图搜索法相结合,利用遗传算法进行知识的推理、启发,再用过滤束搜索法(filter beam search)进行优化搜索,以得到高质量的制造静态排产调度。
总的来说,遗传算法的最大优点是通过群体间的相互作用,保持已经搜索到的信息,这是基于单次搜索过程的优化方法所无法比拟的。但是,遗传算法也存在着计算速度较慢的问题。
(6)人工智能的排产调度方法
近年来受实际需要的推动,基于知识的智能排产调度系统和方法的研究取得了很大的进展。人工智能在上个世纪60年代就将计划问题作为其应用领域之一,但直到上个世纪80年代,开展基于约束传播的ISIS(Intelligent Scheduling and Information System)的研究为标志,人工智能才真正开始应用于排产调度问题。
基于知识的排产调度方法是用专家系统自动产生排产调度或辅助人去排产调度。它是将传统的排产调度方法与基于知识的排产调度评价相结合的方法。
在支持某些活动发生的资源条件具备时(称为决策点),根据系统当时所处的属性状态,决定采取何种规则(策略),确定或选择活动发生的顺序和时间,即状态指导的智能排产调度方法。
总的来说,主要包括智能排产调度专家系统、基于智能搜索的方法及基于多代理技术(Multi-Agent System 简称MAS)的合作求解的方法等。其中,智能排产调度专家系统是人工智能应用的体现,由于专家系统中知识获取和推理速度这两个瓶颈,使得神经网络逐渐被采用,但还存在训练速度慢、探索能力弱等缺点。
基于多代理技术的合作求解方法是较新的智能排产调度方法,它提供了一种动态灵活、快速响应市场的生产排产调度机制,它以分布式人工智能(Distributed Artificial Intelligence简称DAI)中的多代理机制作为新的生产组织与运行模式,通过代理(Agent)之间的合作以及MAS系统协调来完成生产任务的排产调度,并达到预先规定的生产目标及生产状态。在这种研究方法中,在Agent内部也可采用基于规则及智能推理相结合的混合方法,来构造基于MAS的生产排产调度系统。
六、排产调度方法存在的问题
排产调度领域中的大部分问题都具有NP问题,虽然对它的研究已有几十年的历史,但至今尚未形成一套系统的方法和理论,理论研究与实际应用之间还存在着很大差距。尤其随着JIT(Just-In-Time)思想的广泛采用,E/T(Earliness/Tardiness)排产调度问题,即使得工件尽量按交货期完成,变得越来越突出。
实际应用中的排产调度方法能够响应系统的动态变化,但不能保证得到好的排产调度:一些理论上的最优化方法能提供最优排产调度,但由于其计算的复杂性,并且忽略了很多实际因素,离实际运用还有较大距离。基于最优化的方法,诸如动态规划算法与分枝定界算法等等,由于其大多数是建立在对可能排产调度的部分枚举上,因此只能解决小规模的排产调度问题,距离实用还有较大距离。
由于大多排产调度问题属于一类NP困难组合问题,因此寻找具有多项式复杂性的最优算法几乎是不可能的。但因其解的最优性、至今仍激发着学者们进行不断的探索。
各种近似启发式方法、诸如基于规则的算法等,由于能在合理的时间内产生比较满意的排产调度,因此广泛应用于实际排产调度中,但其往往对所得的排产调度解的次优性不能进行评估。
在这方面有必要探索更好的近似最优排产调度算法,可以考虑增加合理的计算时间代价,提高解的次优性。各种基于统计优化的方法、诸如模拟退火法、遗传算法等,提供了一种解决排产调度优化问题的新途径,但同别的优化算法类似,其也存在着一定程度的校举、一般来说收敛到最优解很慢,并且对于判断解的最优性也很困难。
在实际车间排产调度中,计划与车间排产调度往往是分层进行的,但这可能造成计划在实际排产调度中的不可行问题,如何将计划与排产调度结合考虑,以求总体的优化也是需要进一步研究的。另外,还有很多有待进一步研究的问题,比如实际车间排产调度的多目标性等。排产调度理论、方法与应用的研究是一项非常艰巨的工作,目前人们还在进行各种各样的探索性研究工作。
由于排产调度问题的复杂性,实际生产排产调度的目标应定为寻找一个好的、可行的的解决方案而常常不是最优的方案。尽管有大量的解决排产调度的方案,但是只有少数的方法应用于实际。其中,基于智能的排产调度方法应用人类专家的经验及特殊领域的知识,在解决排产调度问题上已经做出了很多成绩。
关键技术
寻找车间排产调度的最优解从理论上将是NP-完全问题,没有一个确定的算法来解决这个问题。许多约束条件,使得实际的排产调度问题变得非常困难,比如:设备的可选性、制造环境的动态与不确定性、约束条件的矛盾(最小加工时间与最大设备利用率)等等,实际上,生产排产调度问题大部分是集中于简化问题,然后寻找最优解或次优解。研究与开发排产调度系统面临的关键问题主要有:
信息表达:
包括排产调度任务及特殊信息(工作能力、可选生产计划等)的描述。
交互性设计:
交互性不单指人机界面的问题,它应支持人对排产调度过程的直接参与,因为纯粹的自动化排产调度是不现实的,它忽略了具有最终决策职责的排产调度行家的重要作用。
多种排产调度方法的结合
与已有信息环境的集成:现有企业都已具有了自己的信息技术基础结构,排产调度系统应能与现有环境进行通讯与信息交换,并作为信息系统的一部分,因此应提供与标准系统(如数据库、网络等)的通用接口。
相关技术
从系统分析方法学角度而言,解决车间作业优化排产调度与控制主要涉及:
运筹学:
复杂系统分析、各种数学模型的分析与建立。
人工智能理论:
神经网络的方法、基于智能搜索的方法、基于多代理技术的合作求解的方法。用于实时控制的动态排产调度及建模方法。
从信息技术角度而言,车间作业排产调度与控制技术是计算机应用领域面临的一个非常重要的难题,主要涉及的关键技术有:
- 计算机网络与通信技术
- 数据库技术
- 系统建模与仿真技术
- 人机接口
- 虚拟现实技术