StorageSystemsSimulations.jl

Overview

StorageSimulations.jl is a PowerSimulations.jl extension to support formulations and models related to energy storage.

An Operational Storage Model can have multiple combinations of different restrictions. For instance, it might be relevant to a study to consider cycling limits or employ energy targets coming from a planning model. To manage all these variations StorageSimulations.jl heavily uses the DeviceModel attributes feature.

For example, the formulation StorageDispatchWithReserves can be parametrized as follows:

DeviceModel(
    StorageType, # E.g. EnergyReservoirStorage
    StorageDispatchWithReserves;
    attributes=Dict(
        "reservation" => true,
        "cycling_limits" => false,
        "energy_target" => false,
        "complete_coverage" => false,
        "regularization" => true,
    ),
    use_slacks=false,
)

Each formulation can have different implementations for these attributes and the details can be found in the Formulation Library section in the documentation.

Installation

The latest stable release of PowerSimulations can be installed using the Julia package manager with

(@v1.10) pkg> add PowerSimulations StorageSystemsSimulations

For the current development version, "checkout" this package with

(@v1.10) pkg> add PowerSimulations StorageSystemsSimulations#main

An appropriate optimization solver is required for running StorageSystemsSimulations models. Refer to JuMP.jl solver's page to select the most appropriate for the application of interest.

StorageSystemsSimulations has been developed as part of the Scalable Integrated Infrastructure Planning (SIIP) initiative at the U.S. Department of Energy's National Renewable Energy Laboratory (NREL).