数学建模社区-数学中国
标题:
多阶段生产的lingo问题
[打印本页]
作者:
1449128037
时间:
2014-5-5 17:32
标题:
多阶段生产的lingo问题
将一个lingo程序用集的形式改写之后结果有点儿出入,烦请大神帮忙看看,指正指正!
model:
sets :
week_i/1..4/:x,y,z,a,b,c,m,n,q;
endsets
[OBJ]max=
@Sum
(week_i(i):350*y(i)+470*b(i)+610*n(i)-9*z(i)-10*c(i)-18*q(i));!目标函数;
@for(week_i(i):x(i)+a(i)<=120);
@for(week_i(i):m(i)<=48);
@for(week_i(i):10*x(i)+15*a(i)+20*m(i)<=2000);
z(1)=22+x(1)-y(1); z(2)=z(1)+x(2)-y(2);
z(3)=z(2)+x(3)-y(3); z(4)=z(3)+x(4)-y(4);
c(1)=42+a(1)-b(1); c(2)=c(1)+a(2)-b(2);
c(3)=c(2)+a(3)-b(3);c(4)=c(3)+a(4)-b(4);
q(1)=36+m(1)-n(1); q(2)=q(1)+m(2)-n(2);
q(3)=q(2)+m(3)-n(3); q(4)=q(3)+m(4)-n(4);
@for(week_i(i):@gin(x(i));@gin(y(i));@gin(z(i));@gin(a(i));@gin(b(i));
@gin(c(i));@gin(m(i));@gin(n(i));@gin(q(i)););
@for(week_i(i):@bnd(20,b(i),40););
@bnd(20,y(1),60);
@bnd(20,y(2),80);
@bnd(20,y(3),120);
@bnd(20,y(4),140);
@bnd(20,n(1),50);
@bnd(20,n(2),40);
@bnd(20,n(3),30);
@bnd(20,n(4),70);
end
改写后的lingo程序:
2.xlsx
(9.3 KB, 下载次数: 3)
2014-5-5 17:30 上传
点击文件名下载附件
下载积分: 体力 -2 点
MODEL:
SETS:
constraints/A,B,MP/: pp;
products / 1,2,3/:
price,cost,s0;
month/1..4/:;
link11( constraints, products): lk;
link2(month,products):x,d,s,dmin,dmax;
ENDSETS
DATA:
pp = @OLE('\2.XLSX');
price = @OLE('\2.XLSX');
lk = @OLE('\2.XLSX');
dmin = @OLE('\2.XLSX');
dmax = @OLE('\2.XLSX');
s0 = @OLE('\2.XLSX');
cost = @OLE('\2.XLSX');
ENDDATA
MAX = @SUM( link2( k,j):
price( j) * d( k,j)-cost(j)*s(k,j));
@for(month(k):@for( constraints( i):
@SUM( products( j):
lk( i, j) *x(k,j)) <= pp(i)
));
@for(month(k)|k#gt#1:@for(products(j):s(k,j)=s(k-1,j)+x(k,j)-d(k,j)));
@for(products(j):s(1,j)=s0(j)+x(1,j)-d(1,j));
@for(link2(k,j):@bnd(dmin(k,j),d(k,j),dmax(k,j)););
@for(link2(k,j):@gin(x(k,j));@gin(s(k,j)););
END
作者:
madio
时间:
2014-5-6 08:09
MODEL:
SETS:
constraints/A,B,MP/: pp;
products / 1,2,3/:
price,cost,s0;
month/1..4/:;
link11( constraints, products): lk;
link2(month,products):x,d,s,dmin,dmax;
ENDSETS
DATA:
pp = @OLE('2.XLSX');
price = @OLE('2.XLSX');
lk = @OLE('2.XLSX');
dmin = @OLE('2.XLSX');
dmax = @OLE('2.XLSX');
s0 = @OLE('2.XLSX');
cost = @OLE('2.XLSX');
ENDDATA
MAX = @SUM( link2( k,j):
price( j) * d( k,j)-cost(j)*s(k,j));
@for(month(k):@for( constraints( i):
@SUM( products( j):
lk( i, j) *x(k,j)) <= pp(i)
));
@for(month(k)|k#gt#1:@for(products(j):s(k,j)=s(k-1,j)+x(k,j)-d(k,j)));
@for(products(j):s(1,j)=s0(j)+x(1,j)-d(1,j));
@for(link2(k,j):@bnd(dmin(k,j),d(k,j),dmax(k,j)););
@for(link2(k,j):@gin(x(k,j));@gin(s(k,j)););
END
复制代码
没有问题,就是链接xlsx文件的路径不对,把2.xlsx文件放到和代码同一个目录下,使用上面的程序就可以了运行出结果,而且是全局最优解。
Global optimal solution found.
Objective value: 301944.0
Objective bound: 301944.0
Infeasibilities: 0.000000
Extended solver steps: 0
Total solver iterations: 94
Model Class: MILP
Total variables: 36
Nonlinear variables: 0
Integer variables: 24
Total constraints: 25
Nonlinear constraints: 0
Total nonzeros: 93
Nonlinear nonzeros: 0
Variable Value Reduced Cost
PP( A) 120.0000 0.000000
PP( B) 48.00000 0.000000
PP( MP) 2000.000 0.000000
PRICE( 1) 350.0000 0.000000
PRICE( 2) 470.0000 0.000000
PRICE( 3) 610.0000 0.000000
COST( 1) 9.000000 0.000000
COST( 2) 10.00000 0.000000
COST( 3) 18.00000 0.000000
S0( 1) 22.00000 0.000000
S0( 2) 42.00000 0.000000
S0( 3) 36.00000 0.000000
LK( A, 1) 1.000000 0.000000
LK( A, 2) 1.000000 0.000000
LK( A, 3) 0.000000 0.000000
LK( B, 1) 0.000000 0.000000
LK( B, 2) 0.000000 0.000000
LK( B, 3) 1.000000 0.000000
LK( MP, 1) 10.00000 0.000000
LK( MP, 2) 15.00000 0.000000
LK( MP, 3) 20.00000 0.000000
X( 1, 1) 18.00000 -350.0000
X( 1, 2) 100.0000 -470.0000
X( 1, 3) 16.00000 -610.0000
X( 2, 1) 40.00000 -350.0000
X( 2, 2) 56.00000 -470.0000
X( 2, 3) 38.00000 -610.0000
X( 3, 1) 40.00000 -350.0000
X( 3, 2) 80.00000 -470.0000
X( 3, 3) 20.00000 -610.0000
X( 4, 1) 40.00000 -350.0000
X( 4, 2) 80.00000 -470.0000
X( 4, 3) 20.00000 -610.0000
D( 1, 1) 40.00000 0.000000
D( 1, 2) 60.00000 0.000000
D( 1, 3) 50.00000 0.000000
D( 2, 1) 40.00000 0.000000
D( 2, 2) 80.00000 0.000000
D( 2, 3) 40.00000 0.000000
D( 3, 1) 40.00000 0.000000
D( 3, 2) 120.0000 0.000000
D( 3, 3) 20.00000 0.000000
D( 4, 1) 40.00000 0.000000
D( 4, 2) 98.00000 0.000000
D( 4, 3) 20.00000 0.000000
S( 1, 1) 0.000000 9.000000
S( 1, 2) 82.00000 10.00000
S( 1, 3) 2.000000 18.00000
S( 2, 1) 0.000000 9.000000
S( 2, 2) 58.00000 10.00000
S( 2, 3) 0.000000 18.00000
S( 3, 1) 0.000000 9.000000
S( 3, 2) 18.00000 10.00000
S( 3, 3) 0.000000 18.00000
S( 4, 1) 0.000000 359.0000
S( 4, 2) 0.000000 480.0000
S( 4, 3) 0.000000 628.0000
DMIN( 1, 1) 20.00000 0.000000
DMIN( 1, 2) 20.00000 0.000000
DMIN( 1, 3) 20.00000 0.000000
DMIN( 2, 1) 20.00000 0.000000
DMIN( 2, 2) 20.00000 0.000000
DMIN( 2, 3) 20.00000 0.000000
DMIN( 3, 1) 20.00000 0.000000
DMIN( 3, 2) 20.00000 0.000000
DMIN( 3, 3) 20.00000 0.000000
DMIN( 4, 1) 20.00000 0.000000
DMIN( 4, 2) 20.00000 0.000000
DMIN( 4, 3) 20.00000 0.000000
DMAX( 1, 1) 40.00000 0.000000
DMAX( 1, 2) 60.00000 0.000000
DMAX( 1, 3) 50.00000 0.000000
DMAX( 2, 1) 40.00000 0.000000
DMAX( 2, 2) 80.00000 0.000000
DMAX( 2, 3) 40.00000 0.000000
DMAX( 3, 1) 40.00000 0.000000
DMAX( 3, 2) 120.0000 0.000000
DMAX( 3, 3) 30.00000 0.000000
DMAX( 4, 1) 40.00000 0.000000
DMAX( 4, 2) 140.0000 0.000000
DMAX( 4, 3) 70.00000 0.000000
Row Slack or Surplus Dual Price
1 301944.0 1.000000
2 2.000000 0.000000
3 32.00000 0.000000
4 0.000000 0.000000
5 24.00000 0.000000
6 10.00000 0.000000
7 0.000000 0.000000
8 0.000000 0.000000
9 28.00000 0.000000
10 0.000000 0.000000
11 0.000000 0.000000
12 28.00000 0.000000
13 0.000000 0.000000
14 0.000000 350.0000
15 0.000000 470.0000
16 0.000000 610.0000
17 0.000000 350.0000
18 0.000000 470.0000
19 0.000000 610.0000
20 0.000000 350.0000
21 0.000000 470.0000
22 0.000000 610.0000
23 0.000000 350.0000
24 0.000000 470.0000
25 0.000000 610.0000
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5