题目:
原料钢管:每根19米
客户需求:4米50根,6米20根,8米15根
问题1:如何切割原料钢管剩余总余量最小?
方法1:直接摆数学公式。
model:
min = 3*x1 + x2 + 3*x3 + 3*x4 + x5 + x6 + 3*x7;
4*x1 + 3*x2 + 2*x3 + x4 + x5 > 50;
x2+2*x4+x5+3*x6 > 20;
x3+x5+2*x7 > 15;
@gin(x1);@gin(x2);@gin(x3);@gin(x4);@gin(x5);@gin(x6);@gin(x7);
end
方法2:集合和循环方式
model:
sets:
pat/1..7/:x,f;
pipe/1..3/:b;
link(pipe,pat):A;
endsets
data:
f = 3,1,3,3,1,1,3;
b = 50,20,15;
A = 4,3,2,1,1,0,0
0,1,0,2,1,3,0
0,0,1,0,1,1,2;
enddata
min = @sum(pat(i):(f(i)*x(i)));
@for(pipe(i):(@sum(pat(j):A(i,j)*x(j)))> b(i));
@for(pat(i):@gin(x(i)));
end
结果图: