FOSD-Treffen 2012 Struktur- und Constraintbasierte Konfiguration Uwe Lesta 22. März 2012
Übersicht Produktkonfiguration Konfigurationsarten Produkt- und Konfigurationswissen Aufbau des Produktkonfigurators Strukturbasiertes Konfigurieren Strukturbasiertes Konfigurieren mit Attributen Constraintbasierte Erweiterungen Fragen 2
Produktkonfiguration Bei einer Konfigurationsaufgabe muss aus einer Menge parameterbehafteter Objekte eine Auswahl und Aggregation von Objekten derart durchgeführt werden, dass vorgegebene Bedingungen (Constraints) erfüllt sind. Interaktive Spezifikation durch den Anwender oder als Batch Anwender: Endkunden, Vertrieb, Konstrukteure, Wissensingenieure Entlastung der Fachexperten Produktkonfiguration ist eine Optimierungsaufgabe Der Benutzer möchte für seine Constraints (Eingaben) das Optimale Produkt. 3
Produktkonfiguration 4
Konfigurationsarten Regerbasiertes Konfigurieren +farbe(gelb), material(leder) ==> leder_farbe(hellbraun) +Direkte Abbildung des Expertenwissens - Produkt und Konfigurationswissen ist vermischt - Kein explizites Produktmodell - Keine einheitliche Semantik Strukturbasiertes Konfigurieren + intuitiv +gut strukturierbar +gut kombinierbar - Sinnvoll nur mit anderen Konfigurationsarten (Restriktionen) - Bei grafischer Darstellung für sehr große Strukturen ungeeignet 5
Konfigurationsarten Constraintbasiertes Konfigurieren + deklarativ, gut erforscht - Rechenzeitintensiv für die Trennung von Produkt- und Konfigurationswissen Ressourcenorientiertes Konfigurieren +hoher Informationsgehalt des Modells +Gut kombinierbar - Hoher Modellierungsaufwand - Keine Unterstützung für (hierarchische) Strukturen - Schlussfolgerungsalgorithmen sind unzureichend erforscht Fallbasiertes Konfigurieren + erfolgreicher Einsatz in Callcentern (Support) - Schwer ein Ähnlichkeitsmaß zu definieren - Meist keine neuen Lösungen 6
Produkt- und Konfigurationswissen Spezifikationswissen (Anforderungen) Sichtweise einer Anwendergruppe auf das Produktmodell Ermöglicht Landes- und Sprachanpassungen Nicht unbedingt notwendig Produktwissen (Konfigurationsmodell) Anforderungen Ausdrucksstark Einfach erlernbar Entscheidbar Effizient auswertbar Ggf. mehrere formale Sprachen verwendbar Grammatiken Beschreibungslogiken Dynamische Logik, Modallogik, Prädikatenlogik Constraintlogik Konfigurationswissen Prozessablauf (Anwender) Schlussfolgerungsalgorithmus 7
Produkt- und Konfigurationswissen Wissen für die Produktkonfiguration Verfügbar Vollständig Widerspruchsfrei Redundanz frei Repräsentation der Wissensbestandteile Aufbau einer Teilehierarchie Offene Abhängigkeiten 8
Aufbau des Produktkonfigurators Explizites Produktmodell (Konservierung des Wissens) Kombination strukturbasiert und constraintbasiert Leistungsfähige Solver existieren. Geringerer Modellierungsaufwand (als Ressourcenbasiert) Deklarativ Produktwissen beschreibt alle möglichen Ausprägungen des Produktes Benutzer schränkt die Menge der Lösungen ein 9
Aufbau des Produktkonfigurators 10
Strukturbasiertes Konfigurieren komp(kfz). komp(klimaanlage). komp(motor). komp(diesel). komp(benzin). komp(normal). komp(turbo). komp(v8). komp(oel_kueler). Und-Oder-Baum has_part(kfz, opt(klimaanlage)). has_part(kfz, motor). has_part(v8, opt(oel_kueler)). is_a(diesel, motor). is_a(benzin, motor). is_a(normal, benzin). is_a(turbo, benzin). is_a(v8, benzin). 11
Strukturbasiertes Konfigurieren Existenz Bedingungen der Komponenten Bei allen, mit has_part verbundenen, Komponenten Ist der Wert der Existenzvariablen gleich. Bei optionalen has_part Beziehungen gilt dieses nur nach oben. Bei Spezialisierungen (is_a) Kann nur bei einem Kind die existenzvariable den Wert 1 annehmen. 12
Strukturbasiertes Konfigurieren mit Attributen Existenz Bedingungen der Komponenten und Attributwerte Wird einem Attribut ein Wert zugewiesen so wird die Existenzvariable der Komponente auf true gesetzt. Abstrakte Attribute bilden die vereinigungsmenge ihrer Spezialisierungen und sind mit den Existenzvariablen ihrer Komponenten verknüpft. Demo 13
Constraintbasierte Erweiterungen Existenz Bedingungen der Komponenten und Attributwerte constraint(root_exist, exist(kfz)). constraint(klimaanlage_benoetigt_mehr_als_65_kw, exist(klimaanlage) #==> motor:leistung #> 65). constraint(preis_summe_kfz, sum(parts(kfz:preis), #=, kfz:preis)). strategy(find_cheapest_solution, 'sucht die preiswerteste loesung', ''). find_cheapest_solution(plm):- set_user_constraint(plm, labeling([min(kfz:preis)], [parts(kfz:preis)])). 14
Constraintbasierte Erweiterungen Konsistenz und Erfüllbarkeit (z.b. Kantenkonsistenz) Diese Instanz ist kantenkonsistent und enthält keine leere Domain. Trotzdem existiert keine Lösung. Lokale Konsistenz kann durch Propagation erzwungen werden. Erst durch Verbinden mit einem Suchalgorithmus (Backtracking,...) können konsistente Lösungen erzeugt werden. Propagation (Kantenkonsistenz) ~ O(c²d³) Vollständige Lösungssuche (Labeln) ~ O(dⁿ) n - Constraintvariablen d - Domainwerte c - Constraints 15
Zusammenfassung Sehr flexibel Modellierung kann schwierig sein. Fragen: Wann muss gelabelt werden um nur gültige Attributwerte zu erhalten? (Klassifikation des Konfigurationsmodells) Wann kann term-rewriting sinnvoll sein? A = 1 B = 1 B = 1 A = 2 A \= 1 A \= 2 B \= 1 Wie werden Wiedersprüche gefunden und erklärt? A #< B B #< A 16
Vielen Dank für Ihre Aufmerksamkeit! Uwe Lesta