File Exchange

image thumbnail

EnergyPlus Co-simulation Toolbox

version (71.5 MB) by Jiri Dostal
Co-simulation of EnergyPlus models in Matlab/Simulink.


Updated 30 Apr 2019

GitHub view license on GitHub

The toolbox facilitates simultaneous simulation of EnergyPlus and Matlab (co-simulation). The main component is the mlep class containing all the necessary tools to configure and run EnergyPlus co-simulation within the Matlab environment.

System Requirements
* Windows. The toolbox has only been tested for Windows, but considerable preparations for other OS has already been done.
* EnergyPlus installed. You can obtain the software here If you install the EnergyPlus to the default location ('C:\EnergyPlusVx-x-x') then it might be detected automatically by the toolbox.

* Download and install the toolbox binary from or Mathworks FileExchange.

The toolbox contains:

* Parsing of the IDF file to determine co-simulation inputs/outputs.
* Automatic socket communication configuration (on localhost).
* Background start of the EnergyPlus process with an output to the Matlab command line.
* System Object implementation usable in Matlab & Simulink.
* Bus input/output integration for easy Simulink model setup.

See the GettingStarted.mlx guide delivered with the Matlab toolbox or the documentation residing under Help -> Supplemental Software -> EnergyPlus co-simulation toolbox

Copyright (C) 2018, Jiri Dostal (
All rights reserved.

This software builds on the free software by Truong Nghiem(, Willy Bernal ( and several other third-party open-source tools.

Cite As

Jiri Dostal (2019). EnergyPlus Co-simulation Toolbox (, GitHub. Retrieved .

Comments and Ratings (6)

Rui Guo

Jiri Dostal

@PaulaVanDenBrom I haven't found myself in such a need so far. Do you need to co-simulate multiple buildings simultaneously? With my only limited knowledge of parallelization, I don't find an extension for parfor trivial. What about having multiple buildings side-by-side in Simulink? I haven't tested this yet, to be honest, but that is one feature I'd like to work! So, be sure to let me know. EnergyPlus simulation is running in a separate OS process. Simulation of several buildings would result in several EnergyPlus processes. And the OS is responsible for loading multiple computation cores (how it does that? I don't have the slightest idea).

Is it possible to convert this code into a parfor loop?

Jiri Rehor


* minor bug in ExternalInterface:Actuator & ExternalInterface:Variable. Working now as intended.


* updated examples to EnergyPlus version 9.1.0
* disabled IDF simulation with mismatching EnergyPlus version.
* updated simulink models to Matlab r18b. It can still be simulated by older Matlab (enable this in Simulink preferences).
* minor fixes

* corrected a bug in the setup routine. Made first time use through Simulink end in a neverending loop.
* extended communication timeouts to accommodate for larger EP simulations


Added better documentation


### Added
* Load and Save routines.

### Changed
* Bus objects are now loading in the Init function callback. It should solve
the '_Missing Bus objects_' issues.
* Optimized IDF file parsing speed.
* Initialization no longer triggered fro

* compatibility issues in r18b

forgot to add the update binary


* using Matlab's internal JRE instead of searching for external one.


* Bus objects now support signal names longer than 63 characters.
* Simulation and initialization are now considerably faster.
* A Vector to Bus block added.
* Browse buttons in the Simulink block mask.


Adding the binary to the repository code. Hopefully, the Matlab Add-on Explorer will detect it now.


Adding further info. Mainly for manual toolbox installation (The binary is obtainable at GitHub)

MATLAB Release Compatibility
Created with R2018a
Compatible with R2017a to any release
Platform Compatibility
Windows macOS Linux

Discover Live Editor

Create scripts with code, output, and formatted text in a single executable document.

Learn About Live Editor