Java Choco CSP使用变量和进行优化

时间:2015-05-31 00:42:09

标签: java constraint-programming choco

我正在使用Choco来解决CSP问题。我想做这样的事情:

BoolVar[] badRow = getBadRow();
solver.findOptimalSolution(ResolutionPolicy.MINIMIZE, sum(badRow));

换句话说,我希望系统找到一个解决方案,其中badRow的真实值最少。我不希望这是一个“约束”因为那时系统会失败,我想避免失败。但我无法找到任何方法来创建IntVar作为其他变量的总和。

我如何做到这一点?

1 个答案:

答案 0 :(得分:2)

我从错误的角度完全接受了这个。我没有尝试将变量构建为其他变量的总和,而是创建一个普通变量,然后 Constrain 将其作为其他变量的总和,如下所示:

IntVar overflows = VariableFactory.integer("overflows", 0, maxOverflows, solver);
Constraint tracker = IntConstraintFactory.sum(badRow, overflows);
solver.post(tracker);
solver.findAllOptimalSolutions(ResolutionPolicy.MINIMIZE, overflows, true);

这解决了它。我现在感觉很傻,因为没有看到它。