Open emmademareywilliams opened 3 years ago
Deuxième test : on divise la récompense de l'hystérésis par le "time of flight", toutes choses égales par ailleurs (gamma = 0.9, nb épisodes = 400)
def reward(self, datas, i):
reward = - abs( datas[i,2] - Tc ) / datas[i,4]
if datas[i,3] == 0:
if datas[i,0] != 0:
reward -= datas[i,4] / 15
return reward
Pour ce cas-là, des résultats beaucoup moins satisfaisants : pas de convergence de la température, beaucoup de bruit, un comportement de l'agent qui ne correspond pas à ce qu'on cherche (il semble suivre le modèle de loin, sans réussir à rester dans la zone de confort)...
Troisième test : on observe comment le modèle gère un long weekend :
Pour ce faire, on programme l'agenda hebdomadaire de manière à ce qu'il y ait 4 jours de non occupation (cas d'un long weekend avec jours fériés). La durée de simulation a été ralongée à 10 jours au lieu de 8 afin de bien rendre compte du phénomène (surtout de la remontée de température après le weekend) :
schedule = np.array([ [7,17], [7,17], [7,17], [-1,-1], [-1,-1], [-1,-1], [-1,-1] ])
wsize = 1 + 10*24*3600//interval
Le réseau utilisé pour faire les tests est le réseau occupationdivisepar5_gamma9_26_08.h5
entraîné avec les paramètres suivants :
De manière générale, le réseau gère plutôt bien les longs weekend et suit grosso modo le modèle ; par contre, il a du mal à remonter en température à la fin de la période de non occupation et se retrouve à la traîne par rapport au modèle. La plupart du temps, il arrive à remonter dans la zone de confort mais cela se fait après l'horaire d'ouverture post long weekend.
Un exemple typique ci-dessous :
Quatrième test : comment le réseau gère le changement des valeurs de R et de C
Un autre test pour mettre à l'épreuve la robustesse du réseau occupationdivisepar5_gamma9_26_08.h5
est de changer les valeurs de R et de C et de lancer le code en mode play
. Les différentes expériences sont effectuées avec les paramètres suivants :
Dans le tableau ci-dessous, les résultats des différents test :
R | C | Id expérience | Modèle | Agent | Commentaire |
---|---|---|---|---|---|
3.09e-4 | 8.63e+8 | 20j_20/02 | OK | OK | Valeurs sur lesquelles le réseau a été entraîné |
2.99e-4 | 7.57e+8 | 10j_27/02 | OK | OK | |
1.38e-5 | 1.08e+11 | 20j_20/03 | NON | NON | Valeurs aberrantes de R et C (?) |
3.43e-4 | 1.06e+9 | 10j_05/03 | OK | OK | L'agent et le modèle se suivent moins (sur la remontée de température, l'agent est soit en avance soit en retard) |
Par exemple, pour des valeurs de R et de C de l'expérience 10j_27/02 :
De manière générale, le modèle et l'agent répondent bien aux changements de valeurs et continuent d'avoir des comportements acceptables, sauf dans un cas (mais celui-ci correspond à des valeurs de R et C quelque peu aberrantes...).
À noter toutefois que les valeurs utilisées sont restées assez proches des valeurs initiales utilisées pour entraîner le réseau.
Influence des valeurs de R et C sur le comportement du modèle :
Les tests ont été réalisés avec les paramètres suivants :
Dans un premier temps, on fait jouer le modèle à R fixée :
Puis pour C fixée :
Ci-dessous les 4 courbes juxtaposées qui correspondent aux couples (R, C) étudiés plus haut :
Premier test : on divise la récompense en non occupation par 15 au lieu de 10 :
Avec gamma = 0.8 et sur 400 épisodes, on obtient une belle convergence au niveau de la température intérieure (mais pas vraiment au niveau de la récompense) :
Le comportement de l'agent est très satisfaisant, d'autant plus que sur une bonne majorité des épisodes joués, il consommait moins que le modèle.
Un exemple ci-dessous :
J'ai aussi essayé de diviser la récompense par 5 : on observe également une convergence de la température, même s'il semblerait que l'écart type dans ce cas-là soit légèrement supérieur au cas "divisé par 15" :
Pour comparer les deux méthodes, on fait jouer les réseaux un certain nombre de fois (18 tests en mode
play
) et on note le pourcentage d'écart entre le modèle et l'agent en terme de consommation pour chaque expérience. Les résultats moyens obtenus sont comme suit :