Fichier de paramètres de l’Optimizer

L’Optimizer dispose de deux types de fichiers de paramètres. Un type pour la calibration classique et classique+ (voir Fichier de paramètres de calibration classique) et un autre pour les techniques d’optimisation utilisant des algorithmes génétiques ou des simulations de Monte-Carlo (voir Fichier de paramètres d’optimisation). Cependant, certains attributs sont identiques pour les deux.

Propriétés partagées

Contenu “time_properties”

Le contenu de <time_properties> est globalement similaire au fichier de paramètres standard, à l’exception d’un élément <calibration_period> et d’un élément <validation_period>.

Élément “calibration_period”

Le contenu de <calibration_period> définit la période cible sur laquelle la méthode est entraînée. Il fonctionne comme l’élément <archive_period>. Deux options sont possibles :

En fournissant les dates exactes :

  • <start> : Début de la période de calibration (ex : 01.01.1981)

  • <end> : Fin de la période de calibration (ex : 31.12.2010)

Il est également possible de ne fournir que les années :

  • <start_year> : Début de la période de calibration (ex : 1981)

  • <end_year> : Fin de la période de calibration (ex : 2010)

Élément “validation_period”

Le contenu de <validation_period> définit la période indépendante qui est réservée à la validation.

Avertissement

La période de validation doit être couverte par la période de calibration (pour charger correctement les données requises). AtmoSwing traite alors la période de validation en l’excluant de la période de calibration. Encore une fois : la période de validation ne doit pas contenir de dates qui ne sont pas couvertes par la période de calibration.

Deux options sont possibles :

Fournir une liste d’années (réparties sur la période de calibration) :

  • <years> : Liste d’années (ex : 1985, 1990, 1995, 2000, 2005, 2010)

Il est également possible de fournir une fourchette d’années :

  • <start_year> : Début de la période de validation (ex : 2001)

  • <end_year> : Fin de la période de validation (ex : 2010)

Contenu “évaluation”

L’Optimiseur possède un nœud <evaluation> pour spécifier le score à utiliser et d’autres caractéristiques :

<evaluation>
  <score>CRPS</score>
  <time_array>simple</time_array>
</evaluation>

Élément “score”

Le nom du score à utiliser doit être fourni. Les options sont listées ici : score de vérification

Élément “time_array”

L’élément <time_array> doit être fourni. Il doit cependant avoir la valeur simple car il n’y a pas d’autres options disponibles pour l’instant.

Autres propriétés facultatives

D’autres options peuvent être ajoutées pour spécifier comment le score doit être traité.

  • <threshold> : Seuil à utiliser pour le calcul des scores reposant sur un dépassement de seuils, comme le tableau de contingence. Exemple : <threshold>0.5</threshold>

  • <quantile> : Quantile à utiliser pour le calcul des scores reposant sur une seule valeur plutôt que sur la distribution. Exemple : <quantile>0.9</quantile>

  • <on_mean>1</on_mean> : Spécifie que le score doit être calculé sur la moyenne des analogues plutôt que sur un quantile (voir ci-dessus). Par exemple, lorsqu’il est utilisé avec le score MSE. La valeur 1 n’a pas d’autre signification que « vrai ».

Fichier de paramètres de la calibration classique

Le fichier des paramètres de la calibration définit les paramètres à étalonner et la plage des valeurs autorisées. Il y a différentes méthodes possibles pour définir ces options :

  • minmax (le plus utilisé) : vous devez fournir une valeur min du paramètre, une valeur max et une valeur step. Par exemple :

<x_min min="-10" max="10" step="0.25" method="minmax"></x_min>
  • array : le contenu du nœud sera alors traité comme un vecteur. Par exemple :

<station_id method="array">1,5,6,12,35</station_id>
  • fixed : ne doit pas être calibré même si des valeurs min et max sont définies. Une valeur doit alors être fournie pour le paramètre.

Nœud racine

La propriété target du nœud racine doit être calibrator.

<atmoswing version="1.0" target="calibrator">

Contenu “analog_dates”

Le contenu de <analog_dates> est en grande partie similaire à la structure du fichier de paramètres standard, mais les paramètres à calibrer doivent être spécifiés.

Élément “analogs_number”

Cet élément fait varier le nombre de situations analogues Ni à extraire, par exemple :

<analogs_number min="10" max="100" step="5" method="minmax"></analogs_number>

Élément “fenêtre spatiale”

Cet élément définit l’étendue de la fenêtre spatiale pour chaque prédicteur. <x_min> et <y_min> sont respectivement la longitude et la latitude minimales, <x_points_nb> et <y_points_nb> sont le nombre de points de la grille du prédicteur à utiliser sur les axes de longitude et de latitude, respectivement. <x_step> et <y_step> sont les résolutions longitude/latitude à utiliser. Cette fenêtre doit être définie pour chaque prédicteur.

<spatial_window>
  <x_min min="-10" max="10" step="0.25" method="minmax"></x_min>
  <x_points_nb min="2" max="120" step="1" method="minmax"></x_points_nb>
  <x_step>0.25</x_step>
  <y_min min="35" max="50" step="0.25" method="minmax"></y_min>
  <y_points_nb min="2" max="90" step="1" method="minmax"></y_points_nb>
  <y_step>0.25</y_step>
</spatial_window>

Exemple complet

<?xml version="1.0" encoding="UTF-8" ?>
<atmoswing version="1.0" target="calibrator">
  <description>
    <method_id>PD-A4Z</method_id>
    <method_id_display>Enhanced circulation</method_id_display>
    <specific_tag>CH</specific_tag>
    <specific_tag_display>all stations</specific_tag_display>
    <description>Enhanced analogy on the atmospheric circulation (4 levels)</description>
  </description>
  <time_properties>
    <archive_period>
      <start_year>1981</start_year>
      <end_year>2010</end_year>
    </archive_period>
    <calibration_period>
      <start_year>1981</start_year>
      <end_year>2010</end_year>
    </calibration_period>
    <validation_period>
      <years>1985, 1990, 1995, 2000, 2005, 2010</years>
    </validation_period>
    <time_step>24</time_step>
    <time_array_target>
      <time_array>simple</time_array>
    </time_array_target>
    <time_array_analogs>
      <time_array>days_interval</time_array>
      <interval_days method="fixed">60</interval_days>
      <exclude_days>30</exclude_days>
    </time_array_analogs>
  </time_properties>
  <analog_dates>
    <analogs_number min="10" max="100" step="5" method="minmax"></analogs_number>
    <predictor>
      <preload>1</preload>
      <preprocessing>
        <preprocessing_method>SimpleGradients</preprocessing_method>
        <preprocessing_data>
          <dataset_id>ECMWF_ERA5</dataset_id>
          <data_id>pressure/z</data_id>
          <level>1000</level>
          <time>6</time>
        </preprocessing_data>
      </preprocessing>
      <spatial_window>
        <x_min min="-10" max="10" step="0.25" method="minmax"></x_min>
        <x_points_nb min="2" max="120" step="1" method="minmax"></x_points_nb>
        <x_step>0.25</x_step>
        <y_min min="35" max="50" step="0.25" method="minmax"></y_min>
        <y_points_nb min="2" max="90" step="1" method="minmax"></y_points_nb>
        <y_step>0.25</y_step>
      </spatial_window>
      <criteria>S1</criteria>
    </predictor>
    <predictor>
      <preload>1</preload>
      <preprocessing>
        <preprocessing_method>SimpleGradients</preprocessing_method>
        <preprocessing_data>
          <dataset_id>ECMWF_ERA5</dataset_id>
          <data_id>pressure/z</data_id>
          <level>1000</level>
          <time>30</time>
        </preprocessing_data>
      </preprocessing>
      <spatial_window>
        <x_min min="-10" max="10" step="0.25" method="minmax"></x_min>
        <x_points_nb min="2" max="120" step="1" method="minmax"></x_points_nb>
        <x_step>0.25</x_step>
        <y_min min="35" max="50" step="0.25" method="minmax"></y_min>
        <y_points_nb min="2" max="90" step="1" method="minmax"></y_points_nb>
        <y_step>0.25</y_step>
      </spatial_window>
      <criteria>S1</criteria>
    </predictor>
    <predictor>
      <preload>1</preload>
      <preprocessing>
        <preprocessing_method>SimpleGradients</preprocessing_method>
        <preprocessing_data>
          <dataset_id>ECMWF_ERA5</dataset_id>
          <data_id>pressure/z</data_id>
          <level>700</level>
          <time>24</time>
        </preprocessing_data>
      </preprocessing>
      <spatial_window>
        <x_min min="-10" max="10" step="0.25" method="minmax"></x_min>
        <x_points_nb min="2" max="120" step="1" method="minmax"></x_points_nb>
        <x_step>0.25</x_step>
        <y_min min="35" max="50" step="0.25" method="minmax"></y_min>
        <y_points_nb min="2" max="90" step="1" method="minmax"></y_points_nb>
        <y_step>0.25</y_step>
      </spatial_window>
      <criteria>S1</criteria>
    </predictor>
    <predictor>
      <preload>1</preload>
      <preprocessing>
        <preprocessing_method>SimpleGradients</preprocessing_method>
        <preprocessing_data>
          <dataset_id>ECMWF_ERA5</dataset_id>
          <data_id>pressure/z</data_id>
          <level>500</level>
          <time>12</time>
        </preprocessing_data>
      </preprocessing>
      <spatial_window>
        <x_min min="-10" max="10" step="0.25" method="minmax"></x_min>
        <x_points_nb min="2" max="120" step="1" method="minmax"></x_points_nb>
        <x_step>0.25</x_step>
        <y_min min="35" max="50" step="0.25" method="minmax"></y_min>
        <y_points_nb min="2" max="90" step="1" method="minmax"></y_points_nb>
        <y_step>0.25</y_step>
      </spatial_window>
      <criteria>S1</criteria>
    </predictor>
  </analog_dates>
  <analog_values>
    <predictand>
      <station_id min="1" max="100" step="1" method="minmax"></station_id>
    </predictand>
  </analog_values>
  <evaluation>
    <score>CRPS</score>
    <time_array>simple</time_array>
  </evaluation>
</atmoswing>

Fichier des paramètres pour l’optimisation

Le fichier des paramètres pour l’optimisation, utilisé par les algorithmes génétiques ou les simulations de Monte Carlo, définit les paramètres à optimiser et la fourchette des valeurs autorisées. Il comporte plusieurs aspects :

  • Définir la plage de valeurs numériques : une valeur lowerlimit (limite inférieure) du paramètre, une valeur upperlimit (limite supérieure) et une valeur iteration doivent être fournies. Par exemple :

<x_min lowerlimit="-10.5" upperlimit="10.5" iteration="0.75" lock="0"></x_min>
  • Définir une liste de valeurs : le contenu du nœud sera alors analysé comme un vecteur. Par exemple :

<level method="array" lock="0">0, 300, 500, 850, 1000</level>
  • La propriété lock permet de fixer une valeur qui ne sera pas optimisée même si les valeurs lowerlimit et upperlimit sont définies. Vous devez alors fournir une valeur pour le paramètre. Cette option peut être utilisée pour désactiver temporairement la calibration d’un paramètre. Par exemple :

<time lowerlimit="0" upperlimit="30" iteration="6" lock="1">18</time>

Nœud racine

La propriété target du nœud racine doit être optimizer.

<atmoswing version="1.0" target="optimizer">

Contenu “analog_dates”

Le contenu de <analog_dates> est en grande partie similaire à la structure du fichier de paramètres standard, mais les paramètres à calibrer doivent être spécifiés.

Élément “analogs_number”

Cet élément fait varier le nombre de situations analogues Ni à extraire, par exemple :

<analogs_number lowerlimit="5" upperlimit="80" iteration="1" lock="0"></analogs_number>

Élément “predictor”

Cet élément est utilisé pour définir les paramètres à étalonner en rapport avec les prédicteurs. La structure est essentiellement similaire à la structure du fichier de paramètres standard. L’option preload spécifie que les données doivent être préchargées avant l’étalonnage, ce qui permet un gain de temps considérable. Par exemple :

Exemple :

<predictor>
  <preload>1</preload>
  <dataset_id>GenericNetcdf</dataset_id>
        <data_id method="array" lock="0">pl/r, pl/t, pl/u, pl/v, pl/z, sfa/msl</data_id>
  <level method="array" lock="0">0, 300, 500, 850, 1000</level>
      <time lowerlimit="0" upperlimit="30" iteration="6" lock="0"></time>
  <spatial_window>
    <x_min lowerlimit="-10.5" upperlimit="10.5" iteration="0.75" lock="0"></x_min>
    <x_points_nb lowerlimit="1" upperlimit="40" iteration="1" lock="0"></x_points_nb>
    <x_step>0.75</x_step>
    <y_min lowerlimit="35.25" upperlimit="50.25" iteration="0.75" lock="0"></y_min>
    <y_points_nb lowerlimit="1" upperlimit="30" iteration="1" lock="0"></y_points_nb>
    <y_step>0.75</y_step>
  </spatial_window>
  <criteria method="array" lock="0">MD, RMSE, S0, S1, S2</criteria>
</predictor>

Exemple complet

<?xml version="1.0" encoding="UTF-8" ?>
<atmoswing version="1.0" target="optimizer">
  <description>
    <method_id>PD-A1Xo</method_id>
    <method_id_display>1 level optimized</method_id_display>
    <specific_tag>CH</specific_tag>
    <specific_tag_display>1 station</specific_tag_display>
    <description>1 level optimize</description>
  </description>
  <time_properties>
    <archive_period>
      <start_year>1981</start_year>
      <end_year>2010</end_year>
    </archive_period>
    <calibration_period>
      <start_year>1981</start_year>
      <end_year>2010</end_year>
    </calibration_period>
    <validation_period>
      <years>1985, 1990, 1995, 2000, 2005, 2010</years>
    </validation_period>
    <time_step>24</time_step>
    <time_array_target>
      <time_array>simple</time_array>
    </time_array_target>
    <time_array_analogs>
      <time_array>days_interval</time_array>
      <interval_days lock="1">60</interval_days>
      <exclude_days>30</exclude_days>
    </time_array_analogs>
  </time_properties>
  <analog_dates>
    <analogs_number lowerlimit="5" upperlimit="150" iteration="1" lock="0"></analogs_number>
    <predictor>
      <preload>1</preload>
      <dataset_id>GenericNetcdf</dataset_id>
      <data_id method="array" lock="0">pl/r, pl/t, pl/u, pl/v, pl/z, sfa/msl</data_id>
      <level method="array" lock="0">0, 300, 500, 850, 1000</level>
      <time lowerlimit="0" upperlimit="30" iteration="6" lock="0"></time>
      <spatial_window>
        <x_min lowerlimit="-10.5" upperlimit="10.5" iteration="0.75" lock="0"></x_min>
        <x_points_nb lowerlimit="1" upperlimit="40" iteration="1" lock="0"></x_points_nb>
        <x_step>0.75</x_step>
        <y_min lowerlimit="35.25" upperlimit="50.25" iteration="0.75" lock="0"></y_min>
        <y_points_nb lowerlimit="1" upperlimit="30" iteration="1" lock="0"></y_points_nb>
        <y_step>0.75</y_step>
      </spatial_window>
      <criteria method="array" lock="0">MD, RMSE, S0, S1, S2</criteria>
    </predictor>
  </analog_dates>
  <analog_dates>
    <analogs_number lowerlimit="5" upperlimit="80" iteration="1" lock="0"></analogs_number>
    <predictor>
      <preload>1</preload>
      <dataset_id>GenericNetcdf</dataset_id>
      <data_id method="array" lock="0">pl/r, pl/t, pl/u, pl/v, pl/z, sfa/msl</data_id>
      <level method="array" lock="0">0, 300, 500, 850, 1000</level>
      <time lowerlimit="0" upperlimit="30" iteration="6" lock="0"></time>
      <spatial_window>
        <x_min lowerlimit="-10.5" upperlimit="10.5" iteration="0.75" lock="0"></x_min>
        <x_points_nb lowerlimit="1" upperlimit="40" iteration="1" lock="0"></x_points_nb>
        <x_step>0.75</x_step>
        <y_min lowerlimit="35.25" upperlimit="50.25" iteration="0.75" lock="0"></y_min>
        <y_points_nb lowerlimit="1" upperlimit="30" iteration="1" lock="0"></y_points_nb>
        <y_step>0.75</y_step>
      </spatial_window>
      <criteria method="array" lock="0">MD, RMSE, S0, S1, S2</criteria>
    </predictor>
  </analog_dates>
  <analog_values>
    <predictand>
      <station_id>0</station_id>
    </predictand>
  </analog_values>
  <evaluation>
    <score>CRPS</score>
    <time_array>simple</time_array>
  </evaluation>
</atmoswing>