a faux (ligne 16), sont tous les deux possibles. Lorsque pref est conditionnelle (ligne 22), alors il n’y a qu’une seule d´ecision possible. La coh´erence avec ∆ est test´ee avec la fonction
isSAT faisant directement appel `a un solveur SAT avec les contraintes de la version d´epli´ee du mod`ele ∆ (lignes 17, 19 et 23).
Dans l’algorithme 2, chaque scenario est ajout´e `a une file d’attente et `a chaque it´eration on cherche `a construire tous les successeurs possibles du scenario trait´e. L’algorithme 3 est initialis´e avec une liste de scenarios initialis´ee avec (>, 1, γ1) (ligne 8), ce qui exprime qu’aucun choix de d´ecision n’a ´et´e fait jusqu’alors, l’´etape discr`ete est fix´ee `a 1 et la prochaine pr´ef´erence `a appliquer est γ1. `A chaque it´eration, on construit les successeurs d’un ´etat en faisant appel `a l’algorithme 4 (ligne 14). Les scenarios pour lesquels l’attribut decision est incoh´erent avec ∆ (dans sa version d´epli´ee ∆0, . . . , ∆k) sont rejet´es. L’algorithme termine quand un scenario complet (ligne 11) est trouv´e (dans ce cas Ω est un m´eta-diagnostic) ou alors lorsqu’il ne reste aucun scenario dans la file d’attente (dans ce cas Ω n’est pas un m´eta-diagnostic) (ligne 16).
Algorithm 2 MetaDiagnosis({impasset|t ∈ [1, k]}, {∆t|t ∈ [1, k]}, ΓΩ) : retourne vrai si et seulement si ΓΩ est un m´eta-diagnostic
1: Entrees
2: {impasset|t ∈ [1, k]} : une impasse d´epli´ee sur l’horizon k
3: {∆t|t ∈ [1, k]} : ∆ d´epli´e sur l’horizon k
4: ΓΩ : un sous ensembles de pr´ef´erence `a tester
5: Sorties
6: retourne vrai si et seulement si Ω est un m´eta-diagnostic
7: function isAMetaDiagnosis(impasset|t ∈ [1, k]}, {∆t|t ∈ [1, k]}, ΓΩ)
8: scenarios ← {(>, 1, γ1)}
9: while scenarios 6= ∅ do select curScen in scenarios
10: scenarios ← scenarios − {curScen}
11: if curScen.step > length(impasse) then
12: return true
13: else
14: nextScen ← makeNextScenarios(curScen, {impasset|t ∈ [1, k]}, {∆t|t ∈ [1, k]}, ΓΩ)
15: scenarios ← scenarios ∪ nextScen
16: return f alse
On consid`ere que l’ordre dans lequel les diff´erents sous-ensembles de Γ sont test´es est d´eduit directement par la th´eorie du diagnostic `a base de coh´erence [Reiter, 1987]. Si on trouve un Ω qui est un m´eta-diagnostic, alors on ne teste pas ses sur-ensembles et si on trouve un Ω qui n’est pas un m´eta-diagnostic, on ne teste pas ses sous-ensembles.
5.3 Exp´erimentations
Cette section pr´esente les diff´erentes exp´erimentations effectu´ees pour les deux approches pr´esent´ees pr´ec´edemment. Pour chaque approche, on reprend les mod`eles utilis´es pour la
Algorithm 3 makeNextScenarios(curScen, {impasset|t ∈ [1, k]}, {∆t|t ∈ [1, k]}, ΓΩ) 1: Entrees 2: curScen 3: {impasset|t ∈ [1, k]} 4: {∆t|t ∈ [1, k]} 5: ΓΩ 6: Sorties
7: nextScenarios : les sc´enarios suivants associ´es `a curScen
8: function makeNextScenarios(curScen, {impasset|t ∈ [1, k]}, {∆t|t ∈ [1, k]}, ΓΩ)
9: t ← curScen.step
10: γ ← curScen.curPref
11: formula ← curScen.d´ecision ;
12: scenarios ← ∅
13: if γ = e e then
14: curScBis ← copy(incr (curScen))
15: curScen.d´ecision ← formula ∧ et
16: curScBis.d´ecision ← formula ∧ ¬et
17: if isSAT ((Vt
i=1(∆i∧ impassei) ∧ formula ∧ et) then
18: scenarios ← scenarios ∪ {curScen}
19: if isSAT ((Vt
i=1(∆i∧ impassei) ∧ formula ∧ ¬et) then
20: scenarios ← scenarios ∪ {curScBis}
21: return scenarios
22: else //γ = cond : e ≺ e
23: if isSAT (Vt
i=1(∆i∧ impassei) ∧ formula ∧ (et↔ condt)) then
24: curScen.d´ecision ← formula ∧ (et↔ condt)
25: return {incr (curScen)}
26: else
27: curScen.d´ecision ← formula ∧ (¬et↔ condt)
28: return {incr (curScen)}
recherche de sc´enarios d’impasse du chapitre pr´ec´edent. Lorsque les mod`eles pr´esentent un sc´enario d’impasse, on r´ecup`ere celui-ci (une s´equence d’observations) et on effectue le m´ eta-diagnostic des pr´ef´erences. L’architecture utilis´ee est la mˆeme que pour les exp´erimentations du chapitre pr´ec´edent. On ´etudie ici les mod`eles pour lesquels un sc´enario d’impasse avait ´et´e d´etect´ee.
5.3.1 Exp´erimentations par l’approche Electrum
Les exp´erimentations effectu´ees avec Electrum reprennent les mod`eles sur lesquels la recherche de sc´enarios d’impasse avait ´et´e effectu´ee dans le chapitre pr´ec´edent. Les sc´enarios d’impasse sont automatiquement r´ecup´er´es sous forme de fichiers XML et traduits ensuite vers Scala. Le m´eta-diagnostic des pr´ef´erences est effectu´e sur tous les mod`eles pr´esent´es dans les r´esultats de la figure 4.7 qui pr´esentaient un sc´enario d’impasse. Lorsqu’un contre exemple est trouv´e, cela signifie que le Ω test´e est un m´eta-diagnostic. On regroupe les diff´erentes pr´ef´erences par rapport aux variables que celles-ci ciblent.
On a donc :
— Γgrid: pr´ef´erences associ´ees aux variables de la grille
— Γbots : pr´ef´erences associ´ees aux fautes pouvant toucher les robots
— Γf temp ∈ Γbots : pr´ef´erences associ´ees aux fautes intermittentes pouvant affecter les robots.
— Γf perm ∈ Γbots : pr´ef´erences associ´ees aux fautes permanentes pouvant affecter les robots.
— Γf permbot1∈ Γf perm: pr´ef´erences associ´ees `a la faute permanente pouvant affecter le robot 1.
— Γf permbot2∈ Γf perm: pr´ef´erences associ´ees `a la faute permanente pouvant affecter le robot 2.
Les figures 5.5 et 5.6 pr´esentent les r´esultats pour les mod`eles num´erot´es 1 `a 5 pour lesquels il existait un sc´enario d’impasse.
Γ=
ID ∅ Γ - Γgrid Γ - Γbots Γ - Γf temp Γ - Γf perm
1 m´eta-diag non m´eta-diag m´eta-diag non m´eta-diag m´eta-diag
0,3s(0) 0,6s(3) 0,1s(4) 0,6s(6) 0,1s(6)
2 m´eta-diag non m´eta-diag m´eta-diag non m´eta-diag m´eta-diag
0,5s(0) 2,7s(3) 0,5s(8) 2,7s(10) 0,4s(10)
3 m´eta-diag non m´eta-diag m´eta-diag non m´eta-diag m´eta-diag
7,2s(0) 44,9s(3) 7,9s(12) 44,2s(14) 7,3s(14)
Figure 5.5 – Analyse des pr´ef´erences pour les mod`eles avec 1 robot, le nombre de pr´ef´erences qui ne sont pas relax´ees est indiqu´e `a cˆot´e du temps de calcul.
On constate que relaxer les pr´ef´erences portant sur les robots permet d’´eliminer le sc´enario d’impasse : Γbotsest un m´eta-diagnostic. Lorsqu’on relaxe seulement les pr´ef´erences ciblant les fautes intermittentes, le sc´enario d’impasse subsiste : Γf temp n’est pas un m´ eta-diagnostic Dans la figure 5.5, relaxer la pr´ef´erence ciblant la faute permanente du robot permet d’´eliminer le sc´enario d’impasse : Γf permest un m´eta-diagnostic (minimal) pour les instances 1 `a 3.
Γ =
ID Γ - Γgrid Γ - Γbots Γ - Γf temp Γ - Γf perm Γ - Γf permbot1 Γ - Γf permbot2 4 non m´eta-diag m´eta-diag non m´eta-diag m´eta-diag non m´eta-diag non m´eta-diag
40,7s(6) 6,8s(8) 40,8s(12) 6,8s(12) 40,9s(13) 40,8s(13)
5 non m´eta-diag m´eta-diag non m´eta-diag m´eta-diag non m´eta-diag non m´eta-diag
885,4s(6) 150,0s(12) 895,8s(16) 150,7s(16) 900,1s(17) 903,7s(17)
Figure 5.6 – Analyse des pr´ef´erences pour les mod`eles avec 2 robots, le nombre de pr´ef´erences qui ne sont pas relax´ees est indiqu´e `a cot´e du temps de calcul.
On constate que lorsqu’on relaxe seulement la pr´ef´erence de Γf permbot1 ou la pr´ef´erence de Γf permbot2 dans les instance 4 et 5 (avec 2 robots) le sc´enario d’impasse n’est pas ´elimin´e, ces deux ensembles ne sont donc pas des m´eta-diagnostics. Le m´eta-diagnostic minimal pour toutes les versions de cet exemple est donc Ω = Γf perm On pourra donc s’int´eresser `
a modifier la condition de cette et ces pr´ef´erences suivant les instances afin d’´eliminer les sc´enarios d’impasse.
On constate une nette diff´erence des temps d’ex´ecution lorsque le Ω test´e est ou n’est pas un m´eta-diagnostic. Lorsque Ω est un m´eta-diagnostic, le temps de calcul est assez court puisque d`es qu’une s´equence d’estimations est trouv´ee celle-ci correspond `a un contre exemple qui est directement renvoy´e. A l’inverse lorsque le sc´enario d’impasse subsiste, toutes les s´equences d’estimations sont envisag´ees par le model-checker et on constate des temps de calculs jusqu’`a 5 fois sup´erieurs. Dans les deux cas, les temps de calculs restent exponentiels `a mesure qu’on augmente la taille du mod`ele.
5.3.2 Exp´erimentations par l’approche SAT
Les r´esultats pour l’approche SAT montrent des temps de calcul tr`es court pour de petits ensembles de pr´ef´erences ou pour des sc´enarios d’impasse de petite taille. Cependant, d`es
Instance |Ω| = 1 |Ω| = |Γ|/2 |Ω| = |Γ| − 1 small 3 0 [0, 0] 0 [0, 0] 0 [ 0, 0] small 4 0 [0, 0] 0 [0, 0] 0 [ 0, 0] small 5 0 [0, 0] 0 [0, 0] 0 [ 0, 1] small 6 0 [0, 0] 0 [0, 2] 1 [ 0, 2] small 7 0 [0, 0] 1 [0, 17] 5 [ 0, 14] small 8 0 [0, 0] 8 [0, 134] 37 [ 0, 108] small 9 0 [0, 0] 61 [0, 1129] 311 [ 0, 960] large 3 0 [0, 0] 0 [0, 2] 0 [ 0, 1] large 4 0 [0, 0] 0 [0, 2] 3 [ 1, 4] large 5 0 [0, 0] 14 [0, 163] 87 [ 16, 119] large 6 0 [0, 0] 48 [0, 444] 2691 [652, 4730]
Table 5.1 – R´esultats du m´eta-diagnostic pour un ensemble de pr´ef´erences Ω . Les colonnes indiquent la taille des sous-ensembles Ω test´es. Pour chaque test, on r´ealise le test sur au moins 20 ensembles possibles pour la taille donn´ee. Chaque case contient le temps moyen, le minimum et maximum sous la forme moyenne[min, max].
lors qu’on traite de grands ensembles de pr´ef´erences ou des sc´enarios d’impasse de grande taille, on constate que le temps de calcul croit de mani`ere exponentielle.
On constate que certains ensembles sont particuli`erement difficiles `a v´erifier et que le plus difficile d’entre eux peut prendre jusqu’`a dix fois plus de temps par rapport au temps de calcul moyen. Cela arrive le plus souvent lorsqu’on teste la moiti´e des pr´ef´erences de Γ puisque plus on relaxe de pr´ef´erences, plus il est facile de trouver une s´equence d’estimations.