实用下料问题.doc
《实用下料问题.doc》由会员分享,可在线阅读,更多相关《实用下料问题.doc(10页珍藏版)》请在冰豆网上搜索。
实用下料问题
一.问题的重述
“下料问题(cuttingstockproblem)”是把相同形状的一些原材料分割加工成若干个不同规格大小的零件的问题,此类问题在工程技术和工业生产中有着重要和广泛的应用.这里的“实用下料问题”则是在某企业的实际条件限制下的单一材料的下料问题。
现考虑单一原材料下料问题.设这种原材料呈长方形,长度为,宽度为,现在需要将一批这种长方形原料分割成种规格的零件,所有零件的厚度均与原材料一致,但长度和宽度分别为,其中wi<.种零件的需求量分别为.下料时,零件的边必须分别和原材料的边平行。
这类问题在工程上通常简称为二维下料问题。
特别当所有零件的宽度均与原材料相等,即,则问题称为一维下料问题。
一个好的下料方案首先应该使原材料的利用率最大,从而减少损失,降低成本,提高经济效益。
其次要求所采用的不同的下料方式尽可能少,即希望用最少的下料方式来完成任务。
因为在生产中转换下料方式需要费用和时间,既提高成本,又降低效率。
此外,每种零件有各自的交货时间,每天下料的数量受到企业生产能力的限制。
因此实用下料问题的目标是在生产能力容许的条件下,以最少数量的原材料,尽可能按时完成需求任务,同时下料方式数也尽量地小。
现在我们要为某企业考虑下面两个问题。
1.建立一维单一原材料实用下料问题的数学模型,并用此模型求解下列问题,制定出在生产能力容许的条件下满足需求的下料方案,同时求出等额完成任务所需的原材料数,所采用的下料方式数和废料总长度.单一原材料的长度为3000mm,需要完成一项有53种不同长度零件的下料任务.具体数据见表一(略),其中为需求零件的长度,为需求零件的数量.此外,在每个切割点处由于锯缝所产生的损耗为5mm.据估计,该企业每天最大下料能力是100块,要求在4天内完成的零件标号()为:
5,7,9,12,15,18,20,25,28,36,48;要求不迟于6天完成的零件标号()为:
4,11,24,29,32,38,40,46,50。
2.立二维单一原材料实用下料问题的数学模型,并用此模型求解下列问题.制定出在企业生产能力容许的条件下满足需求的下料方案,同时求出等额完成任务所需的原材料块数和所需下料方式数.这个问题的单一原材料的长度为3000mm,宽度为100mm,需要完成一项有43种不同长度和宽度零件的下料任务.具体数据见表二(略),其中分别为需求零件的长度、宽度和数量.切割时的锯缝可以是直的也可以是弯的,切割所引起的锯缝损耗忽略不计.据估计,该企业每天最大下料能力是20块要求在4天内完成的零件标号()为:
3,7,9,12,15,18,20,25,28,36.
二.问题的分析
在生产实践中,经常会遇到如钢材、木材等条型材的下料问题,即如何根据原材料的长度、零件的尺寸以及需求量确定出使原材料消耗最少的最优下料方案。
本题要求:
在生产能力容许的条件下,以最少数量的原材料,尽可能按时完成需求任务,同时下料方式数也尽量地小。
对于一维下料问题,首先我们必须找出全部可行的下料方式;然后才能确定下料方式作为决策变量和形式约束条件的结构系数,这样才能建立优化决策模型,通过计算机编程计算得到我们所需要的最优下料方案。
考虑到这里是单一原材料下料问题,这大大减少了下料方式;但由于零件的种类有53种之多,因此下料方式仍然很多,计算量很大,所以在建立优化模型的基础上,我们需要找到比较合适的算法来解决这类实际问题。
近年来,国内外关于这方面的研究比较活跃,并涌现出了不少近似算法,如Gilmore与Gomory用线性规划建立的一刀切问题的数学模型;Dyckhoff提出的线性规划方法以及Sarker提出的动态规划方法等。
由于下料问题属于布局问题,不同于一般的数值性优化,近年又出现应用遗传算法来求解下料优化问题。
我们力图建立一种实用的模型——多目标整数规划模型[1][2][7],并提出一种新的优化思想方法——启发式多层次逐层优化方法,解决此问题;同时与其他的求解方法进行比较。
对于二维下料问题,我们采用分类层次分析法;由于原材料的长度为3000mm,宽度为100mm,而43种零件的长度最小的为155mm,这样就不会出现零件的长边在原材料的宽边上切割的情况,也就是说零件的长边都是顺着原材料的长边切割的。
考虑到零件的宽有20,30,35,50(mm)这4种规格,为了尽量节省材料,我们应该使原材料在宽边上尽量利用完全,这样只有几种宽边完全利用的组合方式(5种),分别为:
50-50,50-30-20,30-30-20-20,35-35-30,20-20-20-20-20。
我们把零件按宽边的规格分为4类(20,30,35,50),对每一类都可按问题一的处理一维下料问题的方式找最优的方案,然后再把他们按上述的几种方式进行组合,以求得最优解。
三.问题的假设
1.对于第一问的假设:
1)在每个切割点处由于锯缝所产生的损耗为5mm;
2)企业每天的最大下料能力为100块;
3)考虑下料方式的数量对总损耗的影响,下料方式越少则原材料总损耗越小;
4)对于剩余长度为mm的材料,可以通过细微调整锯缝的位置锯得长度为mm的零件;
2.对于第二问的假设:
1)切割所引起的锯缝损耗忽略不计;
2)切割时锯缝可以是直的也可以是弯的,但要求转弯为直角;
3)企业每天最大的下料能力是20块;
4)原材料和零件都是长方形。
四.符号说明
——原材料的长度(=3000mm)
——原材料的宽度(=100mm)
——所用的原材料总数量
——所采用的下料方式总数量
——第i号零件的长度(单位:
mm,)
——第i号零件的宽度
——第i号零件的需求量
——第j种下料方式中切割第i号零件的数量
——按第j种下料方式切割的原材料的数量
——按第j种下料方式切割的废料长度(mm)
——第一问中要求在4天内完成的零件号的集合
——第一问中要求在不迟于6天完成的零件号的集合
——第二问中要求在4天内完成的零件号的集合
五.模型的建立与求解
1.对问题一的解决:
此问要求:
在4天内完成的零件标号()为:
5,7,9,12,15,18,20,25,28,36,48;不迟于6天完成的零件标号()为:
4,11,24,29,32,38,40,46,50。
而该企业每天最大下料能力是100块,我们要制定出在生产能力容许的条件下满足需求的下料方案,同时要求等额完成任务,我们的目标是要尽可能节省材料,尽可能用少的下料方式。
为此我们建立多目标整数规划模型:
(首先我们约定:
)
(1)
注:
1.我们有:
若采用了第j种下料方式,则为大于0的整数,因此;若没有采用第j种下料方式,则为0,如上定义可得:
,这样即表示了所用的下料方式数量;
2.约束中第一条是:
考虑了锯缝时,原材料长度L对下料方式的限制,即对于任意一种下料方式,所得到的零件总长度与锯缝总长度之和要小于等于L;
3.约束中第二条是:
考虑了锯缝时,对于每一种下料方式的废料长度要小于零件的最小长度;
4.约束中第三条是:
为了满足题中要求的等额完成任务的限制条件;
5.约束中第四条是:
为了满足在企业每天生产能力是100块时,要求在4天内完成零件集合的条件,其中表示第j种下料方式中所切割的第i种零件数占这种下料方式中所切割的零件集合中零件数的权数,因此表示了完成零件集合所用的原材料数,又由于在4天内要完成零件集合,故上述所算出的所用的原材料数要小于等于,注意若,即表示第j种下料方式中没有切割到零件集合中的零件,因此:
,这样按照注释1中的约定,可知正好表示:
这种下料方式不产生集合中的零件,故而这条约束很完善;
6.约束中第五条和第四条的解释类似;约束中第六条和第七条表示和要取整数。
对于废料的度量:
由于存在锯缝为5mm,对任何一种可行的下料方式,则其满足条件,所以如果单纯的用来度量此种下料方式的废料是不对的,这可能取到负值;实际上,又由于对问题一有假设4,我们可以知道:
对所有满足的下料方式来说,废料都为0;故而我们可以得到废料的度量方式:
经过数学处理,得到:
因此废料总量为:
废弃率定义为:
利用率定义为:
对于此模型(即
(1)式)的求解比较困难,我们需要首先分解此模型,然后创建适应的优化算法解决此问题:
表第j种下料方式
1)当前最优的下料方式的模型:
多层整数线性规划模型
a)当时,求最优的一种下料方式的数学模型为:
(2)
其中表一种下料方式,为努力程度,定义为某种下料方式中含有集合中零件的个数,从中我们可以看出越大零件集合完成得越快;
b)当且时,求最优的一种下料方式的数学模型为:
(3)
为努力程度,类似的定义和理解;
c)当且时,求最优的一种下料方式的数学模型为:
(4)
这三个模型都是整数线性规划问题,可以用分支定界法求解,亦可用lingo直接编程(见附录程2序九),可以很快计算得结果;也可以用matlab7.0[3]编程算得。
2)针对模型,我们创建适应性的算法——启发式多层次逐层优化方法,此
方法的基本思想是:
在每层求解时,对于上层剩余的未完成的各零件数目,利用上面三个子模型可以在当前可行的下料方式中选择最优的一种下料方式进行下料,并尽可能的重复使用此种下料方式(这是为了使得下料方式尽可能少);然后对剩余的未完成的各零件重新优化选取新的最优的一种下料方式,不断反复上面的操作,直到所有剩余的未完成的各零件数目都减少到0为止。
这样原问题的最优解就是各个层次优化问题所求得的最优下料方式的总和。
3)启发式多层次逐层优化方法的计算方法
将上述当前最优下料方式的三种模型的计算求解作为启发式多层次逐层优化方法计算的子程序,在每级求解中,对于相应的条件重复调用相应的子程序。
完整的求解过程如下:
Step1:
初始给定了未完成的各零件的数目,4天要完成的零件集合,6天要完成的零件集合;在上一层(j层)得到的未完成的各零件的数目基础上,判断和是否成立,然后依判定条件调用1)中相应的当前最优下料计算子程序,求解得到最优下料方式,并以此作为这一级的下料方式;
Step2:
计算此种下料方式的重复次数,即用此种下料方式切割的原材料L的根数;
Step3:
计算去掉根按这种下料方式切割后,余下的未完成的各种零件的数量:
;
Step4:
将上一步得到的作为新一层优化计算的给定值,并记,令,
如果则优化计算结束;否则转Step1重新判断并调用当前最优下料方式计算子程序,求得新一层的下料方式和重复次数;
Step5:
各层最优下料方式及其重复次数的集合即为启发式多层次逐层优化方法的最终结果,即和的值;
算法流程如图1所示:
(图1:
算法流程)
用matlab编程可对问题一进行计算求解(见附录2程序四),求解的结果为:
所用的原材料的数量为:
根,所用的下料方式为:
,废料总长度为:
,废弃率为:
,利用率为:
;同时从数据中可以看出:
采用这种方案,只需要4天半就可以完成问题一中要求的6天内必须完成的零件的要求;该方案对原材料的利用率非常高,效果很好。
具体下料方式数据见附录1表1
2.对于问题二的解决:
这是一个二维下料问题[6][11],这里采用分类层次分析法;首先我们