Der intelligente Hamster - h_da Fachbereich Informatik

Werbung
Der intelligente Hamster
+
Bericht an den Präsidenten
über mein Forschungssemester
im SS 2010 und im WS 2010/2011
(jeweils hälftig)
Prof. Dr. Johannes Arz
Fachbereich Informatik
Hochschule Darmstadt
Johannes Arz, Der intelligente Hamster
1/17
1. Zusammenfassung
Der Hamster-Simulator (Hamster-Java-Modell) ist eine Programmierumgebung (von
Daniel Jasper und Dietrich Boles entwickelt), die eingesetzt wird, um Programmieranfängern das algorithmische Denken und das Erlernen grundlegender Programmierkonzepte zu erleichtern.
In meinem Forschungssemester habe ich das Hamster-Modell benutzt, um
Algorithmen und Verfahren der Künstlichen Intelligenz (KI), die als Adaption kognitiver
Prozesse entstanden sind, die sich im menschlichen Gehirn abspielen und somit nicht
direkt beobachtbar sind, in einer einfachen und anschaulichen Weise zu visualisieren.
2. Modellbildung
In der Informationstechnologie geht es in den meisten Fällen um die Automatisierung
monotoner, klar strukturierter und wohl definierter Informationsverarbeitungsprozesse. Zu automatisierende Verarbeitungsabläufe sind aus nicht-automatisierten
Informationsverarbeitungsprozessen bekannt. Als Beispiele seien Sortieralgorithmen
oder Datenbanken genannt. Sortieren verstehen und lehren wir durch den Umgang mit
unterschiedlich großen Holzklötzchen oder ähnlichen Objekten, die wir vergleichen
können, Datenbanken durch einen (oder mehren) Karteikasten. Wir bilden Modelle,
um Algorithmen und Verfahren zu verinnerlichen. In betriebswirtschaftlichen
Anwendungen werden manchmal bis zu 100.000 Objekte sortiert. Wer mag in einer
Lehrveranstaltung 100.000 Holzklötze sortieren? Ein wichtiger Aspekt von Modellen in
der Lehre ist also die Simplifikation.
In der Künstlichen Intelligenz beschäftigt man sich im Gegensatz zur konventionellen
Informationstechnik mit der Adaption kognitiver Prozesse, die sich im menschlichen
Gehirn abspielen und somit nicht direkt beobachtbar sind. Selbst die Medizin ist bis
heute nicht in der Lage, die Struktur des menschlichen Gehirns noch menschliche
Denkprozesse ausreichend zu erklären. Auch hier ist die Modellbildung von großer
Bedeutung. Allerdings ist hier das Modell nicht die Vereinfachung beobachtbarer
Prozesse, sondern bewegt sich in einer Phantasiewelt.
Offensichtlich müssen wir unterscheiden zwischen Modellen, die aus der realen Welt
beobachtbar sind und solchen, die sich nur in unserer Vorstellung bewegen. In der KI
behilft man sich in der Regel mit Modellen der zweiten Art. Mitunter werden auch in
der Nicht-KI-Wissenschaft solche Modelle entwickelt 1 2 .
Mein Doktorvater Günther Hotz, einer der Begründer der Informatik in Deutschland, wurde einmal gefragt,
was die bedeutendste Erfindung des vergangenen Jahrtausends sei. Er plädierte für die reellen Zahlen. Niemand
habe je eine gesehen, aber wir bräuchten sie, um unsere Welt zu verstehen.
2
In meiner Jugendzeit habe ich mich ich mich intensiv mit Psychologie beschäftigt und die Werke von Sigmund
Freud und Alfred Adler verschlungen. Die Psychoanalyse liefert ja auch wie die KI ein Modell des menschlichen
Gehirns. In einer privaten Diskussion mit einem Psychologen antwortete dieser auf meine Frage nach der
Korrektheit des psychoanalytischen Modells, dass es nicht um richtig oder falsch ginge, sondern nur darum, ob
1
Johannes Arz, Der intelligente Hamster
2/17
Wir bilden in der KI nicht beobachtbare Modelle des menschlichen Gehirns und der
erkenntnistheoretischen Prozesse und können sie dann in Algorithmen und Verfahren
implementieren.
In der KI-Ausbildung bildet sich in diesem Zusammenhang eine besondere
Schwierigkeit aus. Wie kann man menschliche Denkprozesse visualisieren, um sie
Studierenden zu erläutern und verständlich zu machen?
3. Das Hamster-Modell
Programmieranfänger haben häufig Schwierigkeiten damit, dass sie beim
Programmieren ihre normale Gedankenwelt verlassen und in eher technischorientierten Kategorien denken müssen, die ihnen von den Programmiersprachen
vorgegeben werden. Gerade am Anfang strömen oft so viele inhaltliche und
methodische Neuigkeiten auf sie ein, dass sie das Wesentliche der Programmierung,
nämlich das Lösen von Problemen, aus den Augen verlieren. [Zitat aus (3)]
Das Hamster-Modell ist mit dem Ziel entwickelt worden, dieses Problem zu lösen. Mit
dem Hamster-Modell wird Programmieranfängern ein einfaches, aber mächtiges
Modell zur Verfügung gestellt, mit dessen Hilfe Grundkonzepte der imperativen und
objektorientierten Programmierung auf spielerische Art und Weise erlernt werden
können. Programmierer entwickeln Programme, mit denen sie virtuelle Hamster
durch eine virtuelle Landschaft steuern und bestimmte Aufgaben lösen lassen. Die
Anzahl der gleichzeitig zu berücksichtigenden Konzepte wird im Hamster-Modell stark
eingeschränkt und nach und nach erweitert. [Zitat aus (3)]
Abbildung 1: Ein Hamster-Territorium
die Modelle seelische Defekte erklären könnten.
Überhaupt gibt es eine merkwürdige Affinität zwischen Psychologie und KI. Während die Psychologen in der KI
nach Modellen des menschlichen Gehirns suchen, lehnen die Hardliner in der KI die Psychologie als
Pseudowissenschaft ab. Der Mensch sei eine Maschine. „There is no soul.“ (Marvin Minsky)
Johannes Arz, Der intelligente Hamster
3/17
Der Hamster bewegt sich in einer Matrix, deren Elemente Mauern, Körner und er
selbst sind. Er kann Körner in seinem Maul sammeln und wieder ausspucken. Er
versteht lediglich die Befehle:
•
•
•
•
•
•
•
vor()
linksUm()
nimm()
gib()
und als Boole’sche Funktionen
vorneFrei()
maulLeer()
kornDa()
Die Hamster-Sprache umfasst die üblichen Programmieranweisungen wie bedingte
Anweisungen, Schleifen und Funktionen sowie die elementarsten Datentypen 3 in der
Syntax der zugrundeliegenden Programmiersprache Java.
Der Hamster-Simulator wird von mehreren KollegInnen in der Programmierausbildung in den ersten Wochen der Veranstaltung „Programmieren / Algorithmen und
Datenstrukturen“ eingesetzt, um Programmierlaien einen Einstieg in das algorithmische Denken zu erleichtern mit dem Ziel der Nivellierung der extrem heterogenen
Anfangskenntnisse der Studierenden im FB Informatik.
Andererseits kommt das Programmsystem auch in den Exportveranstaltungen des FB
Informatik zum Einsatz, z.B. aktuell in der Veranstaltung „Informatik“ für den FB CuB.
Seit einiger Zeit hat der Hamster-Simulator auch eine Prolog-Schnittstelle. Die KIProgrammiersprache Prolog wird seit vielen Jahren von mir in der KI-Ausbildung am
FB Informatik eingesetzt. So ist die Idee aufgekommen, meine alten PrologProgramme, insbesondere die zu Suchverfahren, mit dem Hamster zu verbinden.
4. Grundlagen der Künstlichen Intelligenz
Ein Grundaxiom der KI ist die Annahme, alle Probleme lösen zu können, in dem man
eine Beschreibung des Problems formalisiert und dann durch spezielle Suchverfahren
löst 4 . Ein jegliches Problem ist definiert durch vier Punkte:
1. Definition eines Zustandsraums, der alle möglichen Konfigurationen der relevanten
Objekte enthält
3
Ich beziehe mich hier auf den „imperativen“ Hamster. Es gibt außerdem den „objekt-orientierten“ Hamster.
Diese Ansicht wird teilweise heftig kritisiert. Hier hat sich Joseph Weizenbaum in den letzten Jahren besonders
exponiert. Er war ehemals Kollege von Marvin Minsky am MIT und Erfinder des Eliza-Programms, das einen
menschlichen Psychiater simuliert und in natürlicher Sprache eine Kommunikation mit einem Menschen führen
kann.
4
Johannes Arz, Der intelligente Hamster
4/17
2. Festlegung von einem Zustand oder mehreren Zuständen innerhalb des Raums, von
denen aus der Problemlösungsprozess beginnen kann (Anfangszustände).
3. Festlegung von einem Zustand oder mehreren Zuständen, die als Problemlösung
akzeptabel wären (Zielzustände).
4. Angabe einer Menge von Regeln, die die verfügbaren Tätigkeiten (Operatoren)
beschreiben. Die Regeln sollen einen Zustand des Raums in einen anderen
überführen.
Viele einfache Spielprobleme (z.B. „Bauer, Wolf, Ziege und Kohlkopf“, „Die
Wasserkrüge“ (s.u.), „Missionare und Kannibalen“. „Das Acht-Damen-Problem“)
eignen sich gut zur Formalisierung nach obigem Muster. Probleme in der realen Welt
wie die Verhinderung einer Kernschmelze in einem Atomkraftwerk können prinzipiell
genauso gelöst werden. Nur fehle zurzeit die Rechenpower, um solche Probleme
formal in allen Details darzustellen und lösen zu können, sagen die Hardliner in der KI.
Allgemeinheuristiken
Die Beschreibung eines Problems nach obigem Muster führt sofort zu einem
Suchgraphen. Ziel ist ein Weg von einem Anfangszustand zu einem Endzustand zu
finden. Die konventionellen Verfahren, wie sie in der Graphentheorie gelehrt werden,
eignen sich bei komplexen Problemen nicht, da die Anzahl der Knoten extrem groß ist
(z.B. gibt es beim Schachspiel 20100 Zustände. Der Verzweigungsgrad ist durchschnittlich 20, d.h. es sind im Durchschnitt 20 Züge möglich. Ein Spiel kann aus bis zu 50
Zügen (=100 Halbzügen) bestehen.).
Die KI versucht zu verstehen, wie Menschen solche Probleme mit riesigen Datenmengen bewältigen. Immerhin soll es ja Menschen geben, die Schach spielen können.
Einige der Verfahren, die aus der Beobachtung menschlicher Entscheidungsprozesse
entstanden sind, sind die folgenden:
1. Tiefensuche (aus der Graphentheorie bekannt; kein KI-Verfahren; hier nur wegen
der Vollständigkeit erwähnt)
2. Erzeugen und Prüfen (Erzeuge irgendeinen Weg/Zustand, prüfe dann, ob ein
Zielzustand erreicht ist. Wiederhole dies bis Lösung gefunden wurde.
3. Blinde Suche, Bergsteigen (Setzt eine Bewertungsfunktion für Zustände voraus. In
jedem Zustand wähle den erfolgversprechendsten Weg von diesem Zustand
ausgehend, also den Weg mit der höchsten Bewertung)
4. Bestensuche (Ebenfall mit Bewertung. Von allen bekannten Endknoten während der
Suche im Suchbaum wähle den erfolgversprechendsten Zustand, den mit der
höchsten Bewertung als Fortsetzung)
Diese Verfahren werden im Folgenden an einigen Problemen aus der KI-Ausbildung
angewandt und mit Hilfe des Hamster-Simulators visualisiert.
Johannes Arz, Der intelligente Hamster
5/17
Implementierungen in Prolog
/*prolog program*/
/*
% dfs: generische Suche gemäß Tiefensuche
% aus alten Prolog-Programmen für den Hamster überarbeitet
% der Kern stammt aus:
% Sterling, L., Shapiro E. (2002). The Art of Prolog.
% Advanced Programming Techniques. 2nd Edition. Cambridge, MA: The MIT Press
% Johannes Arz
% Forschungssemester SS10/WS10
*/
/*
% Das folgende Programmfragment ist eine generische Loesung fuer
% Suchverfahren gemaess der Tiefensuche (depth first).
% solve_dfs(+State, +History, -Moves)
% Moves ist die Folge der Zuege, um vom aktuellen Zustand State zu
% einem Endzustand zu kommen. History enthaelt die bisher gemachten
% Zuege als Folge der Zustaende.
% Die Praedikate move, update und legal sowie initial und final sind problemspezifisch.
*/
solve_dfs(State, History, [ ] ) :final_state(State).
solve_dfs(State, History, [Move | Moves]) :move(State, Move),
update(State, Move, State1),
legal(State1),
not(member(State1, History)),
solve_dfs(State1, [State1 | History], Moves).
% dfs(+Problem, -Moves)
% Problem ist die Beschreibung des Spiels, Moves die Zuege zur Loesung.
% initial_state ist wie final_state problemspezifisch
dfs(Problem, Moves) :initial_state(Problem, State),
solve_dfs(State, [State], Moves).
Johannes Arz, Der intelligente Hamster
6/17
5. Das Problem der Wasserkrüge
Es gibt zwei Krüge mit Fassungsvermögen 5 und 8 Liter. Beide Krüge haben keine
Messmarkierungen. Es gibt einen Brunnen, aus dem beliebig Wasser entnommen
werden kann. Es sind die Operationen Füllen, Leeren und Umfüllen erlaubt. Wie kann
man einen Krug mit genau 4 Liter füllen? 5
Auch dieses Problem eignet sich
mehr zur Veranschaulichung von
KI-Verfahren und ist kein
wirkliches Problem, dass mit KIMethoden gelöst werden sollte.
Es sind auch für andere drei
Zahlen – falls es überhaupt eine
Lösung gibt - deterministische
Verfahren bekannt (siehe (4)).
Abbildung 2: Startzustand beim Problem der Wasserkrüge
Das Modell in der Hamster-Welt
zeigen Abbildung 2 (Startzustand)
und Abbildung 3 (Zielzustand).
Die Entwicklungsumgebung
besteht aus der Java-Konsole, in
dem die Entwicklungsumgebung
gestartet wird, dem Editor mit
dem Hauptprogramm, in dem im
Wesentlichen lediglich die
nötigen Module geladen werden,
dem Simulationsfenster mit der
Hamster-Welt sowie die PrologKonsole mit der
Programmsteuerung.
Abbildung 3: Zielzustand beim Problem der Wasserkrüge
Eine Lösung dieses Problems wird in dem Film „Stirb langsam 3“ von Bruce Willis und Samuel Jackson
gespielt.
5
Johannes Arz, Der intelligente Hamster
7/17
/*prolog program*/
/*
% jugs: Das Problem der Wasserbehaelter/wasserkrüge,
% aus alten Prolog-Programmen für den Hamster überarbeitet
% der Kern stammt aus:
% Sterling, L., Shapiro E. (2002). The Art of Prolog.
% Advanced Programming Techniques. 2nd Edition. Cambridge, MA: The MIT Press
% Johannes Arz
% Forschungssemester SS10/WS10
Es gibt zwei Wasserkrüge, die 8 bzw. 5 Liter Wasser fassen, aber keine Markierungen
haben.
Das Problem besteht darin, exakt vier Liter aus einem großen Faß, das 1000 (oder
mehr) Liter enthält, abzufüllen.
Die möglichen Tätigkeiten sind
- das Füllen eines Krugs aus dem Faß,
- das Leeren eines Krugs in das Faß und
- das Umfüllen des Inhalts eines Krugs in den anderen Krug, bis der eine Krug leer
bzw. der andere voll ist.
Es sollen je nach Wunsch des Kunden wahlweise von 1 bis 8 Liter abgemessen werden;
in diesem Beispiel vier Liter.
*/
initial_state(jugs,jugs(0,0)).
final_state(jugs(4,V2)).
final_state(jugs(V1,4)).
move(jugs(V1,V2), fill(1)).
move(jugs(V1,V2), fill(2)).
move(jugs(V1,V2), empty(1)) :- V1 > 0.
move(jugs(V1,V2), empty(2)) :- V2 > 0.
move(jugs(V1,V2), transfer(2,1)).
move(jugs(V1,V2), transfer(1,2)).
update(jugs(V1,V2), empty(1), jugs(0,V2)).
update(jugs(V1,V2), empty(2), jugs(V1,0)).
update(jugs(V1,V2), fill(1), jugs(C1,V2)) :- capacity(1,C1).
update(jugs(V1,V2), fill(2), jugs(V1,C2)) :- capacity(2,C2).
Johannes Arz, Der intelligente Hamster
8/17
update(jugs(V1,V2), transfer(2,1), jugs(W1, W2)) :capacity(1, C1),
Liquid is V1 + V2,
Excess is Liquid - C1,
adjust(Liquid, Excess, W1, W2).
update(jugs(V1,V2), transfer(1,2), jugs(W1, W2)) :capacity(2, C2),
Liquid is V1 + V2,
Excess is Liquid - C2,
adjust(Liquid, Excess, W2, W1).
adjust(Liquid, Excess, Liquid, 0) :- Excess =< 0.
adjust(Liquid, Excess, V, Excess) :- Excess > 0, V is Liquid - Excess.
legal(jugs(V1,V2)).
value(jugs(V1,V2), Value) :- Value is V1 + V2.
capacity(1,8).
capacity(2,5).
Johannes Arz, Der intelligente Hamster
9/17
6. Das Labyrinth und der “faule” Hamster
Am anschaulichsten können die Verfahren im Labyrinth präsentiert werden. In
natürlicher Weise sind die Bewertung der Zustände (=Felder) durch die Anzahl der
Körner wiedergegeben. Abbildung 4 zeigt ein einfaches Beispiel eines Labyrinths. Der
Hamster soll zu dem Feld mit den vielen Körnern (Zielzustand) laufen. Beim Hill
Climbing „denkt der Hamster kurz nach“ und stellt fest, dass er nicht ans Ziel kommt
(Ausgabe: false). In der Tat sucht der Hamster gemäß Verfahren einen Weg zum Ziel –
ohne sich zu bewegen. An der ersten (und einzigen) Abzweigung hat der Hamster die
Wahl zwischen einem Feld mit einem Korn oder dem Feld mit drei Körnern. Er wählt
den Weg geradeaus und gerät in eine Sackgasse. Das ist zwar nachvollziehbar, aber
nicht anschaulich. 6
Abbildung 4: Ein einfaches Labyrinth und Hill Climbing
Was ist die Antwort auf die Fragen aller Fragen? Die Antwort 42 ist das kürzeste und
bekannteste Zitat aus der Roman- und Hörspielreihe „Per Anhalter durch die Galaxis“ von
Douglas Adams. Oder in SWI-Prolog:
1 ?- FrageAllerFragen.
% ... 1,000,000 ............ 10,000,000 years later
%
%
>> 42 << (last release gives the question)
1 ?6
Johannes Arz, Der intelligente Hamster
10/17
7. Das Labyrinth und der „bewegte“ Hamster
In dieser Variante „denkt der Hamster laut nach“. Abbildung 5 zeigt die Startposition.
Als Verfahren ist hier die Bestensuche gewählt. In Abbildung 6 gerät der Hamster in
eine Sackgasse, erinnert sich aber an die letzte Abzweigung und nimmt den richtigen
Weg zum Ziel. Diese Variante ist wesentlich anschaulicher, aber in der
Programmierung recht aufwendig.
Abbildung 5: Der Hamster im Labyrinth, Startzustand
Abbildung 6: Der Hamster im Labyrinth, Sackgasse
Johannes Arz, Der intelligente Hamster
11/17
8. Die Wumpus-Welt
Das Zusammenspiel aller beim Menschen bekannten intellektuellen Fähigkeiten, die
auf Rechnern abgebildet werden können, wird in den neueren Lehrbüchern am
Beispiel des intelligenten Agenten demonstriert und gelehrt.
Wir definieren die KI als die Betrachtung von Agenten, die Wahrnehmungen aus der
Umwelt erhalten und Aktionen ausführen. Jeder dieser Agenten implementiert eine
Funktion, die Wahrnehmungsfolgen auf Aktionen abbildet, und wir beschreiben
unterschiedliche Möglichkeiten, diese Funktionen darzustellen, wie z.B.
Produktionssysteme, reaktive Agenten, Echtzeitplaner, neuronale Netzwerke und
entscheidungstheoretische Systeme. Wir erklären die Rolle des Lernens als
Erweiterung der Reichweite des Entwicklers in unbekannte Umgebungen und zeigen,
wie diese Rolle den Agentenentwurf einschränkt, wobei wir uns besonders auf die
explizite Wissensrepräsentation und das Schließen konzentrieren. Wir beschreiben
Robotik und Vision nicht als unabhängig definierte Probleme, sondern als Hilfsmittel,
ein Ziel zu erreichen. Wir betonen dabei, wie wichtig die Umgebung für den
verwendeten Agentenentwurf ist. [Zitat aus (11)]
Die Wumpus-Welt ist ein Käfig, der aus Räumen besteht, die durch Durchgänge
miteinander verbunden sind. Irgendwo in dem Käfig lauert das Wumpus, eine Bestie,
die jeden frisst, der ihren Raum betritt. Das Wumpus kann von einem Agenten
erschossen werden, aber der Agent besitzt nur einen einzigen Pfeil. Einige Räume
enthalten Falltüren, durch die jeder fällt, der diese Räume betritt (außer dem Wumpus,
das zu groß ist, um durchzufallen). Die einzige Verlockung, sich in dieser Umgebung zu
bewegen, ist die Aussicht, einen Berg Gold zu finden. Obwohl die Wumpus-Welt
angesichts der modernen Computerspiele recht archaisch anmuten mag, ist sie eine
ausgezeichnete Testumgebung für intelligente Agenten. […][Zitat aus (11)]
Abbildung 7 zeigt ein Beispiel für die Wumpus-Welt.
Die genaue Definition der Aufgabenumgebung ist […] durch die folgende Beschreibung
[…] gegeben:
• Leistungsmaß (Performance): +1000 für das Auffinden des Golds, -1000, wenn man
durch eine Falltür fällt oder von dem Wumpus gefressen wird. -1 für jede
unternommene Aktion und -10 für die Verwendung des Pfeils.
• Umgebung (Environment): Ein 4 x 4-Raster von Räumen. Der Agent beginnt seinen
Weg in dem Quadrat mit der Aufschrift [1,1] und sieht nach rechts. Die Positionen
des Goldes und des Wumpus werden mit einheitlicher Verteilung zufällig gewählt,
befinden sich jedoch nicht auf dem Ausgangsquadrat des Agenten. Darüber hinaus
kann jedes Quadrat außer dem Anfangsquadrat mit einer Wahrscheinlichkeit von
0,2 eine Falltür haben.
• Aktuatoren (Actuators): Der Agent kann sich nach vorne bewegen, sich um 90 Grad
nach links oder um 90 Grad nach rechts drehen. Der Agent stirbt einen
Johannes Arz, Der intelligente Hamster
12/17
•
schrecklichen Tod, wenn er auf ein Quadrat tritt, das eine Falltür hat, oder wenn er
ein lebendiges Wumpus entdeckt. (Es ist sicher, wenn auch nicht ganz
geruchsneutral, auf ein Quadrat mit einem toten Wumpus zu steigen.) Eine
Vorwärtsbewegung hat keine Wirkung, wenn der Agent vor einer Mauer steht. Die
Aktion Grab (greifen) kann verwendet werden, um ein Objekt aufzunehmen, das
sich auf demselben Quadrat wie der Agent befindet. Die Aktion Shoot (schießen)
kann verwendet werden, um einen Pfeil geradlinig in die Richtung zu schießen, in
die der Agent sieht. Der Pfeil fliegt, bis er das Wumpus trifft (und damit tötet) oder
an eine Mauer prallt. Der Agent hat nur einen einzigen Pfeil, deshalb hat auch nur
die erste Shoot-Aktion eine Wirkung.
Sensoren (Sensors): Der Agent hat fünf Sensoren, die ihm jeweils unterschiedliche
Informationen bereitstellen:
- In dem Quadrat, das den Wumpus enthält, sowie in allen direkt (nicht
diagonal) benachbarten Quadraten nimmt der Agent einen üblen Gestank
(Stench) wahr.
- In Quadraten, die direkt mit einer Falltür benachbart sind, nimmt der Agent
einen Luftzug (Breeze) wahr.
- In dem Quadrat, auf dem sich das Gold befindet, nimmt der Agent ein
Glitzern (Glitter) wahr.
- Läuft ein Agent gegen eine Wand, nimmt er einen Stoß (Dump) wahr.
- Wenn das Wumpus getötet wird, stößt es einen schrecklichen Schrei
(Scream) aus, den jeder im Käfig hören kann.
Die Wahrnehmungen werden dem Agenten in Form einer Liste mit fünf
Symbolen übergeben; befinden sich dort beispielsweise Gestank und Luftzug,
aber kein
Glitzern, Stoßen
oder Schreien,
erhält der
Agent die
Wahrnehmung
[Stench,
Breeze, None,
None, None].
[Zitat aus (11)]
Abbildung 7: Eine Wumpus-Welt aus (11)
Johannes Arz, Der intelligente Hamster
13/17
Eine Hamster-Implementierung muss die Zustände eines Feldes durch Körner
repräsentieren. Hier bietet sich eine binäre Kodierung der Zustände an
z.B.
Zustand
Leeres Feld, keine Beobachtung
Luftzug (Breeze)
Gestank (Stench)
Gold
Falltür
Wumpus
0
1
2
4
8
16 (12)
Abbildung 8: Repräsentation der Wumpus-Welt durch die Hamster-Welt
Eine solche Repräsentation ist nicht adäquat, da die Darstellung der einzelnen
Zustände gekünstelt wirkt und dem Problem/dem Spiel nicht angemessen ist, da sie
intuitiv nicht verstanden werden kann.
Auch eine andere Kodierung der Zustände, in denen die Bewertung für die Knoten zum
Ausdruck kommt, wäre nicht adäquat.
In jedem Fall kann man dieses Problem auf einen Spezialfall des Labyrinth-Problems
reduzieren.
Ein dreidimensionales Wumpus-Spiel findet man unter
http://mostplays.com/play/Wumpus_World_1585
Johannes Arz, Der intelligente Hamster
14/17
Literatur (alphabetisch)
(1) Beierle, C., Kern-Isberner, G.(2008). Methoden wissenbasierter Systeme.
4.Auflage, Wiesbaden: Vieweg+Teubner Verlag
(2) Boles, D. (2010). Willkommen beim Java-Hamster! WWW:http://www.javahamster-modell.de (24.10.2010)
(3) Boles, D., Jasper, D. (2009). Hamster-Simulator. Version 2.6.1.
Benutzerhandbuch. WWW:http://www.java-hamster-modell.de (27.01.2010)
(4) Börgens, M. (2010). Mathematische Probleme. WWW: http://homepages.fhfriedberg.de/boergens/problem/problem064.htm (24.10.2010)
(5) Cawsey, A. (2002). Künstliche Intelligenz im Klartext. München: Pearson
Studium
(6) Clocksin, W.F., Mellish, C.S (1981). Programming in Prolog. Berlin, Heidelberg,
New York: Springer Verlag
(7) Ertel, W. (2008). Grundkurs Künstliche Intelligenz. Eine praxisorientierte
Einführung. Wiesbaden: Vieweg Verlag
(8) Jan Wielemaker (2009). SWI-Prolog. Version 5.8.3. University of Amsterdam.
WWW: http://www.swi-prolog.org/ (15.11.2010)
(9) Lämmel, U., Cleve, J. (2004). Lehr- und Übungsbuch Künstliche Intelligenz.
2.Auflage, München: Hanser Verlag
(10) Poole, D., Mackworth, A., Goebel, R. (1998). Computational Intelligence. A
Logical Approach. New York, Oxford: Oxford University Press
(11) Russel, S., Norvig, P. (2004). Künstliche Intelligenz. Ein moderner Ansatz.
2.Auflage, München: Pearson Verlag
(12) Sterling, L., Shapiro E. (2002). The Art of Prolog. Advanced Programming
Techniques. 2nd Edition. Cambridge, MA: The MIT Press
Johannes Arz, Der intelligente Hamster
15/17
Literatur (nach Themen)
Hamster-Simulation
Boles, D. (2010). Willkommen beim Java-Hamster! WWW:http://www.java-hamstermodell.de (24.10.2010)
Boles, D., Jasper, D. (2009). Hamster-Simulator. Version 2.6.1. Benutzerhandbuch.
WWW:http://www.java-hamster-modell.de (27.01.2010)
KI-Lehrbücher
Lämmel, U., Cleve, J. (2004). Lehr- und Übungsbuch Künstliche Intelligenz. 2.Auflage,
München: Hanser Verlag
Beierle, C., Kern-Isberner, G.(2008). Methoden wissenbasierter System. 4.Auflage,
Wiesbaden: Vieweg+Teubner Verlag
Russel, S., Norvig, P. (2004). Künstliche Intelligenz. Ein moderner Ansatz. 2.Auflage,
München: Pearson Verlag
Cawsey, A. (2002). Künstliche Intelligenz im Klartext. München: Pearson Studium
Poole, D., Mackworth, A., Goebel, R. (1998). Computational Intelligence. A Logical
Approach. New York, Oxford: Oxford Universty Press
Ertel, W. (2008). Grundkurs Künstliche Intelligenz. Eine praxisorientierte Einführung.
Wiesbaden: Vieweg Verlag
Prolog
Clocksin, W.F., Mellish, C.S (1981). Programming in Prolog. Berlin, Heidelberg, New
York: Springer Verlag
Jan Wielemaker (2009). SWI-Prolog. Version 5.8.3. University of Amsterdam. WWW:
http://www.swi-prolog.org/ (15.11.2010)
Das Problem der Wasserkrüge
Börgens, M. (2010). Mathematische Probleme. WWW: http://homepages.fhfriedberg.de/boergens/problem/problem064.htm (24.10.2010)
Suchen
Sterling, L., Shapiro E. (2002). The Art of Prolog. Advanced Programming Techniques.
2nd Edition. Cambridge, MA: The MIT Press
Johannes Arz, Der intelligente Hamster
16/17
Bildnachweis
Seite 1 (Hamster)
http://www-is.informatik.uni-oldenburg.de/~dibo/hamster/index.html
Seite 1 (Gehirn)
http://fudder.de/fileadmin/media/images/brain.jpg
Seite 13 (Wumpus-Welt)
(11), Seite 253
Software
(Alle Programme sollten auch mit neueren Versionen laufen.)
JavaTM 2 SDK, Standard Edition, Version 1.4.0
Hamstersimulator, Version 2.7.1
SWI-Prolog, Version 5.8.3
Prolog- Quellen
Bei Interesse versende ich die Prolog-Programme als Quelldateien.
Email an [email protected] genügt.
Johannes Arz, Der intelligente Hamster
17/17
Zugehörige Unterlagen
Herunterladen