BESOS platform
Building and Energy Simulation, Optimization and Surrogate-modelling

Why use BESOS?


Python notebooks are great for mixing executable code, visual outputs and formatted explanations.


Run notebooks on our cloud resources, with a pre-configured environment where all libraries and other software (EnergyPlus, CPlex) are automatically kept up to date.


Explore your model by interactive visualization using sliders/buttons/dropdowns and pretty graphics. All the code is hidden but accessible to power users.


Start from templates, both ours and user-generated, which are editable in one click. Takes the pain out of complex workflows, integrating different models and adding app-like front-ends to your research.


Tutorials straight in the notebooks, from beginner to advanced, plus classroom-focused content.


More control for expert users, with terminal access to customize your environment like you would your local machine.


Our BESOS library for optimization and surrogate modelling of buildings provides wrappers for EnergyPlus via EPPy for energy simulation, Platypus for optimization and scikit-learn and TensorFlow for surrogate modelling.


Our PyEHub library for energy hub modelling of energy systems provides an easy way to define energy balancng and system sizing problems.


Easily move your work locally if desired, just download your notebooks and follow the instructions to replicate the environment.


Share folders with other users. Work together in real-time using Jupyter Lab. Coming soon


An executable paper! Make your notebook public with a static link and frozen dependencies. Include the link in your publications to encourage others to build on (and cite!) your work. Coming soon


Integrated HPC cluster submission for Compute Canada. Coming soon


BESOS is a cloud-based portal of modular, reusable software components for researchers to perform integrated building and energy systems analysis. Buildings, renewable energy generation and storage technologies and associated energy systems all pose complex, interacting design and operational challenges. Finding high-performing solutions to these problems requires a new generation of computational tools, blending aspects of simulation, optimization, machine learning and visualization. The project is funded by a grant from CANARIE.

Core modules are:

  • Building energy simulation via parametric EnergyPlus model execution building on EPPy.
  • Multi-objective optimization using Platypus to provide 10+ evolutionary algorithms.
  • Machine learning tools for fitting surrogate models that approximate the behavior of complex simulators, implemented with scikit-learn and TensorFlow.
  • Energy hub modelling that balances demand and supply and sizes converters and storages in multi-energy systems using PyEHub.

Modules are accessible by:

  • Using interactive tools in the online portal.
  • Using Jupyter Notebooks within the portal, giving ease of use for non-programmers.
  • pip installing the open-source Python repositories to run locally, accessed via the API.

The main technologies that underpin the platform are:

  • Jupyter Hub to run a notebook server for each user who logs in.
  • Docker to make sure these notebooks run independently.
  • to make notebooks publically accessible, which are embedded as public tutorials.

Example Notebooks

These are examples of the many notebooks that are available on the BESOS platform.

They open on MyBinder, where you can edit and run them but not save them.

MyBinder might take a while to load, please be patient.

Surrogate Modelling


Energy Hub Modelling

Data Analysis


About us

The BESOS platform is developed by the Energy in Cities group at the University of Victoria in beautiful British Columbia, Canada.

The group is led by Dr. Ralph Evins.

Contact us

  • You can tell us about specific things on GitLab by raising issues in the repositories (BESOS, PyEHub).
  • Add to the ‘how-to’ documentation by editing the wiki pages for each repository (BESOS, PyEHub).
  • Contact the development team by emailing

Key users

We are working with the following research teams to develop specific components and case studies:


Getting started

Choose the way you want to use BESOS:

  • Interactive tools in the online portal (recommended for non-programmers).
  • Jupyter Notebooks directly (recommended for everyone from novice to advanced programmers).
  • As open-source Python code in a repository (if you need to work locally or in a specific environment).
  • In the future we will also offer APIs to the modules running on ComputeCanada hardware.

Finding more info

  • There are wiki pages for BESOS and PyEHub that have overview and FAQ sections.
  • There are also Read the Docs sites for BESOS and PyEHub to get details of specific classes.