欢迎来到天天文库
浏览记录
ID:43957003
大小:188.50 KB
页数:5页
时间:2019-10-17
《摆放箱子策略》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、作业题一:箱子的摆放策略某省内知名企业生产的产品用形状为r方体的箱子包装,使用叉车将这些箱子从生产车间运输至仓库。这些箱子叠放在叉车的正方形底板上,如下图所示,叉车置放箱子的底板是一个边长为1.1米的正方形。箱子的规格是统一的(所有箱子的长方形底面的尺寸相同)。通常在一次运输中,箱了像卜•图中这样横着放,或者竖着放。下图所示的便是一种可行的摆放方法,但不一定是最优的。现在这家企业需要你们帮助建立一个通用的优化模型,使得给定长方形箱子的长和宽之后,利用这个模型就能算出该如何摆放箱子(不需考虑箱子的高度,即只考虑摆放一层箱子),才能使得一次摆放的箱子数
2、量最多。问题:如果不允许箱子超出叉车底板(如上图所示情形),也不允许箱子相互重叠,建立一个优化模型,考虑如何摆放这些箱了,才能使摆放的箱了数量最多?利用你们构建的模型,分别计算出对于下表屮型号1、型号2和型号3的箱子,最多可以摆放多少个?该如何摆放?如果你们能画出摆放示意图,那么将有助于这家企业更快地理解你们的方法。长(米)宽(米)箱子型号10.30.24箱了型号20.60.4箱子型号30.30.2解:本题需耍解决的问题冇在不允许箱子超出叉车底板,也不允许箱子相互重叠的情况下,构建一个优化模型,并根据题目中捉供的三种型号箱子的数据,确定可以摆放的个
3、数及摆放示意图。一、问题分析本文研究的是在一个边长为1」的正方形叉车底板上堆放长方体箱子的问题。不同规格的箱子最佳堆放方式是不同的要尽量多的满足齐种型号箱子摆放数量最多,就要设计一个通用的优化方案。要求在既不允许箱子超出叉车底板,也不允许箱子相互重叠的情况下考虑货物的堆放方案。首先借鉴于循环嵌套式的启发式算法,列出在不超出边际的情况下设计能够最大限度地使用正方形底板边长的MATLAB程序,求解得到最优的长宽组合及所冇小矩形的个数。再结合矩形Packing问题的贪心算法进行占穴动作,以正方形边长的利用率最大化为优化口标,得到最终的摆放方案并利用EXC
4、EL作岀示意图。二、模型假设1、假设箱子的密度都是均匀的,若允许箱子在正方形底板的上方,左边,右边部分超出底板(下方紧靠叉车壁,不能超出)只要重心不超岀底板,就不至于掉落岀叉车底板。2、假设箱子表而光滑,箱子间摆放无缝隙,即把箱子当做小矩形进行分析。3、假设叉车的承重能力无限大,能承载足够多的箱子。三、符号说明符号解释说明a小矩形箱的长b小矩形箱的宽L止方形的边长c长边向上叠加的矩形箱个数m底边上矩形箱的长边个数n底边上矩形箱的宽边个数sum小矩形总的个数四、模型的建立与求解在边长为1」的止方形中放入ab的小矩形,a为长,b为宽,并且耍使放入的数量
5、最多。其等价于利用a和b的进行各种组合,使得大正方形各个边方向上的利用率尽可能高,即在边上对a和b进行组合优化。对外层排列完成后,对内部剩余矩形面积进行排放。如此循环至剩余面积无法放入小矩形。这种模型不断循环利于推广。参照流程图设计MATLAB程序(见附录)求解每层小矩形长边3、宽边b的个数m和n以及所有小矩形的个数sumo模型求解第一种箱了a=0.3b=0.24L=l.l利用MATLAB程序求解得:m=2,n=2,sum=16因为该算法的思想为由外向内的每层都分为对称的4部分,每部分都为相同形状矩形。因此此方案只有一层,摆放示意图如图所示11("
6、F111111111111■十11111111111£11r1-1LJL11j1111111114MB■—1—1———1111111111■」11第二种箱子a=0.6b=0.4L=l.l利用MATLAB程序求解得:m=l,n=l,sum=4摆放示意图如图所示笫三种箱子a二0.3b二0.2L=l.l利用MATLAB程序求解得:m=[11],n=[41],sum=24摆放示意图如图7所示五、模型的检验设底盘的总而积为S,小矩形的长宽分别为a、b,N为底盘而积利用率最大时小矩形的个数。由N=[S/(ab)]得山Nl=16N2=5N3=20由模型一得:su
7、ml=16sum2=4sum3=24由模型一得出的结果面积利用率很高,结果合理。在理想情况下,第二种型号的箱子可放入5个,但根据实际情况,箱子形状固定,无法分割,故只能放入4个。因此我们得出的结果是全局最优解。六、模型的评价对于此问题的优化模型,有以下优点:1•该方法计算简便,可操作性强,便于推广使用。2•该模型得出的町行解经检验为全局最优解。对于问题使用的优化模型有以卜•缺点:1.程序屮若岀现多个可行解,结果只能捉供一种答案。2.模型所得结果是基于理想化的,与实际可能不符。七附录用MATLAB求解模型的最优解,在test.m文件中写如下的程序a=
8、input(*K:a=*);b=input('宽b=');L=input(*底边长L=*);i=l;[f(i)zm(i)z
此文档下载收益归作者所有