Hartkodierte Intelligenz

In einem ersten Schritt wollen wir nun unsere Erfahrungen, die wir mit dem Spiel gemacht haben, in ein Computerprogramm übersetzen, das das Spiel spielt. Ein Teil des Programmtextes ist bereits vorgefertigt. In den Dateien, die in Spiel_Anfang.zip aus dem vorigen Abschnit verpackt sind, befinden sich u.a. zwei Dateien, die wir jetzt benötigen:

  • spiel_ki.py
    Diese Datei müssen wir im Normalfall nicht verändern. Sie steuert den Spielablauf mitsamt der graphischen Benutzeroberfläche etc.
  • q_agent.py In dieser Datei können wir schrittweise unsere Künstliche Intelligenz programmieren. Die Datei wird von spiel_ki.py aufgerufen; deshalb darf man den Namen nicht einfach ändern. Wenn du Zwischenergebnisse in der q_agent.py speichern willst, speichere sie dann später einfach unter einem anderen Namen. Dann kannst du später durch Umbenennen der Dateien wieder auf die alten Ergebnisse zurückgreifen.
    Damit du immer wieder "von Null" anfangen kannst, gibt es noch eine Datei q_agent.tpl. Diese entspricht genau der am Anfang leeren Datei q_agent.py. Durch Kopieren dieser Datei kannst du also immer eine "leere" q_agent.py erzeugen.

Aufgabe 1: Dokumentieren der besten Aktionen

In einem ersten Schritt solltest du das spiel-mensch.py noch einmal spielen und dir für jede Situation die deiner Meinung nach beste Aktion notieren. Da alle Situationen und Aktionen durchnummeriert sind, kann man das in einer einfachen Tabelle tun.

Aufgabe 2: Test der vorgefertigten Funktion "beste_aktion"

Betrachte die Python-Funktion beste_aktion(situation, moegliche_aktionen) in der Datei q_agent.py:
def beste_aktion(situation,moegliche_aktionen):
    '''
    Sucht zu einer bestimmten Situation s die (nach seinem Wissen) beste Aktion aus.
    Der Parameter moegliche_aktionen ist dabei eine Liste von Aktions-Nummern, 
    die in der Situation s überhaupt möglich sind.
    '''
    return 0
Man sieht: Die bisherige Funktion beste_aktion(situation, moegliche_aktionen) gibt als beste Aktion immer nur die Aktion Nummer 0 zurück, das entspricht der Aktion "Weglaufen". Unser Agent in dieser Form könnte deshalb guten Gewissens als "Feigling" bezeichnet werden. Den Effekt kann man sich anschauen: Man startet das Programm spiel_ki.py und drückt den Button "Optimal spielen". Man sieht den Effekt des Weglaufens: Der Drache freut sich und beleidigt den Agenten als "Versager".

Aufgabe 3: Implementation einer hartkodierten Fallunterscheidung

Ändere nun den Code so ab, dass eine Fallunterscheidung für den Agenten entscheidet, welche Aktion er in welchen Situationen ausführt. Die Liste moegliche_aktionen ist hierbei noch uninteressant, da die beste von uns ausgewählte Aktion mit Sicherheit auch einer der möglichen Aktionen entsprechen wird.
X

Fehler melden

X

Suche