数学建模社区-数学中国

标题: 求助:食品油生产问题,程序报错。 [打印本页]

作者: 数学不烦    时间: 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)));

[obj] max = @sum(month(i):monthz(i));
end
作者: madio    时间: 2013-8-8 10:09
给你改了一下,主要是集定义和使用的问题,出现了下标越界,你看看吧!
  1. model:
  2. title:食品油生产;
  3. sets:
  4. class/v1,v2,o1,o2,o3/:r;
  5. !为第i个月第j种油的采购价格;
  6. month/1,2..6/:monthz,monthr;
  7. link(month,class):l,lw,p,b;
  8. !l1为第i个月第j种油的耗用量,l2为第i个月第j种油的储存量
  9. p为第i个月第j种油的采购量,b为第i个月第j种油的采购价格;
  10. endsets
  11. data:
  12. b = 1100 1200 1300 1100 1150
  13.     1300 1300 1100 900 1150
  14.     1100 1400 1300 1000 950
  15.     1200 1100 1200 1200 1250
  16.     1000 1200 1500 1100 1050
  17.     900 1000 1400 800 1350;

  18. r = 8.8 6.1 2.0 4.2 5.0;
  19. enddata
  20. [obj] max = @sum(month(i):monthz(i));
  21. @for(month(i):l(i,1)+l(i,2)<=200);
  22. @for(month(i):l(i,3)+l(i,4)+l(i,5)<=250);
  23. @for(month(i):monthr(i)=@sum(class(j):l(i,j)*r(j))/@sum(class(j):l(i,j)));
  24. @for(class(j):500+p(1,j)-l(1,j) = lw(1,j));
  25. @for(link(i,j)|i#ge#2:p(i,j)+lw(i-1,j)-l(i,j) = lw(i,j));
  26. @for(month(i):l(i,5)=500);
  27. @for(link:lw<=1000);
  28. @for(month(i):@free(monthz(i)));
  29. @for(month:monthr>=3);
  30. @for(month:monthr<=6);@for(month(i):
  31. 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)));


  32. end
复制代码

作者: 数学不烦    时间: 2013-8-8 12:22
只是修改了这一行吗?@for(month(i):l(i,5)=500);
运行试过,还是出现这个错误,麻烦你详细一点指出我的错误吧,我复制你的代码,有哪些圆角空格要去出,所以比较麻烦。   还是你不嫌麻烦指出我在哪里犯错了,谢谢!
作者: madio    时间: 2013-8-8 14:24
数学不烦 发表于 2013-8-8 12:22
只是修改了这一行吗?@for(month(i):l(i,5)=500);
运行试过,还是出现这个错误,麻烦你详细一点指出我的错 ...

你的link集的定义,没有发现有错吗?我改过了
作者: 数学不烦    时间: 2013-8-8 16:09
madio 发表于 2013-8-8 14:24
你的link集的定义,没有发现有错吗?我改过了

谢谢你,看到了




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5