Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • main
1 result

Target

Select target project
  • edelland/machine_learning
1 result
Select Git revision
  • main
1 result
Show changes

Commits on Source 2

File added
File added
import numpy as np
def choix_action(epsilon, s, R, Q):
""" Renvoie l'action sélectionnée pour l'état s. Epsilon est une valeur seuil entre 0 et 1 permettant
soit de faire de l'exploration (si tirage aléatoire supérieur au seuil), soit de faire
de l'exploitation (si tirage aléatoire inférieur au seuil)
Parametres
----------
epsilon : seuil (entre 0 et 1) pour choisir entre exploration et exploitation afin de sélectionner une action
s : état courant
R : matrice des récompenses immédiates
Q : matrice représentant la fonction action-valeur
Retour
-------
a : action sélectionnée
"""
#########################################################
##### A compléter (et supprimer l'instruction pass) #####
#########################################################
pass
# return a
def calcule_q(s, a, alpha, gamma, R, Q):
""" Calcule la nouvelle valeur de la fonction action valeur pour l'état s et l'action a
Parametres
----------
s : état courant
a : action choisie
alpha : vitesse d'apprentissage
gamma : facteur d'actualisation
R : matrice des récompenses immédiates
Q : matrice représentant la fonction action-valeur
Retour
-------
q : nouvelle valeur de la fonction action valeur pour l'état s et l'action a
"""
#########################################################
##### A compléter (et supprimer l'instruction pass) #####
#########################################################
pass
# return q
def politique(s,Q):
""" Détermine la meilleure action connaissant l'état S et la fonction action valeur Q
Parametres
----------
s : état courant
Q : matrice représentant la fonction action-valeur
Retour
-------
a : action sélectionnée
"""
#########################################################
##### A compléter (et supprimer l'instruction pass) #####
#########################################################
pass
# return a
# ===================== Partie 1: Initialisation des données =====================
alpha = 1
gamma = 0.8
nb_episodes = 1000
epsilon = 0.
R = [
[-1, -1, -1, -1, 0, -1],
[-1, -1, -1, 0, -1, 100],
[-1, -1, -1, 0, -1, -1],
[-1, 0, 0, -1, 0, -1],
[0, -1, -1, 0, -1, 100],
[-1, 0, -1, -1, 0, 100],
]
R = np.array(R) # Matrice des récompenses immédiates
etat_final = 5
Q = np.zeros(R.shape) # Matrice représentant la fonction action-valeur
nb_etats = nb_actions = R.shape[0]
# ===================== Partie 2: Apprentissage de la fonction action-valeur Q =====================
print("Apprentissage de la fonction Q")
for i in range(nb_episodes):
print("Episode : ",i)
s = np.random.randint(0,nb_etats)
print("Etat initial : ",s)
while True:
a = choix_action(epsilon, s, R, Q)
print("action choisie : ", a)
Q[s,a] = calcule_q(s, a, alpha, gamma, R, Q)
if s == etat_final:
break
s = a
print("Matrice Q_value : ", Q)
Q = Q / np.max(Q) * 100
print("Matrice Q_value normalisée : ", Q)
# ===================== Partie 3: Exploitation de la politique d'action apprise =====================
print("Exploitation")
s = 2 # choix d'un état initial
print("Etat initial : ", s)
while s != etat_final :
a = politique(s, Q)
s = a # nouvel état
print("nouvel état : ",s)