代码如下
1、解决问题一的目标1:
!钢管下料,原料19m;
!客户需求:4m的50根、6m的20根、8m的15根;!Question 1:如何下料最省? Question 2:客户增加需求5m的10根;! 4 6 8 余料
Plan 1: 4 0 0 Plan 2: 3 1 0 余1 Plan 3: 2 0 1 余3 Plan 4: 1 2 0 余3 Plan 5: 1 1 1 余1 Plan 6: 0 2 0 余1 plan 7: 0 0 2 余3;!目标一:(总余量)MIN Z1=3*x1+x2+3*x3+3*x4+x5+x6+3*x7
目标二:(总根数)MIN Z2=x1+x2+x3+x4+x5+x6+x7 约束:4*x1+3*x2+2*x3+x4+x5>=50 x2+2*x4+x5+3*x6>=20 x3+x5+2*x7>=15 整数约束:xi为整数;MODEL:
sets:
demand/1..3/:a;!j=1,2,3; plan/1..7/:b,x;!i=1,2,3,4,5,6,7; link(plan,demand):c;endsetsdata:
a=50,20,15; b=3,1,3,3,1,1,3; c=4 0 0 3 1 0 2 0 1 1 2 0 1 1 1 0 3 0 0 0 2;enddatamin=@sum(plan(i):x(i)*b(i));
@for(demand(j):@sum(plan(i):x(i)*c(i,j))>a(j););!3行约束,@for(demand(j):),按照j循环3次,即j=1,2,3;@for(plan(i):@gin(x(i)););END
2、解决问题一的目标2:
MODEL:
sets:
demand/1..3/:a;!j=1,2,3; plan/1..7/:b,x;!i=1,2,3,4,5,6,7; link(plan,demand):c;endsetsdata:
a=50,20,15; b=3,1,3,3,1,1,3; c=4 0 0 3 1 0 2 0 1 1 2 0 1 1 1 0 3 0 0 0 2;enddatamin=@sum(plan(i):x(i));
@for(demand(j):@sum(plan(i):x(i)*c(i,j))>a(j););!3行约束,@for(demand(j):),按照j循环3次,即j=1,2,3;@for(plan(i):@gin(x(i)););END
3、解决再加额外10根5m的需求:
MODEL:
sets: type/1..4/:a,b;!i=1, 2,3,4; plan/1..3/:x;!j=1,2,3; link(type,plan):r;endsetsdata: a=4 5 6 8; b=50 10 20 15;enddatamin=@sum(plan(j):x(j));@sum(plan(j):x(j))>26;@for(type(i):@sum(plan(j):r(i,j)*x(j))>b(i););@for(plan(j):@sum(type(i):r(i,j)*a(i))>=16;);@for(plan(j):@sum(type(i):r(i,j)*a(i))<=19;);@for(plan(j):@gin(x(j)););@for(link(i,j):@gin(r(i,j)););END这期就到这里啦,小编未来将在自己的blog里发表一些有关MATLAB、C语言、Python、LINGO、R、SPSS、EVIEWS and Multisim,and so on,还有一些单片机、电子设计等有关知识。
不要问小编为什么会这么多,因为小编学的是电子信息工程!一个难到爆炸的专业,上到天文电磁波,下到量子微机电路板,外加各种编程,2333.