この質問は、python パッケージの制約( http://labix.org/python-constraintを参照)、特に組み込みの " AllEqualConstraint " に関するものです。4 つの変数を含む問題では、最初の 2 つと次の 2 つが等しくなるように強制したいと思います。
p = Problem()
p.addVariables([1,2,3,4], [0,1])
p.addConstraint(AllEqualConstraint(), [1,2])
p.addConstraint(AllEqualConstraint(), [3,4])
私は2つの解決策しか得られません:
for sol in p.getSolutions():
print sol
> {1: 1, 2: 1, 3: 1, 4: 1}
> {1: 0, 2: 0, 3: 0, 4: 0}
つまり、次の4つが表示されると予想されます。
> {1: 1, 2: 1, 3: 1, 4: 1}
> {1: 1, 2: 1, 3: 0, 4: 0}
> {1: 0, 2: 0, 3: 1, 4: 1}
> {1: 0, 2: 0, 3: 0, 4: 0}
私の質問は次のとおりです:これがパッケージが計算しようとしているものであり、その背後にある理由が何であるかを誰かが確認できますか?
Ps: このパッケージの作者に連絡しましたが、まだ返事がありません。このパッケージはかなりよく知られており、StackOverflow で以前に質問があったことを知っています。
LVC への回答: 制約は常にすべての変数に制約を適用するとは限りません:
p = Problem()
p.addVariables([1,2,3], [0,1])
p.addConstraint(AllEqualConstraint(), [1,2])
与える
> {1: 1, 2: 1, 3: 1}
> {1: 1, 2: 1, 3: 0}
> {1: 0, 2: 0, 3: 1}
> {1: 0, 2: 0, 3: 0}
予想通り。AllEqualConstraint
が変数を尊重しない場合、非常に制限されます。