数学建模问题——钢管下料
切割模式一共有7种
4m 钢管数 6m钢管数 8m钢管数 余料
模式1 4 00 3
模式2 3 10 1
模式3 201 3
模式4 1 20 3
模式5 1 11 1
模式6 03 0 1
模式7 00 2 3
Z1=3x1+x2+3x3+3x4+x5+x6+3x7(以总余料最少为目标,由表1得)
Z2=x1+x2+x3+x4+x5+x6+x7(以切割总根数最少为目标)
约束条件:4x1+3x2+2x3+x4+x5>=50
x2+2X4+x5+3X6>=20
x3+x5+2x7>=15
你好,答案如下所示。
将volumn(I,J)改为volumn(J,I)
希望你能够详细查看。
如果你有不会的,你可以提问
我有时间就会帮你解答。
希望你好好学习。
每一天都过得充实。
在设需要每种方案使用的次数(也为每种方案下钢管数)作为变量。通过这个变量来达到圆钢根数最少。
这样问题就好解决了!
lingo程序
!一根钢管切割方法
!1,一根A 一根B
!2,一根A 两根C
!3,两根B
!4,一根B 两根C
!5,四根C
sets:
a/1..5/:x
endsets
x(1)*1+x(2)*1>=1*100
x(1)*1+x(3)*2+x(4)*1>=2*100
x(2)*2+x(4)*2+x(4)*4>=4*100
@for(a: @gin(x))
min=@sum(a: x)
=============================
制造产品D,需要A,B,C三种轴类零件,其规格和数量如下表:
零件种类 零件规格(米) 每件产品D所需零件数目
A 3.1 1
B 2.1 2
C 1.2 4
各类零件都用5.5米长的圆钢下料,如果计划生产D种产品100件,问如何下料,才能使所用的圆钢根数最少?
------------------------
!根据条件
!1.规定所使用的切割模式的种类不能超过4种
!2.一根原料钢管最多生产5根产品
!3.每种切割模式下的余料浪费不能超过100mm
!列出可能的切割方法
!
第一列290根数
第二列315根数
第三列350根数
第四列455根数
第五列每种对应方法用料量。
0 0 0 4 1820
0 0 5 0 1750
0 1 3 1 1820
0 2 2 1 1785
0 3 1 1 1750
1 0 3 1 1795
1 1 2 1 1760
1 2 0 2 1830
2 0 1 2 1840
2 1 0 2 1805
3 0 0 2 1780
sets:
a/1..11/:x,y,xy
b/1..4/:d1,d2
link(a,b):z
endsets
data:
d1=290 315 350 455
d2=15 28 21 30
z=0 0 0 4
0 0 5 0
0 1 3 1
0 2 2 1
0 3 1 1
1 0 3 1
1 1 2 1
1 2 0 2
2 0 1 2
2 1 0 2
3 0 0 2
enddata
@for(a: @bin(x))
@sum(a: x)<=4
@for(a: @gin(y))
@for(b(j): @sum(a(i): x*y*z(i,j))>=d2)
min=@sum(a: y)
-----------------------
模型中缺了价格的条件,这个我也搞不定。
我也想知道完整的程序!
望高手能贴出程序!
你的是网上的模型吧?
http://hi.baidu.com/wangcrow/blog/item/99970508f3240e970a7b82df.html
好像不能作为编程,只能作为论文的模型!!
我也不知道他们是怎么解的!题我应该没理解错吧!
===============以下是改正方法===============
不过结果好像不对,我也不知错在哪边,还请指正。
本题正确结果应该为
方法1,1 2 0 2 根数9
方法2,0 1 3 1 根数7
方法3,2 1 0 2 根数3
------我写的程序-----
sets:
a/1..4/:x,l,m,c
link(a,a):y
endsets
data:
l=290 315 350 455
m=15 28 21 30
c=1.1 1.2 1.3 1.4
enddata
@for(a(i)|i#le#3: x(i)>x(i+1))
@for(a(i): @sum(a(j): y(i,j)*l(j)*x(i))<=1850*x(i))
@for(a(i): @sum(a(j): y(i,j)*l(j)*x(i))>=1750*x(i))
@for(a(j): @sum(a(i): y(i,j)*x(i))>=m(j))
@for(a(i): @sum(a(j): y(i,j))<=5)
@for(a(i): @gin(x))
@for(link(i,j): @gin(y(i,j)))
min=@sum(a: c*x)
function f=erti(x)
h=sort(x)
n=1
for i=1:length(h)
v=pdsszy(h(i))
if v==1
f(n)=h(i)%
n=n+1
end
end
h
f
function f=pdsszy(x)
f=1
for i=2:x-1
n=x/i
if fix(n)==n
f=0
end
end
最后两个<数学模型>上找