我发布了标量约束,我希望能够在得到解决方案时打印出结果。所以我想以某种方式将其缓存在 IntVar ...
中我发现了old answer带有旧的Choco语法,我只是无法使用现代的Choco:
pb.post(eq(y, pb.scalar(new IntDomainVar(){x1,x2,...,xn}, new int[]{1,1...,1})));
也许这不是我正在寻找的东西,因为 y 可能只是 int 常量,而不是 IntVar ......
无论如何,你知道这样做的方法吗? 目前,当我得到解决方案时,我可以从值中重新计算标量,但我计划根据这些标量的平均值添加最小化目标......
我试图通过将标量分解为几个变量来解决这个问题,但现在我得到了零解决方案:
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();
}
}
我做错了什么? 谢谢你的帮助!