Skip to content

dos-group/vessim

Repository files navigation

Vessim Logo

Vessim is a co-simulation testbed for microgrids*

Vessim lets you model how loads, (renewable) generation, energy storage, and the public grid interact, and test control and dispatch strategies against them, in pure simulation or with real software and hardware in the loop.

*By "microgrid" we mean any local energy system that combines loads, generation, and storage behind a grid connection. Grids can scale from small battery-constrained systems to a GW-scale datacenter campus.

Check out the website and documentation!

What can I do with Vessim?

Vessim helps you understand and optimize how loads, energy sources, and storage interact. It was originally designed for energy-aware and carbon-aware data centers, but has also been used for other use cases such as battery price arbitrage and demand response for cooling warehouses.

  • Control and dispatch strategies: Test battery charging/discharging, load-shifting, and price- or carbon-driven dispatch.
  • Demand response and power outages: Simulate demand response signals or power outages to understand your system's flexibility and test mitigation strategies.
  • Microgrid composition: Experiment with adding solar panels, wind turbines, or batteries to see how they would affect your energy costs and carbon emissions.
  • Energy- and carbon-aware computing: Develop applications that adapt their energy consumption to the carbon intensity and price of electricity.

Vessim can simulate multiple distributed microgrids in parallel and easily integrates historical datasets and new simulators. Vessim’s software-in-the-loop capabilities let you run real systems against simulated microgrids. Connect live data sources like Prometheus and interact through REST APIs.

Simple Example

The scenario below simulates a microgrid with a computing system drawing 700W, a solar panel, and a 1.5 kWh battery.

import vessim as vs

environment = vs.Environment(sim_start="2022-06-09", step_size=300)

environment.add_microgrid(
    name="datacenter",
    actors=[
        vs.Actor(name="server", signal=vs.StaticSignal(value=700), consumer=True),
        vs.Actor(name="solar_panel", signal=vs.Trace.from_csv(
            "datasets/solar_example.csv", column="Berlin", scale=5000
        )),
    ],
    dispatchables=[
        vs.SimpleBattery(name="battery", capacity=1500, initial_soc=0.8, min_soc=0.3)
    ],
)

environment.add_controller(vs.CsvLogger("results/my_experiment"))
environment.run(until=24 * 3600)

Check out the Getting Started walkthrough and examples/ for software-in-the-loop simulations.

Installation

You can install the latest release of Vessim via pip:

pip install vessim

If you require software-in-the-loop capabilities, install the sil extension:

pip install vessim[sil]

Publications

If you use Vessim in your research, please cite our paper:

For details in Vessim's software-in-the-loop simulation methodology, refer to:

For more related papers and concrete use cases, please refer to the documentation.

About

A co-simulation testbed for microgrids and energy-aware systems 🍃

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors