数学不烦 发表于 2013-8-7 18:36

求助:食品油生产问题,程序报错。

本帖最后由 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

madio 发表于 2013-8-8 10:09

给你改了一下,主要是集定义和使用的问题,出现了下标越界,你看看吧!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

数学不烦 发表于 2013-8-8 12:22

只是修改了这一行吗?@for(month(i):l(i,5)=500);
运行试过,还是出现这个错误,麻烦你详细一点指出我的错误吧,我复制你的代码,有哪些圆角空格要去出,所以比较麻烦。   还是你不嫌麻烦指出我在哪里犯错了,谢谢!

madio 发表于 2013-8-8 14:24

数学不烦 发表于 2013-8-8 12:22 static/image/common/back.gif
只是修改了这一行吗?@for(month(i):l(i,5)=500);
运行试过,还是出现这个错误,麻烦你详细一点指出我的错 ...

你的link集的定义,没有发现有错吗?我改过了

数学不烦 发表于 2013-8-8 16:09

madio 发表于 2013-8-8 14:24 static/image/common/back.gif
你的link集的定义,没有发现有错吗?我改过了

谢谢你,看到了:victory:
页: [1]
查看完整版本: 求助:食品油生产问题,程序报错。