i

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.
    </li>
  • 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.

Suche

v
12.8.3
www.inf-schule.de/gesellschaft/reinforcement-learning/hartkodierte-intelligenz

Rückmeldung geben