# Adição de curvas de controle de reservatórios e economia de demanda (reduções)

## Introdução

As curvas de controle podem ser usadas para implementar reduções de demanda quando os níveis do reservatório caem abaixo de certos limites. Isso representa a implementação de medidas temporárias de gerenciamento de demanda. Neste exercício, a demanda será reduzida incrementalmente à medida que o reservatório ficar abaixo de certos limites de armazenamento. Este exercício demonstrará o[ Parâmetro do índice da curva de controle](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/control-curve-index-parameter), a [Parâmetro de matriz indexada](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/indexed-array-parameter) bem como o [Parâmetro agregado](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/aggregated-parameter) bem como aninhamento de parâmetros.

## Clone o cenário e defina uma curva de controle

1. Clonar o **“Fontes equilibradas”** cenário e nomeie o novo **'Reduções de demanda'**
2. Primeiro, definiremos um **curva de controle** que usa limites de volume de armazenamento para reduzir progressivamente a demanda para modelar as restrições de demanda impostas a uma demanda. A primeira curva é uma [Perfil mensal](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/monthly-profile) (60% nos próximos meses e 45% nos outros) permitindo mudanças sazonais enquanto as duas curvas subsequentes são [Constantes ](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/constant)(40% e 10% da capacidade de armazenamento do reservatório).

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-bab33ad7f70504b7d4b9907dafe5514e0c33554e%2Fimage%20(191).png?alt=media" alt=""><figcaption><p>Curva de controle do reservatório</p></figcaption></figure>

A curva de controle será definida no **Parâmetros** aba. Na guia Parâmetros, adicione um **Pier\_Parâmetro**.

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-44c6302ba7ffee95819750da0697a1870493f81d%2Fimage%20(192).png?alt=media" alt="" width="375"><figcaption><p>Adicionar um Pywr_Parameter</p></figcaption></figure>

Nomeie o parâmetro **'curva de controle de armazenamento'** e pressione _Entrar_\*\*. \*\*

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-e627f0872fd82c2f1dc8d8a4f20da3a6a2889484%2Fimage%20(194).png?alt=media" alt="" width="335"><figcaption><p><strong>curva de controle de armazenamento</strong></p></figcaption></figure>

Cole o seguinte trecho de código JSON abaixo. Observe como o `"Exemplo de reservatório”` é referenciado no atributo `"storage_node"`.

```
{
	“tipo”: “parâmetro de índice da curva de controle”,
	“storage_node”: “Exemplo de reservatório”,
	“curvas_de_controle”: [
		{
			“type”: “parâmetro mensal do perfil”,
			“valores”: [
				0.45,
				0.45,
				0.45,
				0.45,
				0.45,
				0.45,
				0.45,
				0.45,
				0.45,
				0.45,
				0.6,
				0.6
			]
		},
		{
			“tipo”: “constante”,
			“valor”: 0.4
		},
		{
			“tipo”: “constante”,
			“valor”: 0.1
		}
	],
	“__gravador__“: {
		“série temporal”: verdadeiro
	}
}
```

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-42ee8ff4ed1b7b6c3dc4e943726ea65d1befd08d%2Fimage%20(195).png?alt=media" alt=""><figcaption><p>Cole o código e salve</p></figcaption></figure>

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-4eb5c41ff93c5840dd10420159803fe8b1d4116b%2Fimage%20(196).png?alt=media" alt=""><figcaption><p>Selecione a série temporal de gravação e salve</p></figcaption></figure>

A cada vez, pise o [Parâmetro do índice da curva de controle](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/control-curve-index-parameter) retornará um valor de índice conforme mostrado abaixo:

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-fc738783e2f74cd69c55e9b1b15d843780a3d843%2Fimage%20(197).png?alt=media" alt=""><figcaption><p>Curva de controle do reservatório</p></figcaption></figure>

Esses índices podem ser associados a um fator de demanda que será definido usando um [Parâmetro de matriz indexada](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/indexed-array-parameter). O fator de demanda será usado para reduzir a demanda quando cada limite da curva de controle for ultrapassado.

## Fator de demanda associado

1. Associaremos o seguinte **Fatores de demanda** aos diferentes níveis de falha da curva de controle:

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-8489f0840b3bfaa29119f4cd3fcc7deb4abd7ada%2Fimage%20(198).png?alt=media" alt=""><figcaption><p>Curva de controle do reservatório</p></figcaption></figure>

Isso reduzirá a demanda para 90%, 80% e 50% da demanda básica correspondente a 10%, 20% e 50% de reduções de demanda.

2. Crie um novo **Pier\_Parâmetro**

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-817a2e1e358d8a48920b79b6f0ef0dd4d57eabe4%2Fimage%20(199).png?alt=media" alt=""><figcaption><p>Crie um novo Pywr_Parameter</p></figcaption></figure>

3. Nomeie o parâmetro **'fator de demanda da curva de controle'** e pressione _Entrar_\*\*. \*\*

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-97b9e167ecc5f41e7688b436c790b39682aaab9c%2Fimage%20(200).png?alt=media" alt="" width="275"><figcaption><p>Nomeie o parâmetro</p></figcaption></figure>

4. Cole o seguinte trecho de código JSON abaixo. Observe como a `"`curva de controle"`de armazenamento é referenciada no atributo`"index\_parameter"\`.

```
{
	“tipo”: “indexedarrayparameter”,
	“index_parameter”: “curva de controle de armazenamento”,
	“parâmetros”: [
		1,
		0.9,
		0.8,
		0.5
	],
}
```

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-451786a7db32c504bb4bba194e5746d22b15ad62%2Fimage%20(201).png?alt=media" alt=""><figcaption><p>Cole o código e salve</p></figcaption></figure>

O atributo `Params`aceita parâmetros escalares ou Pywr e o índice da matriz corresponde ao índice no parâmetro referenciado no **índice\_parameter** que neste caso é a curva de controle.

5. Selecione para fazer com que esse parâmetro seja exibido.

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-2f2e7d710387239023de9428b6a61cfa2f75878f%2Fimage%20(202).png?alt=media" alt=""><figcaption><p>Selecione a série temporal de gravação e salve</p></figcaption></figure>

## Defina a demanda básica

A seguir, definiremos a demanda básica. Essa é a demanda que o reservatório tem antes que qualquer redução seja implementada. No tutorial anterior, a demanda de exemplo é definida como um escalar (0.1) no atributo Max\ \_flow do nó de saída de demanda de exemplo:

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-dd735af992eccbc5c107e27897cc6accb493b186%2Fimage%20(203).png?alt=media" alt=""><figcaption><p>Exemplo de demanda</p></figcaption></figure>

Vamos substituir isso por um **Referência de parâmetros.**

1. Primeiro, definiremos a demanda básica usando um **Parâmetro constante.**

Adicionar um novo \*\*Pier\_parâmetro. \*\*

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-0c291e642a757a907c2ea16af661dd15eafdbad0%2Fimage%20(205).png?alt=media" alt=""><figcaption><p>Adicionar um novo Pywr_Parameter</p></figcaption></figure>

E dê um nome **Demanda básica** e pressione _Entrar_.

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-78fb7b4320fe5da19fbd92672fdb7e3d1e6b9230%2Fimage%20(206).png?alt=media" alt="" width="274"><figcaption><p>Nomeie o novo Pywr_Parameter</p></figcaption></figure>

2. A demanda básica permanecerá 0.1 MM3/dia. Copie e cole o trecho de código JSON na guia JSON.

```
{
	“tipo”: “constante”,
	“valor”: 0.1
}
```

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-06752aaf2ece009e3264208681d81ec7277e6a18%2Fimage%20(207).png?alt=media" alt=""><figcaption><p>Cole o código e salve</p></figcaption></figure>

Em cada etapa de tempo, a demanda modelada será a demanda básica multiplicada pelo fator de demanda:

`Demanda por intervalo de tempo = demanda básica x fator de demanda`

## Calcular **demanda por etapas de tempo**

Isso pode ser feito usando um [Parâmetro agregado](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/aggregated-parameter).

1. Adicionar um novo \*\*Pier\_parâmetro. \*\*

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-a8515683ec0d8e08842d11ba9e5e6ac7d441e91b%2Fimage%20(208).png?alt=media" alt=""><figcaption><p>Adicionar um novo Pywr_Parameter</p></figcaption></figure>

Nomeie o novo parâmetro **'demanda por intervalo de tempo'**

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-147d44abcd8b603f3bc1330bac3cc49ae18a4df1%2Fimage%20(209).png?alt=media" alt="" width="274"><figcaption><p>Nomeie o novo parâmetro</p></figcaption></figure>

2. Copie e cole o trecho de código JSON na guia JSON.

```
{
	“tipo”: “Parâmetro agregado”,
	“agg_func”: “produto”,
	“parâmetros”: [
		“demanda básica”,
		“fator de demanda da curva de controle”
	]
}
```

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-e49fd7ce61fad69fb6fce0ced157c706c7588dcb%2Fimage%20(210).png?alt=media" alt=""><figcaption><p>Cole o código e salve</p></figcaption></figure>

Selecione para fazer com que esse valor de parâmetro seja gerado em cada etapa de tempo.

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-db46ee2926b20e3f8abc8660c25c934ab34316c3%2Fimage%20(211).png?alt=media" alt=""><figcaption><p>Selecione a gravação da série temporal</p></figcaption></figure>

3. O **'demanda por intervalo de tempo'** define a demanda em cada etapa de tempo levando em consideração o estado (ou seja, armazenamento em tempo real) no reservatório.

Isso **Parâmetro** precisa ser referenciado no **máximo\_atributo flow** do nó Demand.

4. Clique no nó Demanda e escreva ou cole '**demanda de etapa de tempo”** no atributo max\ \_flow substituindo o valor escalar (0.1).

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-fcd38a4ad69d276e085cbc967620801c4fc3b0b9%2Fimage%20(218).png?alt=media" alt=""><figcaption><p>Insira o nome do atributo max_flow</p></figcaption></figure>

Observe que, se o nome do parâmetro não for salvo, altere o tipo da entrada para **“Descritor”**.

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-dcd39ed02f0f35044135fafab4e27e0715259e14%2Fimage%20(219).png?alt=media" alt=""><figcaption><p>Clique em editar o max_flow</p></figcaption></figure>

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-70bfdd4ca9a1916eff474c5415eae2188f6eaf67%2Fimage%20(214).png?alt=media" alt=""><figcaption><p>Selecione DESCRITOR</p></figcaption></figure>

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-936b7cc452ca4bf346309e98c2770b9be16e7f98%2Fimage%20(220).png?alt=media" alt=""><figcaption><p>Digite o nome</p></figcaption></figure>

Não se esqueça de salvar as alterações.

## Execute o modelo e veja os resultados

1. **Corra** o modelo.

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-23a397691922fca45756ec6315af0e23b00c4f5b%2Fimage%20(224).png?alt=media" alt="" width="327"><figcaption><p>Clique em para executar o modelo</p></figcaption></figure>

2. Veja o **simulado** \ \_volume no reservatório

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-66f21a32ee8e19d22c5cae2b0a609b47f221f543%2Fimage%20(216).png?alt=media" alt=""><figcaption><p>_volume simulado no reservatório</p></figcaption></figure>

Você pode **zoom** na seca, por exemplo, esta é a seca que ocorreu em 2042-2044.

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-9d1e7382a6ae09faf012f9c873a39d9223fc1740%2Fimage%20(217).png?alt=media" alt=""><figcaption><p>_volume simulado no reservatório em 2042-2044</p></figcaption></figure>

No cenário com reduções de demanda, o reservatório não teve um armazenamento tão baixo (9.4 vs 8.17 Mm3).

3. Clique no fluxo\ \_flow simulado do nó Demand. As reduções da demanda podem ser vistas.

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-33b30a5ef57b5518c21948184426b0b591369ce4%2Fimage%20(221).png?alt=media" alt=""><figcaption><p>fluxo_simulado do nó de demanda</p></figcaption></figure>

4. Você pode visualizar a saída do parâmetro de cura de controle clicando no **Dados de rede** vista.

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-f79adfff87cace6450c9fb3870a77359b6a15a5c%2Fimage%20(222).png?alt=media" alt=""><figcaption><p>Clique para visualizar a saída do parâmetro de cura de controle</p></figcaption></figure>

Clicando em **simulado\_a curva de controle de armazenamento** mostra qual índice a curva de controle de armazenamento está retornando em cada etapa de tempo. Isso varia entre 0-2.

<figure><img src="https://2780811623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft4nCBOybr5foLIqkmwa6%2Fuploads%2Fgit-blob-136770d7c8cbd70370bb0e5fedbae3ad1b1154c4%2Fimage%20(223).png?alt=media" alt=""><figcaption><p>Saída do parâmetro de cura de controle</p></figcaption></figure>

## Exercício <a href="#exercise" id="exercise"></a>

1. Aumente o parâmetro de demanda da linha de base. Qual pode ser a demanda básica antes que o reservatório se esvazie totalmente?
