Computergestützte Marketingplanung Implementation des Analytic Hierarchy Process als Java Applet David Divisek und Robin Meyersiek Karlsruhe, 23.Mai 2001 Inhalt des Vortrages 1. Der Analytic Hierarchy Process (AHP) 1. Die Vorgehensweise 2. Vortragbegleitendes Beispiel 2. Bisherige Implementationen 1. JavaAHP 2. Web-Hipre 3. Expert-Choice 3. Unsere Implementation: AHP for JAVA ahp4java 1. Design und Datenstruktur 2. Vor- und Nachteile 3. Erweiterungsmöglichkeiten 4. Fazit 2 Der AHP unterstützt die Entscheidungsfindung bei komplexen Problemen durch hierarchische Strukturierung von Kriterien und Reduzierung auf paarweise Vergleiche Die Vorgehensweise 1. Auflistung aller in Frage kommenden Alternativen 2. Strukturierung der möglichen Einflussfaktoren in eine Hierarchie von Kriterien 3. Bestimmung von subjektiven Bewertungen der relativen Wichtigkeit aller Kriterien bzw. Alternativen durch paarweise Vergleiche auf einer Skala von 1 (gleich wichtig) bis 9 (Absolut wichtiger) 4. Errechnung von Gewichten aus den Paarweisen Vergleichen und Überprüfung auf Konsistenz 5. Bestimmung der besten Alternative anhand der so errechneten Gewichte 6. Analyse des Ergebnisses 3 Beispiel: Die Entscheidung über den Kauf eines von drei Computern anhand von drei Kriterien Ziel Kriterien Goal HW SW VS Gewicht HW 1 1/8 1/3 0,0820 SW 8 1 3 0,6816 VS 3 1/3 1 0,2364 HW Dell HP IB M Gewicht SW Dell HP IB M Gewicht VS Dell HP IB M Gewicht Dell 1 3 9 0,6583 Dell 1 ½ 1/8 0,0874 Dell 1 1 6 0,4967 HP 1/3 1 6 0,2819 HP 2 1 1/5 0,1622 HP 1 1 3 0,3967 IBM 1/9 1/6 1 0,0598 IBM 8 5 1 0,7504 IBM 1/6 1/3 1 0,1066 Alternativen Dell 0,6583*0,082 + 0,0874*0,6816 + 0,4967*0,2364 = 23,0% 5,4% 5,9% 11,7% 2. HP 2,3% + 11,0% + 9,4% = 22,7% 3. IBM 0,5% + 51,1% + 2,5% = 54,1% 1. Quelle: In Anlehnung an GAUL (1999) S. AH9 4 Zwei Applets und ein Professionelles Software Packet wurden im Vorfeld untersucht Entwickelt von Xuan Zhu, Jon Willis und Luis Laredo für CSIRO (Commonwealth Scientific and Industrial Research Organisation), Australia Designed von Raimo P. Hämäläinen und Programmiert von Jyri Mustajoki für das Systems Analysis Laboratory, Helsinki University of Technology, 1998 Web-HIPRE unterstützt neben AHP auch noch weitere Gewichtungsmethoden Web-HIPRE ist eine Internet Version der HIPRE 3+ software zur analytischen Strukturierung von Entscheidungsproblemen, multikriterielle Bewertung and Priorisierung Kommerzielle Decision Support Software von Expert Choice EC wurde 1983 von Professor Ernest H. Foreman und Dr. Saaty (Entwickelte den AHP-Algorithmus in den 70er Jahren) Professional Version: $1,195 (Einzelplatzversion) Enterprise Version: $198,995 (20 Builders, 150 Participants) 5 Das Anlegen der Kriterienhierarchie und der Alternativenliste ist bei den beiden Applets recht ähnlich Auf einer Art Zeichenbrett werden die Knoten und Kanten der Kriterienhierarchie und Alternativen einzeln in Ebenenen angeordnet Kleine Symbole geben die Bewertungsmethode an Auch die Alternativen werden eingezeichnet 6 Expert Choice unterteilt die Oberfläche in eine Kriterienhierarchie und eine Alternativenliste Alternativen: Für das aktuell gewählte Kriterium wird graphisch und numerisch die Gewichtung angegeben Kriterien: Sind die Vergleichsdaten noch nicht eingegeben, haben die Knoten des Baumes einen roten Punkt. Nach der Dateneingabe gibt der Füllgrad die Gewichtung, die auch in Klammern steht, des Kriteriums an. 7 JavaAHP hat drei Möglichkeiten zur Eingabe der Paarweisen Vergleiche* 1. Verbal Assessment Zwei Alternativen bzw. Kriterien werden bezüglich eines Oberkriteriums mit den Schlüsselwörtern importance, preference und likelihood grob abgegrenzt und danach noch verfeinert. 2. Direkteingabe 3. Questionaire mit Skala Verbale Anzeige Konsistenz und Gewichte werden gleichzeitig angezeigt * Die Eingabe der Gewichtungen mit der SMARTER-Technik ist ebenfalls möglich. Siehe Folie ...andere Methoden (II) 8 Die Eingabe nach AHP bei Web-Hipre bietet ähnliche Möglichkeiten 1. Direkteingabe (mit einer Nachkommastelle) 2. Schieberegler 3. Verbal Konsistenzindex und Gewichte werden gleichzeitig angezeigt Transformiert die Gewichte 9 Expert Choice verfügt über vier Verfahren zur Eingabe der Paarweisen Vergleiche 1. Schieberegler mit numerischer Skala Gewichte werden graphisch, Konsistenzindex wird numerisch 2. Schieberegler mit verbaler Skala 3. Graphisch mit Balken und Kuchendiagramm (ziehen am Balken ergibt Vergleichswert) 4. Direkteingabe in die Matrix 10 Bei Web-Hipre kann der Beitrag einzelner Kriterien graphisch aufgegliedert werden Segments Wahl der Hierarchieebene, die festlegt, wie die Säulen der zusammengesetzten Gewichte in Segmente unterteilt werden. Zeigt den relativen Beitrag der Elemente dieser Ebene zu dem Gesamtgewicht, repräsentiert durch die ganze Säule Goal Auswahl des übergeordneten Kriteriums, für das die zusammengesetzten Gewichtungen berechnet werden Bars Auswahl der Ebene, deren Elemente durch die Säulen dargestellt werden sollen Zeigt die Werte statt der Säulen an 11 Die Sensitivitätsanalyse veranschaulicht kritische Gewichtungen Altes Gewicht Sensitivity Analysis Hier lässt sich die Auswirkung einer Gewichtsänderung eines Kriteriums auf die Bewertung der Alternativen nachvollziehen Kriterium Neues Gewicht Unterkriterium Bewertung der Alternativen mit neuem Gewicht 12 Die Ergebnisanalyse bietet vier weitere Möglichkeiten 1. Performance Sensitivity 3. Gradient Sensitivity 2. 2D-Plot 4. Head to Head Sensitivity 13 Neben vielen Ähnlichkeiten gibt es auch Unterschiede Typ Preis Gruppenentscheidungen Schwächen Applet Applet Windows Kostenlos Kostenlos >$1000 - Anlegen der Hierarchie Editieren der Knoten Die vielen Fenster sind verwirrend Besonderheiten Report Viele Gewichtungsmethoden Viele Analysemöglichkeiten 14 Zur Implementierung wurde ausschließlich auf frei verfügbare Tools zurückgegriffen Die Entwicklungstools • Sun Microsystems Java™ 2 SDK, Standard Edition. v 1.3 (SDK) • Borland Jbuilder 4.0 Foundation • Microsoft Internet Explorer 5.5 • Netscape Navigator 6.0 Das Programm • 8 Klassen mit 15 internen Klassen • Ca. 1200 Zeilen Code davon „nur“ 50 Zeilen für die wichtigen AHP-Methoden: – berechneConsistency() – berechneGewichtsvektor() – berechneErgebnis() 15 Bei der Benutzeroberfläche stand Übersichtlichkeit und intuitive Bedienbarkeit im Fordergrund Die GUI Vergleichsmatrix Kriterienhierarchie Vergleichseingabe Alternativen und aktuelle Bewertung 16 Die Vergleichsmatrix dient der schnellen und einfachen Eingabe der Paarweisen Vergleiche Die Vergleichsmatrix Aktueller Konsistenzindex Übergeordnetes Kriterium Schieberegler und Knöpfe zur Bewertung Aktueller Gewichtsvektor Verbale Gewichtung 17 Für die interne Datenstruktur wurde auf Standarddatenstrukturen zurückgegriffen DIE DATENSTRUKTUR Die Kriterien Hierarchie Die Alternativen • Dynamischer Baum • Das Baummodel basiert auf dem DefaultTreeModel • Die einzelnen Knoten sind vom Typ DefaultMutableTreeNode und haben als UserObject Instanzen der Klasse Kriterium • Dynamische Tabelle • Array, das zur Laufzeit vergrößert und verkleinert werden kann • Enthält auch die Bewertung der Alternativen durch den AHP 18 Die Klasse Kriterium enthält die Vergleichsdaten und Methoden zur Berechnung VARIABLEN METHODEN • vergleichsMatrix • berechne_Gewichtsvektor Zweidimensionales quadratisches Array das zur Laufzeit vergrößert und verkleinert werden kann • gewichtsVektor Eindimensionales Array das den Gewichtsvektor der Vergleichsmatrix enthält Errechnet den Gewichtsvektor der vergleichsMatrix • berechne_CI Berrechnet den Consistency Index und das Consistency Ratio der Vergleichsmatrix • berechne_Ergebnis Traversiert den Baum um die Alternativengewichte zu errechnen 19 Die Methoden berechne_Gewichtsvektor und berechne_Consistency sind simple for-Schleifen public void berechne_Gewichtsvektor() { for (int i = 0; i < matrixSize; i++) for (int j = 0; j < matrixSize; j++) spaltenSumme[j] = spaltenSumme[j] + vglMatrix[i][j]; //berechne Spaltensumme for (int i = 0; i < matrixSize; i++) for (int j = 0; j < matrixSize; j++) gewichtsVektor[i] = gewichtsVektor[i] + (vglMatrix[i][j] / (spaltenSumme[j] * matrixSize)); } public void berechne_Consistency() { for (int i = 0; i < matrixSize; i++) for (int j = 0; j < matrixSize; j++) hilfsVektor[i] = hilfsVektor[i] + (gewichtsVektor[j] * vglMatrix[i][j]); for (int i = 0; i < matrixSize; i++) mittelWert = mittelWert + (hilfsVektor[i] / (gewichtsVektor[i] * matrixSize)); consistencyIndex = (mittelWert - matrixSize) / (matrixSize - 1); consistencyRatio = consistencyIndex / randomConsistency[matrixSize]; } 20 Die Methode berechne_Ergebnis traversiert den Kriterienbaum von jedem Blatt zur Wurzel public void berechne_Ergebnis() { DefaultMutableTreeNode meinKnoten = treePanel.rootNode; int anzahlBlaetter = meinKnoten.getLeafCount(); for (int i = 0; i < altAnzahl; i++) { //für alle Alternativen huepfKnoten = meinKnoten.getFirstLeaf(); //beginne mit einem Blatt for (int j = 0; j < anzahlBlaetter; j++) { //für alle Blätter pufferKnoten = huepfKnoten; produkt = 1.0; produkt = produkt * ((Kriterium)huepfKnoten.getUserObject()).gewichtsVektor[i]; while (huepfKnoten.getParent() != null) { vaterKnoten = (DefaultMutableTreeNode)huepfKnoten.getParent(); int childIndex = treePanel.treeModel.getIndexOfChild(vaterKnoten, huepfKnoten); produkt = produkt * ((Kriterium)vaterKnoten.getUserObject()).gewichtsVektor[childIndex]; huepfKnoten = vaterKnoten; } alternativenWert[i] = alternativenWert[i] + produkt; if (pufferKnoten.getNextLeaf() != null) huepfKnoten = pufferKnoten.getNextLeaf(); } } } 21 Die Hauptprogrammierarbeit lag beim Design der GUI und der Implementierung der Listener Wert übergeben Die Imple- Zelle wird markiert Editierbar ? mentation diverser Listener führt eine Datenänderung, hier zum Beispiel eine Änderung eines Paarweisen Vergleiches zu einer sofortigen Aktualisierung aller Gewichtsvektoren, Konsistenzindizes und der Alternativengewichte. jSliderScale jTableMatrix Wert übergeben Slider wird verändert Wert übergeben berechne_ Gewichtsvektor jLabelConsistency Wert übergeben berechne_ Consistency jTableAlternative Wert übergeben berechne_ Ergebnis 22 Bei der Implementierung aufgetretene Probleme: MS Windows 2000 Professional und seine Probleme mit Java! Wie greift man auf die Vergleichsmatrix einzelner Kriterien in einem Baum zu? Wie traversiert man einen Baum von den Blättern zur Wurzel? Bei der Erstellung der Vergleichsmatrizen muss sowohl auf den DynamicTree als auch auf die Alternativen Tabelle zurückgegriffen werden. Wie informiert man die einzelnen Klassen von den aktuellen Zuständen (Selektionen) in den anderen Klassen? Wie bekommt man einen graphischen Balken in eine Tabellenzelle? Wie vergrößert bzw. verkleinert man Arrays zur Laufzeit? Wie bringt man einem Slider bei, eine Nichtlineare Skala zu verwenden? 23 Vor- und Nachteile von AHP for Java VORTEILE NACHTEILE • Übersichtlichkeit: Alles auf einen Blick • Schnelles Feedback: Echtzeitberechnung • Plattformunabhängig durch JAVA • Web-basiert • Keine Größenbeschränkung: Kriterienhierarchiegröße und Alternativenanzahl nur Speicherabhängig (Einzige Einschränkung: Random Consistency bei großen Matrizen) • Kostenlos • Keine Sensitivitätsanalyse • Keine Gruppenentscheidungen • Abspeichern nicht möglich 24 Ansatzpunkte zur Erweiterung von AHP for Java Sensitivtätsanalyse Gruppenentscheidungen GUI Wie ändert sich die Vorteilhaftigkeit einer Alternative bei Änderung eines Paarweisen Vergleiches Über das Internet können mehrere Experten an der Entscheidung teilnehmen und Ihre Vergleichsbewertung eingeben: • Für jedes Kriterium ein Experte • Mittelwertbildung von mehreren Einzelbewertungen • Laden und Speichern von Entscheidungen • Weitere Eingabemöglichkeiten • Weitere Ausgabemöglichkeiten Vorteilhaftigkeit Hardware Software Service 25 AHP for Java erlaubt es das AHP-Verfahren schnell und anschaulich zu demonstrieren WIE WURDE DAS ZIEL ERREICHT? • Produktidee – Einfaches und übersichtliches AHP-Applet für Online Skripte • Marktbeobachtung – Welche Programme gibt es bereits am Markt? – Gibt es eine Marktnische? • Produktgestaltung – Verwende so weit es geht vorhandene Komponenten – Keep it simple – Make it work – Make it look nice • Verkaufsgespräch 26