2016-03-26 13 views
2

minizincを学ぶようにしてみましょう。例を進んだ後に、複数の出力を取得したい場合や、より自然な方法でminizincを取得する場合は、手続き言語を記述する必要がありますそれ。例えば複数出力のminizinc

、私はすべての異なる桁が3の答えを追加したいと仮定すると、ここで0 + 3 1 + 2 2 + 1 3 + 0 ...

マイmininzincする必要があります:

% how to generate more than one result meeting the constraints 

int: n=3; 

var 0..9: a; 
var 0..9: b; 

include "alldifferent.mzn"; 
constraint all_different([a, b]); 
constraint a + b = n; 

solve satisfy; 

output [ 
"a + b = n \t\n", 
show(a), " + ", 
show(b), " = ", 
show(n)]; 

は3 + 0のみを生成します。他の答えに到達するにはどうすればいいですか?事前に助言をいただきありがとうございます。

私はminizinc 1.6のポストを見て、出力文がすべて出力(Easy way to print full solution (all decision variables) in minizinc)を生成すると言っていました。それは動作しません。出力されるのは1つだけです。

答えて

2

まず、デフォルトでは、すべてのソリューションではなく、すべての変数とその値をソリューションとして出力します。

すべての解決策を得るには、オプション-aを使用してください。 mzn-gecode --helpすべてのオプションを表示するあなたのケースではmzn-gecode -a test.mznは次のようになります。

a + b = n 
3 + 0 = 3 
---------- 
a + b = n 
0 + 3 = 3 
---------- 
a + b = n 
2 + 1 = 3 
---------- 
a + b = n 
1 + 2 = 3 
---------- 
========== 
-1

構成の下では、最初の解決策を満足した後に、デフォルトの印刷を変更するオプションがあります。それをユーザー定義の動作に変更してください:すべてのソリューションを出力してください...出力文btwも持つことができます。

+0

デフォルトはすべての解決策が表示されるはずです。実際の答えがあり、ドキュメンテーションの検索方法がわからない「ドキュメンテーション」はありません。 – Kobbe

+0

わかりません。デフォルトは1です。しかし、通常とは異なり、設定はタブ内にあります。バッチ1については、誰かが私に言った。 –

関連する問題