1箱子如何摆放最优策略[摘要]本文针对正方形叉车底板如何摆放不同规格的箱子的问题,建立通用的优化模型,寻找在一定程度上贴近实际的简单可行的方法使得底板摆放箱子最多。并使用lingo求解,用excel进行画图,实现了箱子最优摆放与评价。对于问题1:建立在箱子不允许超出叉车底板边缘,也不允许长方形箱子相互重叠的情况下,通过题中所定方式以四个角向中心以螺旋状推进来减少空白浪费的位置,每个角都要摆放箱子。在摆放箱子时,我们以题中所定方式在同一边上的两个角分别横放、竖放箱子,而在对角线的两个角上采用同向摆放。每一边先设摆放箱子的长边个数和宽边个数,以四个角的长宽边个数相乘得出四个角上摆放的箱子个数,相加得到箱子的总个数,以此建立目标函数。通过约束条件限制同边和对角线的箱子不会重合。通过lingo软件求解,得到最终的最优摆放方案为:型号1的箱子最多可摆放16个,型号2的箱子最多可摆放4个,型号3的箱子最多可摆放20个。对于问题2:建立在允许箱子在正方形底板的上方,左边,右边部分超出底板(下方紧靠叉车壁,不能超出),但不至于掉落出叉车底板的情况下,同样以问题1中四角的摆放方式建立模型。这时只要箱子的重心不超出叉车边缘即可,即箱子长边与宽边可至多超出底板边缘一半,相当于叉车底板可摆放面积向外扩大了。根据问题1中摆放方式分成四个角考虑:左上角向上扩大1/2b,向左扩大1/2a;右上角向上扩大1/2a,向右扩大1/2b;左下角向左扩大1/2b;右下角向右扩大1/2a。仍然按照第一问中的思想建立目标函数,只改变一部分约束条件使可摆放面积扩大,利用lingo软件求解,得到最终的最优摆放方案为:型号1的箱子最多可摆放20个,型号2的箱子最多可摆放8个,型号3的箱子最多可摆放26个。对于问题3:建立在允许箱子在正方形底板的上方,左边,右边部分超出底板(下方紧靠叉车壁,不能超出),但不至于掉落出叉车底板的情况下,寻求优于问题1、2中四角摆放的其他摆放方式。以由下至上的逐步优化思想建立模型:首先摆放紧挨底边的一层箱子,为使箱子摆放数目更多就要使得向叉车外扩大的部分更多,所以我们在其两边各向外扩充1/2a的长度,剩余部分进行优化得到底边利用率最大的摆放方式。再以同样的摆放方式向上无缝隙层层堆叠,至上边最多超出半个箱子的边长为止。利用lingo软件编程求解,得到最终的最优摆放方案为:型号1的箱子最多可摆放23个,型号2的箱子最多可摆放8个,型号3的箱子最多可摆放28个。2最后,我们对以上三个问题建立的模型进行评价,其中有一些不足,但也有可取之处,希望对该企业解决实际问题有一定的参考价值。关键词:四角螺旋推进扩大可摆放面积由下至上逐层优化1一、问题重述某企业使用叉车运输底面为长方形的箱子。这些箱子放在叉车的正方形底板上,箱子的规格是统一的(所有箱子的长方形底面的形状相同)。通常在一次运输上,规定箱子只能像图中这样横着放,或者竖着放。如图所示,叉车置放箱子的底板是一个边长为1.1米的正方形。下图所示的便是一种可行的摆放方法,但不一定是最优的。现在这个企业需要你们帮助建立一个通用的优化模型,使得给定长方形箱子的长和宽之后,利用这个模型就能算出该如何摆放箱子(不需考虑箱子的高度,即只考虑摆放一层箱子),才能使得一次摆放的箱子数量最多。问题1如果箱子不允许超出叉车底板(如上图所示情形),也不允许长方形箱子相互重叠,建立优化模型,考虑如何摆放这些箱子,才能使摆放的箱子数量最多?对于下表中型号1的箱子,最多可以摆放多少个箱子,该如何摆放?如果你们能画出摆放示意图,那么将有助于这个企业更快地理解你们的方法。利用你们构建的模型,再分别计算型号2和型号3的箱子最多可以摆放多少个箱子,该如何摆放?画出摆放示意图。箱子型号长(米)宽(米)10.30.2420.60.430.30.2问题2假设箱子的密度都是均匀的,允许箱子在正方形底板的上方,左边,右边部分超出底板(下方紧靠叉车壁,不能超出),但不至于掉落出叉车底板。对于这种情况,重新建立优化模型,并针对上表中三种型号的箱子,分别计算最多可以摆放多少个箱子,该如何摆放?画出摆放示意图。问题3在不允许箱子相互重叠的条件下,你们是否还能另外设计出一种摆放方案?并将你们设计的方案与上图中的摆放方案的优劣性进行比较。2二、问题分析问题1要求在箱子不允许超出叉车底板边缘,也不允许长方形箱子相互重叠的情况下,通过题中所定方式以四个角向中心以螺旋状推进来减少空白浪费的位置,每个角都要摆放箱子。题目中所给条件已经将一个三维的箱子摆放问题转化为一个二维的矩形摆放问题,相当于考虑一个正方形中如何摆放不同型号的小矩形使得摆放矩形数目最多的问题。而且题中已经限制要求我们用题中所示的四角分布的方式来完成优化。首先对于四个边,我们各自先设摆放箱子的长边个数和宽边个数,以四个角的长宽边个数相乘得出四个角上摆放的箱子个数,相加得到箱子的总个数,以此建立目标函数。通过约束条件限制同边和对角线的箱子不会重合,并通过其他一些约束条件完善完善模型。利用lingo软件编程以便得到所排矩形箱子的最大数目,以及其在正方形底板四边的分布情况。然后将三种型号的矩形箱子的长宽边数据输入,进行求解。根基lingo的求解结果,我们用excel将三种型号箱子的最优摆放方法画出示意图。问题2与问题1的要求一样,问题2也要求用题中所示的四角分布的方式进行优化,只是不再限定箱子不得超出底板边缘,那么只需要满足箱子重心不超出底板边缘即可。我们在问题1的基础上假想将叉车底板的边缘扩大,扩大的极限标准是叉车底板边上箱子的重心刚好落在边缘上。但由于长边与宽边的长度不一样,横放与竖放的箱子所能超出的长度不一样,需要分别讨论可超出的三个边各自可超出的长度。据此在问题1的模型上修改限定条件,对其进行模型优化。方法与问题1的做法类似,根据正方形底板上箱子长边及短边的数目,列出约束条件,利用lingo软件输入箱子长宽参数求解,再用excel画出三种型号箱子的摆放示意图。问题3同问题二一样,叉车除了底边的三个边:左边、上边、右边均可超出箱子的二分之一部分(假设重心在叉车边缘箱子就不会掉落),但要求寻求不同于问题1、2中四角摆放的其他摆放方式。考虑到实际生活中,问题2的模型分四块装箱不便于工人操作,因此我们由实际出发考虑了另一种方案。采取从下至上的优化原则,将箱子分为三块,左右两块为横放,中间箱子为竖放,这样装箱较为规则,便于工人操作。只需求出底边横竖不同的摆放方式,在一定约束条件下通过lingo软件就可求出摆放箱子最多的方案,并用excel画出示意图。3三、模型假设(1)所有箱子的长方形底面的形状相同(2)不需考虑箱子的高度,即只考虑摆放一层箱子(3)规定箱子只能像图中这样横着放,或者竖着放。(4)假设箱子的密度都是均匀的,重心即为其几何中心。(5)假设紧挨着摆放的两个箱子之间的距离忽略不计。(6)假设箱子不从叉车底板上掉落的条件是箱子的重心不在底板外面。(7)不考虑箱子总重量是否在叉车的承受范围之内。四、符号说明x1底板上边箱子长边个数x2底板上边箱子宽边个数x3底板左边箱子宽边个数x4底板左边箱子长边个数x5底板下边箱子宽边个数x6底板下边箱子长边个数x7底板右边箱子宽边个数x8底板右边箱子长边个数I竖放的箱子层数J横放箱子的层数A箱子的长B箱子的宽L底板的边长L1底板上边可拓展的边长L2底板左边可拓展的边长L3底板下边可拓展的边长L4底板右边可拓展的边长Max底板箱子摆放的个数五、模型的建立和求解5.1问题1不允许超出底板的四角摆放方式问题目标:在底板上摆放最多箱子。45.1.1问题1模型的建立设在底板上边横放x1个箱子,在剩余(1.1-a*x1)的长度下竖放x2个箱子。其中要使空间利用率最大,要让箱子尽量占满边长,则x2=[(1.1-a*x1)]取整。再设底板左边横放x4个箱子,在剩余(1.1-a*x4)的长度下竖放x3个箱子。其中要使空间利用率最大,要让箱子尽量占满边长,则x3=[(1.1-a*x4)]取整。同理设底板下边横放x6个箱子,竖放x5个箱子,设底板右边横放x8个箱子,竖放x7个箱子。约束条件为:(1)a*x1+b*x2L;(2)a*x1+b*x2L-b;(3)b*x3+a*x4L;(4)b*x3+a*x4L-b;(5)b*x5+a*x6L;(6)b*x5+a*x6L-b;(7)b*x7+a*x8L;(8)b*x7+a*x8L-b;因为将底板分为螺旋状的四块,为了不让对角线的方块重叠,所以用以下的约束条件:(9)(若a*(x1+x6)=L,则b*(x2+x5)=L,);(10)(若b*(x7+x3)=L,则a*(x4+x8)=L,);(11)(若a*(x4+x8)=L,则b*(x3+x7)=L,);(12)(若b*(x2+x5)=L,则a*(x1+x6)=L,);x1,x2,x3,x4,x5,x6,x7,x8为正整数最多的箱子数目为目标函数:max=x1*x3+x4*x5+x6*x7+x2*x8。利用lingo软件求解三种型号的箱子数目。5.1.2问题1模型求解:箱子的长a0.30.60.3箱子的宽b0.240.40.2x1213x2211x3211x4213x5214x62115x7214x8211对于型号1的箱子:叉板上最多可以放置16个,摆放方式见图5.1.1;(图5.1.1)对于型号2的箱子:叉板上最多可以放置4个,摆放方式见图5.1.2;(图5.1.2)对于型号3的箱子:叉板上最多可以放置20个,摆放方式见图5.1.3。(图5.1.3)5.2问题2允许超出底板的四角摆放方式问题目标:在底板上摆放最多箱子。与问题一不同的是,问题二中箱子摆放可以超出叉车底板,相当于底板边缘扩大了。但是要使箱子的重心留在叉车底板。对于三种型号的箱子都有了不同的摆法。65.2.1问题2模型的建立箱子摆放可以超出叉车底板,相当于底板边缘扩大了。上边:(1)L1=L+0.5*(a+b);左边:(2)L2=L+0.5*b;下边:(3)L3=L+0.5*(a+b);右边:(4)L4=L+0.5*a;设在底板上边横放x1个箱子,在剩余(1.1+0.5*(a+b)-a*x1)的长度下竖放x2个箱子。其中要使空间利用率最大,要让箱子尽量占满边长,则x2=[(1.1+0.5*(a+b)-a*x1)]取整。再设底板左边横放x4个箱子,在剩余(1.1+0.5*b-a*x4)的长度下竖放x3个箱子。其中要使空间利用率最大,要让箱子尽量占满边长,则x3=[(1.1+0.5*b-a*x4)]取整。同理设底板下边横放x6个箱子,竖放x5个箱子,x5=[(1.1+0.5*a-a*x6)]取整。设底板右边横放x8个箱子,竖放x7个箱子,x7=[(1.1+0.5*b-a*x8)]取整。即为约束条件:(5)L1-b=a*x1+b*x2=L1;(6)L2-b=b*x3+a*x4=L2;(7)L3-b=b*x5+a*x6=L3;(8)L4-b=b*x7+a*x8=L4;为了防止对角方块重叠,列了以下约束条件:若(9)a*(x1+x6)=L+a,则b*(x3+x7)=L2若(10)b*(x7+x3)=L2,则a*(x1+x6)=L+a若(11)a*(x4+x8)=L4,则b*(x2+x5)=L+b若(12)b*(x2+x5)=L+b,则a*(x4+x8)=L4(13)x1,x2,x3,x4,x5,x6,x7,x8为正整数最多能摆放的箱子数目为(14)max=x1*x3+x4*x5+x6*x7+x2*x8。5.2.2问题2模型求解箱子的长a0.30.60.3箱子的宽b0.240.40.2x1111x2425x3313x4112x5415x61217x7123x8312对于型号1的箱子:叉板上最多可以放置20个,摆放方式见图5.2.1;(图5.2.1)对于型号2的箱子:叉板上最多可以放置4个,摆放方式见图5.2.2;(图5.2.2)对于型号3的箱子:叉板上最多可以放置26个,摆放