2016-11-01 10 views
1

にすべてのサブセットを超える定量化するためにはどうすればMiniZinc

constraint forall (S subset C, k in M) (
    % Some constraint over the set S, and integer k 
); 

私もしたいのですが...これの線に沿って、MiniZincにおける整数の集合のすべてのサブセットのための制約を作成したいです制約内でカーディナリティがSで、Cが単なる整数の集合になります。私が使用できるサブセットの構文はありますか? (上記のモデルは動作しません)。

答えて

1

現在、アレイ/セットセットのジェネレータはありません。したがって、データファイルに手動でパワーセットをリストする以外に、与えられたセットのすべてのサブセットを繰り返し実行する方法はありません。

ほとんどの場合、モデルはこれらのジェネレータが必要ないように再定式化することができます。代わりに、設定した変数を使用して、例えば、考えてみましょう:

var set of C: S; 
% or if you want to declare S in a different way: 
% var set of 0..100: S; % Different declaration 
% constraint S subset C; 
forall (k in M) { 
    % some cool constraints 
} 

これは述べ制約を含むモデルにするためにあなたを可能にする「すべての制約が保持するような集合Sは、ありますが。」

+0

しかし、Sよりも普遍的な定量化はどうですか?それはforall(SサブセットC)であり、存在しません。何とか物事を二重否定することはできますか? – haz

+0

@haz私の知る限り、あなたが描く状況に合った直接的な解決策はありません。私が前に言ったように、モデルは再調整が必要です。あなたがどんな詳細を提供することができれば、多分私はあなたをさらに助けることができます。 – Dekker

+1

ナー、十分に。私はそれを動作させるために再モデリングすることができますが、私はMiniZincでの直接エンコーディングを実演するために、テキストブックに記載されているMIPモデルに忠実にしようとしていました。これには異なるvars/constraintのセットが必要ですが、大きな問題ではありません。ありがとう。 – haz

関連する問題