This notebook is part of the repository 'Optimization of Building Energy Consumption' aimed at using machine learning models to optimize building design parameters to minimize energy consumption for heating and cooling. This notebook focuses on multivariate regression to predict both heating and cooling energy loads based on building design parameters.
This notebook includes comprehensive steps for preprocessing, analyzing, and modeling building energy data with the goal of predicting heating and cooling loads. The process includes:
The notebook is structured to be followed sequentially. Detailed comments and markdown notes provide guidance through each step of the analysis and modeling process.
The notebook also discusses the use of early stopping in neural network training to prevent overfitting and improve model generalization.
The dataset used (EPB_data.csv
) includes various building parameters such as orientation, area, and glazing area among others, and the target variables are 'Heating Load' and 'Cooling Load'.
This notebook serves as a detailed example of using statistical and machine learning methods to predict building energy consumption. The methodologies outlined here can be adapted and expanded for other types of predictive modeling tasks within the building energy domain.
Demand Ninja is a sophisticated tool that provides hourly energy demand forecasts based on environmental data and building characteristics. It employs advanced algorithms and machine learning techniques to predict heating and cooling needs with high accuracy.
The repository consists of several Python scripts each designed to perform specific roles in the data processing and forecasting pipeline:
core.py
: Contains the primary logic for calculating energy demands based on the Building-Adjusted Internal Temperature (BAIT) model.demand_ninja_example.py
: Demonstrates how to use the Demand Ninja model to compute energy demand using custom input data.geo_json_file.py
: Converts processed energy demand data into GeoJSON format for easy integration with geospatial applications.test_download.py
: Automates the downloading of EPW files for various locations using API calls.epw_to_dataframe.py
: Consolidates key weather parameters from multiple EPW files into a single CSV file for easier analysis.clean_weather_with_demand.py
: Cleans and preprocesses weather data combined with demand forecasts to prepare for analysis.aggregate_data.py
: Processes and aggregates weather and energy demand data by geographic coordinates.To start using the Demand Ninja scripts, follow these steps:
pip install -r requirements.txt
(ensure you have this file configured based on the scripts needs).Run the scripts individually as needed:
python demand_ninja_example.py
python clean_weather_with_demand.py
python geo_json_file.py
Each script is designed to be modular but certain data standards must be maintained for seamless functionality:
Demand Ninja was developed by the Renewables Ninja team, including notable contributions from Iain Staffell, Stefan Pfenninger, and Nathan Johnson.
We refer to "rank 5" as the 5th winning solution of the ASHRAE Great Energy Predictor III (GEPIII) contest which is hosted on Kaggle. We originally were working on 'rank 1', or the highets ranked solution but decided to first go through 'rank 5' as it had a much quicker time to complete with not as much difference compared to 'rank 1'. Accorrding to ASHRAE, "This competition's overall objective was to find the most accurate modeling solutions for the prediction of over 41 million private and public test data points." There are many models within the solutions, with many libraries and a need to run on a very, very fast computers. We used GaTech's PACE system to run these jobs.
model
: - trained model binary filesoutput
: - model predictions and the final submission filetrain_code
: - code to train models from scratchpredict_code
: - code to generate predictions from model binariesensemble_code
: - code to ensemble the predictionspreproceeding_code
: - code to pre-process the dataprepare_data
: - pre-processed data filesexternal_data
: - external files required by this solution such as leak datarequirements.txt
: - python package dependenciesSETTINGS.json
: - a json configuration fileThere were many issues running Rank 5, here are some of them and possible solutions: