Ich verwende JaCoP - eine Constraint-Programmierung Solver für Java - um eine Lösung für ein komplexes Scheduling-Problem zu berechnen. Jetzt stehe ich vor dem Problem, dass die gefundene Lösung nicht korrekt ist.Einschränkung Programmierung Solver JaCoP Lösung gefunden, aber speichern inkonsistent
Ich Auferlegung der folgenden Einschränkung:
store.impose(new XplusYeqZ(start, duration, cipStart));
Nach Beendigung der der Solver eine Lösung gefunden suchen, aber leider ist die Lösung ist eindeutig falsch, über die Einschränkung verletzen.
Ich bin Überprüfung der Konsistenz des Speichers mit consistency()
, bevor ich die Suche zu starten und es kehrt true
, aber nach der Suche gibt es false
.
I iteriert auch alle Einschränkungen des Speichers nach der Suche über und gedruckt, wenn Sie diesen Code zufrieden mit:
store.getConstraints().forEach(constraint -> {
System.out.println(constraint.id() + " " + constraint.satisfied());
});
Das Verfahren false
oben auf der Einschränkung zurück.
Meine Frage ist: Gibt es eine logische Erklärung, warum nicht jede Einschränkung für eine korrekte Lösung erfüllt werden muss? Übersehe ich etwas?
Nachtrag: Ich bin mit Jacop 4.4.0
Einige Löser haben Schwierigkeiten mit Integerüberläufen/Unterläufen bei bestimmten Problemen. Sie können dies treffen. – TLW