# Ajout de courbes de régulation des réservoirs et économies de demande (réductions)

## Présentation

Les courbes de contrôle peuvent être utilisées pour mettre en œuvre une réduction de la demande lorsque le niveau des réservoirs est inférieur à certains seuils. Cela représente la mise en œuvre de mesures temporaires de gestion de la demande. Dans le cadre de cet exercice, la demande sera progressivement réduite à mesure que le réservoir passera en dessous de certains seuils de stockage. Cet exercice démontrera[ Paramètre d'indice de courbe de contrôle](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/control-curve-index-parameter), le [Paramètre de tableau indexé](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/indexed-array-parameter) ainsi que [Paramètre agrégé](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/aggregated-parameter) ainsi que l'imbrication des paramètres.

## Clonez le scénario et définissez une courbe de contrôle

1. Clonez le **« Sources équilibrées »** scénario et nommez le nouveau **« Réductions de la demande »**
2. Nous allons d'abord définir un **courbe de contrôle** qui utilise des seuils de volume de stockage pour réduire progressivement la demande afin de modéliser les restrictions de demande imposées à une demande. La première courbe est une [Profil mensuel](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/monthly-profile) (60% dans les mois à venir et 45% dans les autres) en tenant compte des variations saisonnières tandis que les deux courbes suivantes sont [Constantes ](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/constant)(40% et 10% de la capacité de stockage du réservoir).

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-bab33ad7f70504b7d4b9907dafe5514e0c33554e%2Fimage%20(191).png?alt=media" alt=""><figcaption><p>Courbe de contrôle du réservoir</p></figcaption></figure>

La courbe de contrôle sera définie dans **Paramètres** onglet. Dans l'onglet Paramètres, ajoutez **Pyr \_Paramètre**.

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

Nommez le paramètre **« courbe de contrôle du stockage »** et appuyez sur _Entrez_\*\*. \*\*

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-e627f0872fd82c2f1dc8d8a4f20da3a6a2889484%2Fimage%20(194).png?alt=media" alt="" width="335"><figcaption><p><strong>courbe de contrôle du stockage</strong></p></figcaption></figure>

Collez l'extrait de code JSON ci-dessous. Veuillez noter comment le « Exemple de réservoir » est référencé dans l'attribut « storage\_node ».

```
{
	« type » : « paramètre controlcurveindex »,
	« storage_node » : « Exemple de réservoir »,
	« courbes_de contrôle » : [
		{
			« type » : « paramètre de profil mensuel »,
			« valeurs » : [
				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 » : « constante »,
			« valeur » : 0.4
		},
		{
			« type » : « constante »,
			« valeur » : 0.1
		}
	],
	«__enregistreur__« : {
		« série chronologique » : vrai
	}
}
```

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-42ee8ff4ed1b7b6c3dc4e943726ea65d1befd08d%2Fimage%20(195).png?alt=media" alt=""><figcaption><p>Collez le code et sauvegardez</p></figcaption></figure>

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-4eb5c41ff93c5840dd10420159803fe8b1d4116b%2Fimage%20(196).png?alt=media" alt=""><figcaption><p>Sélectionnez la série chronologique d'enregistrement et sauvegardez</p></figcaption></figure>

À chaque étape du temps, [Paramètre d'indice de courbe de contrôle](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/control-curve-index-parameter) renverra une valeur d'indice comme indiqué ci-dessous :

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-fc738783e2f74cd69c55e9b1b15d843780a3d843%2Fimage%20(197).png?alt=media" alt=""><figcaption><p>Courbe de contrôle du réservoir</p></figcaption></figure>

Ces indices peuvent être associés à un facteur de demande qui sera défini à l'aide d'un [Paramètre de tableau indexé](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/indexed-array-parameter). Le facteur de demande sera utilisé pour réduire la demande lorsque chaque seuil de courbe de contrôle sera dépassé.

## Facteur de demande associé

1. Nous associerons les éléments suivants **Facteurs de demande** aux différents niveaux de défaillance de la courbe de contrôle :

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-8489f0840b3bfaa29119f4cd3fcc7deb4abd7ada%2Fimage%20(198).png?alt=media" alt=""><figcaption><p>Courbe de contrôle du réservoir</p></figcaption></figure>

Cela réduira la demande à \_\_1234567890\_\_0 %, \_\_1234567890\_\_1 % et \_\_1234567890\_\_2 % de la demande de référence, ce qui correspond à \_\_1234567890\_\_3 %, **1234567890**% et \_\_1234567890\_\_5 % de réductions de la demande.

2. Créez un nouveau **Pyr \_Paramètre**

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

3. Nommez le paramètre **« facteur de demande de la courbe de contrôle »** et appuyez sur _Entrez_\*\*. \*\*

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-97b9e167ecc5f41e7688b436c790b39682aaab9c%2Fimage%20(200).png?alt=media" alt="" width="275"><figcaption><p>Nommez le paramètre</p></figcaption></figure>

4. Collez l'extrait de code JSON ci-dessous. Veuillez noter comment la « courbe de contrôle » du stockage est référencée dans l'attribut « index\_parameter ».

```
{
	« tapez » : « indexedarrayparameter »,
	« index_parameter » : « courbe de contrôle de stockage »,
	« paramètres » : [
		1,
		0.9,
		0.8,
		0.5
	],
}
```

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-451786a7db32c504bb4bba194e5746d22b15ad62%2Fimage%20(201).png?alt=media" alt=""><figcaption><p>Collez le code et sauvegardez</p></figcaption></figure>

L'attribut « Params » accepte soit des scalaires, soit des paramètres Pywr et l'index du tableau correspond à l'index du paramètre référencé dans **indice \_paramètre** qui dans ce cas est la courbe de contrôle.

5. Sélectionnez cette option pour générer la sortie de ce paramètre.

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-2f2e7d710387239023de9428b6a61cfa2f75878f%2Fimage%20(202).png?alt=media" alt=""><figcaption><p>Sélectionnez la série chronologique d'enregistrement et sauvegardez</p></figcaption></figure>

## Définissez la demande de référence

Nous définirons ensuite la demande de référence. Il s'agit de la demande du réservoir avant la mise en œuvre de toute réduction. Dans le didacticiel précédent, l'exemple de demande est défini comme un scalaire (0.1) sur l'attribut Max \ \_flow du nœud de sortie de demande d'exemple :

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

Nous allons le remplacer par un **Référence des paramètres.**

1. Tout d'abord, nous allons définir la demande de référence à l'aide d'un **Paramètre constant.**

Ajouter un nouveau \*\*Pyr \_paramètre. \*\*

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

Et nommez-le **Demande de référence** et appuyez sur _Entrez_.

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

2. La demande de référence restera de 0.1 MM3/jour. Copiez et collez l'extrait de code JSON dans l'onglet JSON.

```
{
	« type » : « constante »,
	« valeur » : 0.1
}
```

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-06752aaf2ece009e3264208681d81ec7277e6a18%2Fimage%20(207).png?alt=media" alt=""><figcaption><p>Collez le code et sauvegardez</p></figcaption></figure>

À chaque pas temporel, la demande modélisée sera la demande de référence multipliée par le facteur de demande :

`Demande par étapes = Demande de référence x Facteur de demande`

## Calculez **demande de pas de temps**

Cela peut être réalisé à l'aide d'un [Paramètre agrégé](https://water-strategy.gitbook.io/water-strategy/modelling-fundamentals/parameters/aggregated-parameter).

1. Ajouter un nouveau \*\*Pyr \_paramètre. \*\*

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-a8515683ec0d8e08842d11ba9e5e6ac7d441e91b%2Fimage%20(208).png?alt=media" alt=""><figcaption><p>Ajouter un nouveau paramètre PyWR_Parameter</p></figcaption></figure>

Nommez le nouveau paramètre **« demande par étapes »**

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-147d44abcd8b603f3bc1330bac3cc49ae18a4df1%2Fimage%20(209).png?alt=media" alt="" width="274"><figcaption><p>Nommez le nouveau paramètre</p></figcaption></figure>

2. Copiez et collez l'extrait de code JSON dans l'onglet JSON.

```
{
	« type » : « Paramètre agrégé »,
	« agg_func » : « produit »,
	« paramètres » : [
		« demande de référence »,
		« facteur de demande de la courbe de contrôle »
	]
}
```

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-e49fd7ce61fad69fb6fce0ced157c706c7588dcb%2Fimage%20(210).png?alt=media" alt=""><figcaption><p>Collez le code et sauvegardez</p></figcaption></figure>

Sélectionnez cette option pour que cette valeur de paramètre soit sortie à chaque pas de temps.

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-db46ee2926b20e3f8abc8660c25c934ab34316c3%2Fimage%20(211).png?alt=media" alt=""><figcaption><p>Sélectionnez l'enregistrement de la série chronologique</p></figcaption></figure>

3. Le **« demande par étapes »** définit la demande à chaque pas de temps en tenant compte de l'état (c'est-à-dire du stockage en temps réel) du réservoir.

Ce **Paramètre** doit être référencé sur le **maximum \_attribut flow** du nœud Demand.

4. Cliquez sur le nœud Demand et écrivez ou collez '**« demande par étapes »** dans l'attribut max \ \_flow en remplacement de la valeur scalaire (0.1).

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-fcd38a4ad69d276e085cbc967620801c4fc3b0b9%2Fimage%20(218).png?alt=media" alt=""><figcaption><p>Entrez le nom de l'attribut max_flow</p></figcaption></figure>

Remarque : si le nom du paramètre n'est pas enregistré, remplacez le type de l'entrée par **« Descripteur »**.

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-dcd39ed02f0f35044135fafab4e27e0715259e14%2Fimage%20(219).png?alt=media" alt=""><figcaption><p>Cliquez sur modifier le max_flow</p></figcaption></figure>

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

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

N'oubliez pas de sauvegarder les modifications.

## Exécutez le modèle et visualisez les résultats

1. **Courez** le modèle.

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-23a397691922fca45756ec6315af0e23b00c4f5b%2Fimage%20(224).png?alt=media" alt="" width="327"><figcaption><p>Cliquez sur pour exécuter le modèle</p></figcaption></figure>

2. Consultez le **simulé** \ \_volume sur le réservoir

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-66f21a32ee8e19d22c5cae2b0a609b47f221f543%2Fimage%20(216).png?alt=media" alt=""><figcaption><p>_Volume simulé sur le réservoir</p></figcaption></figure>

Tu peux **zoom** dans la sécheresse, par exemple il s'agit de la sécheresse qui s'est produite en 2042-2044.

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-9d1e7382a6ae09faf012f9c873a39d9223fc1740%2Fimage%20(217).png?alt=media" alt=""><figcaption><p>_Volume simulé sur le réservoir en 2042-2044</p></figcaption></figure>

Dans le scénario de réduction de la demande, le réservoir n'a pas atteint un niveau de stockage aussi bas (9.4 contre 8.17 Mm3).

3. Cliquez sur le \ \_flow simulé du nœud Demand. Les baisses de la demande sont visibles.

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

4. Vous pouvez consulter la sortie du paramètre de durcissement contrôlé en cliquant sur **Données du réseau** voir.

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-f79adfff87cace6450c9fb3870a77359b6a15a5c%2Fimage%20(222).png?alt=media" alt=""><figcaption><p>Cliquez pour afficher la sortie du paramètre de durcissement contrôlé</p></figcaption></figure>

En cliquant sur **simulé \_la courbe de contrôle du stockage** indique l'indice renvoyé par la courbe de contrôle du stockage à chaque pas de temps. Cela varie entre 0 et 2.

<figure><img src="https://3963071958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHeDWQ47cDExIYi6YhdD2%2Fuploads%2Fgit-blob-136770d7c8cbd70370bb0e5fedbae3ad1b1154c4%2Fimage%20(223).png?alt=media" alt=""><figcaption><p>Sortie du paramètre Control Cure</p></figcaption></figure>

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

1. Augmentez le paramètre de demande de référence. Quel sera le niveau de la demande de référence avant que le réservoir ne soit complètement vidé ?
