• Aucun résultat trouvé

3.3 Conclusion : les limites des approches classiques de modélisation et de combinaison

4.1.3 Un modèle structurel définissant les différents types d’imperfection des données

Dans ce paragraphe, nous proposons de modéliser les entités qui peuvent être soit statiques (propriété d’un élément ; par exemple le taux de pollution d’un sol) soit dynamiques (éléments et informations qui circulent dans le système).

Nous définissons des types d’attributs génériques exprimant différentes formes d’imperfections entachant les données ainsi que leur agrégation, caractérisant ainsi de manière générique les informations circulant au sein des systèmes socio-environnementaux. Nous avons vu que les données qui circulent dans le système sont imparfaites (imprécises, incertaines, plus ou moins probables), du fait de la source dont elles viennent (données exogènes), des calculs dont les résultats sont parfois des approximations, de la nature incertaine des prévisions futures (par exemple le temps qu’il fera), de leur nature d’hypothèse, etc. Il faut donc capturer des imperfections pour les propager correctement dans les calculs. Grâce au modèle de types de données abstraits que nous proposons, nous formaliserons les imperfections des données du modèle de l’agriculture que nous avons défini.

Nous nous limitons à quatre types de distributions afin de modéliser les types d’incertitude généralement rencontrés dans le cadre des systèmes socio-environnementaux. Nous avons choisi ces types de distributions non seulement pour leur expressivité (elles permettent en effet de modéliser un grand nombre de situations représentatives de la réalité) mais aussi pour leur implémentabilité (en effet, elles sont stables par un certain nombre d’opérations algébriques que nous présenterons dans le chapitre suivant dans lequel nous présentons un formalisme unifié pour modéliser l’imperfection des données). Les quatre types de distributions sont les suivants :

(1) « fuzzyDiscrete » : distribution discrète de valeurs floues. Une liste normalisée d’éléments flous discrets est définie par ses éléments et leurs degrés d’appartenance correspondants. La combinaison de tels éléments se fait par t-normes et t-conormes (e.g. min et max). On peut modéliser des avis d’experts vagues et/ou qualitatifs (linguistic predicates) ; on peut par exemple modéliser des expressions du type : (1) sans mesure préalable de la composition du sol permettant de se référer au triangle de texture de GEPPA [Baize, 1995], il est plutôt limoneux (possibilité 0.9), un peu sableux (possibilité 0.3) et n’est presque pas argileux (possibilité 0.1) ; (2) il est tout à fait possible que la récolte soit moyenne (possibilité

97

1), ou bien elle sera peut-être mauvaise (possibilité 0.2) mais certainement pas excellente (possibilité 0).

(2) « trapezoid » : un intervalle flou de type LR symétrique (i.e. un « trapézoïde » symétrique avec L = R) est défini par sa valeur centrale, son noyau (valeur qui se situe avec certitude dans cet intervalle ; degré d’appartenance égal à 1) et son support (degré d’appartenance entre 0 et 1). Cette forme d’intervalle flou est très utilisée car de telles distributions sont quasi-stables par les opérations algébriques de base (addition, soustraction, multiplication, division). De plus, trois cas particuliers de cette forme, eux aussi très couramment utilisés, peuvent être mis en évidence : (1) des distributions de possibilité sous forme de rectangle (qui correspond à un noyau et un support identiques), (2) des distributions de possibilité sous forme de triangle (qui correspond à un noyau de largeur nulle), et (3) une valeur exacte et certaine égale à une valeur centrale avec un noyau et un support nuls. Grâce à ce type de distribution, on peut modéliser des valeurs floues de surfaces, de mesures scientifiques de la composition du sol, de doses d’azote de nourriture imprécises, etc.

(3) « probableDiscrete » : distribution de probabilité discrète. Les méthodes statistiques (échantillonnage, sondages, tests) sont des moyens puissants pour évaluer des probabilités d’événements.

(4) « normal » : une distribution de probabilité suivant la loi normale (gaussienne), définie par sa valeur centrale (qui correspond à la fois à son mode, sa moyenne et sa médiane) et sa variance. Par exemple, la masse des bovins d’un troupeau peut suivre une loi normale, de même que les récoltes au fil des ans. Ce type de distribution modélise en général des valeurs continues basées sur la répétition d’événements.

Nous définissons les quatre types de distributions décrits ci-dessus comme des « value types » abstraits (notés ADT26 dans la suite de ce document). Ces ADT sont caractérisés par cinq propriétés : le nom, les types des données utilisés, les primitives, les préconditions et les axiomes. Le tableau suivant présente les éléments caractéristiques de ces types abstraits. NB : ces ADT sont orthogonaux aux types primitifs (int, float, etc.). Ces derniers sont représentés par le terme « element ».

98 Tableau 8 : l’ADT « fuzzyDiscrete »

Types utilisés List, element, float, element

Primitives

// Constructeur

create: element, float → fuzzyDiscrete

// Retourne les éléments qui ont un certain degré d’appartenance

getElement: float → list[element]

// Retourne tous les éléments de la distribution getElements: → list[element]

// Ajoute un élément avec le degré d’appartenance correspondant

addElement: element, float [0,1] → null

// Retourne le degré d’appartenance d’un élément getGradeOfMembership: element → float [0,1] // Modifie le degré d’appartenance d’un élément setGradeOfMembership: element, float [0,1] → null // Supprime un élément

deleteElement: element → null

Pré conditions create: float=1 getElement: float [0,1] addElement: float [0,1] setGradeOfMembership: float [0,1] Axiomes

Tableau 9 : l’ADT « trapezoid »

Types utilisés Float

Primitives

// Constructeur

create : float, float, float, float → trapezoid

// Retournent les valeurs définissant la distribution getCentralValue: → float

getKernelMin: → float getKernelMax: → float getSupportMin: → float getSupportMax: → float

// Modifient les valeurs définissant la distribution setKernelMin: float → float

setKernelMax: float → float setSupportMin: float → float setSupportMax: float → float

// Retourne les valeurs définissant la distribution getGradeOfMembership : float → float

// Modifie la distribution de possibilité (ajout de connaissance)

99

Modify : predicate → fuzzyFloat (intersection de deux)

Pré conditions

create : float, float, float, float: float < float < float < float

setKernelMin: float < getKernelMax setSupportMin: float < getSupportMax setSupportMin: float < getKernelMin setKernelMax: float < getSupportMax

Axiomes

getKernelMin < getKernelMax getSupportMin < getSupportMax getSupportMin < getKernelMin getKernelMax < getSupportMax

∃ float [getKernelMin, getKernelMax] / getGradeOfMembership = 1

NB : on peut facilement se ramener à des cas particuliers tels que la forme triangulaire (cas où ) et la forme rectangulaire (cas où et )

Tableau 10 : l’ADT « probableDiscrete »

Types utilisés List, element, float, element

Primitives

// Constructeur

create: element, float → probableDiscrete

// Retourne les éléments qui ont une certaine probabilité getElement: float [0,1] → list[element]

// Retourne tous les éléments de la distribution getElements: → list[element]

// Ajoute un élément avec la probabilité correspondante (attention, les probabilités des autres éléments sont repondérées)

addElement: element, float → null

// Retourne la probabilité d’un élément getProbability: element → float

// Modifie la probabilité d’un élément setProbability: element, float → null

// Supprime un élément (attention, les probabilités des autres éléments sont repondérées)

deleteElement : element → null

Pré conditions

create: float=1

addElement: float [0,1]

setProbability: element getElements, float [0,1]

100 Tableau 11 : l’ADT « normal »

Types utilisés Float

Primitives

// Constructeur

create: float, float→ normal

// Retournent les valeurs définissant la distribution getAverage: → float

getStandard_deviation: → float

// Modifient les valeurs définissant la distribution setAverage: float → null

setStandardDeviation: float → null

//Calcule la probabilité d’un prédicat (en général un intervalle – calcul via la fonction de répartition) getProbability: predicate → float

Pré conditions

Axiomes

La figure suivante illustre le modèle des entités qui caractérisent les éléments statiques et qui circulent dans le système :

Figure 17 : le modèle des entités