• Aucun résultat trouvé

Composants de calcul d’une relation de surclassement

formats utilisés par la bibliothèque.

Par ailleurs, une part importante des méthodes proposées s’implémente sous la forme de programmes mathématiques. Pour faciliter l’implémentation, nous avons également développé la bibliothèque JLP (Java Linear Programming, http://code.google.com/p/jlp-interface/), qui permet de créer et ré-soudre desPMsdepuis le langage Java. La bibliothèque n’est pas liée à l’AMCD, elle a une portée générale et pourrait intéresser tout développeur dePMs. Elle ne contient pas elle-même de solveur, car de nombreux solveurs de qualité existent. Sa valeur est double. D’une part, elle permet de rendre le code plus clair et facile à développer, car elle propose une interface orientée objet simple pour définir et manipuler les PMs et les solutions. D’autre part, elle permet de rendre le code indépendant du solveur : une fois que le code nécessaire à la définition d’un PM est écrit, il suffit de changer le solveur avec lequel JLP s’interface, sans devoir modifier ce code, pour changer le solveur avec lequel le programme est résolu. Cela permet de tester la résolution avec différents solveurs facilement, et cela permet de distribuer son programme à différents types d’utilisateurs sans devoir multiplier les implémentations : l’utilisateur peut au choix invoquer un solveur tel que Cplex, performant mais cher pour les utilisateurs non académiques, ou un solveur gratuit mais potentiellement moins performant. Notons que la fonction d’interchangeabilité automatique du solveur est encore en cours d’écriture à l’heure où ces lignes sont écrites.

6.3 Composants de calcul d’une relation de

surclassement

Cette section décrit une série de composants implémentant le calcul de la relation de surclassement des modèles Électre Iv, Électre II, Électre III, Électre Tri, et le calcul des flux proposé par le modèle Prométhée. Cette section doit être lue en conjonction avec la section 2.2 qui décrit ces modèles. La figure 6.1 montre deux de ces composants dans le logiciel diviz.

6.3.1 Concordance

Le composant ElectreConcordance calcule une relation de concordance floue ou binaire. La relation calculée correspond à Ψ(a, b), définie à la section 2.2.

Il utilise un ensemble d’alternatives, un ensemble de critères munis de poids, un ensemble de valeurs de performances, et éventuellement un seuil de préfé-rence et un seuil d’indiffépréfé-rence.

Figure 6.1 – Utilisation dans diviz de deux composants de la bibliothèque J-MCDA.

Plus précisément, le composant reçoit un ensemble d’alternatives A et un ensemble de critères J , représentés simplement par des identifiants textuels. Chaque critère est associé à une information booléenne indiquant s’il doit être maximisé ou minimisé et éventuellement à des valeurs de seuils pj, qj. Les seuils manquants sont considérés comme valant zéro. Les poids représentent les valeurs wj,∀j ∈ J. Les performances sont définies par des valeurs numériques gj(a), ∀a ∈ A, j ∈ J. Il faut pj ≥ qj ≥ 0, sinon le composant renvoie une erreur. Le composant renvoie l’ensemble de paires d’alternatives {(a, b) ∈ A × A} accompagnées chacune de la valeur demandée, Ψ(a, b), binaire ou entre 0 et 1 en fonction des seuils donnés.

Pour rappel, les valeurs calculées sont définies comme suit. Notons que si un critère est à minimiser, les valeurs de gj(b) et gj(a) doivent être inversées.

Ψ(a, b) = j∈J wjKj(a, b), où Kj(a, b) =          1 ⇔ gj(b) − gj(a) ≤ qj, 1 −(gj(b) − gj(a)) − qj pj − qj ⇔ qj < gj(b) − gj(a) ≤ pj, 0 ⇔ pj < gj(b) − gj(a).

Le résultat représente donc la relation de concordance utilisée par Électre III et Électre Tri. Notons que le modèle Électre IS (que nous n’avons pas présenté) utilise la même relation de concordance. La relation de concordance utilisée par Électre Iv et Électre II s’obtient en choisissant comme valeurs de seuils pj = qj = 0, ∀j ∈ J.

6.3 Composants de calcul d’une relation de surclassement

6.3.2 Préférence

Le composant PrometheePreference calcule une relation de préférence telle que définie par Prométhée. Il fonctionne de manière analogue au composant ElectreConcordance : il accepte les mêmes entrées que ce composant, et calcule la valeur la fonction de préférence de Prométhée de type P5associée à chaque paire d’alternatives. Les valeurs correspondant aux formes plus simples de fonctions de préférence P1, P2, P3 s’obtiennent en sélectionnant les valeurs des seuils de manière appropriée. La famille de méthodes Prométhée est décrite à l’annexe B.

Le fait que P (a, b) = 1 − Ψ(b, a) est utilisé dans certains tests internes à la bibliothèque pour vérifier certains calculs.

6.3.3 Discordance

Le composant ElectreDiscordances calcule l’ensemble de relations de dis-cordance Dj utilisées par Électre III et Électre Tri. Il prend en en-trée un ensemble d’alternatives A, un ensemble de critères J muni d’informa-tions concernant le sens de préférence, les performances gj(a), ∀a ∈ A, j ∈ J, et des seuils de préférence et de véto pj, vj. Une valeur manquante pour pj

est interprétée comme pj = 0. Une valeur de véto non spécifiée entraine Dj(a, b) = 0, ∀a, b ∈ A.

Les relations utilisées par Électre Iv et Électre II peuvent être ob-tenues en choisissant pj = vj. Notons que rien n’oblige l’utilisateur à en-voyer des mêmes valeurs de seuils aux composants ElectreConcordance et ElectreDiscordances. Il peut donc choisir qj = pj = 0 pour le premier et pj = vj >0 pour le second.

La publication sur laquelle cet exposé est basé (Cailloux, 2010) définit la discordance différemment : dans le cas des modèles Électre Iv et Électre II, Dbinaire

j (a, b) = 1 ⇔ gj(b) − gj(a) ≥ vj. Pour autant qu’on postule vj > pj, hypothèse effectuée dans la publication en question, c’est une définition tout aussi raisonnable. Cependant, elle n’est pas conforme à la présentation originale de la méthode, ce qui risque d’introduire des confusions à l’usage. De plus cette définition interdit vj = pj = qj, car on pourrait alors avoir Kj(a, b) = 1 et Dbinaire

j (a, b) = 1, et requiert donc de considérer séparément des cas inclus dans cette présentation-ci comme cas particuliers des formules générales.

6.3.4 Surclassement

Le composant ElectreOutranking fournit une relation de surclassement telle que définie par (surclassement) page 45. Le composant demande en

en-trée une relation de concordance et une relation de discordance par critère. Si ces relations sont celles calculées par les composants ElectreConcordance et ElectreDiscordances, la relation calculée par ElectreOutranking est donc bien la relation S utlilisée par Électre III et Électre Tri.

Un ensemble d’alternatives et de critères peut également être précisé en entrée du composant, mais cette information est facultative car elle peut être déduite des relations données en entrée.

Le résultat de ce calcul peut être envoyé à un composant cutRelation qui coupe la relation au dessus d’un certain seuil. En lui donnant la valeur du seuil de coupe λ, on obtient la relation binaire Sλ utilisée par Électre Tri. En passant à ce composant les relations de concordance et de discordances calcu-lées avec les paramètres adéquats indiqués ci-dessus, le résultat correspondra à la relation utilisée par Électre Iv.

6.3.5 Tri

Il est possible de calculer les affectations d’un modèle Électre Tri à l’aide du composant ElectreTriExploitation. Le composant attend en entrée un ensemble d’alternatives, de critères, de profils et de catégories, de poids. Les performances des alternatives et des profils doivent également être fournies.

Il faut indiquer au composant si l’exploitation souhaitée est l’affectation pessimiste, l’affectation optimiste, ou les deux. Dans les deux premiers cas, le composant renvoie une affectation précise, donc une association de chaque alternative à exactement une catégorie. Le dernier cas fournit une association de chaque alternative à un intervalle de catégories.

Un dernier paramètre, facultatif, permet de demander de traiter la discor-dance de façon binaire. Cela permet de reproduire les affectations d’un modèle MR Sort. En l’absence du paramètre, la discordance est non binaire.

6.3.6 Flux

Les flux définis par la famille de modèles Prométhée sont calculés par PrometheeFlows. Le composant peut calculer le flux positif, négatif ou net. Il demande un ensemble d’alternatives et de critères avec les seuils et poids liés, les performances des alternatives, et éventuellement un seuil de majorité, et une information indiquant le type de flux demandé. Il renvoie un ensemble d’alternatives associées chacune à une valeur.