Skip to content

Releases: Open-Building-Management/EnergyGym

v0.3

11 Apr 20:00
Compare
Choose a tag to compare

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

02 Jan 10:45
df6d089
Compare
Choose a tag to compare

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

18 Dec 13:33
Compare
Choose a tag to compare

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.