引言
制造企业按照组织生产的特点,可以划分为按单设计(Engineer To Order)、按单生产(Make To Order)、按单装配(Assemble To Order)、库存生产(Make To Stock)四种生产类型。随着客户的需求越来越个性化,以及某些制造行业的特殊性,例如典型的工程订货类企业模具企业,MTO生产模式越来越受到重视发展。
在MTO生产模式中,企业完全按照客户订单来组织生产,每次的加工任务可能完全不相同,无法事先对计划进行安排。常规的MRP(II)、JIT、OPT等生产计划技术通常适用于产品品种少,需求量比较稳定的备货型生产企业。然而MTO类型的企业,其生产过程有显著的特点:订单随机到达、需要快速响应客户订单制造任务、不断变化的生产能力瓶颈等。因此需要考虑对这类企业建立适宜的生产控制策略。
1 负荷控制技术(WLC)
基于对MTO类型企业的研究,国内外学者提出了对生产负荷均衡化的控制技术——负荷控制技术(workload control,WLC)。负荷控制技术是专门针对复杂环境下MTO类型企业的生产计划与控制方法[1,2],WLC起源于 1970年Wight提出的I/OC概念[3],它的基本思想是保持企业的任务量处在最佳水平[4],从而有效控制任务的等待时间及处理时间。通常WLC包含三层控制结构[5]:订单进入层、任务投放层以及作业分派层。
其中订单进入层的作用主要是接受或拒绝订单,以及订单承接后何时投放下去,这一级负荷控制策略可以宏观把握企业现有生产资源,控制整体任务的输入。任务投放层的作用主要是控制每个部件的投放,从积聚的任务池中分配任务,这一级负荷控制策略的对象是订单中所包含的部件,此时参考的是车间/部门可以承受的生产负荷,达到对车间/部门级别的生产负荷均衡分配。作业分派层从任务层分配的任务队列中选取合适的任务进行加工,这一级负荷控制策略的对象是分配给本部门的任务集,通常基于优先规则进行分配,如有需要可以进行调整,达到对负荷投放的精细化控制。
在每一级的负荷控制决策中,首先需要确定任务投放量的上限值,即确定可以承受的总负荷值,主要采用仿真的方法获得总负荷值。然后根据约束对任务进行挑选投放。 本文将围绕任务挑选投放的问题展开,即负荷控制的第二级策略——任务投放层,通过理论方法研究和系统仿真实验模拟挑选投放过程。
2 蚁群算法
蚁群算法(ant colony optimization, ACO)是一种寻找优化路径的几率型算法,该方法具有正反馈、分布式计算和贪婪启发式搜索的特点。其来源于蚂蚁在寻找食物过程中发现路径的行为。它是一种优秀高效的组合优化算法,主要为解决复杂优化问题(NP-hard)。
2.1 蚁群算法基本原理
蚁群算法包含两个基本阶段[6,7]:适应阶段和协作阶段。在适应阶段,各候选解根据积累的信息不断调整自身结构;在协作阶段,候选解之间通过信息交流,以期产生性能更好的解。
为更清楚地理解蚁群算法的基本原理,一般借助TSP问题来进行说明[8]。
假设C={,,,…,}是n个城市的集合,L={|,⊂C}是集合C中元素(城市)两两连接的集合,(i , j=1,2,…,n)是的Euclidean距离,G=(C,L)是一个有向图,TSP问题的目的是从有向图G中寻找出长度最短的Hamilton圈。
设(t)为t时刻路径(i,j)上的信息素数量,m为蚂蚁数量;Γ={,⊂C }是t时刻集合C中元素两两连接上的残留信息素数量集合,在初始时刻各条路径上信息素数量相等。蚁群算法的寻优是在有向图g=(C,L,Γ)上通过3个准则加以实现,即转移概率准则、局部调整准则和全局调整准则。
2.1.1信息素
蚂蚁在移动的过程中会向环境释放一种挥发性分泌物:信息素 (pheromone),该物质随着时间的推移会逐渐挥发消失,信息素浓度的大小表征路径的远近,信息素对其他蚂蚁的移动具有吸引作用。蚁群算法依靠信息素标记任务的选择概率。
2.1.2转移概率准则
蚂蚁k(k=1,2,…,m)在运动过程中,根据各条路径信息素数量决定转移方向。
禁忌表(k=1,2,…,m)用来记录蚂蚁k当前所走过的城市。在搜索过程中,蚂蚁根据各个路径上的信息素数量和路径的启发信息来计算转移概率。
,
且 p< (1)
0 , 其他
其中: = {C - } 表示蚂蚁k下一步允许选择的城市,表示轨迹的相对重要性, 表示能见度的相对重要性[9,10],(t)为启发函数,该函数表明了蚂蚁从城市i到城市j的期望程度,p为随机生成的概率,为由i到j的选择概率。
2.1.3局部调整准则
局部调整是每只蚂蚁在建立一个解的过程中,每次转移时相应信息素数量的调整。根据下式:
(2)
其中表示初始信息素数量,表示信息素挥发系数。
2.1.4全局调整准则
只有生成了全局最优解的蚂蚁才有机会进行全局调整。全局调整准则依据下式: (3)
其中值表示问题的规模大小,是迭代中最小路径长度。
2.2 问题特征描述
为简化数学模型,将问题特征描述如下:
(1)计划从任务池中挑选投放任务至单个工作部门A,任务池中的任务数恒定为m,投放后补充;
(2)工作部门A可承受负荷设定为定值Load;
(3)每一个部件生产所需的负荷为RLoad,分布在区间[5,10];
(4)每一个部件距离交货的日期为EndTime,分布在区间[2,40];
(5)单个部件的选择概率依据该部件距离交货日期的倒数的两倍,即=1/(EndTime*2);
(6)算法迭代次数为ITimes;
(7)每个部件被选择后,信息素增长=1/(EndTime-0.2);
(8)信息素挥发系数设定为;
(9)EndTime=2的为紧急任务,选择概率为1,其他任务依据概率随机选择,并且选择任务的全部负荷总和接近部门可承受负荷,允许选择的总体负荷大于可承受负荷;
(10)选择投放的周期为1,投放下去的任务周期内全部完成。
表1 任务选择投放与蚁群探路的对应
任务选择投放 | 蚂蚁觅食 |
开始(选择负荷0) | 蚁穴 |
结束(负荷到达设定) | 食物源 |
部门 | 蚂蚁 |
部件任务 | 一段路径 |
选择投放任务 | 选择路径 |
距离交货的日期 | 不同路劲的长短差异 |
优化调度,优先完成紧急任务,投放任务接近于部门可承受范围 | 较短路径,即蚂蚁觅食时间较短 |
3 任务选择投放蚁群算法
根据前面的分析,本文提出一种基于蚁群算法的任务选择投放方法,方法流程如图1,具体步骤如下:
1.依据任务池中部件距离交货日期计算初始选择概率,EndTime=2的任务为紧急任务,设定p=1并且录入已选择任务表中;
2.随机选择禁忌表(已选择任务表)中没有选择的任务,同时生成一个区间在[0,1]之间的随机数p,如果p<则选择该项任务,否则重复步骤2,直到选择任务表中任务的负荷总和达到部门可承受负荷范围,记录本次选择的任务;
3.对选择任务表中任务的信息素更新,同时对全体任务的信息素进行挥发作用;
4.重复步骤2,3至预定的迭代次数;
5.输出本次选择的最终投放任务,并且对任务池中的任务进行补充,
6.重复2,3,4,5的单次投放作业,直到预定的天数,选择任务投放结束。