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
ket 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
1F0c
2. . . F0c
NoM1c=F1c
1F1c
2. . . F1c
NoIV-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
ket
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
ket 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.
Dans le document
Contribution à la Commande des Systèmes à Événements Discrets par Filtre Logique
(Page 145-149)