{ "cells": [ { "cell_type": "markdown", "id": "08a21331", "metadata": {}, "source": [ "(reserve_group)=\n", "# reserve_group\n", "Represents a group of generators, pumps, and batteries that collectively serve to fulfill a reserve capacity obligation. SHOP distinguishes between eight different types of reserve capacity products: FCR-N, FCR-D, FRR, and RR in both upward and downward directions.\n", "\n", "| | |\n", "|---|---|\n", "|Input connections|{ref}`generator`, {ref}`pump`, {ref}`market`, {ref}`battery`|\n", "|Output connections|{ref}`generator`, {ref}`pump`, {ref}`battery`, {ref}`market`|\n", "|License|SHOP_RESERVE_GROUP|\n", "|Release version|13.0.0.a|\n", "\n", "```{contents}\n", ":local:\n", ":depth: 1\n", "```\n", "\n", "## Introduction\n", "The reserve_group object is used to optimally distribute reserve capacity among all [generators](generator), [pumps](pump), and [batteries](battery) that are connected to the reserve_group. The [reserve capacity tutorial](reserves) describes how different types of reserve capacity is modelled in SHOP. The reserve_group is used for mainly two purposes: to specify a fixed reserve capacity obligation to be optimally distributed, and to connect units to a reserve [](market) where reserve capacity can be traded.\n", "\n", "## Distributing a reserve obligation\n", "The simplest use for a reserve_group is for optimal distribution of a reserve obligation among a set of eligible generators, pumps, and batteries. The reserve obligation is specified on the reserve_group, and is specific to a type of reserve capacity such as the [fcr_n_up_obligation](reserve_group:fcr_n_up_obligation). Several different types of reserve capacity obligations can be specified on the same reserve_group, but it is recommended to create separate reserve_groups for different reserve types. The units that are connected to the reserve_group will be able to deliver reserve capacity of the types that are specified in the obligation(s), and the sum of the reserve capacity allocated on the different units must meet the obligation to avoid taking a penalty. The [reserve allocation example](reserve-example) shows how several generators cooperate to cover the reserve obligations specified in the reserve_groups.\n", "\n", "## Reserve capacity markets\n", "It is possible to create a reserve capacity market by connecting a reserve_group to a market object and setting the [market_type](market:market_type) of the market to be a reserve type, such as FRR_UP. The units connected to the reserve_group can now participate in the reserve market by selling reserve capacity to earn the [sale_price](market:sale_price), as long as the market depth [max_sale](market:max_sale) is set larger than zero. Note that reserve capacity also can be bought in the market if [max_buy](market:max_buy) is larger than zero. Any reserve obligation on the reserve_group will be handled as a load in the market, which means that the obligation must be covered before additional capacity can be sold.\n", "\n", "## Examples\n", " - [](reserves)\n", " - [](reserve-example)\n", " - [](reserve-market-example)\n", " - [](battery_reserves)\n", " - [](plant-reserve-strategy)\n", " \n", "\n", "## References\n", " - Opportunity-cost-pricing of reserves for a simple hydropower system {cite}`Aasgard2016a`\n", " - Operational hydropower scheduling with post-spot distribution of reserve obligations {cite}`Kong2017`\n", " - Accounting for reserve capacity activation when scheduling a hydropower dominated system {cite}`Naversen2020b`\n", " - Operational use of marginal cost curves for hydropower plants as decision support in real-time balancing markets {cite}`Skjelbred2017a`\n", " - Coordinated hydropower bidding in the day-ahead and balancing market {cite}`Aasgard2019a`\n", " - Hydropower bidding in a multi-market setting {cite}`Aasgard2019b`\n", " - The value of coordinated hydropower bidding in the Nordic day-ahead and balancing market {cite}`Aasgard2022`\n", " \n", "\n", "## Attributes" ] }, { "cell_type": "code", "execution_count": 1, "id": "22d55143", "metadata": { "tags": [ "remove-input", "full-width" ] }, "outputs": [ { "data": { "text/html": [ "