Skip to main content

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.

Metadata

Release files for vessim 0.15.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vessim 0.15.1
File Size Uploaded
vessim-0.15.1.tar.gz 33.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for vessim 0.15.1
File Interpreter ABI Platform
vessim-0.15.1-py3-none-any.whl Python 3 none any Details

Total release size: 33.6 MB

Release files / vessim-0.15.1.tar.gz

Download URL vessim-0.15.1.tar.gz
Size 33.3 MB
Tags Source
SHA-256 checksum
How to use checksums
5826f0b93e96809fdffba8308689ac8c5079d7d93da058322af23997c85ba14d
BLAKE2b-256 checksum
How to use checksums
865c0b6d9cba43d1a44e540dc82e880d0cc6d4d12a18267e4e599787429d4100
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / vessim-0.15.1-py3-none-any.whl

Download URL vessim-0.15.1-py3-none-any.whl
Size 314.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b8d53aa9b590d31eeef72afaa29063f3a5a969cd74f65f8fddbbf76b3cdc3128
BLAKE2b-256 checksum
How to use checksums
7e1f342d2a00e097cdaefc5bde0a5869b36e8bebfccf4a67e3416a693f3816ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page