Das ist 2.Chance Notfallaufgabe
Hier die vollständige Aufgabe:
Ein Fahrzeughalter muss vorschriftsmäßig sein Lastwagen einmal in zwei Jahren zur Fahrzeuginspektion bringen. Die Inspektion dauert im Schnitt 4h. Die Überziehung der Frist für eine unbestimmte Zeit ist erlaubt. Dabei soll diese Aktion soll „warten“ genannt werden.
Der Lastwagen wird ca. 40% der Zeit genutzt. Die restliche Zeit befindet sich das Fahrzeug in einem
Parkzustand. Diese Aktion soll „betreiben“ genannt werden (auch wenn der Lastwagen sich im
Parkzustand befindet).
Ist die Wartungsfrist überzogen, dann soll der Lastwagen innerhalb einer Woche zur Inspektion
gebracht werden.
Damit der Fahrzeughalter mit dem Lastwagen Geld verdient, muss der Lastwagen möglichst oft in
Betrieb sein (Aktion „betreiben“). Im Betrieb verdient der Fahrzeughalter 50 Euro pro Stunde. Falls
das Fahrzeug nicht im Betrieb ist, dann hat der Fahrzeughalter 20 Euro pro Stunde Verlust. Die
Inspektion kostet dem Fahrzeughalter 200 Euro (Aktion „warten“). Nach der Inspektion erfolgt eine
Wertsteigerung des Fahrzeugs von 500 Euro.
Das Zeitinkrement ist 1h.
a.) Programmieren Sie die Infrastruktur für ein MDP-Modell in Python. Verwenden Sie dafür
vier Klassen: STATE, QSTATE, TRANSITION und MDP
Das MDP-Modell soll wie unten dargestellt (Programmbeispiel 1) aufgebaut werden. Für die Darstellung des MDP-Modells werden die Methoden state(), qstate() und transition() benötigt. Die
Methode show() stellt das MDP-Modell als Graphik dar:
M = MDP("Aufgabe3")
S1 = STATE('S1',0)
S2 = STATE('S2',1)
S3 = STATE('S3',2)
…
QS1b = QSTATE('QS1',S1, 'Betreiben')
QS1w = QSTATE('QS2',S1, 'Warten')
…
T1b3 = TRANSITION('T1b3',QS1b, S3, 0.5, 100)
T1w3 = TRANSITION('T1w3',QS1w, S3, 0.5, 100)
…
M.state(S1)
…
M.qstate(QS1b)
…
M.transition(T1b3)
…
M.show()
b.) Programmieren Sie das MDP-Modell für die oben beschriebene Aufgabenstellung. Das Modell soll dabei mindestens fünf Zustände haben: Betrieb, Parken, Betrieb ohne Inspektion, Parken ohne Inspektion und Inspektion. Ermitteln Sie Q-Zustände und Übergänge und bauen Sie
diese in das Modell ein.
c.) Programmieren Sie den Graphen des Markov Modells mit Graphviz/Matplot/OpenCV und
drucken Sie diesen aus, sodass Zustände, Q-Zustände und Übergänge daraus hervorgehen. Die Zustände sollen dabei mit Dreiecken dargestellt werden. Die Q-Zustände mit Kreisen. Beschriften Sie alle Zustände und Q-Zustände.
d.) Berechnen Sie die Gesamtbelohnungen für jeden Zustand und jeden Q-Zustand. Verwenden
Sie dafür die Methode utility() der Klassen MDP, QSTATE und STATE. Verwenden Sie dafür die Bellmann Gleichungen.
e.) Berechnen Sie aus den Q-Zuständen und den Gesamtbelohnungen die optimale Strategie und
geben Sie diese aus.