数学建模社区-数学中国

标题: 钢管问题--新人求助 [打印本页]

作者: 数学不烦    时间: 2013-7-27 21:51
标题: 钢管问题--新人求助
本帖最后由 wujianjack2 于 2013-7-28 11:51 编辑

题目意思:某钢管零售商从钢管厂进货,将钢管按照顾客的要求切割后售出,从钢管厂进货时得到的原料钢管都是19m长。

问题:零售商如果采用的不同切割模式太多,将会导致生产过程的复杂化,从而增加生产和管理成本,所以该零售商规定采用的不同切割模式不能超过3种,此外,该客户需要 50根 4m长、20根6m长、15根8m长、10根5m长 的钢管,应该如何下料最节省?

下面是书上的答案,可是我运行的时候就提示没有可行解?代码我检查过了,没有打错的。麻烦一下各位前辈给出建议或自己的方法解决这个问题。谢谢。
(1)为什么下面的程序没有可行解?关键要点在哪里?应该怎样修改
(2)或者可以发表你的解题过程。

温馨提示:书上的答案是:最优解是:28根。



model:

sets:
needs/1..4/:length,num;
cuts/1..3/:x;
patterns(needs,cuts):r;
endsets

data:
length=4 5 6 8;
num =  50 10 20 25;
capacity=19;
enddata

min=@sum(cuts(i):x(i));

@for(needs(i):@sum(cuts(j):x(j)*r(i,j))>num(i));
@for(cuts(j):@sum(needs(i):length(i)*r(i,j))<capacity);
@for(cuts(j):@sum(needs(i):length(i)*r(i,j))<capacity-3);
@sum(cuts(i):x(i))>26;@sum(cuts(i):x(i))<31;
@for(cuts(i)|i#lt#@size(cuts):x(i)>x(i+1));
@for(cuts(j):@gin(x(j)));
@for(patterns(i,j):@gin(r(i,j)));
end

作者: wujianjack2    时间: 2013-7-27 21:51
此问题我已在帖子http://www.madio.net/thread-191037-1-1.html中尝试解决,大家可以参考下,有问题请指出!
作者: hhn1141003    时间: 2013-7-28 19:48
用x(i)表示切割方案。
每种方式的4  5  6   8   分别为r1 (i)    r2   r3
r4
minx1+x2+x3
r11x1+r12x2.....<=50


客户需求的约束
切割模式约束大于16小于十九
总共的数目大于26小于31

作者: 逐梦的男孩    时间: 2013-9-4 14:34
支持一下,加油加油




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5