GAMS 代码错误:参数索引问题

问题描述 投票:0回答:1

Sets
    i /1, 2, 3, 4, 5/
    t /1, 2, 3, 4, 5, 6, 7, 8, 9/;

Alias(t, u);

Parameter
    p(i)  'Number of weeks to complete job i'
          /1 3
           2 2
           3 4
           4 4
           5 3/;

Parameter
M(t)
          /1 30
           2 30
           3 30
           4 30
           5 30
           6 30
           7 30
           8 30
           9 30 /;
table L(i,u)
   1  2  3  4
1  2  3  1  0
2  4  5  0  0
3  2  4  1  5
4  3  4  2  2
5  9  2  3  0;


binary variable x(i,t);
free variable
z;

Equations obj,C1(i), C2(i,u),C3(t),C4(t);

obj.. z=e=z;

C1(i).. sum(u$(ord(u) <= (9 - p(i) + 1)),x(i, u)) =e= 1;

C2(i, u)$((ord(u) + p(i) - 1) > card(t)).. x(i, u) =e= 0;

C3(t).. sum(i,sum(u$(ord(u) >= (ord(t) - p(i) + 1) and ord(u) <= ord(t)),L(i,t-u+1)*x(i,u)))=l=M(t);

C4(t).. sum(i,sum(u$(ord(u) >= (ord(t) - p(i) + 1) and ord(u) <= ord(t)),L(i,t-u+1)*x(i,u)))=l=z;

model JobScheduling/all/;
option mip=cplex;
solve JobScheduling minimizing z using mip;`

**我收到有关 L(i,t-u+1) 部分的错误。 t-u+1 不是由程序计算的。那里有什么问题。错误:尺寸不同。我只想使用 t-u+1 值而不是 u 来表示 L(i,u)。

optimization scheduling gams-math
1个回答
0
投票

我想你需要使用

ord(u)
来代替,所以将方程
C3
C4
更改为

C3(t).. sum(i,sum(u$(ord(u) >= (ord(t) - p(i) + 1) and ord(u) <= ord(t)),L(i,t-(ord(u)+1))*x(i,u)))=l=M(t);

C4(t).. sum(i,sum(u$(ord(u) >= (ord(t) - p(i) + 1) and ord(u) <= ord(t)),L(i,t-(ord(u)+1))*x(i,u)))=l=z;
© www.soinside.com 2019 - 2024. All rights reserved.