Releases: Open-Building-Management/EnergyGym
v0.3
CHANGES FROM VERSION 0.2
Amélioration de la pertinence des récompenses pour Vacancy et StepRewardVacancy et modulation des paramètres de la récompense désormais possible via la ligne de commande
Intégration dans l'environnement d'une baseline énergétique, correspondant au maintien de la température de consigne en permanence, et aussi de l'optimum énergétique, correspondant au jeu du modèle qui sait parfaitement quant rallumer le chauffage.
Cet optimum n'a pas vocation à être utilisé dans le calcul de la récompense mais la baseline si...
- pmineko : économie d'énergie minimale, correspondant au maintien à tc en permanence
- popteko : économie d'énergie optimale, correspondant au jeu du modèle qui connait parfaitement son environnement
- peko : économie d'énergie qui sera réalisée par l'agent qui pour avoir un intérêt doit être entre pmineko et popteko
Ajout dans l'environnement :
- d'une variable mean_text_episode, égale à la température extérieure moyenne sur l'épisode, après avoir appelé reset() - utile pour repérer dans les stats les épisodes froids sans avoir besoin de les rejouer
- d'un threshold min et/ou max sur la température extérieure, par exemple pour n'entrainer que sur des températures clémentes, ou au contraire que sur une sélection des plus froides [n'a pas donné grand chose]
Ajout des méthodes :
- set_extra_params, pour ajouter des paramètres au dictionnaire du modèle d'environnement
- load, pour charger un réseau, cette méthode étant auparavant dans basicplay.py
- freeze, pour générer des jours fériés à intégrer à un agenda
Ajout d'un générateur de modèles et d'un mode autosize_max_power pour dimensionner la puissance maximale disponible en fonction de l'isolation
Ce générateur est dans conf.py
Module de statistiques compatible avec les environnements gym, capable de jouer sur un parc de bâtiments, mais aussi un couple R/C bien défini et un timestamp particulier cf stats.py
Implémentation de D2Vacancy pour retourner des states prenant la forme de matrices 2D (axe 0 : le temps, axe 1 : les paramètres)
Ajout de supervised_rc_guess.py pour l'apprentissage supervisé des paramètres RC par un réseau LSTM
Ajout de 2 algorithmes :
- l'un introduisant l'architecture dueling
- l'autre introduisant une mémoire plus intelligente (per : prioritized experience replay), capable de donner plus d'importance lors des entrainement aux expériences qui ont le plus de valeur ajoutée et grâce auxquelles le réseau peut apprendre plus efficacement [n'a pas donné grand chose pour l'instant] algorithme probalement à stabiliser. Utilise un sumtree, la feuille i ayant comme valeur la probabilité de la transition i - cf shared_rl_tools.py
Ajout de 2 méthodes show_episode_stats et add_scalars_to_tensorboard dans standalone_d_dqn.py : A UTILISER DANS TOUS LES ALGORITHMES!
Ajout de view_tensorboard_graph.py pour visualiser l'architecture dueling sous tensorboard
v0.2
CHANGES FROM VERSION 0.1
paramètres tc et halfrange de basicplay.py & standalone_d_dqn.py
possibilité d'entraîner à consigne variable, autour d'une température de consigne moyenne
tc est la valeur de la consigne moyenne en °C
si halfrange= 0, la consigne est fixe d'un épisode sur l'autre
si halfrange=2 et tc=20, on pourra avoir comme consignes possibles 18, 19, 20, 21 et 22 °C
environnement Hyst
permet d'entraîner un réseau à reproduire un comportement hystérésis
environnement Reduce
permet de faire jouer à un hystérésis un réduit d'inoccupation
cf basicplay.py
constante REDUCE = hauteur du réduit en °C à soustraire à la consigne moyenne
précision de l'espace d'action
espace d'action toujours discret mais plus limité à 2 valeurs
dans la version précédente, on était limité à des actions binaires :
- soit on chauffait à fond
- soit on coupait totalement le chauffage
on peut désormais fixer la taille de l'espace d'actions par exemple à 11,
ce qui permet de mobiliser 0%, 10%, 20%...90% ou 100% de la puissance maxi dispo
python3 standalone_d_dqn.py --action_space=11
python3 basicplay.py --action_space=11
fonctions sim et play_hystnvacancy de evaluation_toolbox.py
sim permet de calculer la température intérieure dans nbh heures :
- soit en chauffant en continu
- soit sans chauffer
si on veut prévoir le point suivant seulement,
on doit donner à nbh la valeur env.text.step/3600
play_hystnvacancy joue la politique optimale sur un scénario d'intermittence
introduction des paramètres nbh et nbh_forecast dans l'environnement
l'espace d'observation peut désormais intégrer :
- nbh heures d'histoire passée
- nbh_forecast de prévisions météo
lorsqu'on entraîne avec nbh > 0, on donne au réseau neurones des informations sur le modèle,
ce qui permet d'envisager d'entraîner à modèle variable d'un épisode sur l'autre
python3 standalone_d_dqn.py --nbh_forecast=24 --action_space=11
python3 basicplay.py --nbh_forecast=24 --action_space=11
v0.1
a 4 parameters observation space :
- current outdoor temperature
- current indoor temperature
- tc * occupation
- nb hours -> occupation change (from occupied to empty and vice versa)
tc is the indoor setpoint temperature
Training in non occupation mode (vacancy) is interesting. Annyway, due to the design of the observation space, the network is long to find tc, which slows down the learning process. Moreover, nothing was planned to train with various tc.
multiply tc by occupation was a very bad choice
the observation space has to be redesigned.