捕获标量约束会导致IntVar

时间:2018-03-24 23:41:47

标签: choco

我发布了标量约束,我希望能够在得到解决方案时打印出结果。所以我想以某种方式将其缓存在 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();
    }
}

我做错了什么? 谢谢你的帮助!

0 个答案:

没有答案