求助:食品油生产问题,程序报错。
本帖最后由 wujianjack2 于 2013-8-11 13:57 编辑程序运行,然后报错,我找了半天还是不知道哪里错了,麻烦各位帮帮眼
model:
title:食品油生产;
sets:
class/v1,v2,o1,o2,o3/:r;
!为第i个月第j种油的采购价格;
month/1,2..6/:monthz,monthr;
link(class,month):l,lw,p,b;
!l1为第i个月第j种油的耗用量,l2为第i个月第j种油的储存量
p为第i个月第j种油的采购量,b为第i个月第j种油的采购价格;
endsets
data:
b = 1100 1200 1300 1100 1150
1300 1300 1100 900 1150
1100 1400 1300 1000 950
1200 1100 1200 1200 1250
1000 1200 1500 1100 1050
900 1000 1400 800 1350;
r = 8.8 6.1 2.0 4.2 5.0;
enddata
@for(month(i):l(i,1)+l(i,2)<=200);
@for(month(i):l(i,3)+l(i,4)+l(i,5)<=250);
@for(month(i):monthr(i)=@sum(class(j):l(i,j)*r(j))/@sum(class(j):l(i,j)));
@for(class(j):500+p(1,j)-l(1,j) = lw(1,j));
@for(link(i,j)|i#ge#2:p(i,j)+lw(i-1,j)-l(i,j) = lw(i,j));
@for(month(i):l(i,6)=500);
@for(link:lw<=1000);
@for(month(i):@free(monthz(i)));
@for(month:monthr>=3);
@for(month:monthr<=6);@for(month(i):
monthz(i)=1800*@sum(class(j):l(i,j))-270*(l(i,1)+l(i,2))-310*(l(i,3)+l(i,4)+l(i,5))-50*@sum(class(j):lw(i,j))-@sum(class(j):b(i,j)*p(i,j)));
max = @sum(month(i):monthz(i));
end 给你改了一下,主要是集定义和使用的问题,出现了下标越界,你看看吧!model:
title:食品油生产;
sets:
class/v1,v2,o1,o2,o3/:r;
!为第i个月第j种油的采购价格;
month/1,2..6/:monthz,monthr;
link(month,class):l,lw,p,b;
!l1为第i个月第j种油的耗用量,l2为第i个月第j种油的储存量
p为第i个月第j种油的采购量,b为第i个月第j种油的采购价格;
endsets
data:
b = 1100 1200 1300 1100 1150
1300 1300 1100 900 1150
1100 1400 1300 1000 950
1200 1100 1200 1200 1250
1000 1200 1500 1100 1050
900 1000 1400 800 1350;
r = 8.8 6.1 2.0 4.2 5.0;
enddata
max = @sum(month(i):monthz(i));
@for(month(i):l(i,1)+l(i,2)<=200);
@for(month(i):l(i,3)+l(i,4)+l(i,5)<=250);
@for(month(i):monthr(i)=@sum(class(j):l(i,j)*r(j))/@sum(class(j):l(i,j)));
@for(class(j):500+p(1,j)-l(1,j) = lw(1,j));
@for(link(i,j)|i#ge#2:p(i,j)+lw(i-1,j)-l(i,j) = lw(i,j));
@for(month(i):l(i,5)=500);
@for(link:lw<=1000);
@for(month(i):@free(monthz(i)));
@for(month:monthr>=3);
@for(month:monthr<=6);@for(month(i):
monthz(i)=1800*@sum(class(j):l(i,j))-270*(l(i,1)+l(i,2))-310*(l(i,3)+l(i,4)+l(i,5))-50*@sum(class(j):lw(i,j))-@sum(class(j):b(i,j)*p(i,j)));
end 只是修改了这一行吗?@for(month(i):l(i,5)=500);
运行试过,还是出现这个错误,麻烦你详细一点指出我的错误吧,我复制你的代码,有哪些圆角空格要去出,所以比较麻烦。 还是你不嫌麻烦指出我在哪里犯错了,谢谢! 数学不烦 发表于 2013-8-8 12:22 static/image/common/back.gif
只是修改了这一行吗?@for(month(i):l(i,5)=500);
运行试过,还是出现这个错误,麻烦你详细一点指出我的错 ...
你的link集的定义,没有发现有错吗?我改过了 madio 发表于 2013-8-8 14:24 static/image/common/back.gif
你的link集的定义,没有发现有错吗?我改过了
谢谢你,看到了:victory:
页:
[1]