1 Lernziele 2 Projektvorschläge

Werbung
Hochschule Niederrhein
Master Informatik
Praktikum
Wissensbasierte Systeme
Prof. Dr. Rethmann
WS 2012/13
Projektphase
1
Lernziele
Ziel der Projektphase ist es, die in der Vorlesung erworbenen Kenntnisse zu vertiefen und
praktisch anzuwenden. Außerdem sollen Sie Ihre Erfahrungen im gemeinsamen Erstellen
von Software erweitern: Man einigt sich auf eine Schnittstelle und jeder Beteiligte löst
unabhängig vom Anderen einen Teil der Aufgabe. Zur Software-Entwicklung gehört auch
das systematische Testen und eine zielgerichtete Fehlersuche: Sind die einzelnen Komponenten fehlerhaft oder arbeiten sie nur nicht korrekt zusammen. Es sind daher zunächst
Komponententests zu erstellen, und erst danach ist die Software als Ganzes zu testen.
2
Projektvorschläge
Die folgenden Projektvorschläge sind nur als Angebot zu verstehen. Sie können in Ihrer
Gruppe auch eigene Vorschläge diskutieren und umsetzen.
Die Software soll vorzugsweise in Java geschrieben werden, damit sie im Internet zur
Verfügung gestellt werden kann, plattformunabhängig ist und als Applet in einem Browser
lauffähig ist. Ein sehr gutes Java-Tutorial für Anfänger und Fortgeschrittene ist auf den
Internet-Seiten von Oracle zu finden:
http://download.oracle.com/javase/tutorial/index.html
2.1
Neuronale Netze
Neuronale Netze werden unter anderem in der Bildverarbeitung eingesetzt. Mit dem Stuttgarter Neuronale Netze Simulator SNNS steht eine Software zur Verfügung, die verschiedene Netzstrukturen realisieren kann. Diese können genutzt werden, um die verschiedenen
Netze hinsichtlich ihrer Eignung zur Handschriften- oder Gesichtserkennung zu untersuchen. Ein nettes kleines Applet OCHRE, Abkürzung für Optical Character Recognition,
findet sich unter http://www.sund.de/netze/applets/BPN/bpn2/ochre.html.
Zunächst ist zu untersuchen, ob es im Internet frei verfügbare Datenbanken mit Beispielen
für die Handschriften- oder Gesichtserkennung gibt. Falls nicht, muss eine eigene Datenbasis
aufgebaut werden. Das kann im Falle der Gesichtserkennung so aussehen, das wir von allen
Kursteilnehmern digitale Fotos erstellen, die vor verschiedenen Hintergründen und aus
verschiedenen Perspektiven aufgenommen werden.
1
2.2
Spieleprogrammierung
Um ein Zweipersonen-Spiel wie Dame, Schach oder Go gegen den Computer spielen zu
können, muss die Minimax-Strategie implementiert werden. Dazu ist es notwendig, eine
Bewertung für Spielsituationen zu implementieren. Um die Suchtiefe weiter zu vergrößern,
kann eine α-β-Beschneidung realisiert werden. In diesem Projekt soll ein Framework erstellt
werden, mit dessen Hilfe verschiedene Spiele wie Vier gewinnt oder Othello realisiert werden
können. Die Suchtiefe soll einstellbar sein, um verschiedene Spielstärken bereit zu stellen.
2.3
Heuristische Suchverfahren
Zugfolgen für Spiele wie Sokoban oder Rush Hour können mittels allgemeiner Suchverfahren wie Tiefen- oder Breitensuche bestimmt werden. Leider haben diese Suchverfahren
unter Umständen eine sehr hohe Laufzeit. Um die Laufzeit zu verbessern, werden Heuristiken eingesetzt, um den Suchraum zu begrenzen. In diesem Projekt soll ein Framework
erstellt werden, mit dessen Hilfe Zugfolgen für verschiedene Spiele wie 15-Puzzle oder BrettSolitär mittels verschiedener Suchverfahren bestimmt und die Laufzeiten verglichen werden
können. Dazu ist es notwendig, für diese Spiele geeignete Heuristiken anzugeben.
2.4
Expertensysteme
In diesem Projekt wollen wir versuchen, ein Expertensystem z.B. für die automatische
Wohnungssuche zu erstellen. Wir definieren, welche Eigenschaften eine Wohnung haben
sollte: Größe, Anzahl Zimmer, Balkon, Garten, Lage, Verkehrsanbindung, Preis usw. Da
Wohnungsanzeigen nicht unbedingt alle Eigenschaften enthalten, muss das System in der
Lage sein, fehlende oder ungenaue Angaben zu verarbeiten. Das System soll in der Lage
sein zu erklären, warum es eine bestimmte Wohnung ausgewählt hat.
Das eigentliche Expertensystem soll in PROLOG implementiert werden, die Benutzeroberfläche in Java. Um PROLOG-Programme aus Java heraus aufrufen zu können, steht
z.B. die JPL zur Verfügung. JPL ist eine Menge von Java-Klassen und C-Funktionen und
benutzt das Java Native Interface (JNI) um eine Verbindung mit dem Prolog Foreign
Language Interface herzustellen, siehe http://www.swi-prolog.org/packages/jpl/.
3
Literatur
• Ivan Bratko: PROLOG: Programming for Artificial Intelligence. Addison-Wesley.
• Juraj Hromkovič: Randomisierte Algorithmen. Teubner B.G.
• I. Gerdes, F. Klawonn, R. Kruse: Evolutionäre Algorithmen. Vieweg+Teubner Verlag.
• S. Russell, P. Norvig: Artificial Intelligence – A Modern Approach. Prentice Hall.
2
• George Luger: Künstliche Intelligenz. Addison-Wesley.
• Andreas Zell: Simulation Neuronaler Netze. Addison-Wesley.
• Homepage SNNS: http://www.ra.cs.uni-tuebingen.de/SNNS/
3
Herunterladen