数学建模截断切割问题学号:************* 姓名:杨德升学号:************* 姓名:李春红学号:************* 姓名:杨建明问题描述:某些工业部门(如贵重石材加工等)采用截断切割的加工方式。
这里“截断切割”是指将物体沿某个切割平面分成两部分。
从一个长方体中加工出一个已知尺寸、位置预定的长方体(这两个长方体的对应表面是平行的),通常要经过6次截断切割。
设水平切割单位面积的费用是垂直切割单位面积费用的r倍,且当先后两次垂直切割的平面(不管它们之间是否穿插水平切割)不平行时,因调整刀具需额外费用e。
试为这些部门设计一种安排各面加工次序(称“切割方式”)的方法,使加工费用最少。
(由工艺要求,与水平工作台接触的长方体底面是事先指定的)详细要求如下:1、需考虑的不同切割方式的总数。
2、给出上述问题的数学模型和求解方法。
3、试对某部门用的如下准则作出评价:每次选择一个加工费用最少的待切割面进行切割。
4、对于e=0的情形有无简明的优化准则。
5、用以下实例数据验证你的方法:待加工长方体和成品长方体的长、宽、高分别为10、14.5、19和3、2、4,二者左侧面、正面、底面之间的距离分别为6、7、9(单位均为厘米)。
垂直切割费用为每平方厘米1元,r和e的数据有以下4组:a r = 1 e = 0;b r = 1.5 e = 0;c r = 8 e = 0;d r = 1.5 2<= e<=15;对最后一组数据应给出所有最优解,并进行讨论。
解:(1)对于计算不同的切割方式总数,经过分析,能够用排列组合的知识来解决这个问题。
我们对分别位于前、后、左、右、上、下的切割面进行编号,其相应的编号分别为1M,2M,M3,M4,M5,M6,然而每一种切割方式都是对这6个切割面的一个排列方式,所以总共就6!=720种排列方式。
但是相继切割一对平行面时,交换切割次序,不影响切割费用,把费用相同的一项归到一类,最终的切割总数为:720-3x5!+3x4!-3!=426种(2)(3)(4)(5)符号说明:a0,b0,c0分别表示待加工长方体的长、宽、高。
a,b,c分别表示成品长方体的长、宽、高。
1M、2M、3M、4M、5M、6M表示左、右、前、后、上、下,1u,2u,3u,4u,5u,6u分别表示待加工长方体与成品长方体。
有向图顶点是vi,坐标为(xi,y i,z i),xi,y i,z i分别代表侧面(左右面)、正(前后面)、水平面(上下面)的切割次数。
其中xi,y i,z i都在{0.1.2}中取值。
a i,bi,c i分别表示在iv时,长方体左右、前后、上下面的距离。
有向弧(vi,v j)代表一个从vi至v j的切割步骤,模型建立:考虑不同切割方式的总数,设待加工长方体的左右面、前后面、上下面间的距离分别为a0、b0、c0。
六个切割面分别位于左、右、前、后、上、下,将它们相应编号为1M、2M、3M、4M、5M、6M,这六个面与待加工长方体相应外侧面的边距分别为1u、2u、3u、4u、6u、5u。
这样,一种切割方式就是六个切割面的一个排列,共有6!=720种切割方式。
当考虑到切割费用时,显然有局部优化准则:两个平行待切割面中,边距较大的待切割面总是先加工。
由此准则,只需考虑6!/(2!x2!x2!)=90种切割方式。
即在求最少加工费用时,只需在90个满足准则的切割序列中考虑。
不失一般性,设1u 2u 、3u 4u、5u 6u,故只考虑1M在2M前、3M在4M前、6M在5M前的切割方式。
Ⅱ、根据不同情况建立数学模型1、e=0的情况为简单起见,先考虑e=0的情况。
构造如图所示的一个有向赋权网络图G(V,E)。
为了表示切割过程的有向性,在网络图上加上坐标轴x,y,z。
图G(V,E)的含义为:(1)、空间网络图中每个结点Vi(xi,y i,z i)表示被切割石材所处的一个状态。
顶点坐标ix,y i, z i分别代表石材在左右、前后、上下方向上已被切割的刀数。
顶点1V(0,0,0)表示石材的最初待加工状态,顶点27V(2,2,2)表示石材加工完成后的状态。
(2)、G的弧(Vi , V j)表示石材被切割的一个过程,若长方体能从状态Vi 经一次切割变为状态V j,即当且仅当xi+y i+z i+1= x j +y j+z j时,Vi(xi,y i, z i)到V j(xi,y i, z i)有弧(Vi , V j),相应弧上的权W(Vi , V j)即为这一切割过程的费用。
对于任意相邻状态的点之间的弧的权值公式如下:其中,a i、b i、c i分别代表在状态Vi时,长方体的左右面、上下面、前后面之间的距离。
(3)、根据局部优化准则知第一刀有三种选择,即第一刀应切1M、3M、6M 中的某个面,在图中分别对应的弧为(1V,2V),(1V,4V),(1V,10V),图G中从1V到27V的任意一条有向道路代表一种切割方式。
从1V到27V共有90条有向道路,对应着所考虑的90种切割方式。
1V到27V的最短路即为最少加工费用,该有向道路即对应所求的最优切割方式。
2、e!=0的情况当e!=0时,即当先后两次垂直切割的平面不平行时,需加调刀费e。
希望在上面的网络图中某些边增加权来实现此费用增加。
在所有切割序列中,四个垂直面的切割顺序只有三种可能情况(不管它们之间是否穿插水平切割):<情况一>先切一对平行面,再切另外一对平行面,总费用比e=0时的费用增加e。
<情况二>先切一个,再切一对平行面,最后割剩余的一个,总费用比e=0时的费用增加2e。
<情况三>切割面是两两相互垂直,总费用比e=0时的费用增加3e。
在所考虑的90种切割序列中,上述三种情况下垂直切割面的排列情形,及在图G中对应有向路的必经点如下表(z=0,1,2):我们希望通过在上面的网络图中的某些边上增加权来进行调刀费用增加的计算,但由于网络图中的某些边是多种切割序列所公用的。
对于某一种切割序列,需要在此边上增加权e,但对于另外一种切割序列,就有可能不需要在此边上增加权e,这样我们就不能直接利用上面的网络图进行边加权这种方法来求出最短路径。
由上表可以看出,三种情况的情形(一)有公共点集{(2,1,z)|z=0,1,2},情形(二)有公共点集{(1,2,z)|z=0,1,2}。
且情形(一)的有向路决不通过情形(二)的公共点集,情形(二)的有向路也不通过情形(一)的公共点集。
所以可判断出这两部分是独立的、互补的。
.如果我们在图G中分别去掉点集{(1,2,z)|z=0,1,2}和{(2,1,z)|z=0,1,2}及与之相关联的入弧,就形成两个新的网络图,如图H1和H2。
这两个网络图具有互补性。
对于一个问题来说,最短路线必存在于它们中的某一个中。
由于调整垂直刀具为3次时,总费用需增加3e,故我们先安排这种情况的权增加值e,每次转刀时,给其待切弧上的权增加e。
增加e的情况如下图中所示。
再来判断是否满足调整垂直刀具为二次、一次时的情况,我们发现所增加的权满足另外两类切割序列。
综合上述分析,我们将原网络图G分解为两个网络图H1和H2,并在指定边上的权增加e,然后分别求出图1H和2H中从1V到27V的最短路,最短路的权分别为:d1,d2.则得出整体的最少费用为:d = min(d1 ,d2),相应的图求出的最优切割序列即为其对应的最短路径。
图1H图2HⅢ、对“每次选择一个加工费用最少的待切割面进行切割”这个准则的好坏进行评价评价的标准:最佳切割方式可以不唯一,可是最佳加工费用应等于按照之前的模型求解出的最少加工费用。
即:若准则精选出的不同切割方式有很多,而相应的加工费却不全相同,则其不具备优化准则的基本属性。
同样,即使精选出的切割方式唯一,但加工费却非真正意义上的最小,则准则也无最优性可言。
根据实例中的数据,在局部最优准则的前提下,假定e =0,r= 1时,求出的最佳加工费用为374元,这与用上面的模型求解出的结果相同。
假定e= 2, r = 1.5时,求出的最佳加工费用为490元,这个与用上面的模型求解出的结果443.5不相同,并且比上面的结果大。
因此,“每次选择一个加工费用最少的待切割面进行切割”不能作为最佳优化准则使用,但当e=0时可以采用这个准则,而当e!=0时不能采用这个准则。
Mat l a b程序function [ y1,y2 ] = qiegel( r,e )a = [10,14.5,19;6,7,9;1.5,5,6];k= 0;nn = 1;mm =zeros(720,6);%UNTITLED Summary of this function goes here% Detailed explanation goes herefor i1=1:6for i2=1:6for i3=1:6for i4=1:6for i5=1:6for i6=1:6if i1==i2|i2==i3|i3==i4|i4==i5|i1==i3|i1==i4 |i1==i5|i2==i4|i2==i5|i3==i5break;endb=[i1,i2,i3,i4,i5,i6];if ispl(b)==1k = k+1;m(k)=fee(a,b,c);mm(k,;)=b;endendendendendendendi2 =1;for i1 = 1:kif m(i1)==min(m);m1(i2)=i1;i2= i2+1;endendy1 = min(m);y2 = mm(m1,;);endfunction x4 = ispl(x)x3 =1;for x1 =1:5if x(x1)-x(6)==0x3=0;endendx4=x3;endfunction s =fee(a,b,r,e)c=b;for i=1:6switch b(i)case 1b(i)=a(1,2)*a(1,3);a(1,1)=a(1,1)-a(2,1);case 2b(i)=a(1,2)*a(1,3);a(1,1)=a(1,1)-a(3,1);case 3b(i)=a(1,2)*a(1,3);a(1,2)=a(1,2)-a(2,2);case 4b(i)=a(1,2)*a(1,3);a(1,2)=a(1,2)-a(3,2);case 5b(i)=a(1,2)*a(1,3);a(1,3)=a(1,3)-a(2,3);case 6b(i)=a(1,2)*a(1,3);a(1,3)=a(1,3)-a(3,3);endends = sum (b) +shu(c)*e:function n=shu(b)k=0;kk=0;if b(i)~=5&b(i)~+6k =k+1;a(k)=b(i);endendfor i =1:3if (a(i)==1|a(i)==2)&(a(i+1)==3|a(i+1)==4) kk =kk+1;endif (a(i)==3|a(i)==4)&(a(i+1)==1|a(i+1)==2) kk =kk+1;endendn =kk;。