我一直致力于解决 OPL 中的特定约束,并尝试编写代码来解决它。但是,它没有按预期运行。任何人都可以提供有关正确方法的指导吗?
这是约束:
range J = 1..5;
range R = 1..3;
range T = 1..10;
int P[J] = [0,1,2,3,4];
int d[J] = [1, 1, 3, 5, 2];
int EF[J] = [1, 2, 1, 1, 1];
int LF[J] = [2, 3, 4, 6, 2];
subject to {
forall(j in J, i in P[j])
sum (t in EF[j]..LF[j]) (t - d[j]) * x[j][t] - sum (t in EF[i]..LF[i]) t * x[i][t] >= 0;
}
我尝试运用我在 OPL 中的知识来解决这个问题,但遇到了困难。我将不胜感激任何有关如何解决此问题的建议。
你有很多出界
以下模型效果更好
range J = 0..5;
range R = 1..3;
range T = 1..10;
int P[J] = [0,1,2,3,4];
int d[J] = [1, 1, 3, 5, 2];
int EF[J] = [1, 2, 1, 1, 1];
int LF[J] = [2, 3, 4, 6, 2];
dvar int x[J][T];
subject to {
forall(j in J, i in {P[j]})
sum (t in EF[j]..LF[j]:t in T) ((t - d[j]) * x[j][t]) -
sum (t in EF[i]..LF[i]:t in T) t * x[i][t] >= 0;
}