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)。
我想你需要使用
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;