我正在使用Gecode工具包,我想对以下场景进行建模。
我有两个变量x和y。根据x的值,y应该是某个值。例如,如果x是 1,y应该是 3,如果x是 2,y应该是 5。我应该如何在 Gecode 中建模?
我目前使用reified 约束来模拟这种情况,可以在这个gist中看到。关键是使用一个BoolVar和两个具体化的约束来设置相应的值。
for (IntVarValues i(x); i(); ++i) {
BoolVar b = BoolVar(*this, 0, 1);
rel(*this, x, IRT_EQ, i.val(), b);
rel(*this, y, IRT_EQ, f(i.val), b);
}
我想知道是否有更好的方法来模拟这种情况。