Aller au contenu principal

Matrice de décision

· 3 minutes de lecture
Mohammed Boukada
RuleShake Creator

L'objectif principal de RuleShake est de simplifier le paramétrage des règles de calcul. Jusqu'à présent, nous avons utilisé des formules MVEL pour définir les règles de calcul, mais il n'est pas toujours évident de comprendre la syntaxe de MVEL.

Pour remédier à cela, nous avons développé une nouvelle fonctionnalité permettant de définir des règles de calcul en utilisant des matrices de décision.

Matrix

Les matrices de décision peuvent être utilisées pour calculer les valeurs des variables, mais également pour déterminer les autres propriétés des variables (nombre minimum, maximum, longueur minimum, maximum, etc.).

Dans cet exemple, nous souhaitons définir si un véhicule doté d'une vignette Crit'Air est autorisé à circuler ou non dans une ville en fonction du périmètre de la ZFE (Zone à Faible Émission).

info

Depuis le 1er janvier 2025, seuls les Crit'Air 0️⃣, 1️⃣ et 2️⃣ sont autorisés à circuler dans la ZFE de Lyon.

Créons maintenant une collection contenant les variables suivantes :

  • CRITAIR : une variable d'entrée de type nombre représentant la vignette Crit'Air du véhicule.
  • VILLE : une variable d'entrée de type record liée au dataset des communes de France, représentant la ville de circulation du véhicule. Le classifier ZFE est ajouté pour définir si la commune fait partie d'une ZFE.
  • CIRCULE : une variable calculée de type booléen indiquant si le véhicule est autorisé à circuler dans la ZFE de la ville de circulation.

collection

Nous allons maintenant définir les règles de calcul pour la variable CIRCULE en utilisant une matrice de décision.

Nous définissons une première colonne pour le périmètre de la ZFE. Cette colonne est alimentée par la sous-variable ZFE de la variable VILLE (données issues de RuleShake Referential).

Nous ajoutons ensuite une deuxième colonne pour la vignette Crit'Air. Dans la ZFE lyonnaise, seuls les Crit'Air 0️⃣, 1️⃣ et 2️⃣ sont autorisés à circuler. Nous allons donc ajouter les comparaisons Inférieur ou égal à 2 et Supérieur à 2 sur la variable CRITAIR.

Matrix

astuce

Il est également possible de définir chaque valeur de la vignette Crit'Air individuellement, mais cela aura pour effet d'augmenter le nombre de lignes dans la matrice de décision.

Il ne reste plus qu'à sélectionner la valeur (en activant le bouton switch, car il s'agit d'une variable booléenne) pour chaque ligne.

Toutes les lignes sont activées, sauf celle qui indique une vignette Crit'Air supérieure à 2 et une ville de circulation faisant partie d'une ZFE.

Le même paramétrage aurait pu être réalisé avec un script MVEL comme suit :

if (VILLE.ZFE.value == true) {
return CRITAIR.value <= 2;
} else {
return true; // Hors ZFE, tout le monde peut circuler
}