• Aucun résultat trouvé

Extension supplémentaire de l’expressivité

IV. Planification temporelle : le système TLP-GP

3. TLP-GP : un planificateur pour résoudre des problèmes temporellement-expressifs

3.5. Extension supplémentaire de l’expressivité

Le langage de représentation des problèmes pouvant être traités par TLP-GP est du type

] e , [s ] e , [s

L ++ ++ . Même si ce langage permet une plus grande flexibilité dans la définition de domaines et problèmes temporels, son pouvoir de représention est identique à celui de PDDL2.1, du type Ls,s,o,ee. Pour pouvoir formaliser des problèmes plus proches de problèmes réels, nous avons implémenté une nouvelle extension qui permet d'augmenter l'expressivité temporelle du langage PDDL2.1 sur deux points essentiels :

La prise en compte de nouveaux instants caractéristiques des actions, différents de start et end, ainsi que des ensembles de contraintes associées.

L'introduction des modalités atomiques supported et forbidden qui vont nous permettre de formaliser les modalités at et over, modalités qui existent déjà pour la sémantique des intervalles temporels associés aux effets et préconditions des actions. Elles vont également nous permettre de formaliser de nouvelles modalités comme somewhere et anywhere.

3.5.1. Définition d'instants caractéristiques pour les actions

Définition 53 (action de PDDL temporel étendu) :

Une action A définie en PDDL temporel étendu comporte trois ensembles supplémentaires par rapport à une action définie en PDDL2.1 :

timepoints : est l'ensemble Ci des instants caractéristiques de l'action. Exemple : start,

end.

timealiases : permet de définir des alias pour les intervalles temporels. Exemple : all

représente [start ; end[.

timeconstraints : est l'ensemble des contraintes Cn qui doivent être vérifiées entre

instants caractéristiques. Exemple : end = start + durée(A).

Dans le cas où ces ensembles sont omis dans la définition de l'action, les ensembles par défaut de PDDL2.1 sont alors utilisés :

:duration (= ?duration …) :timepoints (start end)

:timealiases (all [start end[)

:timeconstraints (= (- end start) ?duration)

Exemple : l'action skyjet-fly permet de reserver une fenêtre de départ depuis une base, et de

commencer le vol n'importe quand à l'intérieur de cette fenêtre.

(:durative-action skyjet-fly

:parameters (?s – skyjet ?b - skybase)

:duration (= ?duration (flying-timewindow ?s)) :timepoints (start end flypoint)

:timealiases (all [start end[)

:timeconstraints ((= (- end start) ?duration) (< start flypoint)

(> end flypoint)) :condition (over all (ready ?s)

:effect (and (over all (reserved-skybase ?b))

(over [flypoint (+ flypoint (flying-time ?s))] (flying ?s)) (at end (not (reserved-skybase ?b)))))

3.5.2. Définition de modalités pour les intervalles temporels

a) Modalités atomiques et forme temporelle d'un intervalle

Nous introduisons maintenant deux modalités atomiques qui permettent de définir différentes manières, pour une proposition, d'intervenir sur un intervalle temporel :

La modalité atomique supported indique que f est nécessaire sur un intervalle temporel, elle est équivalente pour un intervalle particulier à la modalité "nécessaire" ( [a ; b] f) de la logique modale normale [Kripke, 1959, 1963]. Autrement dit, f doit être supporté par une action sur cet intervalle.

La modalité atomique forbidden indique que l'établissement de f est impossible sur un intervalle temporel. Cette modalité est différente de la négation de la modalité "possible"

de la logique modale normale (¬◊[a ; b] f), car f peut être vrai sur cet intervalle à condition qu'il soit établi avant l'intervalle.

Définition 54 (modalités atomiques supported/forbidden) :

Soient [a ; b] un intervalle temporel, et f un littéral. Nous pouvons définir les deux modalités atomiques :

supported [a b] f : f est nécessairement vrai sur tout l’intervalle [a ; b] ;

forbidden [a b] f : f ne peut être établi sur l’intervalle [a ; b].

Le résultat de l'application d'une modalité atomique à un littéral sur un intervalle temporel donné sera appelé atome temporel.

Dans le cas d'une précondition, supported[a ; b] f signifie qu'une autre action doit produire et protéger f sur [a ; b]. Dans le cas d'un effet, supported[a ; b] f signifie que l'action produit et protège f sur [a ; b]. Autrement dit, la modalité supported correspond à l'établissement de f "en tout point" de l'intervalle. Dans les deux cas, forbidden[a ; b] f signifie qu'aucune autre action, distincte de l'action dans laquelle l'atome temporel est utilisé, ne peut produire f sur [a ; b].

Définition 55 (forme temporelle) :

A tout intervalle temporel sera associé un ensemble d'atomes temporels. Cet ensemble sera appelé la forme temporelle (ou la particularité temporelle) de l'intervalle. Par extension, la forme temporelle (ou la particularité temporelle) d'un ensemble d'intervalles temporels sera l'union des formes temporelles de tous ses éléments.

Définition 56 (effet-cohérence)

La forme temporelle F d'un ensemble d'intervalles sera dite effet-cohérente si pour tout couple d'atomes temporels (mod1[a ; b] f, mod2[c ; d] ¬f) ∈ F2, on a (mod1 ≡ mod2 ≡ supported) ⇒ ([a ; b] ∩ [c ; d] = ∅). Concrètement, une forme temporelle qui n'est pas effet-cohérente ne pourra pas intervenir dans la définition d'un effet d'une action applicable car l'action ne pourra jamais produire f et sa négation sur un même intervalle.

Définition 57 (précondition-cohérence)

La forme temporelle F d'un ensemble d'intervalles sera dite précondition-cohérente si F est effet-cohérente et pour tout couple d'atomes temporels (mod1[a ; b] f, mod2[c ; d] f) ∈ F2, on a (mod1 ≡ supported et mod2≡ forbidden) ⇒ ([a ; b] ∩ [c ; d] = ∅). Concrètement, une forme temporelle qui n'est pas précondition-cohérente ne pourra pas intervenir dans la définition d'une précondition d'une action applicable, d'une part parce que l'action ne pourra pas requérir à la fois f et sa négation sur un même intervalle (effet-cohérence), et d'autre part parce que l'action ne pourra pas requérir la protection de f sur un intervalle et interdire son établissement (son maintien) sur ce même intervalle (précondition-cohérence).

Etant donné deux formes temporelles données, nous pouvons définir P comme étant la partition de l'union des intervalles temporels correspondants. Pour que ces deux ensembles d'intervalles temporels puissent se recouvrir, il faut vérifier, pour chaque intervalle de P, la compatibilité des atomes temporels qui leur sont associés. Nous donnons ici le diagramme qui

permet de déterminer les atomes temporels autorisant le recouvrement des intervalles temporels.

Figure 26 : diagramme d'autorisation de recouvrement des intervalles temporels

Nous allons maintenant redéfinir les modalités courantes utilisées implicitement dans le langage PDDL2.1 en utilisant les modalités atomiques que nous venons de définir.

b) Modalités courantes de PDDL2.1

Nécessité d’une précondition ou apparition d'un effet à un instant donné : at a p

La modalité "at" permet de définir un instant auquel une précondition doit être vérifiée ou un effet doit apparaître :

• p est vraie à l'instant a.

• ¬p ne peut pas être vraie à l'instant a.

Modalité “at” : at a f

supported [a a] f

(:time-modality at ?a ?f :timevariables () :constraints ()

:supported ([?a ?a] ?f) :forbidden ())

Maintien d’une précondition ou d'un effet sur une durée : over [a b] p

Cette modalité existait déjà en partie pour les préconditions dans PDDL2.1 (over all) et [Cushing et al., 2007.b] l'ont étendue aux effets des actions. Dans TLP-GP, nous l'étendons à des intervalles quelconques ; c'est cette modalité que nous avons implicitement utilisée dans les trois sections précédentes.

• p est vraie sur l'intervalle [a, b] (maintien d'un effet).

• ¬p ne peut pas être vraie sur l'intervalle [a, b].

[supported f]

[forbidden f]

[supported ¬f]

[forbidden ¬f]

Modalité “over” : over [a b] f

supported [a b] f

(:time-modality over [?a ?b] ?f :timevariables ()

:constraints (<= ?a ?b) :supported ([?a ?b] ?f) :forbidden ())

c) Modalités "somewhere" et "anywhere"

Nous définissons ici, en utilisant les modalités atomiques supported et forbidden, deux nouvelles modalités : "somewhere" et "anywhere".

Incertitude sur l'instant de production de l'effet (resp. sur l'instant de nécessitation d'une précondition) : somewhere [a b] p

Cette modalité permet d'exprimer que l'on doit protéger tout l’intervalle pour garantir que l’effet puisse s’y produire (resp. pour garantir que la précondition puisse y être satisfaite) : il existe une marge de manoeuvre, mais la valeur finale est incontrôlable.

• p est vraie à l'instant b (incertitude sur l'instant d'apparition de l'effet, certitude sur sa production).

• ¬p ne peut pas être établie sur l'intervalle [a, b] (protection de l'intervalle).

Modalité “somewhere” : somewhere [a b] f

supported [b b] f forbidden [a b] ¬f

(:time-modality somewhere [?a ?b] ?f :timevariables ()

:constraints (<= ?a ?b) :supported ([?b ?b] ?f) :forbidden ([?a ?b] (not ?f)))

Choix possible de l'instant de production de l'effet (resp. de l'instant de nécessitation d'une précondition) : anywhere [a b] p

Cette modalité permet d'exprimer que l’effet (resp. la précondition) doit impérativement se produire (resp. être produite) dans l'intervalle, mais n’importe où : il existe une marge de manoeuvre, mais la valeur finale est contrôlable. Le planificateur peut réduire l’intervalle, sans toutefois aboutir à l’intervalle vide pour conserver la satisfiabilité. On peut en plus imposer une durée de validité minimale à l’effet, durée pendant laquelle l'effet doit être maintenu dans l'intervalle (syntaxe : minimal-duration d anywhere [a b] p).

p est vraie à un instant c de l'intervalle [a, b]. On peut, en utilisant minimal-duration d, le contraindre à rester vrai à l'intérieur de [a, b] durant d.

• ¬p peut être vraie sur une partie de l'intervalle [a, b] mais pas partout, en particulier pas de l'instant c (inclus) jusqu'à c+d (si minimal-duration d est utilisé).

Modalité “anywhere” : anywhere [a b] f

supported [i j] f

(:time-modality anywhere [?a ?b] ?f :timevariables (?i ?j) :constraints ((<= ?a ?i) (<= ?j ?b) (<= ?i ?j)) :supported ([?i ?j] ?f) :forbidden ())

Modalité “anywhere” avec durée minimale :

minimal-duration d anywhere [a b] f supported [i j] f (:time-modality minimal-duration ?d anywhere [?a ?b] ?f :timevariables (?i ?j) :constraints ((<= ?a ?i) (<= ?j ?b) (<= ?i ?d) (<= ?d (- ?j ?i))) :supported ([?i ?j] ?f) :forbidden ())

Remarque : la modalité anywhere est identique à over ; l’utilisation de cette modalité dans la

définition d'une action peut être vue comme l’ajout d’un nouvel instant caractéristique i borné par l'intervalle [a ; b], et de nouvelles contraintes associées.

d) Modalités atomiques incompatibles entre elles dans la définition de la forme temporelle d'un intervalle

Il est possible d’utiliser conjointement des modalités atomiques supported et forbidden incompatibles entre elles dans la forme temporelle d'un intervalle.

Exemple, effets "over all" de [Cushing et al., 2007.b] :

Dans la forme originale, un tel effet représente la transition d'un fluent f d'une valeur donnée à une autre sur toute la durée de l'action. C'est-à-dire que f est affecté par l'action sur cette période et ne peut donc pas intervenir simultanément dans une autre action. Par exemple, la transition du fluent f de la valeur faux à la valeur vrai est codée :

:effect (and (over all (-> f false true) …)

Cette représentation présente l'inconvénient d'ajouter implicitement une précondition dans la définition d'un effet puisque, pour passer de la valeur faux à la valeur vrai, le fluent doit nécessairement être faux au début de l'action. Nous adoptons une définition plus large d'une transition sur un intervalle [a, b] : f est indéfini sur [a, b[ et f prend une valeur fixée à l'instant b. Cette transition peut être représentée par une nouvelle modalité que nous appelerons "transition over" (notée ->over [a b] f). Notre exemple de transition peut alors être codé : :condition (and (at start (not f)) …)

Les avantages de cette représentation sont d'une part qu'il n'est plus permis d'inclure une précondition dans la définition d'un effet et d'autre part qu'il n'est plus nécessaire d'imposer la connaissance de la valeur d'un fluent pour qu'il puisse se trouver en transition vers une autre valeur. Par exemple, si une action consiste à planter un clou dans une planche en donnant plusieurs coups de marteau, il n'est pas nécessaire de savoir si le clou est complètement enfoncé ou pas au début de l'action, mais il le sera certainement à la fin.

Modalité “transition over” : over [a b] f

supported [b b] f forbidden [a b] f forbidden ]a b] ¬f

(:time-modality (->over [?a ?b] ?f :timevariables ()

:constraints (<= ?a ?b) :supported ([?b ?b] ?f) :forbidden (([?a ?b] ?f)

(]?a ?b] (not ?f))))

La modalité transition over code le fait que f est produit à l’instant b et aucune autre action ne peut produire f ou ¬f sur l’intervalle [a ; b]. La forme temporelle de son ensemble d'intervalles associés est effet-cohérente, mais n'est pas précondition-cohérente puisqu'elle contient supported[b ; b] f et forbidden[a ; b] f et que [b ; b] ∩ [a ; b] = {b} ≠ ∅. Cette modalité ne peut donc être utilisée que pour définir un effet. Si elle est utilisée pour la définition d'une précondition, cette dernière ne pourra jamais être vérifiée.

3.5.3. Exemples d’actions utilisant les instants caractéristiques ou les modalités

Outre l'augmentation importante de l'expressivité du langage, l'introduction conjointe des instants caractéristiques avec leurs contraintes associées et des modalités temporelles permet une grande souplesse dans la définition des actions. Par exemple, si nous souhaitons capturer l'information temporelle de la modalité anywhere (anywhere [start end] (flying ?s)), nous pouvons utiliser un nouvel instant caractéristique et la modalité over.

(:durative-action skyjet-fly :parameters (?s – skyjet)

:duration (= ?duration (flying-timewindow ?s)) :timepoints (start end flypoint)

:timealiases (all [start end[)

:timeconstraints ((= (- end start) ?duration) (< start flypoint)

(> end flypoint)) :condition (over all (ready ?s) :effect (at flypoint (flying ?s)))

Il est également possible d'utiliser des instants caractéristiques et la modalité over pour coder la modalité anywhere avec durée minimale (minimal duration 3 anywhere [start end] (flying ?s)).

(:durative-action skyjet-fly :parameters (?s – skyjet)

:duration (= ?duration (flying-timewindow ?s)) :timepoints (start end flypoint-s flypoint-e) :timealiases (all [start end[)

:timeconstraints ((= (- end start) ?duration) (< start flypoint-s)

(> end flypoint-e)

(>= (- flypoint-e flypoint-s) 3) :condition (over all (ready ?s)

Après avoir proposé de nouvelles extensions de l'expressivité de PDDL2.1, nous allons voir que les différents benchmarks des compétitions IPC sont tous temporellement simples et nous allons proposer un ensemble de nouveau benchmarks temporellement expressifs intégrant progressivement les intervalles temporels de [Smith, 2003], puis les modalités temporelles que nous avons définies.

Documents relatifs