Skip to content

RMI/dispatch

Repository files navigation

Dispatch: A simple and efficient electricity dispatch model

Tox-PyTest Status

GitHub Pages Status

image

Any color you want, so long as it's black.

Ruff

Description

Dispatch is a hugely simplified production cost model. It takes in a portfolio of dispatchable, fixed-output and storage resources and asks, how can these resources be dispatched to meet [net] load? And how much would it cost?

It contains no optimization, security constraints, or formal unit commitment. It attempts a loose approximation of a production cost model by applying the following procedure in each hour:

  1. Augment or diminish load to be met by operating dispatchable plants based on state of charge relative to storage reserve. The storage reserve can be dynamically set each hour based on ramping requirements over the next 24 hours.
  2. Iterate through operating dispatchable plants in order of their marginal cost and adjust their output to meet load, limited by their ramp rate.
  3. If there is excess energy from renewables, use it to charge storage. If there is still unmet load, discharge storage but holding some in state of charge in reserve.
  4. If there is still unmet load, iterate through non-operating plants in order of their start-up cost and turn them on if they are needed to meet load, limited by their ramp rate.
  5. If there is still unmet load, use any reserve state of charge to meet load.

For more information about how the model works and how to use it, please see the model documentation.

Installation

Dispatch can be installed and used in it's own environment or installed into another environment using pip. To install it using pip:

pip install git+https://github.com/rmi/dispatch.git

Or from the dev branch:

pip install git+https://github.com/rmi/dispatch.git@dev

To create an environment for Dispatch, navigate to the repo folder in terminal and run:

mamba update mamba
mamba env create --name dispatch --file environment.yml

If you get a CondaValueError that the prefix already exists, that means an environment with the same name already exists. You must remove the old one before creating the new one:

mamba update mamba
mamba env remove --name dispatch
mamba env create --name dispatch --file environment.yml