• Aucun résultat trouvé

2.3 Cas g´ en´ eral : algorithme de r´ esolution d’un ensemble de contraintes 144

a l’autre, seules leurs valeurs sont mises `a jours. Ces expressions sont calcul´ees, hors-ligne

lors de l’impl´ementation de l’algorithme, `a partir des expressions des contraintes simples

(Cf. section III-3.3.1).

Algorithme 1 : Algorithme it´eratif de r´esolution d’un ensemble coh´erent de

contraintes simples

Data :No

Input :I, E, G

Output :O

/* Calcul de F0s

k

et F1s

k

(D´ef. 25) */

fork = 1, ..., Nodo

F0s(k) := ... ;

F1s(k) := ... ;

end

/* R´esolution des contraintes simples */

fork = 1, ..., Nodo

O(k) := NOT F0s(k) AND G(k) OR F1s(k) ;

end

La section suivante (section IV-2.3), pr´esente l’algorithme it´eratif de r´esolution dans le

cas g´en´eral.

IV-2.3 Cas g´en´eral : algorithme de r´esolution d’un ensemble de

contraintes

Consid´erons `a pr´esent un ensemble quelconque de contraintes logiques, avec des priorit´es

fonctionnelles associ´ees `a chaque contrainte combin´ee. Consid´erons ´egalement que cet

ensemble est coh´erent (D´ef. 31). Le but est de proposer un algorithme, impl´ementable

dans un API, permettant de r´esoudre ces contraintes en respectant les priorit´es. Des

masques combin´es sont calcul´es et utilis´es pour r´esoudre les contraintes combin´ees.

Les masques combin´es (M0c et M1c), sont calcul´es selon le mˆeme principe que les masques

simples, mais en utilisant les fonctions de for¸cage combin´ees :

M0c=F0c

1

F0c

2

. . . F0c

No

M1c=F1c

1

F1c

2

. . . F1c

No

IV-2 Algorithme it´eratif 145

La r´esolution des contraintes combin´ees, par l’application des masques combin´es, ne doit

pas remettre en question les modifications effectu´ees lors de la r´esolution des contraintes

simples (´Eq. IV.1). Par cons´equent, les masques simples sont utilis´es en mˆeme temps que

les masques combin´es, afin de garantir que le vecteur temporaire calcul´e ne viole pas de

contraintes simples (´Eq. IV.2).

k ∈ {1, . . . , dim(T emp)}, T emp

k

=F0s

k

+F0c

k

.T emp

k

+ (F1s

k

+F1c

k

) (IV.2)

Le principe de r´esolution est pr´esent´e dans la figure 46, celui-ci est une extension du

principe de r´esolution pour les contraintes simples (Fig. 45)

Figure 46 – Filtre logique it´eratif complet

L’application des masques simples, permet l’obtention d’un vecteur de sorties temporaire

(T emp) satisfaisant les contraintes simples. Ce vecteur temporaire est utilis´e pour mettre

`

a jour la valeur des contraintes combin´ees. Si au moins une contrainte combin´ee est viol´ee,

alors les masques combin´es et simples sont utilis´es pour calculer un nouveau vecteurT emp.

N´eanmoins, ce vecteur T emp peut violer de nouvelles contraintes combin´ees. En effet, les

masques combin´es sont calcul´es `a partir des fonctions de for¸cage combin´ees (F0c

k

et

F1c

k

, D´ef. 28), et ces fonctions utilisent les valeurs temporaires des sorties (T emp). Par

cons´equent, le vecteur T empdoit ˆetre `a nouveau test´e apr`es avoir ´et´e calcul´e. D`es que le

vecteur T emp r´esout l’ensemble des contraintes, l’algorithme se termine en affectant les

valeurs temporaires aux sorties finales.

L’algorithme 2 est la version compl`ete de l’algorithme it´eratif am´elior´e durant cette

th`ese.

Algorithme 2 : Algorithme it´eratif complet

Data :No

Input :I, E, G

Output :O

/* Calcul de F0s

k

et F1s

k

*/

fork = 1, ..., Nodo

F0s(k) := ... ;

F1s(k) := ... ;

end

/* R´esolution des contraintes simples */

fork = 1, ..., Nodo

Temp(k) := NOT F0s(k) AND G(k) OR F1s(k) ;

F0c[k] := false ;

F1c[k] := false ;

end

Flag := true ;

whileFlag do

Cc := updateCc(Temp, I, E) ;

Flag := estViol´ee(Cc) ;

if Flag then

fork = 1, ..., No do

F0c(k) := ... ;

F1c(k) := ... ;

end

/* R´esolution des contraintes combin´ees */

fork = 1, ..., No do

Temp(k) := NOT(F0s(k) OR F0c(k)) AND Temp(k) OR (F1s(k) OR F1c(k)) ;

end

end

end

/* Mise `a jour des sorties */

fork = 1, ..., Nodo

O(k) := Temp(k) ;

end

L’impl´ementation de cet algorithme en ST (langage API) a ´et´e automatis´e dans le logiciel

SEDMA (Annexe II-3.3).

´

Etant donn´e que l’ensemble de contraintes est suppos´e coh´erent (car v´erifi´e auparavant),

cet algorithme poss`ede obligatoirement une solution quelles que soient les valeurs des

IV-3 Commande par filtre logique `a base de techniques SAT 147

entr´ees. Sous les hypoth`eses de coh´erence et d’absence de d´efaillance des capteurs de la

partie op´erative, la pr´esence d’une bouclewhile n’est donc pas un probl`eme. En effet, une

solution existe donc le«chien de garde»de l’API ne sera pas activ´e. De plus, ´etant donn´e

que les expressions des fonctions et des contraintes sont calcul´ees hors-ligne, l’ex´ecution

en-ligne de cet algorithme consomme tr`es peu de temps de calcul. N´eanmoins, l’utilisation

de cet algorithme pr´esente deux inconv´enients.

Premi`erement, un choix arbitraire de r´esolution doit ˆetre effectu´e pour r´esoudre une

contrainte combin´ee : les priorit´es fonctionnelles (section III-3.3.2). Ce choix restreint

par cons´equent l’espace de solution atteignable.

Deuxi`emement, l’utilisation des priorit´es fonctionnelles rend complexe la v´erification de la

coh´erence (section III-4). En effet, les priorit´es fonctionnelles impliquent la construction

du graphe d’atteignabilit´e et son analyse pour statuer sur la coh´erence. Ces temps de

calculs peuvent ˆetre longs. A contrario, la v´erification de la coh´erence alg´ebrique (sans

prendre en compte ces priorit´es) est assez simple (D´ef. 30).

Dans la suite de ce chapitre (section IV-3), nous proposons deux algorithmes, ne n´

e-cessitant pas de priorit´es fonctionnelles pour la r´esolution d’un ensemble de contraintes

logiques.

IV-3 Commande par filtre logique `a base de

tech-niques SAT

Cette section a pour but de montrer comment nos travaux peuvent ˆetre rapproch´es des

m´ethodes de programmation par contraintes de la communaut´e informatique. Dans un

premier temps, la section IV-3.1 montre, `a l’aide d’une preuve de concept, comment il est

possible d’utiliser un solveur de contraintes pour la commande d’un SED contrˆol´e par un

API. Enfin, dans les sections IV-3.2 et IV-3.3, nous proposons deux algorithmes `a base de

techniques SAT, impl´ementables dans un API.