如何使用cplexapi在Java中使用指示符约束?

如何使用cplexapi在Java中使用指示符约束?,java,cplex,Java,Cplex,我正在使用Java和Cplex构建一个模型,在我的模型中,我需要插入一个指示符约束。模型中的一些节点由一组节点“N”中的i,j表示。我的二元决策变量是X[]],另一个连续变量是Q[]。我需要添加一个约束,以便: 如果X[i][j]==1,则添加(Q[j]>=Q[i]-d[j])。 这里d[j]是节点“j”的常数。我正在寻找一个使用JavaAPI和Cplex实现这一点的示例,您可以使用添加一个指示符约束。例如(这行代码未经测试,但您应该了解): 有关更多信息,请参阅安装CPLEX时包含的FixNe

我正在使用Java和Cplex构建一个模型,在我的模型中,我需要插入一个指示符约束。模型中的一些节点由一组节点“N”中的i,j表示。我的二元决策变量是X[]],另一个连续变量是Q[]。我需要添加一个约束,以便: 如果X[i][j]==1,则添加(Q[j]>=Q[i]-d[j])。
这里d[j]是节点“j”的常数。我正在寻找一个使用JavaAPI和Cplex实现这一点的示例,您可以使用添加一个指示符约束。例如(这行代码未经测试,但您应该了解):


有关更多信息,请参阅安装CPLEX时包含的
FixNet.java
FoodManufact.java
Diet.java
示例。

我使用的是CPLEX 12.6.1的java API,您的解决方案对我来说也是正确的。但是,在观察了生成的LP文件之后,我注意到生成的
指示器约束使用双箭头符号
,而不是右箭头符号
->
。你知道哪一个可能是问题吗?
cplex.add(cplex.ifThen(cplex.eq(X[i][j], 1.0), cplex.ge(Q[j], Q[i] - d[j])));