如何从 Java 中的多个 IntExpr 创建 IntExpr,使用 OR-Tools,与 Python 中相同
How to create IntExpr from multiple IntExpr in Java, using OR-Tools, same as in Python
在 Github 的这个问题中,设置约束的解决方案要求用户从两个表达式创建一个新表达式
https://github.com/google/or-tools/issues/685
像这样
dur_expr = time_dimension.CumulVar(delivery_index) - time_dimension.CumulVar(index)
solver.Add(dur_expr <= max_dur)
但是尝试在 Java 中做一些类似的事情会出现以下错误
The operator - is undefined for the argument type(s)com.google.ortools.constraintsolver.IntVar, com.google.ortools.constraintsolver.IntVar
知道如何在 Java 中执行此操作吗?
我设法找到了关于 IntExpr
的文档,但找不到关于如何组合表达式的任何信息
我想要实现的是确保总持续时间(即 driver 的 on-duty 时间)不超过时间限制....因为可能会有大量等待由于时间 windows,第一个仓库节点的时间,我不能简单地将时间维度限制在允许的 on-duty 时间,因为松弛将超过总允许时间。
这就是为什么我要添加以下条件
for (int i = 0; i < data.vehicleNumber; ++i) {
solver.addConstraint(solver.makeLessOrEqual(timeDimension.cumulVar(routing.end(i))-timeDimension.cumulVar(routing.start(i)), onDutyTimeLimit));
}
Java 不支持重载运算符。您需要在 Solver class.
上使用工厂方法
你的情况:
在 Github 的这个问题中,设置约束的解决方案要求用户从两个表达式创建一个新表达式 https://github.com/google/or-tools/issues/685
像这样
dur_expr = time_dimension.CumulVar(delivery_index) - time_dimension.CumulVar(index)
solver.Add(dur_expr <= max_dur)
但是尝试在 Java 中做一些类似的事情会出现以下错误
The operator - is undefined for the argument type(s)com.google.ortools.constraintsolver.IntVar, com.google.ortools.constraintsolver.IntVar
知道如何在 Java 中执行此操作吗?
我设法找到了关于 IntExpr
的文档,但找不到关于如何组合表达式的任何信息
我想要实现的是确保总持续时间(即 driver 的 on-duty 时间)不超过时间限制....因为可能会有大量等待由于时间 windows,第一个仓库节点的时间,我不能简单地将时间维度限制在允许的 on-duty 时间,因为松弛将超过总允许时间。
这就是为什么我要添加以下条件
for (int i = 0; i < data.vehicleNumber; ++i) {
solver.addConstraint(solver.makeLessOrEqual(timeDimension.cumulVar(routing.end(i))-timeDimension.cumulVar(routing.start(i)), onDutyTimeLimit));
}
Java 不支持重载运算符。您需要在 Solver class.
上使用工厂方法你的情况: