This repository has been archived on 2025-07-10. You can view files and clone it, but cannot push or open issues or pull requests.
Files
forschungsprojekte/Algorithmen/Code 1.md

1.4 KiB


import numpy as np

# Anzahl der Zustände
n_states = 21  # 20 Anweisungen + 1 Endzustand
n_actions = 3  # Ausführen, Überspringen, Test beenden

# Übergangswahrscheinlichkeiten
P = np.zeros((n_states, n_actions, n_states))
# Belohnungsfunktion
R = np.zeros((n_states, n_actions))

# Beispielfüllung der Matrizen P und R
for s in range(n_states - 1):
    P[s, 0, s + 1] = 1  # Aktion ausführen führt zum nächsten Zustand
    P[s, 1, s + 1] = 1  # Zum nächsten Zustand übergehen
    P[s, 2, n_states - 1] = 1  # Test beenden führt zum Endzustand
    R[s, 0] = 1  # Belohnung für das Ausführen einer Aktion
    R[s, 1] = -1  # Kosten für das Überspringen
    R[s, 2] = -10  # Hohe Kosten für das vorzeitige Beenden

# Implementierung der Value Iteration
V = np.zeros(n_states)
gamma = 0.95  # Diskontierungsfaktor
threshold = 1e-4  # Konvergenzschwelle
while True:
    V_prev = V.copy()
    for s in range(n_states):
        V[s] = max([sum(P[s, a, s_prime] * (R[s, a] + gamma * V_prev[s_prime])
                        for s_prime in range(n_states)) for a in range(n_actions)])
    if np.max(np.abs(V - V_prev)) < threshold:
        break

# Ausgabe der optimalen Politik
policy = np.zeros(n_states, dtype=int)
for s in range(n_states):
    policy[s] = np.argmax([sum(P[s, a, s_prime] * (R[s, a] + gamma * V[s_prime])
                               for s_prime in range(n_states)) for a in range(n_actions)])

print("Optimale Politik:", policy)