摘要:生产计划是企业生产管理的重要起点和依据。为避免以往采用人工排产方式所导致的资源浪费,达到最优排产策略,基于高频直缝电阻焊管(Electric Resistance Welding,ERW)企业的生产特点,针对多阶段生产计划建立了提前/拖期惩罚数学模型。考虑了交货期窗口、库存影响、企业产能、维修停机等约束条件,以惩罚费用最小作为优化生产计划的目标,采用遗传算法有效求解及优化了该问题。利用Visual Studio2010建立B/S模式的管理信息系统对数学模型进行功能实现,通过COM接口将MATLAB与B/S系统联动实现算法嵌入,完成了对生产计划的求解与管理信息系统的开发。管理信息系统在特定企业运用的结果表明:该模型及管理信息系统符合企业生产计划编制需求,达到了预期目标,具有较好的学术价值和实际意义。
关键词:ERW钢管;多阶段生产计划;数学建模;遗传算法;管理信息系统
生产计划是决定一个企业生产管理的重要起点和判断其能否高效完成生产的根本依据。其重要性随着市场竞争的加剧和生产过程复杂性的增加而愈加显著[1]。在以往的生产计划排产过程中,通常为人工排产,一方面耗费大量人力资源,另一方面也无法对企业的能力进行充分利用,很难达到最优排产策略。生产计划编制问题是个需要结合实际,不断优化研究的领域。现代制造业中,普遍存在多阶段的生产计划问题,涉及了产品的整个生产过程。
ERW(electric resistance welding),即高频直缝电阻焊管,可用于输送石油、天然气等汽液物体,满足高、低压各种要求,目前在世界输送用管领域占举足轻重的地位。ERW的生产属于典型的多品种少批量生产模式,ERW产品品种类别繁多,要准确追踪到一种钢管产品类型,就需要对该种钢管产品的外径、壁厚、材质、长度和生产标准等一系列属性进行对比。在ERW生产过程中,各阶段的生产加工呈顺序加工关系,且前后阶段紧密连接。结合其生产特点,在生产计划制订过程中需考虑多方面优化因素,于后期建立的模型体现为多方面的约束条件和最优解方向,对于优化其生产、提高其生产效率的研究有重要的意义。
许多研究人员都对现代企业的生产计划模型进行了建模、优化和求解的研究[2-17]。其中,在针对ERW钢管多阶段生产计划的研究中,陈超武等[16]分析了ERW钢管的生产流程和生产计划的特点,建立了提前拖期/惩罚模型,并用实数编码遗传算法进行了求解及优化,得到生产计划的较优解,但未考虑库存影响、交货期窗口等实际因素,因此应用性较低。李秀等[17]研究了在产能约束下的批量生产计划制定并采用遗传算法求解,但亦没有考虑库存问题,实用性不足。
针对ERW钢管的生产特点和生产中存在的实际问题,本文研究了ERW钢管生产企业的生产计划编制过程,建立相应数学模型,采用遗传算法进行求解,并建立管理信息系统对数学模型进行功能实现,完成了对生产计划的求解与管理信息系统的开发。
1 多阶段生产计划模型
模型基于下面4个假设条件:1)原料库充足;2)提前于交货期窗口完成生产的产品,产生提前惩罚费用;3)在交货期窗口内完成的产品,不产生惩罚费用;4)拖期于交货期窗口完成的产品,产生拖期惩罚费用。
在ERW直缝焊管生产企业中,在计划期[1,T](T≤31)区间内,通常以自然月为范围。需要生产i种直缝焊管成品,每种焊管经过j个不同的加工阶段,决定各个阶段的提前惩罚费用。将加工阶段以影响3个仓库:1)原材料库;2)板带库;3)成品库库存为条件。
决策变量为产品i在第t日的生产计划量,即xi(t)。依据订单合同汇总,得产品i第t日的合同交货量为Fi(t)。在生产过程中,单位产品i对阶段j的能力需求量为Cij。阶段j第t日的产能最大为Cj(t)。初始时刻产品i的库存量为Ii且Ii≤0,表示初始欠量,初始时刻t=0。设单位产品i提前交货期的附加成本系数为ai,单位产品拖后交货期的惩罚系数为bi。
模型构建以库存量为主要考虑对象,以此设定如下参数。
n为产品种类数量;m为生产工序数量;
p为需要排定计划的订单数量;
i为产品种类序数,i=1,2,3,…,n;
j为生产工序序数,j=1,2,3,…,m;
o 为订单序数,o=1,2,3,…,p;
k 为时间序数(d),k=1,2,3,…,t;
Ao为订单o的最早交货期(d),Ao∈t;
Bo为订单 o 的最晚交货期(d),Bo∈t,Bo>Ao;
Fi(k)为产品i,在第k日的订单交货量(t);
Ci(k)为产品i,在第k日的产能(t·d-1);
Cj(k)为产品i在加工阶段j第k日的最大产能(t·d-1);
Wij为单位产品i对工序j的需求量;
Pi为产品i的最小生产批量;
Ii为计划库存,目标计划月前1月的月末库存;
A(o)i为提前惩罚系数,订单o中,单位重量的产品i,每提前1 d的惩罚费用(元/(t·d));
B(o)i为拖期惩罚系数,订单o中,单位重量的产品i,每拖期1 d的惩罚费用(元/(t·d));
Xi(k)为决策变量,产品i在第k日的计划生产量。
1.1 提前惩罚模型
由于库存惩罚是依据每天的库存量累计增加,所以在计算时,需要考虑前一天的库存已有量和当日的产品产量,两者相加得到当日的库存量,将库存量与对应的提前惩罚系数相乘,得到当日的提前惩罚费用,再与前一天的库存惩罚费用相加,如此累加得到截止k日的库存惩罚费用。
在计算第i类产品且先不考虑已有库存的情况下,第1天的提前惩罚费用,由第1天的产品产量乘以库存惩罚系数;计算第2天的提前惩罚费用时,需将第1天已有的库存与第2日的产品产量相加,所得之和乘以库存惩罚系数,而后,再将第1天和第2天的两部分惩罚费用相加,即为前2天的惩罚费用。
第1日:xi(1)×ai;
第2日:xi(1)×ai+[xi(1)+xi(2)]×ai;
……
第t日:xi(1)×ai+[xi(1)+xi(2)]×ai+[xi(1)+xi(2)+… +xi(t)]×ai。
以此类推,可得整个计划期内,每一天产生的提前惩罚费用。
设Xsum为产品i库存累加之和,x1表示为产品i第1天的产品产量,xt表示产品i第t日的产品产量,暂不考虑提前惩罚系数ai,上述内容可表达为
因为讨论提前惩罚是在k∈[1,Ao)的范围内进行,所以求和的范围为
故生产计划的提前惩罚费用f(a)为
上式表示,第i类产品在库存的已有量Ii,累积相加Ao-1日的库存量,加第1日到Ao-1日之间,第i类产品库存数量每一日的累加之和,乘以订单o第i类产品的库存惩罚系数a(o)i,得到产品i的库存惩罚费用。
在a(o)i设定时将单位定为“元/(t·d)”。根据不同订单的合同要求,对应的提前惩罚系数也不同。a(o)i包括产品在库存中产生的成本和根据订单合同的特殊条件产生的惩罚费用。其中,根据订单的不同,为减少产品生锈、腐蚀等情况的发生,对产品生产的提前期的长短也会有相应限制。在计算时,根据提前期时间区间的划分,需要对a(o)i进行不同的取值,提前期越长,a(o)i的取值越大。
1.2 拖期惩罚模型
不同于1.1中的累积情况,在拖期惩罚中不存在库存累积的数列多项求和过程。为有效地减少拖期惩罚费用,在生产计划超过交货期窗口时,规定每天生产出产品后即刻出货。
订单o在目标计划月的交货期窗口为[Ao,Bo],为了减少产品i在库存产生的提前惩罚费用,设定在第Ao日开始进行交货,第Ao日的交货量为第i类产品的原有库存Ii与从目标计划月第1日起至第Ao日的产量之和,即
根据交货期窗口,在目标计划月的[Ao,Bo]期间,第i类产品每日都要进行交货,从Ao+1日起,每天的交货量为第i类产品当日的生产量xi(k),在交货期窗口[Ao,Bo]内的总交货量为
根据订单信息可知,第i类产品的交货日期下限为第Bo日,在此日之后完成的产品都计算在拖期惩罚费用里。第t日的产品欠量为
其中,Fi(Bo)为合同总交货量。
与脱离交货期窗口的每一日的产量累加可得:
拖期惩罚是在区间(Bo,t]中进行的,产品i的拖期惩罚费用f(b)为
式(8)表示,在闭区间[Bo+1,t]中,以 b(o)i为系数,与拖期欠量相乘,得到订单o的拖期惩罚费用,再对每种产品从1到n求和,对所有订单从1到p求和,得到拖延交货期的惩罚费用f(b)。
在设定b(o)i时,因为f(b)为基于成品库的拖期惩罚费用,根据每一个订单种类的不同,在合同中所要考虑的惩罚系数是根据客户不同订单的优先级确定的。可以将客户订单分为3种类型,普通型订单、全款加急型订单和付加急费型订单。3种订单体现的拖期惩罚费用可根据客户要求货物的紧急程度不同而相应提升。另外,b(o)i可根据拖后交货期的时间长度进行相应的增长,拖后交货期越长,b(o)i的取值也就越大。
因此,惩罚费用总额f(x)为
为使提前/拖期惩罚费用最小,生产计划模型为
1.3 约束条件
产能约束:
实际生产中很少存在某月只生产一种产品的情况,通常为若干种产品同时生产,因此单一产品对应的月产能并不能作为计算生产计划的依据。
本文中,将订单依据紧急程度排序,优先级最高的订单首先使用月产能,将该产品的月产能与对应订单的计划欠量做差,得到的剩余月产能以比例换算为下一优先级的产能,继续做差生产。以此类推,进行排产约束。
式(11)表示,计划期内每日第i种产品的数量xi(k),累加求和所得需小于等于该产品的月产能Ci。
式(12)表示,每个加工工序的产能约束。
交货期窗口约束为
式(13)表示,当 k∈[1,Ao)完成生产时,产生提前惩罚费用;当k∈[Ao,Bo]完成生产时,可以满足交货期窗口要求,产生的惩罚费用为0。
式(14)为月总产量要求不低于M。
式(15)表示各阶段的生产能力限制。
式(16)为所有i种产品的最小批量约束。
式(17)表示非负约束。
2 模型算法
在目标函数不连续、不可微、高度非线性时,优化问题相对比较复杂。根据上文所述的研究模型,由约束条件式(12)可知,模型的约束条件个数为m·t个,当加工阶段工序总数m数量较大时,产生的问题规模也随之变大,一般的方法无法求解。根据本文模型特点,在求解优化的算法中,较为普遍的是通过启发式中的遗传算法求解。
2.1 遗传编码
在遗传算法中,解决连续参数优化问题时普遍使用实数编码,基于上述的调度编码方式,可将个体的基因值用某一个范围内的实数表示,个体的编码长度等于其决策变量的个数。此种编码方式具有较高精度,在高维度的问题中得到广泛应用。将此基因编码推广为基于本文模型的生产计划编码矩阵,设xi(k)表示第i种产品第k日的生产量,将基因编码与生产计划量对应,可得
编码后,原问题的解空间,对应到染色体的集合。所以,基于上述矩阵构造的遗传算法染色体为
2.2 适应度函数
求解效率函数和利润函数的最大值时,通常直接将目标函数作为适应度函数,但有相当一部分的优化问题是涉及求某函数的最小值,本文所研究的ERW生产计划模型就属此类。在遗传算法中,要求适应度函数取正值,个体的适应度越大,个体越优秀。由此,在诸多研究中,采用数学模型的目标函数作为个体的适应度度量时,必须将目标函数转化为求最大值的形式,并且保证适应度函数为概率表达且非负。在模型中,通过线性变化将其转化为可操作的适应度函数:
式中,f(x)为式(10)所示的原始目标函数,表示的是提前、拖期的惩罚费用最少;fmax是一个足够大的整数。为了保证种群进化过程中的稳定性,定义fmax与目标函数f(x)无关。所以适应度函数F(x)可表示如下。
当f(x)<fmax时,
在其他情况时,F'(x)=0。
在处理本模型中的约束条件时,本文采取惩罚函数方法,将约束条件问题转化为代价或惩罚的非约束条件问题。
根据钢管生产的特点,在不同种产品生产的交替环节需要进行换辊操作,通常换辊占用的时间较长,会对生产环节产生影响。因此,在排产过程中需要尽量减少换辊次数,以保证最大程度的连续生产。在求解过程中对生产计划的每一个元素进行判定,如果前后两日生产的产品为不同种类,即i1≠i2,则加大惩罚费用,最大限度保证同类产品的连续生产。
上文所述模型中,约束条件包括不等式约束和等式约束两种,通过惩罚函数方法,将其转化为非约束极大值问题。将阶段约束表达为
式中,r为惩罚系数,单位为元/(d·t)。
因此,适应度函数为
2.3 种群初始化
种群初始化一般有2种方法:第1种是通过完全随机的方法产生初始种群,这种方法适合于对问题的解没有任何先验知识的情况;另一种,是根据某些先验知识和约束条件,转变为必须满足的一组要求,然后在满足这些要求的解中,随机地选取样本。因为本文模型的限制条件较为具体,所以采用后一种种群初始化方法比较合适。
从ERW生产企业的数据库中提取订单、库存数据,满足目标函数的限制条件,即1.3节中所述。将订单需求量分解为目标计划月内每一天的产品产量组合,形成目标计划月内的生产任务,通过对不同任务的排列,产生初始种群Po,种群规模为n。
2.4 选择操作
适应度比例方法是目前遗传算法中最基本,也是最常用的选择方法,也被称为“赌盘轮法”。对于ERW直缝焊管生产计划的优化,采用此方法进行遗传算子选择。设群体大小为n,其中个体i的适应度值为fi,则被选择进入下一次进化的概率为
由式(24)可见,概率pi反映了个体适应度在整个群体中的适应比例,个体适应度越大,其被选择进入下一次进化的概率也相对越高。
本文中适应度函数值为惩罚费用,所以算子被选择进入下一次进化的概率就是个体i的适应度值fi,也就是个体i对应的惩罚费用,与所有个体从1到n产生的惩罚费用之和做比,得出的概率就是遗传算子的选择概率。
在选择操作的同时,需要保证算法的收敛性,采用最佳个体保存方法,把第t+1代种群中适应概率最差的个体,用t代的最优个体替代。具体表现为:设时刻t(第t代)时,群体中c*(t)为最佳个体。另设C(t+1)为新一代群体,若C(t+1)中不存在c*(t),则把c*(t)作为替代第t+1代中的适应度最差个体的t代最优个体。
采用此方法可以使进化过程中某一代的最优解不被交叉和变异操作破坏,进而提高进化效率。
2.5 交叉算子
本文中采用复合交叉的母代杂交方法,复合交叉通常用于实数编码的情况,设2个母代个体S1、S2分别为为母代个体S1中的第1个基因为母代个体S1中的第m个基因。同理为母代个体S2中的第1个基因为母代个体S2中的第m个基因。为母代个体S1和S2交叉操作之后产生的,是下一代个体C1中的第1个子代基因。为母代个体S1和S2交叉操作之后产生的,是下一代个体C2中的第1个子代基因。
子代基因的产生过程为:在区间(0,1)内随机生成一个数γ,根据交叉概率γ对母代中的基因进行交叉:
以此类推,可得子代个体C1与C2,
2.6 变异算子
由于需要求解的是产品的产量,属于实数范围,所以在算子变异的过程中,需要考虑随机变大和变小2种情况。设变异概率为pm,母代个体为C=(c1,c2,c3,…,ci,…,cn),其中 ci为随机挑选出来的变异算子,产生的变异个体为 C'=(c1,c2,c3,…,c'i,…,cn),M 为ci的最大值,μ∈[0,1]为随机数,r∈[0,1]为随机数。当r=0时,ci通过变异数值增大;当r=1时,ci通过变异数值减小,由此可得变异算子c'i为
3 实例计算
选择需要排产的订单数据如表1所示。
表1 待排产订单信息
Tab.1 To be arranged production plan data
根据实际生产数据,利用遗传算法计算,设种群规模为10,交叉概率为0.6,变异概率为0.1,迭代次数为200代,产品种类数量为6,计划期为30 d。
如果整条生产线全部生产一种产品,不同产品种类对应当月的产能不同,如表2所示。
表2 单种产品月产能限制
Tab.2 Production capacity limit of single product
据1.3节所述,排产中的产能约束如表3所示。
表3 经重新分配后产品月产能限制
Tab.3 Production capacity limit of single product after optimization
完成各种参数设置和初始种群输入后,通过Matlab软件运算得出经算法优化后的生产计划数据结果如图1所示。
图1 优化后的生产计划数据
Fig.1 Production plan data after optimization
图1中,每行表示每一种不同产品,每列表示计划期30 d内的每一天,矩阵中的每一个元素表示该种产品在计划期内每一天的产量。
选择迭代200代后,得到适应度值如图2所示,最大适应度值逐渐趋于平稳。
图2 适应度值走势图
Fig.2 Chart for trend of fitness value
4 管理信息系统开发
管理信息系统的开发包括订单管理、库存管理和计划管理3部分[14]。通过和库存数据的互动产生生产计划,其中订单数据为重点。通常,订单数据进入数据库后,首先进行库存匹配,将库存中可对应订单的产品数量进行修改,产生新的订单欠量。同时,修改库存信息,将已匹配订单的库存内容进行标识。根据已匹配的订单欠量制定并产生月生产计划。
4.1 算法嵌入
通常情况下Matlab和.Net框架进行交互的方式主要有2种:COM和Matlab Builder NE:COM是Matlab遵循微软COM框架编写的通信机制,使用客户/服务器模式;Matlab Builder则是直接将Matlab程序编译为可在.Net框架中运行的程序或动态链接库。
COM(microsoft component object model,微软组件对象模型)是微软提供的集成可复用的二进制软件的框架。因为使用的组件已经经过编译,源代码可以使用任何支持COM框架的语言。MATLAB只在微软的Windows平台支持COM组件。MATLAB Builder NE可使 MATLAB程序直接生成.NET和COM组件,包括所有在MATLAB中使用的数学,图形及用户交互界面。
本文采用COM交互方式对管理信息系统进行开发。Web程序将通过COM对象作为客户调用MATLAB的服务。实际上是通过 Web程序调用MATLAB,由 MATLAB进行计算并将结果返回给Web程序。
利用Visual Studio2010建立B/S模式的管理信息系统,通过COM接口将Matlab与B/S系统联动实现算法的嵌入[18,19]。图 3 所示为在 Visual Studio2010中对算法嵌入的实现程序。
图3 Matlab与Visual Studio2010链接实现算法嵌入
Fig.3 Algorithm embedding linked between MATLAB and Visual Studio2010
图4所示为该管理信息系统的登录页面。由图4可知,使用该管理信息系统,可以在“订单管理”分类下实现订单录入、修改、查询、匹配等功能,在“库存管理”分类下可以实现对原料库、半成品库和成品库的管理功能,“计划管理”分类是该系统设计中的重点部分,可以以已有订单数据为基础,生产产量为约束条件,通过上文所述的数学模型得出最优的生产计划数据,并通过相关功能模块实现对生产计划的添加、修改、重置和删除等功能。
图4 ERW钢管管理信息系统用户登录页面
Fig.4 Users login page of ERW management information system
4.2 生产计划编制及优化
在完成订单、库存等数据输入后,进入生产计划编制页面,如图5所示,图中显示已选择的订单详情,包括计划编制需要涉及的数据,包括提前/拖期惩罚系数、交货期窗口及订单需求量等。
数据确认无误后,点击“点击生成生产计划”按键,调用Matlab模块进行生产计划编制,如图6所示为使用该管理信息系统对生产计划进行优化后的结果,xtest表示优化后的生产计划数据,并可在数据后显示达成该优化结果的限制条件。
图5 生产计划编制页面
Fig.5 Page of production planning
图6 生产计划优化计算结果
Fig.6 data of production plan after optimization
5 结论
本文根据ERW直缝焊管企业生产的实际工艺特点,对其生产计划的制订方式进行了研究,充分考虑了交货期窗口、库存、生产能力约束、维修停机日期等限制条件,建立提前/惩罚拖期数学模型,采用遗传算法通过Matlab对该模型进行求解,实现了对生产计划的优化。
基于Visual Studio2010建立B/S模式的管理信息系统对数学模型进行功能实现,通过COM接口将Matlab与B/S系统联动实现算法嵌入,完成了对生产计划的求解与管理信息系统的开发。结合实际生产数据的计算,验证了本文提出的数学模型和求解优化方法的可行性及有效性。开发的ERW钢管管理信息系统功能全面、工作良好,符合企业生产计划编制需求,达到了按期交货、合理安排生产计划、降低生产成本、提高生产效率的预期目标,对相关行业企业生产计划的优化编制和管理信息系统的建设具有一定的指导和借鉴意义。