Lingo钢管下料问题解法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
某钢管零售商从钢管厂进货,将钢管按照顾客的要求切割后售出,从钢管厂进货时得到的钢管都是19m.
(1)现有一客户需要50根4m、20根6m和15根8m的钢管,应如何下料最节省?
(2)零售商如果采用的不同切割模式太多,将会导致生产过程的复杂化,
从而增加生产和管理成本,所以该零售商规定采用的不同切割模式不能超过3种。
此外该客户需要(1)中的三种钢管外,还需要10根5m的钢管,应如何下料最省?
要求:
1. 应该有问题分析、符号说明、建立模型、求解模型、模型结果;
2.数学符号需用公式编辑器;
3. 使用lingo求解模型;
第一问的lingo代码:
model:
sets:
method/1..7/:a,b;!切割方式共7种;
way/1..3/:w;!需要切割的规格共3种,4米、6米、8米;
link(method,way):x;!第i种切割方式可以得到x(i,j)个j种规格的钢材;
endsets
data:
b=3 1 3 1 3 1 3;
x=4 0 0
0 3 0
0 0 2
1 1 1
2 0 1
3 1 0
1 2 0;
enddata
min=@sum(method:b*a);
@sum(method(i):a(i)*x(i,1))=50;
@sum(method(i):a(i)*x(i,2))=20;
@sum(method(i):a(i)*x(i,3))=15;
@for(method:@gin(a));
第二问的lingo代码:
model:
sets:
method/1..14/:a,b,c;!切割方式共14种;
way/1..4/:w;!需要切割的规格共3种,4米、6米、8米、5米;
link(method,way):x;!第i种切割方式可以得到x(i,j)个j种规格的钢材;
endsets
data:
b=3 1 3 0 1 2 0 1 1 2 3 2 3 1;
x=4 0 0 0
0 3 0 0
0 0 2 0
1 0 0 3
1 1 1 0
1 0 1 1
2 1 0 1
2 0 1 0
3 1 0 0
3 0 0 1
1 2 0 0
0 2 0 1
0 1 0 2
0 0 1 2;
@text()=@status();
enddata
min=@sum(method:b*a);
@sum(method(i):a(i)*x(i,1))=50;
@sum(method(i):a(i)*x(i,2))=20;
@sum(method(i):a(i)*x(i,3))=15;
@for(method(i):a(i)<=100*c(i));
@for(method:@gin(a));
@for(method:@bin(c));
@sum(method:c)=3;!切割方式只能3种;