使用 CPLEX 在 OPL 中实施约束

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

我一直致力于解决 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 中的知识来解决这个问题,但遇到了困难。我将不胜感激任何有关如何解决此问题的建议。

mathematical-optimization cplex modeling opl
1个回答
0
投票

你有很多出界

以下模型效果更好

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;    
}
© www.soinside.com 2019 - 2024. All rights reserved.