The project implements the idea of reinforcement learning for decision process using custom learning agent and environment. The aim is to create a working system for a smart house that analyzes the outside and inside data collected by sensors and determines the action to perform considering the user desired values of temperature and light and energy cost. As a result the system should minimize energy consumption in the house and maximize user’s comfort.
We wanted to create a system for a smart house that works properly under any base requirements and conditions and results in visible energy saving. Here we think about the smart house as an agent with the access to the basic devices in the house (currently it is: energy source, light level, window blinds, air conditioning and heater) as well as the inside and outside sensors. The sensors collect the data (temperature, brightness and solar battery level) between the fixed timeframes.
A complex simulation of the outside world, house and weather has been created as a base environment for the agent. The reward is calculated from difference between current conditions and user requests and energy use. Currently implemented algorithm uses Double Deep Q Learning with Prioritized Experience Replay.
- A Debian based distribution of Linux operating system
- Python 3.6.5 installed
- Python package manager (pip) and python3 tkinter library installed
On a Debian based operating system, you can use apt package manager to setup the requirements quickly:
$ sudo apt-get update
$ sudo apt-get install python3.6 python3.6-pip python3-tk
Install required Python3 libraries using requirements.txt. We recommend installing libraries inside virtual environment, although this is not necessary. (for more info about virtualenvs, look here).
$ pip3 install -r requirements.txt
Proceed into source code directory , and run one of following scripts:
- To run a training session:
$ python3 main.py
- For full-screen live simulation:
$ python3 simulation.py
- For manual, step-by-step testing:
$ python3 manual_test.py
You can change the configuration of agent and environment through configuration.json
. ├── configuration.json Main configuration file ├── README.md ├── requirements.txt ├── ... ├── documentation Both technical and business documentation of the project │ └── ... ├── research Our additional research notes │ └── ... ├── src Source code directory │ ├── main.py Main script used to train Agent │ ├── simulation.py Graphical simulation of Agent at work │ ├── manual_test.py Console-based simulation of Agent and Environment │ ├── profile.sh Our profiling script │ ├── ... │ ├── saved_models Directory for storing models │ │ └── ... │ └── tests Unit tests directory │ ├── get_coverage.sh Our testing script │ └── ... └── static Directory for storing static files ├── fonts └── icons
For more info please refer to documentation of the project, where you can find technical docs and a list of used sources.
🐻 Dawid Czarneta
🐅 Jakub Frąckiewicz
:squirrel: Filip Olszewski
🐗 Michał Popiel
🐱 Julia Szulc