# Aggiungere curve di controllo dei giacimenti e risparmiare sulla domanda (riduzioni)

## Introduzione

Le curve di controllo possono essere utilizzate per implementare una riduzione della domanda quando i livelli dei giacimenti scendono al di sotto di determinate soglie. Ciò rappresenta l'implementazione di misure temporanee di gestione della domanda. In questo esercizio la domanda verrà ridotta in modo incrementale man mano che il serbatoio scende al di sotto di determinate soglie di stoccaggio. Questo esercizio dimostrerà il[ Parametro dell'indice della curva di controllo](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/control-curve-index-parameter), il [Parametro dell'array indicizzato](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/indexed-array-parameter) così come il [Parametro aggregato](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/aggregated-parameter) così come l'annidamento dei parametri.

## Clona lo scenario e definisci una curva di controllo

1. Clona il **«Fonti bilanciate»** scenario e dai un nome a quello nuovo **«Riduzioni della domanda»**
2. Per prima cosa definiremo un **curva di controllo** che utilizza soglie di volume di archiviazione per ridurre progressivamente la domanda per modellare le restrizioni della domanda imposte a una domanda. La prima curva è una [Profilo mensile](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/monthly-profile) (60% nei mesi a venire e 45% negli altri) tenendo conto dei cambiamenti stagionali mentre le due curve successive sono [Costanti ](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/constant)(40% e 10% della capacità di stoccaggio del serbatoio).

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-bab33ad7f70504b7d4b9907dafe5514e0c33554e%2Fimage%20(191).png?alt=media" alt=""><figcaption><p>Curva di controllo del serbatoio</p></figcaption></figure>

La curva di controllo sarà definita nel **Parametri** scheda. Nella scheda Parametri aggiungere un **Pywr\_Parametro**.

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

Assegna un nome al parametro **'curva di controllo dello stoccaggio'** e premere *Entra*\*\*. \*\*

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

Incolla il seguente frammento di codice JSON qui sotto. Nota come si fa riferimento al `"Example reservoir"` nell'attributo \`"storage\_node"\`\`.

```
{
	«type»: «controlcurveindexparameter»,
	«storage_node»: «Esempio di serbatoio»,
	«curve_controllo»: [
		{
			«type»: «parametro del profilo mensile»,
			«valori»: [
				0.45,
				0.45,
				0.45,
				0.45,
				0.45,
				0.45,
				0.45,
				0.45,
				0.45,
				0.45,
				0.6,
				0.6
			]
		},
		{
			«type»: «costante»,
			«valore»: 0.4
		},
		{
			«type»: «costante»,
			«valore»: 0.1
		}
	],
	«__registratore__«: {
		«timeseries»: vero
	}
}
```

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-42ee8ff4ed1b7b6c3dc4e943726ea65d1befd08d%2Fimage%20(195).png?alt=media" alt=""><figcaption><p>Incolla il codice e salva</p></figcaption></figure>

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-4eb5c41ff93c5840dd10420159803fe8b1d4116b%2Fimage%20(196).png?alt=media" alt=""><figcaption><p>Seleziona le serie temporali di registrazione e salva</p></figcaption></figure>

Ad ogni passo temporale il [Parametro dell'indice della curva di controllo](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/control-curve-index-parameter) restituirà un valore di indice come mostrato di seguito:

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-fc738783e2f74cd69c55e9b1b15d843780a3d843%2Fimage%20(197).png?alt=media" alt=""><figcaption><p>Curva di controllo del serbatoio</p></figcaption></figure>

Questi indici possono essere associati a un fattore di domanda che verrà definito utilizzando un [Parametro dell'array indicizzato](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/indexed-array-parameter). Il fattore di domanda verrà utilizzato per ridurre la domanda quando viene superata ogni soglia della curva di controllo.

## Fattore di domanda associato

1. Assoceremo quanto segue **Fattori di domanda** ai diversi livelli di errore della curva di controllo:

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-8489f0840b3bfaa29119f4cd3fcc7deb4abd7ada%2Fimage%20(198).png?alt=media" alt=""><figcaption><p>Curva di controllo del serbatoio</p></figcaption></figure>

Questi ridurranno la domanda a 90%, 80% e 50% della domanda di base corrispondente a 10%, 20% e 50% e 50%.

2. Crea un nuovo **Pywr\_Parametro**

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

3. Assegna un nome al parametro **'fattore di domanda della curva di controllo'** e premere *Entra*\*\*. \*\*

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-97b9e167ecc5f41e7688b436c790b39682aaab9c%2Fimage%20(200).png?alt=media" alt="" width="275"><figcaption><p>Assegna un nome al parametro</p></figcaption></figure>

4. Incolla il seguente frammento di codice JSON qui sotto. Nota come si fa riferimento alla `"`curva di controllo dello storage» nell'attributo `"index_parameter"`.

```
{
	«tipo»: «indexedarrayparameter»,
	«index_parameter»: «curva di controllo dello storage»,
	«parametri»: [
		1,
		0.9,
		0.8,
		0.5
	],
}
```

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-451786a7db32c504bb4bba194e5746d22b15ad62%2Fimage%20(201).png?alt=media" alt=""><figcaption><p>Incolla il codice e salva</p></figcaption></figure>

L'attributo `params`accetta scalari o parametri Pywr e l'indice dell'array corrisponde all'indice nel parametro a cui si fa riferimento nel **indice\_parametro** che in questo caso è la curva di controllo.

5. Selezionate per rendere l'output di questo parametro.

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-2f2e7d710387239023de9428b6a61cfa2f75878f%2Fimage%20(202).png?alt=media" alt=""><figcaption><p>Seleziona le serie temporali di registrazione e salva</p></figcaption></figure>

## Definire la domanda di base

Successivamente definiremo la domanda di base. Questa è la domanda che il serbatoio ha prima che vengano attuate eventuali riduzioni. Nel tutorial precedente, la richiesta di esempio è definita come uno scalare (0.1) sull'attributo Max\ \_flow del nodo di output della domanda di esempio:

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

Lo sostituiremo con un **Riferimento ai parametri.**

1. Innanzitutto, definiremo la domanda di base utilizzando a **Parametro costante.**

Aggiungi un nuovo \*\*Pywr\_parametro. \*\*

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-0c291e642a757a907c2ea16af661dd15eafdbad0%2Fimage%20(205).png?alt=media" alt=""><figcaption><p>Aggiungi un nuovo PyWR_Parameter</p></figcaption></figure>

E chiamalo **Domanda di base** e premere *Entra*.

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-78fb7b4320fe5da19fbd92672fdb7e3d1e6b9230%2Fimage%20(206).png?alt=media" alt="" width="274"><figcaption><p>Assegna un nome al nuovo PyWR_Parameter</p></figcaption></figure>

2. La domanda di base rimarrà 0.1 MM3/giorno. Copia e incolla lo snippet di codice JSON nella scheda JSON.

```
{
	«type»: «costante»,
	«valore»: 0.1
}
```

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-06752aaf2ece009e3264208681d81ec7277e6a18%2Fimage%20(207).png?alt=media" alt=""><figcaption><p>Incolla il codice e salva</p></figcaption></figure>

In ogni fase temporale, la domanda modellata sarà la domanda di base moltiplicata per il fattore di domanda:

`Domanda Timestep = Domanda di base x Fattore di domanda`

## Calcola **richiesta timestep**

Ciò può essere ottenuto utilizzando un [Parametro aggregato](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/aggregated-parameter).

1. Aggiungi un nuovo \*\*Pywr\_parametro. \*\*

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-a8515683ec0d8e08842d11ba9e5e6ac7d441e91b%2Fimage%20(208).png?alt=media" alt=""><figcaption><p>Aggiungi un nuovo PyWR_Parameter</p></figcaption></figure>

Assegna un nome al nuovo parametro **'richiesta timestep'**

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-147d44abcd8b603f3bc1330bac3cc49ae18a4df1%2Fimage%20(209).png?alt=media" alt="" width="274"><figcaption><p>Assegna un nome al nuovo parametro</p></figcaption></figure>

2. Copia e incolla lo snippet di codice JSON nella scheda JSON.

```
{
	«type»: «Parametro aggregato»,
	«agg_func»: «prodotto»,
	«parametri»: [
		«domanda di base»,
		«fattore di domanda della curva di controllo»
	]
}
```

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-e49fd7ce61fad69fb6fce0ced157c706c7588dcb%2Fimage%20(210).png?alt=media" alt=""><figcaption><p>Incolla il codice e salva</p></figcaption></figure>

Seleziona per fare in modo che questo valore del parametro venga emesso in ogni fase temporale.

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-db46ee2926b20e3f8abc8660c25c934ab34316c3%2Fimage%20(211).png?alt=media" alt=""><figcaption><p>Seleziona la registrazione delle serie temporali</p></figcaption></figure>

3. Il **'richiesta timestep'** definisce la domanda in ogni fase temporale tenendo conto dello stato (cioè stoccaggio in tempo reale) nel serbatoio.

Questo **Parametro** deve essere referenziato sul **massimo\_attributo flow** del nodo Demand.

4. Fai clic sul nodo Demand e scrivi o incolla '**«richiesta timestep»** nell'attributo max\ \_flow che sostituisce il valore scalare (0.1).

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-fcd38a4ad69d276e085cbc967620801c4fc3b0b9%2Fimage%20(218).png?alt=media" alt=""><figcaption><p>Inserisci il nome dell'attributo max_flow</p></figcaption></figure>

Nota: se il nome del parametro non viene salvato, cambia il tipo di voce in **«Descrittore»**.

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-dcd39ed02f0f35044135fafab4e27e0715259e14%2Fimage%20(219).png?alt=media" alt=""><figcaption><p>Fai clic su modifica il max_flow</p></figcaption></figure>

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

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

Non dimenticare di salvare le modifiche.

## Esegui il modello e visualizza i risultati

1. **Esegui** il modello.

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-23a397691922fca45756ec6315af0e23b00c4f5b%2Fimage%20(224).png?alt=media" alt="" width="327"><figcaption><p>Fare clic su per eseguire il modello</p></figcaption></figure>

2. Visualizza il **simulato** \ \_volume sul serbatoio

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-66f21a32ee8e19d22c5cae2b0a609b47f221f543%2Fimage%20(216).png?alt=media" alt=""><figcaption><p>_volume simulato sul serbatoio</p></figcaption></figure>

Puoi **ingrandire** nella siccità, ad esempio questa è la siccità avvenuta in 2042-2044.

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-9d1e7382a6ae09faf012f9c873a39d9223fc1740%2Fimage%20(217).png?alt=media" alt=""><figcaption><p>_volume simulato sul serbatoio in 2042-2044</p></figcaption></figure>

Nello scenario con riduzioni della domanda, il serbatoio non è sceso al minimo di stoccaggio (9.4 vs 8.17 Mm3).

3. Fate clic sul\ \_flow simulato del nodo Demand. È possibile visualizzare le riduzioni della domanda.

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-33b30a5ef57b5518c21948184426b0b591369ce4%2Fimage%20(221).png?alt=media" alt=""><figcaption><p>simulated_flow del nodo Demand</p></figcaption></figure>

4. È possibile visualizzare l'output del parametro Control Cure facendo clic su **Dati di rete** vista.

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-f79adfff87cace6450c9fb3870a77359b6a15a5c%2Fimage%20(222).png?alt=media" alt=""><figcaption><p>Fate clic per visualizzare l'output del parametro Control Cure</p></figcaption></figure>

Cliccando su **simulato\_la curva di controllo della memorizzazione** mostra quale indice restituisce la curva di controllo della memorizzazione in ogni fase temporale. Questo varia tra 0-2.

<figure><img src="https://2382307583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBg8BcxZRxPP2vxAwzrhK%2Fuploads%2Fgit-blob-136770d7c8cbd70370bb0e5fedbae3ad1b1154c4%2Fimage%20(223).png?alt=media" alt=""><figcaption><p>Controllo dell'uscita dei parametri di cura</p></figcaption></figure>

## Esercizio <a href="#exercise" id="exercise"></a>

1. Aumentare il parametro della domanda di base. Quanto può essere elevata la domanda di base prima che il serbatoio si svuoti completamente?
