显示约束和冲突信息 CPLEX ILOG Java
Display Constraints and Conflict Information CPLEX ILOG Java
使用 CPLEX ILOG JAVA API,我如何打印出生成的约束,如果有任何问题我还想打印冲突信息。
我找到了这个,
但是还是不太清楚怎么设置。
谢谢!
上有一篇非常好的技术说明
关于你的第一个问题,你有几个选择。要查看生成的约束,您只需将模型导出为 LP 格式即可查看模型的用户可读版本。例如,CPLEX 附带的 LPex1.java
示例程序显示了如何将模型导出为 LP 格式:
// write model to file
cplex.exportModel("lpex1.lp");
或者,如果我们采用LPex1.java
示例程序,我们可以添加以下代码来手动打印约束:
// print constraints
System.out.println("Constraints:");
for (int i = 0; i < rng[0].length; ++i) {
System.out.println(" " + rng[0][i]);
}
IloRange
个对象用 toString
显示得很好。这将打印如下内容:
Constraints:
IloRange c1 : -infinity <= (-1.0*x1 + 1.0*x2 + 1.0*x3) <= 20.0
IloRange c2 : -infinity <= (1.0*x1 - 3.0*x2 + 1.0*x3) <= 30.0
关于你的第二个问题,你必须调用 IloCplex.refineConflict 来计算冲突(如其他答案所示)。 ConflictDisplay
参数 "Decides how much information CPLEX reports when the conflict refiner is working." 根据您的评论,您应该已经可以访问约束(如果您还没有,只需将它们存储在数组或其他数据结构中);您 没有 使用 IloLPMatrix
来使用 refineConflict
方法。该技术说明中的示例显示了如何在调用 refineConflict
.
后打印出冲突
使用 CPLEX ILOG JAVA API,我如何打印出生成的约束,如果有任何问题我还想打印冲突信息。 我找到了这个,
但是还是不太清楚怎么设置。
谢谢!
关于你的第一个问题,你有几个选择。要查看生成的约束,您只需将模型导出为 LP 格式即可查看模型的用户可读版本。例如,CPLEX 附带的 LPex1.java
示例程序显示了如何将模型导出为 LP 格式:
// write model to file
cplex.exportModel("lpex1.lp");
或者,如果我们采用LPex1.java
示例程序,我们可以添加以下代码来手动打印约束:
// print constraints
System.out.println("Constraints:");
for (int i = 0; i < rng[0].length; ++i) {
System.out.println(" " + rng[0][i]);
}
IloRange
个对象用 toString
显示得很好。这将打印如下内容:
Constraints:
IloRange c1 : -infinity <= (-1.0*x1 + 1.0*x2 + 1.0*x3) <= 20.0
IloRange c2 : -infinity <= (1.0*x1 - 3.0*x2 + 1.0*x3) <= 30.0
关于你的第二个问题,你必须调用 IloCplex.refineConflict 来计算冲突(如其他答案所示)。 ConflictDisplay
参数 "Decides how much information CPLEX reports when the conflict refiner is working." 根据您的评论,您应该已经可以访问约束(如果您还没有,只需将它们存储在数组或其他数据结构中);您 没有 使用 IloLPMatrix
来使用 refineConflict
方法。该技术说明中的示例显示了如何在调用 refineConflict
.