zzpals 发表于 2012-7-7 01:35

lingo读取求助啊,书上例题可我却运行出错

本帖最后由 zzpals 于 2012-7-7 01:55 编辑

例题和程序都来自《优化建模与lindo/lingo软件》,程序第36行读取A时出现问题,实际读取了Req应该读取的内容。求解释!

程序源代码:MODEL:
TITLE 瓶颈设备的多级生产计划;
! 从文本文件exam0502.LDT中读取数据;
SETS:
! PART = 项目集合, Setup = 生产准备费,Hold = 单件库存成本,
  A = 对瓶颈资源的消耗系数;
PART/ @FILE( 'exam0502.LDT')/ : Setup, Hold, A;
! TIME = 计划期集合,Capacity = 瓶颈设备的能力;
TIME / @FILE( 'exam0502.LDT')/ : Capacity;
! USES = 项目结构关系,Req = 项目之间的消耗系数;
USES( PART, PART) : Req;
! PXT = 项目与时间的派生集合,Demand = 外部需求,
  X = 产量(批量), Y = 0/1变量,INV = 库存;
PXT( PART, TIME): Demand, X, Y, Inv;
ENDSETS
! 目标函数;
Min = @sum(PXT(i,t):
                setup(i)*Y(i,t) + hold(i)*Inv(i,t) );
! 物流平衡方程;
@FOR( PXT(i, t) | t #NE# 1 :
  Inv(i,t-1)+X(i,t)-Inv(i,t) = Demand(i, t) +
   @SUM( USES(i,j): Req(i,j)*X(j,t)) );
@FOR( PXT(i, t) | t #eq# 1 :
  X(i,t)-Inv(i,t) = Demand(i, t) +
   @SUM( USES(i,j): Req(i,j)*X(j,t)) );
! 能力约束;
@FOR( TIME(t):
   @SUM( PART(i): A(i)*X(i,t) ) < Capacity(t) );
! 其他约束;
M = 25000;
@FOR( PXT(i,t): X(i,t) <= M*Y(i,t));
@FOR( PXT: @BIN(Y) );
DATA:
Demand = @FILE( 'exam0502.LDT');  
Capacity = @FILE( 'exam0502.LDT');   
Setup = @FILE( 'exam0502.LDT');  
Hold = @FILE( 'exam0502.LDT');   
A = @FILE( 'exam0502.LDT');   
Req = @FILE( 'exam0502.LDT');
ENDDATA
END数据源代码:! 项目集合;
A        B        C        D        E        F        G~
! 计划期集合;
1        2        3        4        5        6~
! 需求;
40        0        100        0        90        10
0       0         0     0        0       0
0       0         0     0        0       0
0       0         0     0        0       0
0       0         0     0        0       0
0       0         0     0        0       0
0       0         0     0        0       0~
! 能力;
10000        0        5000        5000        1000        1000~
! 生产准备费;
400        500        1000        300        200        400        100~
! 库存费;
12        0.6        1.0        0.04        0.03        0.04        0.04~
! 对能力的消耗系数;
0        5        8        0        0        0        0~
! 项目间的消耗系数: req(i,j)表示j用到多少i;
0       0       0       0       0       0       0
5       0       0       0       0       0       0
7       0       0       0       0       0       0
0       9       0       0       0       0       0
0      11       0       0       0       0       0
0       0      13       0       0       0       0
0       0      15       0       0       0       0
! 数据结束;

zzpals 发表于 2012-7-7 23:28

好吧,这个论坛人太少了。最后是被我找出原因了:数据源代码的第19行最后面是中文的分号,改为英文的分号lingo11、13就可以正确读取了。lingo9一直都可以读取的。
页: [1]
查看完整版本: lingo读取求助啊,书上例题可我却运行出错