PPT-Präsentation

Werbung
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
Herunterladen