繁体   English   中英

在Choco 2中对RealVariables使用或约束

[英]Using or constraint for RealVariables in Choco 2

我在Windows 8.1中将Choco 2.1.5与Eclipse IDE结合使用

当我编译下面的代码时:

CPModel m = new CPModel();
m.setDefaultExpressionDecomposition(false);
RealVariable A = Choco.makeRealVar("a", -5.5, 5.5);
RealVariable B = Choco.makeRealVar("b", -4.4, 4.4);
RealVariable C = Choco.makeRealVar("c", -3.3, 3.3);
m.addConstraint(Choco.or(
        Choco.eq(A, Choco.plus(B,C)),
        Choco.eq(B, Choco.plus(A,C)),
        Choco.eq(C, Choco.plus(A,B))
        ));
CPSolver solver = new CPSolver();
solver.read(m);
System.out.println(solver.solve());

我得到以下输出:

Exception in thread "main" java.lang.UnsupportedOperationException
    at choco.kernel.solver.constraints.AbstractSConstraint.opposite(AbstractSConstraint.java:270)
    at choco.cp.solver.CPModelToCPSolver.makeSConstraintAndOpposite(CPModelToCPSolver.java:335)
    at choco.cp.solver.CPModelToCPSolver.createGenericMetaConstraint(CPModelToCPSolver.java:457)
    at choco.cp.solver.CPModelToCPSolver.createMetaConstraint(CPModelToCPSolver.java:432)
    at choco.cp.solver.CPModelToCPSolver.readModelConstraint(CPModelToCPSolver.java:353)
    at choco.cp.solver.CPModelToCPSolver.readConstraints(CPModelToCPSolver.java:292)
    at choco.cp.solver.CPSolver.read(CPSolver.java:519)
    at coverbylines.Test.main(Test.java:88)

但是,当我尝试使用IntegerVariable ,没有出现任何错误。 有什么问题吗? 有没有办法解决?

在Choco2中,并非所有约束都可以安全地实现,只有一部分约束可以安全地实现。 真正的约束条件不是该子集的一部分,而Choco.or(...)引发具体化。 看一下Choco3,其中可以约束所有约束,甚至可以约束实际约束(尽管这意味着要安装第三方库Ibex )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM