我发布了一个标量约束,我希望能够在我得到解决方案时打印出它的结果。所以我想以某种方式将它缓存在IntVar中……</p>
我用旧的 Choco 语法找到了一个旧的答案,但我无法让它与现代 Choco 一起工作:
pb.post(eq(y, pb.scalar(new IntDomainVar(){x1,x2,...,xn}, new int[]{1,1...,1})));
也许这不是我想要的,因为y可能只是一个int常量而不是IntVar ...</p>
无论如何,你知道这样做的方法吗?目前,当我得到解决方案时,我可以从值中重新计算标量,但我计划根据这些标量的平均值添加一个最小化目标……</p>
我试图通过将标量分解为几个变量来解决这个问题,但现在我得到了零解决方案:
IntVar[][] scalarResults = new IntVar[x][y];
IntVar[] sumsOfScalars = new IntVar[x];
IntVar[] sumsOfScalars = model.intVarArray(x, 0, ub);
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
scalarResults[i][j] = model.intScaleView(mainValues[i][j], coeffs[j]);
// Works great.
model.sum(scalarResults[i], "=", sumsOfScalars[i]).post();
}
}
我究竟做错了什么?谢谢你的帮助!