QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 13954|回复: 11
打印 上一主题 下一主题

[问题求助] 急求矩形件排样程序实现

[复制链接]
字体大小: 正常 放大

1

主题

4

听众

18

积分

升级  13.68%

  • TA的每日心情
    无聊
    2014-7-17 14:42
  • 签到天数: 1 天

    [LV.1]初来乍到

    自我介绍
    我是来自河海大学环境科学与工程学院的。
    跳转到指定楼层
    1#
    发表于 2010-6-24 13:50 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    矩形件排样程序实现(要求:只能由一个学生独立完成,不得抄袭)
    工业上经常需要在一块大板材上下料得到若干个小的矩形件,使得板材的利用率最高,即所剩余的边角料最少。例如在一块宽40、高15的矩形板材上,排列25块尺寸已知的小矩形,25块小矩形的尺寸如表1,板材的利用率达100%,如图1所示。
    file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-14128.png
    图1 一种排样方案
    表1 小矩形的尺寸
    序号
    宽
    高
    1
    12
    6
    2
    4
    7
    3
    6
    7
    4
    10
    2
    5
    2
    5
    6
    6
    4
    7
    4
    2
    8
    4
    6
    9
    7
    9
    10
    4
    5
    11
    6
    4
    12
    4
    6
    13
    6
    3
    14
    4
    5
    15
    2
    4
    16
    8
    4
    17
    8
    6
    18
    8
    3
    19
    6
    3
    20
    2
    6
    21
    8
    2
    22
    3
    5
    23
    2
    5
    24
    3
    4
    25
    2
    4
    如果上述排样方案未知,即不知道图1的排法,那么如何将这25块小矩形按照某种次序排在一个大的板材上呢?目前这仍是一个世界难题。
    通常要求在一个排样图中,任何一个矩形件在不超出板材边界的情况下,按照一个排样方案(给定的次序)采用下列一些方法来安排实际矩形件的排列,对于一个排样方案(解)file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-19663.png,其中file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-22856.png,file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-5836.png,pi为矩形件的序号,r- ]( K2 X* ~9 W9 s$ T: r
    i为排样方式,r
    - ]  e- }0 {8 V3 q( g( ^( ]i=1表示将矩形件旋转90°,% H- x% }( l5 n) p6 @8 t9 f
    r
    - x# g6 Q$ j/ ?/ U: S+ v7 ti=0表示矩形件不旋转。将第i个矩形件安排在板材上的过程中,均不能再往下、往左移动,则称其满足BL条件(bottom-left-condition,BL-condition)。
    基于BL条件,有一种下台阶算法,具体步骤如下:
    (1) 将零件file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-5288.png排放在板材的左下角,若file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-6738.png则将其旋转90°后再排放,求出排放后所占板材的最大高度;
    (2) 将file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-25672.pngfile:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-11128.png根据其排样方式置于板材右边最大高度处,向下向左移动file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-1248.png,且向下移动优先(即原本已无法再向下移动,故开始向左移动,而在向左移动的过程中若发现又能继续向下移动,则先向下移动),直至file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-20777.png无法向下向左移动为止(即接触到其他零件或板材边界),并求出此时的最大高度;
    (3) 重复上述过程,直至所有零件排放完毕,最后所得最大高度即为所需板材高度。
    其排样过程如图2所示,就好象下台阶一样,于是形象地称之为下台阶算法。
    : ^; v+ V* r3 h! o8 s0 ]
    file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-29311.png
    图2  下台阶算法的排样过程
    剩余矩形排样法是目前所提出的一种有效的排样算法,该方法记录了所有可利用的空间,更能合理地分配给待排样的矩形件,提高了每个排样方案的板材利用率,更接近最优排样方案。例如对于同一个矩形件序列file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-3294.png进行排样,图3(a)中下方的空洞以往的排样算法都无法利用,矩形4只能被排到上方。而利用剩余矩形排样法可以很好的解决这个问题,它可以使矩形4充分利用下方的空间,如图3(b)。
    file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-20428.png
    图3  剩余矩形排样法的优越性
    剩余矩形排样算法用一个矩形数据集合来表示板材目前的剩余位置情况,任何未被排样的空间(包括孤立的缝隙),都在剩余矩形集合中表示,不会遗漏任何一个。而在每一个矩形件被排入前,都需根据这个剩余矩形集合中的数据来选择最为合理的位置进行排放。下面给出剩余矩形的具体形成方法(这里用矩形的左下角坐标和右上角坐标来确定这个矩形的的位置):
    (1) 板材的左下角和右上角坐标分别为file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-26959.png,于是开始时剩余矩形数据集中只有一个矩形为file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-27790.png。
    (2) 当排入一个矩形件file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-20334.png(宽file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-3366.png高file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-23654.png)后,需将剩余矩形数据集合中的每一个矩形都减掉此矩形件所占的位置。若此矩形件的左下角坐标为file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-25374.png,且为横排(即矩形件不旋转90°),则每个剩余矩形都减掉与矩形件file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-2172.png相交的部分。例如矩形file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-26371.png减掉与矩形件file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-11772.png相交的部分后,形成了四个新的剩余矩形为:
    file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-1559.png
    7 v+ j% ]. A0 n  b' ffile:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-14496.png
    按顺时针方向记录矩形。如图4所示。若为竖排(即矩形件旋转90°),计算方法类似。
    file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-27305.png

    % f9 t. K5 s4 Q: |1 C

    ! ~& I1 b. X! p6 g! ~& w
    * F* d4 Y- t& A( d' m. e# [4 L. l
    4 |; M( N  k  u8 n: \" k
    7 l$ c3 _; d$ D8 ~' s$ F

    1 Y- c) t+ p5 m( c+ Y: E% O
    ! n2 b7 q5 j6 m1 W: Y

    % @! \$ M9 ~: K, P! T
    - U% j* [0 C- |( T4 L$ V) @
      p* r4 o4 T0 s
    % B/ ]- B& @* w) J/ h- \
    ( @6 I1 y" }- e5 o: V
    9 V, a6 f: w0 V3 X3 R
    , H7 n8 Z' m1 |9 V
    # a$ m% s  B6 \, m) @  F

    ! x$ d! p1 v1 d& a  ^0 _. K
                         图4  剩余矩形表示法
    依此类推,将矩形数据集中的所有剩余矩形都作如此操作,减去所排入矩形件file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-18702.png所占位置,形成新的剩余矩形。
    (3) 由于新的剩余矩形的产生,又将引起原矩形数据集的改变,因此对其进行整理:去掉面积为零的或已无法排下所剩的任何一个矩形件的剩余矩形;把具有完全包含关系的剩余矩形中面积小的矩形去除、有相交关系的矩形全部保留。得到新的剩余矩形集,为下一次排放使用。
    用剩余矩形表示法可记录每个可形成最大矩形的空间,用于排样。将这种表示法与BL排样算法结合,就形成了剩余矩形排样算法,对于给定的一个排样方案file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-7186.png,其中file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-13661.png,file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-23460.png,具体排样过程如下:
    (1) 开始时剩余矩形集file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-22218.png中仅有一个矩形,即板材本身file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-3602.png。
    (2) 从排列file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-22016.png中取出第一个需排的矩形件file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-15639.png(宽file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-29337.png,高file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-23406.png),将file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-26571.png根据相应排放方式 file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-1361.png排放在板材的左下角,用上面所述的剩余矩形表示法计算新的板材剩余矩形集file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-24413.png:
    若file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-2578.png(横排),则file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-14132.png,file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-30412.png,如图5;
    若file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-7952.png(竖排),则file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-29899.png,file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-15602.png。
    file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-10665.png
    图5   剩余矩形排样过程
    (3) 依此类推,按顺序逐一排放file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-28784.png,直至所有矩形排放完毕。每放入一矩形件,都需根据剩余矩形集确定其排放位置,即在剩余矩形集中选择宽高均大于等于此矩形件的底部最低的最靠左的剩余矩形(先靠下后靠左),让矩形件与剩余矩形的左下角重叠。同时放入矩形后要对剩余矩形集进行整理更新。
    同样,剩余矩形排样算法也满足BL条件。
    我们的问题叙述如下:
    现在有宽为15、高为充分大的板材(即板材的高度没有限制),将表1中的25块矩形安排到板材上有下列3种排样方案:
    (1)P=(4,2,1,3,6,5,7,9,8,10,11,12,14,13,19,15,18,17,20,16,21,22,24,23,25);
    R=(1,1,1,1,1,1,1,1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
    具体排样图见图6.
    (2)P=(10,5,1,13,23,24,22,8,14,4,7,25,11,19,6,2,16,20,18,9,17,3,12,15,21);
       R=( 0,1,1, 1, 0, 1, 1,0, 1,1,1, 0, 0, 1,1,1, 0, 1, 0,0, 0,1, 1, 0, 0);
    具体排样图见图7.
    (3) P=(23,21,20,16,17,2,24,25,9,3,5,8,22,14,15,18,7,6,10,19,4,12,11,13,1);
    R=( 0, 0, 1, 0, 1,1, 0, 0,0,1,0,1, 0, 0, 0, 1,0,1, 1, 0,1, 0, 1, 0,0);
    具体排样图未给出,由参赛同学编制相应程序绘制。
    现在的问题是,请学生根据剩余矩形排样算法编制一个通用的程序仿照图6、图7绘制上述3种排样方案的图形(由程序自动绘制,不是手工绘制)。使用语言不限,最后成果需提交程序清单、程序使用说明以及由程序绘制的三张排样图。
    file:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-8201.pngfile:///C:/DOCUME~1/Jk/LOCALS~1/Temp/ksohtml/wps_clip_image-17760.png

    , N9 N& H/ b2 X1 s7 m
    ( t: O5 U' X" e" Q2 e% I3 Y7 p

      l9 i9 E+ J" i" @  k8 y$ _& p

    8 s6 Y" \; r4 c# [+ i3 p
    7 e+ t  Q# _3 ?8 ?6 T7 w& `

    : R) z( w) Y7 }, v( Q7 {

    ; D/ m% e6 O' W

    9 l; V" G' E1 q& Q
    7 t0 X. Y; H: ^& h6 G: K! Q
    2 s7 H7 Y' G/ w( ]

    & |1 }# D; D  H2 v
    " s  {" p- J) B  S% w5 V
    - E0 q# H7 a6 ]; B
    + `" C: T! H- A- Q& y( o1 ?

    $ A; E/ v. }# O+ W

    6 ^9 w# m' K1 ^; W* A: }6 b
    6 a; n" D$ y6 N7 U+ a) s6 C) M/ S/ G

    3 R: {# \, f3 V" D
    图6 问题(1)的排样图      图7 问题(2)的排样图
    ' p9 ]5 }4 {, b. `9 ?/ m+ O
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持1 反对反对0 微信微信
    wendyzl 实名认证       

    4

    主题

    2

    听众

    42

    积分

    升级  38.95%

    该用户从未签到

    群组: 数学建模保研联盟

    群组: Latex研学群

    群组: 数学建摸协会

    群组: 江西蓝天数模协会

    群组: 数学问题

    此帖仅作者可见

    使用道具 举报

    linmatsas 实名认证       

    53

    主题

    13

    听众

    3592

    积分

    逍遥游

  • TA的每日心情
    奋斗
    2014-12-2 09:53
  • 签到天数: 54 天

    [LV.5]常住居民I

    自我介绍
    额。。。。世界上最讨厌的事情就是自我介绍。。。

    邮箱绑定达人 新人进步奖 发帖功臣 最具活力勋章

    群组: Matlab讨论组

    群组: 数学建模

    群组: 小草的客厅

    群组: 2012数学一考研交流

    群组: C 语言讨论组

    此帖仅作者可见

    使用道具 举报

    1

    主题

    2

    听众

    225

    积分

    升级  62.5%

    该用户从未签到

    此帖仅作者可见

    使用道具 举报

    青陶柚        

    0

    主题

    0

    听众

    8

    积分

    升级  3.16%

    该用户从未签到

    此帖仅作者可见

    使用道具 举报

    0

    主题

    0

    听众

    4

    积分

    升级  80%

    该用户从未签到

    群组: 数学建模

    此帖仅作者可见

    使用道具 举报

    0

    主题

    0

    听众

    4

    积分

    升级  80%

    该用户从未签到

    此帖仅作者可见

    使用道具 举报

    6

    主题

    4

    听众

    152

    积分

    升级  26%

  • TA的每日心情
    无聊
    2016-10-18 16:31
  • 签到天数: 36 天

    [LV.5]常住居民I

    社区QQ达人 邮箱绑定达人

    群组: 学术交流A

    群组: 学术交流B

    此帖仅作者可见

    使用道具 举报

    呼呼呼        

    0

    主题

    6

    听众

    11

    积分

    升级  6.32%

  • TA的每日心情
    郁闷
    2012-9-10 01:28
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    群组: 学术交流B

    此帖仅作者可见

    使用道具 举报

    小羚羊        

    0

    主题

    4

    听众

    31

    积分

    升级  27.37%

  • TA的每日心情
    开心
    2013-1-12 00:08
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    自我介绍
    爱自由的同学随我来
    此帖仅作者可见

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-10-1 05:07 , Processed in 2.789992 second(s), 105 queries .

    回顶部