2016-03-26 11 views
2

Versuchen Sie, Minizinc zu lernen, aber nach dem Durchlaufen von Beispielen, kann ich nur bestätigen, dass ich tatsächlich einige prozedurale Sprache schreiben muss, wenn ich multiple Ausgabe erhalten möchte oder es gibt eine "natürlich zu minizinc" Weg zu bekommen es.Mehrere Ausgaben unter Minizinc

Zum Beispiel nehme ich an alle verschiedene Ziffern addieren bis zu 3 Antworten sein sollte haben wollen 0 + 3 1 + 2 2 + 1 3 + 0 ...

Mein mininzinc hier:

% 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)]; 

produzieren nur 3 + 0. Wie komme ich zu den anderen Antworten? Danke für jede Beratung im Voraus.

Ich schaute auf einen Beitrag für Minizinc 1.6 und es schien zu sagen, die Ausgabe-Anweisung würde die gesamte Ausgabe (Easy way to print full solution (all decision variables) in minizinc) produzieren. Es funktioniert nicht. Nur einer wird ausgegeben.

Antwort

2

Zunächst ist der Standard, alle Variablen und ihre Werte für eine Lösung, nicht alle Lösungen zu drucken.

Verwenden Sie die Option -a, um alle Lösungen zu erhalten. mzn-gecode --help um alle Optionen zu sehen. In Ihrem Fall mzn-gecode -a test.mzn das gibt: etwa

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

Unter Konfiguration gibt es eine Option, um den Standard vom Drucken der ersten Lösung nach der Zufriedenheit zu ändern. Ändern Sie es in benutzerdefiniertes Verhalten: Drucken Sie alle Lösungen ... Sie können auch Ausgabeanweisung, BTW, haben.

+0

Down-Abstimmung, da keine Antwort auf die Verwirrung, dass der Standard alle Lösungen gedruckt werden soll. Es sollte eine tatsächliche Antwort geben und nicht "siehe Dokumentation", wo Sie nicht einmal sagen, wie Sie die Dokumentation finden. – Kobbe

+0

Nicht verstehen. Der Standardwert ist 1 Lösung. Aber anders als üblich ist die Konfiguration in einem Tab. Für die Partie eins hat mir jemand gesagt. –