Verteiltes Lösen von Soft-Constraints

Zusammenfassung:

Constraint-Programmierung ist ein deklaratives Programmier-paradigma, in dem man Bedingungen (Constraints) an ein gesuchtes Objekt stellt, und ein Constraint-Solver den möglichen Lösungsraum effizient durchsucht.

In der klassischen Constraint-Programmierung kann der Programmierer nur harte Bedingungen formulieren, also Bedingungen, die unbedingt erfüllt sein müssen, damit eine Lösung akzeptiert wird. Die Soft-Constraint-Programmierung verallgemeinert diesen Ansatz und ermöglicht die Definition von Soft-Constraints: ein Soft-Constraint ist ein Maß für die Qualität einer Lösung. Je besser die Lösung ist, desto höher ist der Wert des Soft-Constraints. Durch Soft-Constraints werden also Vergleichsrelationen definiert, mit denen man unterschiedliche Lösungen miteinander vergleichen kann. Ein einzelner Soft-Constraint gibt also eine “Dimension” an, nach der Lösungen optimiert werden können, z.B. könnte man beim Kauf eines Computers die Rechenleistung des Prozessors als Soft-Constraint hernehmen. In vielen Fällen ist es nötig, eine Lösung von Soft-Constraint Problemen zu finden, die einen Kompromiss aus mehreren Dimensionen berechnet. So wollen wir beim Computerkauf möglicherweise eine möglichst gute Rechenleistung bei geringen Kosten und niedrigem Energieverbrauch. Am PST-Lehrstuhl wurde MSC (Monoidal Soft Constraints), ein Ansatz zur Soft-Constraint Programmierung, entwickelt, der besonders zur Spezifikation und Lösung von solchen mehrdimensionalen Optimierungsproblemen geeignet ist.

Da der Suchbaum sehr groß werden kann, wäre verteiles Lösen von (Soft-)Constraintsystemen sehr wünschenswert. In dieser Arbeit soll ein bereits in Java implementierter Soft-Constraint-Solver verteilt werden.

Download:
N/A