# Добавление кривых управления резервуарами и экономия (сокращение) спроса

## Введение

Контрольные кривые можно использовать для снижения спроса, когда уровни в резервуарах опускаются ниже определенных пороговых значений. Это означает принятие временных мер по управлению спросом. В ходе этого мероприятия спрос будет постепенно снижаться по мере того, как запасы в водохранилище превышают определенные пороговые значения. В этом упражнении будут продемонстрированы[ Параметр индекса контрольной кривой](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/control-curve-index-parameter), [Параметр индексированного массива](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/indexed-array-parameter) а также [Агрегированный параметр](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/aggregated-parameter) а также вложение параметров.

## Клонируйте сценарий и определите контрольную кривую

1. Клонируйте **«Сбалансированные источники»** сценарий и назовите новый **«Сокращение спроса»**
2. Сначала мы определим **кривая управления** которая использует пороговые значения объема хранения для постепенного снижения спроса в целях моделирования ограничений спроса, налагаемых на спрос. Первая кривая представляет собой [Ежемесячный профиль](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/monthly-profile) (60% в ближайшие месяцы и 45% в другие) с учетом сезонных изменений, в то время как две последующие кривые [константы ](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/constant)(40% и 10% от емкости резервуара).

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-bab33ad7f70504b7d4b9907dafe5514e0c33554e%2Fimage%20(191).png?alt=media" alt=""><figcaption><p>Кривая управления резервуаром</p></figcaption></figure>

Кривая управления будет определена в поле **параметры** вкладка. На вкладке «Параметры» добавьте **Пивр\_Параметр**.

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-44c6302ba7ffee95819750da0697a1870493f81d%2Fimage%20(192).png?alt=media" alt="" width="375"><figcaption><p>Добавьте параметр Pywr_</p></figcaption></figure>

Присвойте параметру имя **«кривая управления хранением»** и нажмите *Введите*\*\*. \*\*

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-e627f0872fd82c2f1dc8d8a4f20da3a6a2889484%2Fimage%20(194).png?alt=media" alt="" width="335"><figcaption><p><strong>кривая управления хранением</strong></p></figcaption></figure>

Вставьте следующий фрагмент кода JSON ниже. Обратите внимание, что ссылка на «Пример резервуара» содержится в атрибуте `"storage_node"`.

```
{
	«тип»: «параметр индекса контрольной кривой»,
	«storage_node»: «Пример резервуара»,
	«контрольные кривые»: [
		{
			«тип»: «ежемесячный параметр профиля»,
			«ценности»: [
				0.45,
				0.45,
				0.45,
				0.45,
				0.45,
				0.45,
				0.45,
				0.45,
				0.45,
				0.45,
				0.6,
				0.6
			]
		},
		{
			«тип»: «константа»,
			«значение»: 0.4
		},
		{
			«тип»: «константа»,
			«значение»: 0.1
		}
	],
	«__регистратор__«: {
		«таймсерия»: правда
	}
}
```

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-42ee8ff4ed1b7b6c3dc4e943726ea65d1befd08d%2Fimage%20(195).png?alt=media" alt=""><figcaption><p>Вставьте код и сохраните</p></figcaption></figure>

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-4eb5c41ff93c5840dd10420159803fe8b1d4116b%2Fimage%20(196).png?alt=media" alt=""><figcaption><p>Выберите таймсерию записи и сохраните</p></figcaption></figure>

Каждый раз делайте шаг [Параметр индекса контрольной кривой](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/control-curve-index-parameter) вернет значение индекса, как показано ниже:

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-fc738783e2f74cd69c55e9b1b15d843780a3d843%2Fimage%20(197).png?alt=media" alt=""><figcaption><p>Кривая управления резервуаром</p></figcaption></figure>

Эти индексы могут быть связаны с фактором спроса, который будет определен с помощью [Параметр индексного массива](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/indexed-array-parameter). Коэффициент спроса будет использоваться для снижения спроса при достижении порогового значения каждой контрольной кривой.

## Ассоциированный фактор спроса

1. Мы свяжем следующее **Факторы спроса** к различным уровням отказов кривой управления:

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-8489f0840b3bfaa29119f4cd3fcc7deb4abd7ada%2Fimage%20(198).png?alt=media" alt=""><figcaption><p>Кривая управления резервуаром</p></figcaption></figure>

Это снизит спрос до **1234567890**%, 80% и 50% от базового спроса, что соответствует сокращению спроса **1234567890**%, 20% и 50%.

2. Создайте новый **Пивр\_Параметр**

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-817a2e1e358d8a48920b79b6f0ef0dd4d57eabe4%2Fimage%20(199).png?alt=media" alt=""><figcaption><p>Создайте новый параметр Pywr_Parameter</p></figcaption></figure>

3. Присвойте параметру имя **«коэффициент спроса на контрольную кривую»** и нажмите *Введите*\*\*. \*\*

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-97b9e167ecc5f41e7688b436c790b39682aaab9c%2Fimage%20(200).png?alt=media" alt="" width="275"><figcaption><p>Присвойте параметру имя</p></figcaption></figure>

4. Вставьте следующий фрагмент кода JSON ниже. Обратите внимание, что в атрибуте «index\_parameter» содержится ссылка на «контрольную кривую» хранилища.

```
{
	«тип»: «indexedarrayparameter»,
	«index_parameter»: «кривая управления хранением»,
	«параметры»: [
		1,
		0.9,
		0.8,
		0.5
	],
}
```

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-451786a7db32c504bb4bba194e5746d22b15ad62%2Fimage%20(201).png?alt=media" alt=""><figcaption><p>Вставьте код и сохраните</p></figcaption></figure>

Атрибут `Params` принимает скаляры или параметры Pywr, а индекс массива соответствует индексу параметра, указанного в поле **индекс\_параметр**, который в данном случае является контрольной кривой.

5. Выберите, чтобы вывести этот параметр.

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-2f2e7d710387239023de9428b6a61cfa2f75878f%2Fimage%20(202).png?alt=media" alt=""><figcaption><p>Выберите таймсерию записи и сохраните</p></figcaption></figure>

## Определите базовый спрос

Далее мы определим базовый спрос. Это спрос на водохранилище до того, как будут произведены какие-либо сокращения. В предыдущем уроке спрос в примере определялся в виде скаляра (0.1) в атрибуте Max\ \_flow в выходном узле Example demand:

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-dd735af992eccbc5c107e27897cc6accb493b186%2Fimage%20(203).png?alt=media" alt=""><figcaption><p>Пример спроса</p></figcaption></figure>

Мы заменим это на **Ссылка на параметр.**

1. Во-первых, мы определим базовый спрос, используя **Постоянный параметр.**

Добавить новое \*\*Пивр\_параметр. \*\*

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-0c291e642a757a907c2ea16af661dd15eafdbad0%2Fimage%20(205).png?alt=media" alt=""><figcaption><p>Добавьте новый параметр PYWR_</p></figcaption></figure>

И назовите его **Базовый спрос** и нажмите *Введите*.

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-78fb7b4320fe5da19fbd92672fdb7e3d1e6b9230%2Fimage%20(206).png?alt=media" alt="" width="274"><figcaption><p>Присвойте новому параметру PYWR_имя</p></figcaption></figure>

2. Базовый спрос сохранится на уровне 0.1 мм3/день. Скопируйте и вставьте фрагмент кода JSON на вкладку JSON.

```
{
	«тип»: «константа»,
	«значение»: 0.1
}
```

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-06752aaf2ece009e3264208681d81ec7277e6a18%2Fimage%20(207).png?alt=media" alt=""><figcaption><p>Вставьте код и сохраните</p></figcaption></figure>

На каждом временном этапе смоделированный спрос будет представлять собой базовый спрос, умноженный на коэффициент спроса:

«Спрос на временной шаг = базовый спрос x фактор спроса»

## Вычислить **спрос на временные рамки**

Это может быть достигнуто с помощью [Агрегированный параметр](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/aggregated-parameter).

1. Добавить новое \*\*Пивр\_параметр. \*\*

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-a8515683ec0d8e08842d11ba9e5e6ac7d441e91b%2Fimage%20(208).png?alt=media" alt=""><figcaption><p>Добавьте новый параметр PYWR_</p></figcaption></figure>

Присвойте новому параметру имя **«спрос на временные шаги»**

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-147d44abcd8b603f3bc1330bac3cc49ae18a4df1%2Fimage%20(209).png?alt=media" alt="" width="274"><figcaption><p>Присвойте новому параметру имя</p></figcaption></figure>

2. Скопируйте и вставьте фрагмент кода JSON на вкладку JSON.

```
{
	«тип»: «Агрегированный параметр»,
	«agg_func»: «продукт»,
	«параметры»: [
		«базовый спрос»,
		«коэффициент спроса на контрольную кривую»
	]
}
```

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-e49fd7ce61fad69fb6fce0ced157c706c7588dcb%2Fimage%20(210).png?alt=media" alt=""><figcaption><p>Вставьте код и сохраните</p></figcaption></figure>

Выберите, чтобы значение этого параметра выводилось на каждом временном шаге.

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-db46ee2926b20e3f8abc8660c25c934ab34316c3%2Fimage%20(211).png?alt=media" alt=""><figcaption><p>Выберите запись временных рядов</p></figcaption></figure>

3. **«спрос на временные шаги»** определяет спрос на каждом временном этапе с учетом состояния резервуара (т.е. хранилища в реальном времени).

Это **Параметр** должна быть указана на **макс\_атрибут flow** узла Demand.

4. Нажмите на узел «Спрос» и напишите или вставьте '**спрос на временные рамки»** в атрибуте max\ \_flow, заменяющем скалярное значение (0.1).

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-fcd38a4ad69d276e085cbc967620801c4fc3b0b9%2Fimage%20(218).png?alt=media" alt=""><figcaption><p>Введите имя атрибута max_flow</p></figcaption></figure>

Обратите внимание, что если имя параметра не сохраняется, измените тип записи на **«Дескриптор»**.

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-dcd39ed02f0f35044135fafab4e27e0715259e14%2Fimage%20(219).png?alt=media" alt=""><figcaption><p>Нажмите на редактирование max_flow</p></figcaption></figure>

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-70bfdd4ca9a1916eff474c5415eae2188f6eaf67%2Fimage%20(214).png?alt=media" alt=""><figcaption><p>Выберите ДЕСКРИПТОР</p></figcaption></figure>

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-936b7cc452ca4bf346309e98c2770b9be16e7f98%2Fimage%20(220).png?alt=media" alt=""><figcaption><p>Введите имя</p></figcaption></figure>

Не забудьте сохранить изменения.

## Запустите модель и просмотрите результаты

1. **Беги** модель.

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-23a397691922fca45756ec6315af0e23b00c4f5b%2Fimage%20(224).png?alt=media" alt="" width="327"><figcaption><p>Нажмите, чтобы запустить модель</p></figcaption></figure>

2. Просмотрите **смоделирован** \ \_объем на водохранилище

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-66f21a32ee8e19d22c5cae2b0a609b47f221f543%2Fimage%20(216).png?alt=media" alt=""><figcaption><p>Смоделированный объем резервуара</p></figcaption></figure>

Вы можете **зум** в засуху, например, это засуха, произошедшая в 2042-2044.

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-9d1e7382a6ae09faf012f9c873a39d9223fc1740%2Fimage%20(217).png?alt=media" alt=""><figcaption><p>Смоделированный объем резервуара в 2042-2044</p></figcaption></figure>

В сценарии, предусматривающем сокращение спроса, запасы запасов в водохранилище снизились не так низко (9.4 против 8.17 Мм3).

3. Нажмите на смоделированный\ \_поток узла Demand. Можно увидеть снижение спроса.

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-33b30a5ef57b5518c21948184426b0b591369ce4%2Fimage%20(221).png?alt=media" alt=""><figcaption><p>simulated_flow узла «Спрос»</p></figcaption></figure>

4. Вы можете просмотреть выходные данные параметра контрольного отверждения, нажав на **Сетевые данные** вид.

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-f79adfff87cace6450c9fb3870a77359b6a15a5c%2Fimage%20(222).png?alt=media" alt=""><figcaption><p>Нажмите, чтобы просмотреть выходные данные параметра контрольного отверждения</p></figcaption></figure>

Нажав на **смоделировано\_кривая управления хранением** показывает, какой индекс возвращает кривая управления хранением на каждом временном шаге. Это значение варьируется от 0 до 2.

<figure><img src="https://3817892601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn9Lkjv9vPu8czwmW2MeG%2Fuploads%2Fgit-blob-136770d7c8cbd70370bb0e5fedbae3ad1b1154c4%2Fimage%20(223).png?alt=media" alt=""><figcaption><p>Вывод параметров контрольного отверждения</p></figcaption></figure>

## Упражнение <a href="#exercise" id="exercise"></a>

1. Увеличьте базовый параметр спроса. Насколько высоким может быть базовый спрос до полного опорожнения резервуара?
