Upload
bernd-mayer
View
104
Download
0
Embed Size (px)
Citation preview
Computergestützte Marketingplanung
Implementation des Analytic Hierarchy Process
als Java Applet
David Divisek und Robin Meyersiek Karlsruhe, 23.Mai 2001
2
Inhalt des Vortrages
1. Der Analytic Hierarchy Process (AHP)1. Die Vorgehensweise
2. Vortragbegleitendes Beispiel
2. Bisherige Implementationen1. JavaAHP
2. Web-Hipre
3. Expert-Choice
3. Unsere Implementation: AHP for JAVA1. Design und Datenstruktur
2. Vor- und Nachteile
3. Erweiterungsmöglichkeiten
4. Fazit
ahp4java
3
Der AHP unterstützt die Entscheidungsfindung bei komplexen Problemen durch hierarchische Strukturierung von Kriterien und Reduzierung auf paarweise Vergleiche
1. Auflistung aller in Frage kommenden Alternativen2. Strukturierung der möglichen Einflussfaktoren in eine Hierarchie von
Kriterien3. 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
Die Vorgehensweise
4
Beispiel: Die Entscheidung über den Kauf eines von drei Computern anhand von drei 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 IBM Gewicht
Dell 1 3 9 0,6583
HP 1/3 1 6 0,2819
IBM 1/9 1/6 1 0,0598
Dell0,6583*0,082 +
0,0874*0,6816 + 0,4967*0,2364 =
23,0%
SW Dell HP IBM Gewicht
Dell 1 ½ 1/8 0,0874
HP 2 1 1/5 0,1622
IBM 8 5 1 0,7504
VS Dell HP IBM Gewicht
Dell 1 1 6 0,4967
HP 1 1 3 0,3967
IBM 1/6 1/3 1 0,1066
HP2,3%
+ 11,0%+ 9,4%= 22,7%
IBM0,5%
+ 51,1%+ 2,5%
= 54,1%
Kriterien
Alternativen
Ziel
5,4% 5,9% 11,7%
1.2. 3.
Quelle: In Anlehnung an GAUL (1999) S. AH9
5
Zwei Applets und ein Professionelles Software Packet wurden im Vorfeld untersucht
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)
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
Entwickelt von Xuan Zhu, Jon Willis und Luis Laredo für CSIRO (Commonwealth Scientific and Industrial Research Organisation), Australia
6
Das Anlegen der Kriterienhierarchie und der Alternativenlisteist bei den beiden Applets recht ähnlich
Auf einer Art Zeichenbrett werden die Knoten und Kanten der Kriterienhierarchie und Alternativen einzeln in Ebenenen angeordnet
Auch die Alternativen werden eingezeichnet
Kleine Symbole geben die Bewertungsmethode an
7
Expert Choice unterteilt die Oberfläche in eine Kriterienhierarchie und eine Alternativenliste
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.
Alternativen:Für das aktuell gewählte Kriterium wird graphisch und numerisch die Gewichtung angegeben
8
JavaAHP hat drei Möglichkeiten zurEingabe der Paarweisen Vergleiche*
* Die Eingabe der Gewichtungen mit der SMARTER-Technik ist ebenfalls möglich. Siehe Folie ...andere Methoden (II)
1. Verbal Assessment
Zwei Alternativen bzw. Kriterien werden bezüglich eines Oberkriteriums mit den Schlüsselwörtern importance, preference und likelihood grobabgegrenztund danachnoch verfei-nert.
2. Direkteingabe
3. Questionairemit Skala
Konsistenzund Gewichte werden gleichzeitig angezeigt
Verbale Anzeige
9
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
10
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
11
Bei Web-Hipre kann der Beitrag einzelner Kriterien graphisch aufgegliedert werden
Goal Auswahl des übergeordneten Kriteriums, für das die zusammen-gesetzten Gewichtungen berechnet werden
Bars Auswahl der
Ebene, deren Elemente durch
die Säulen dargestellt
werden sollen
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
Zeigt die Werte statt
der Säulen an
12
Die Sensitivitätsanalyse veranschaulicht kritische Gewichtungen
Sensitivity Analysis
Hier lässt sich die Auswirkung einer Gewichtsänderung eines Kriteriums auf die Bewertung der Alternativen nachvollziehen
Altes Gewicht
Unterkriterium
Kriterium
Neues Gewicht
Bewertung der Alternativen mit neuem Gewicht
13
Die Ergebnisanalyse bietet vier weitere Möglichkeiten
4. Head to Head Sensitivity3. Gradient Sensitivity
1. Performance Sensitivity 2. 2D-Plot
14
Neben vielen Ähnlichkeiten gibt es auch Unterschiede
Typ Applet Applet Windows
Preis Kostenlos Kostenlos >$1000
Gruppen-entscheidungen
-
Schwächen
Anlegen der Hierarchie
Editieren der Knoten
Die vielen Fenster sind verwirrend
Besonderheiten ReportViele
Gewichtungs-methoden
Viele Analyse-möglichkeiten
15
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()
16
Bei der Benutzeroberfläche stand Übersichtlichkeitund intuitive Bedienbarkeit im Fordergrund
Die GUI
Kriterien-hierarchie
Vergleichs-matrix
Vergleichs-eingabe
Alternativen und aktuelle
Bewertung
17
Die Vergleichsmatrix dient der schnellen und einfachen Eingabe der Paarweisen Vergleiche
ÜbergeordnetesKriterium
Aktueller Konsistenzindex
Verbale Gewichtung
Schiebereglerund Knöpfe
zur Bewertung
AktuellerGewichtsvektor
Die Vergleichsmatrix
18
Für die interne Datenstruktur wurde auf Standarddatenstrukturen zurückgegriffen
DIE DATENSTRUKTUR
Die Kriterien Hierarchie
• Dynamischer Baum• Das Baummodel basiert auf
dem DefaultTreeModel• Die einzelnen Knoten sind
vom Typ DefaultMutableTreeNode und haben als UserObject Instanzen der Klasse Kriterium
Die Alternativen
• Dynamische Tabelle• Array, das zur Laufzeit
vergrößert und verkleinert werden kann
• Enthält auch die Bewertung der Alternativen durch den AHP
19
Die Klasse Kriterium enthält die Vergleichsdaten und Methoden zur Berechnung
VARIABLEN
• vergleichsMatrixZweidimensionales quadratisches Array das zur Laufzeit vergrößert und verkleinert werden kann
• gewichtsVektorEindimensionales Array das den Gewichtsvektor der Vergleichsmatrix enthält
METHODEN
• berechne_GewichtsvektorErrechnet den Gewichtsvektor der vergleichsMatrix
• berechne_CIBerrechnet den Consistency Index und das Consistency Ratio der Vergleichsmatrix
• berechne_ErgebnisTraversiert den Baum um die Alternativengewichte zu errechnen
20
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];
}
21
Die Methode berechne_Ergebnis traversiert denKriterienbaum 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();
} } }
22
Die Hauptprogrammierarbeit lag beim Designder GUI und der Implementierung der Listener
Die Imple-
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.
jTableMatrixEditierbar
?
Wert übergeben
jSliderScale
Wert übergeben
jTableAlternative
Wert übergeben
Wert übergeben
jLabelConsistency Wert übergeben
berechne_ Gewichtsvektor
berechne_ Ergebnis
berechne_ Consistency
Zelle wird
markiert
Slider wird
verändert
23
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?
24
Vor- und Nachteile von AHP for Java
VORTEILE
• Ü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
NACHTEILE
• Keine Sensitivitätsanalyse• Keine
Gruppenentscheidungen• Abspeichern nicht möglich
25
Sensitivtätsanalyse
Wie ändert sich die Vorteilhaftigkeit einer Alternative bei Änderung eines Paarweisen Vergleiches
Ansatzpunkte zur Erweiterung von AHP for Java
Vorteilhaftigkeit
Hardware
Software
Service
Gruppenentscheidungen
Ü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
GUI
• Laden und Speichern von Entscheidungen
• Weitere Eingabemöglich-keiten
• Weitere Ausgabemöglich-keiten
26
AHP for Java erlaubt es das AHP-Verfahrenschnell 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