Les ressources et la planification temporelle - CNRS

CPT est un planificateur temporel optimal combinant le branchement utilisant les liens causaux dans les plans partiels (Partial Order Causal Link ou POCL) et ...
194KB taille 17 téléchargements 667 vues
Les ressources et la planification temporelle Zied Loukil* - Abdelmajid Ben Hamadou** - Pierre Marquis*** - Vincent Vidal*** * Laboratoire MIRACL Université de Sfax – ISIMS [email protected] ** Laboratoire MIRACL Université de Sfax - ISIMS [email protected] *** CRIL-CNRS FRE 2499 Université d’Artois rue de l'université - SP16 62307 Lens Cedex, France {marquis,vidal}@cril.univ-artois.fr : Dans les planificateurs temporels optimaux modernes, nombreux sont ceux qui ne gèrent pas les ressources, pour les autres, les résultats obtenus sont très limités pour les problèmes avec ressources ainsi que pour les problèmes sans ressources. Pour cette raison, on s’est intéressé dans cet article à effectuer des modifications dans un planificateur temporel optimal performant CPT, qui ne gère pas les ressources dans sa version initiale pour lui donner la capacité de prendre en considération les ressources consommables et renouvelables tout en gardant ses performances dans la recherche des plans valides qui s’exécutent dans un temps minimal. Pour ce faire, on a procédé à la description des différentes contraintes liées aux ressources que la nouvelle version du planificateur doit prendre en considération et on a proposé des méthodes pour résoudre les éventuels conflits générés par les actions qui consomment ou génèrent la même ressource.

RÉSUMÉ

ABSTRACT: The most of recent temporal planners are not able to manage resources or gives very poor results in temporal planning even with and without resources. For this reason, we try in this paper to give modifications in a powerful optimal temporal planner called CPT (that initially cannot manage resources) to give it the capacity to consider both consumable and renewable resources and we will try to conserve the performance of this planner to find valid optimal temporal plans.

We start by fixing different resource constraints that we will use, and we will propose efficient methods to resolve conflicts eventually generated by action consuming or generating the same resource. : planification renouvelables.

MOTS-CLÉS

KEYWORDS:

temporelle, CPT,

ressources

consommables,

temporal planning, CPT, consumable resources, renewable resources.

ressources

1. Introduction La planification a pour objectif de fournir à un système (robotique, informatique...) la capacité d’interagir avec son environnement de façon autonome, afin d’atteindre les objectifs qui lui ont été assignés. Il doit déterminer les actions à exécuter pour passer d’un état initial à un état plus satisfaisant, en fonction des connaissances/croyances sur le système (et de sa dynamique propre) et des préférences sur les états du système et les actions entreprises. Les problèmes de planification se classifient en plusieurs catégories (planification classique, planification dans l’incertain, planification temporelle…) selon leur degré de prise en compte des réalités de l’univers. Un des axes principaux de la recherche sur la planification est la conception et l’amélioration d’algorithmes de planification qu'on appelle aussi planificateurs. Nous nous intéresserons dans cet article aux planificateurs temporels qui ont connu une grande évolution ces dernières années, en particulier les planificateurs LPG (Gerevini et al, 2005), IxTeT (Ghallab et Laborie, 1995), SAPA (Kambhampati et Minh, 2001 ; Kambhampati et Minh, 2003), TP4 (Geffner et Haslum, 2000) et CPT (Geffner et Vidal, 2004 ; Geffner et Vidal, 2005). Notre but est d’intégrer la prise en compte des ressources limitées dans le planificateur temporel optimal CPT tout en gardant l’optimisation du planificateur de la durée d’exécution du plan trouvé. Pour ce faire, nous commençons par élaborer les règles et les contraintes des ressources afin de les intégrer dans CPT. 2. Planification temporelle avec ressources 2.1. Planification classique et planification temporelle 2.1.1. Planification classique La planification est un élément essentiel dans l’intelligence artificielle. Elle a pour but de faire évoluer un système donné à l’état initial pour qu’il puisse satisfaire un but ou un ensemble de buts donnés en utilisant un certain nombre d’actions possibles. Dans le cas de planification classique, le plan solution est un ensemble d’actions exécutées dans un ordre bien précis pour pouvoir faire subir au système les transformations nécessaires. On constate souvent que dans les problèmes de planification, les espaces de recherche de plan deviennent très vite énormes et intraitables par une simple recherche, et c’est pour cette raison que dans la planification classique on a imposé des restrictions qu’on ne trouve pas dans le monde réel. Pour exprimer les données d’un problème de planification classique, il y a eu plusieurs langages d’expression comme STRIPS (Fikes et Nilsson, 1971), ADL (Pednault, 1989) mais le langage le plus utilisé est PDDL (McDermott, 1998) ; c’est

un langage créé en 1998 par Drew McDermott pour la compétition IPC-98 dans le but de développer un seul langage de description des domaines de planification utilisé par tous les planificateurs de cette compétition. Il est ensuite devenu comme un standard utilisé par tous les planificateurs. 2.1.2. Planification temporelle La planification temporelle fait introduire la notion de temps dans les problèmes, ce qui implique des différences au niveau de la notion du plan optimal. En effet, dans la planification classique, le plan optimal est celui qui contient un nombre minimal d’actions, alors que dans la planification temporelle, le plan optimal est celui dont le temps d’exécution est minimal. Dans la planification temporelle, on trouve les notions suivantes : - Durée d’exécution d’une action : c’est le temps nécessaire à une action pour être exécutée. On suppose que les actions sont non interruptibles, c'est-à-dire que si toute action dans le plan doit être exécutée jusqu’à la fin. - Notion de précédence entre les actions : Si on a une action α précède une autre action β (on note α < β), on sait que l’action β ne peut être exécutée que si l’action α est achevée. - Actions mutex : Contrairement à la planification classique, les actions dans la planification temporelle peuvent être exécutées simultanément si elles ne sont pas des actions mutex. Deux actions sont dites mutex si l’une retire une précondition ou un ajout de l’autre. On remarque que la planification temporelle est en relation étroite avec l’ordonnancement avec la différence que dans les problèmes d’ordonnancement, les actions à exécuter sont déterminées préalablement et le but est de trouver l’ordre optimal de leur exécution. La planification temporelle est donc considérée comme une combinaison de la planification et de l’ordonnancement. L’objectif de la planification temporelle est de trouver un plan qui fasse évoluer le système de l’état initial à l’état final tout en respectant les différentes contraintes du problème, on qualifie ce plan de plan valide. On peut aussi exiger que ce plan soit exécutable en un minimum de temps, on le qualifie alors de plan optimal. Pour décrire les données des problèmes de planification temporelle, on a créé PDDL2.1 (Fox et Long, 2001), une version améliorée de PDDL en intégrant entre autres, la durée des actions et les contraintes numériques. Ce langage a été utilisé dans la compétition IPC-2002. 2.2. Exemples de planificateurs temporels Dans ce paragraphe, nous allons présenter quelques planificateurs temporels, les uns sont optimaux (TP4 et CPT), les autres ne le sont pas (LPG et SAPA).

Tous ces planificateurs sont indépendants du domaine de planification et la majorité d’entre eux utilise le langage PDDL et sont pour la lecture des problèmes de planification intégrant les durées et les quantités numériques. 2.2.1. LPG (Gerevini et al, 2005) C’est un planificateur basé sur la recherche locale et les graphes de planification, il est programmé en GCC et il peut résoudre les problèmes de génération de plans ainsi que ceux d’adaptation de plans. 2.2.2. IxTeT (Ghallab et Laborie, 1995) Le mécanisme du planificateur IxTeT est la recherche dans un espace de plans partiels, il est capable de gérer les contraintes temporelles et les contraintes de ressources consommables. 2.2.3. SAPA (Kambhampati et Minh 2001 ; Kambhampati et Minh 2003) Le planificateur SAPA est programmé en Java, il utilise le chaînage avant basé sur des heuristiques, il prend en compte les actions durables, le temps-limite ainsi que les ressources consommables. 2.2.4. TP4 (Geffner et Haslum, 2000) TP4 est un planificateur temporel capable de gérer les ressources consommables et renouvelables. Il traite la planification séquentielle et parallèle, et pour cela, il utilise une famille d’heuristiques admissibles dont le calcul est polynomial hm= 1,2,… qui calculent récursivement une approximation du coût d’un ensemble d’atomes C par le coût du plus coûteux sous-ensemble de taille m dans C. Il utilise l’algorithme de recherche IDA*. 2.2.5. CPT (Geffner et Vidal, 2004 ; Geffner et Vidal, 2005). CPT est un planificateur temporel optimal combinant le branchement utilisant les liens causaux dans les plans partiels (Partial Order Causal Link ou POCL) et les règles d’élagage basées sur la programmation par contraintes (Geffner et Vidal, 2004 ; Geffner et Vidal, 2005) Il utilise une extension des heuristiques hm pour l’estimation de la durée d’exécution du plan dans le cadre temporel, cette extension est décrite dans (Geffner et Haslum, 2001). CPT ne traite pas les ressources, cependant, il donne d’excellents résultats dans les problèmes strictement temporels, en effet, il a été récompensé par un 2ème prix dans la catégorie planification optimale à IPC-2004. Les premières versions du planificateur CPT ont été implémentées en utilisant le langage de programmation Claire (Caseau et Josset, 1999) et la librairie CP Choco (Laborie, 2003) pour la programmation par contraintes, mais la nouvelle version est

programmée en C ; c’est sur cette version du planificateur que nous allons faire les modifications nécessaires pour qu’il puisse traiter les ressources. 2.3. Prise en compte des ressources 2.3.1. Les ressources dans les RCPSP Les règles suivantes sur les ressources en planification sont inspirées des problèmes d’ordonnancement de projets sous contraintes de ressources (RCPSP) en particulier dans les travaux de Elkhyari (Elkhyari, 2003) et de Demassey (Demassey, 2003). Le RCPSP est un problème classique en ordonnancement qui a fait l'objet de nombreux travaux. Ceci est dû au fait qu'il est très présent dans les problématiques industrielles comme par exemple les systèmes de production (les problèmes d'atelier), la gestion de projet, le problème de découpe... Un problème RCPSP est formulé par la donnée d’un ensemble d'activités et d'un ensemble de ressources renouvelables. Chaque ressource est disponible en une quantité constante et chaque activité a une durée opératoire bien définie et nécessite pour sa réalisation une quantité constante de chaque ressource. On distingue dans un RCPSP des contraintes temporelles qui sont définies par des relations de précédence et des contraintes de ressources qui exigent qu'à chaque instant et pour chaque ressource la demande totale en ressource ne dépasse pas la quantité de ressource disponible. La réalisation d'un plan consiste en l'exécution, par des ressources, d'un ensemble d'actions de durées données et liées entre elles par des contraintes de précédence. Une instance du problème de planification temporelle avec ressources est la donnée d'un ensemble A de n actions, d'un ensemble E d’états et d'un ensemble R de m ressources. Les actions du projet sont non interruptibles (ou non préemptives). Ainsi, une action α termine son exécution à l'instant t(α) +dur(α), où t(α) est l’instant de début d'exécution de α et dur(α) sa durée. Les actions sont liées par des contraintes de précédence simples, de la forme α0 on a : D[R(r, α)] = {a∈A / (qinc(r,a)>0) v (qas(r,a)>0)}

[5]

3.2.2. Menace de lien de ressources Avant d’introduire les menaces des liens de ressources, on doit rappeler la contrainte sur les ressources qui dit que si une action α génère une ressource r, la ressource est bloquée pour l’action α durant son exécution, c'est-à-dire qu’aucune action β consommatrice ou génératrice de la ressource r ne peut s’exécuter tout au long de l’exécution de l’action α. Suivant le type de l’action qui génère la ressource, on peut distinguer deux cas : 3.2.2.1. Cas d’une assignation Etant donné un ensemble d’actions {α1,…, αn}⊂ A consommant la même ressource r∈R et une action α’ qui assigne la disponibilité de r à qas(r, α’), un lien de ressources R(r, αi)= α’ peut être menacé par une action α si et seulement si : {α1,…, αn, α’} ⊂ {a / InPlan(a)} et ∑ qinf(r, a / a ∈{α1,…, αn, α}) > qas(r, α’)

[6]

Dans ce cas, α’ est exclu du domaine du lien R(r, α) et l’action α doit être placée après une autre action β ∈ D[R(r, α)]. Pour illustrer le raisonnement, on considère dans l’exemple de Zeno Travel que l’action de recharge refuel assigne le réservoir à 50 unités de la ressource r, que le réservoir contient initialement 25 unités de r et que les actions fly et zoom nécessitent respectivement 15 et 25 unités de la ressource r. Le schéma suivant montre comment doit-on procéder pour pouvoir exécuter deux actions fly et deux actions zoom :

L1 Refuel Assign : 50

L2

Fly1 Cons : 15

Fly2 Cons : 15

L3 Zoom1 Cons : 20

START Assign : 25

L4 Zoom2 Cons : 20

L’action refuel génère une quantité assez suffisante de la ressource r pour exécuter les actions fly1, fly2 et zoom1 (liens L1, L2 et L3), mais l’action zoom2 constitue une menace pour les 3 liens de ressources indiqués car elle ne trouve pas assez de ressources pour être exécutée ; on doit donc supprimer l’action refuel du domaine du lien L4. Ce domaine se réduit donc à l’action START. 3.2.2.2. Cas d’une incrémentation Etant donné un ensemble d’actions {α1,…, αn}⊂ A consommant la même ressource r∈R et une action α’ qui incrémente la disponibilité de r à la quantité qinc(r, α’), un lien de ressources R(r, αi)= α’ peut être menacé par une action α si et seulement si : {α1,…, αn, α} ⊂ {a / InPlan(a)} et ∑ qinf(r, a / a∈{α1,…, αn, α}) > Qbef(r, α’) + qinc(r, α’)

[7]

Dans ce cas, α’ n’est pas obligatoirement exclu du domaine du lien R(r, α). En effet, s’il existe une autre action α’’ génératrice de la ressource r telle que : ∑ qinf(r, a / a∈{α1,…, αn, α}) ≤ Qbef(r, α’) + qinc(r, α’) + qinc(r, α’’) (si α’ précède α’’)

[8]

∑ qinf(r, a / a∈{α1,…, αn, α}) ≤ Qbef(r, α’’) + qinc(r, α’’) + qinc(r, α’) (si α’’ précède α’)

[9]

Alors l’action α’ et l’action α’’ font toutes les deux partie du plan partiel.

Pour résoudre les menaces sur les liens de ressources en cas d’incrémentation, la solution est d’effectuer les changements suivants lorsqu’un lien de ressources R(r, αi)= α’ est menacé par une action α: - On affecte la valeur 0 à qinc(r, α’), à Qbef(r, α’) et à ∑ qinf(r, a / a∈{α1,…, αn, α}) - L’action α’ devient consommatrice de la ressource r et on a alors : qinf(r, α’) = ∑ qinf(r, a / a∈{α1,…, αn, α}) - Qbef(r, α’) + qinc(r, α’)

[10]

En d’autres termes, l’action α’ demande la quantité de ressources qui lui manque pour pouvoir exécuter les actions α1,…, αn, ainsi que l’action α. On s’arrête dans l’un des deux cas suivants : - La menace est relevée et dans ce cas toutes les actions de recharge essayées font partie du plan, nous obtenons à la fin : Qaft(α) = ∑ Qbef(r, a / a∈{α’, α’’,…, α(n)}) + ∑ qinc(r, a / a∈{α’, α’’,…, α(n)}) - ∑ qinf(r, a / a∈{α1,…, αn, α}) [11] - Le domaine du lien de ressources D[R(r, α’)] devient vide sans que la menace ne soit relevée. Dans ce cas, on effectue un backtrack pour essayer d’autres branchements. Pour illustrer la solution, on considère dans l’exemple de Zeno Travel qu’il y a deux actions de recharge refuel et wrefuel générant respectivement 10 et 20 unités de la ressource r et l’action fly nécessitant 25 unités de la ressource r. Le schéma suivant montre comment doit-on procéder pour pouvoir exécuter l’action fly :

Refuel Inc : 10 Cons : 0

Fly Cons : 25

Wrefuel Inc : 20 Cons : 0

On voit bien qu’aucune des deux actions refuel et wrefuel ne peut produire toute seule une quantité de la ressource r suffisante pour exécuter l’action fly. On effectue alors la transformation indiquée ci-dessus :

Fly Cons : 0

Refuel Inc : 0 Cons : 15 (25-10)

Wrefuel Inc : 20 Cons : 0 L’action refuel demande désormais 5 unités de r, qui lui seront fournies par l’action wrefuel, nous obtenons à la fin le plan partiel suivant :

Wrefuel Inc : 5 (20-15) Cons : 0

Refuel Inc : 0 Cons : 15 (25-10)

Fly Cons : 0

On arrive enfin à satisfaire la demande en ressources de l’action fly, en plus on a maintenant 5 unités dans le réservoir qui pourraient être servies pour d’autres actions qui consomment la ressource r. 4. Implémentation dans CPT Pour pouvoir insérer la notion de ressources renouvelables dans le CPT, on doit élaborer pour chaque action α du problème, la liste des ressources consommées et celle des ressources générées par α. On doit aussi indiquer pour chaque ressource r du problème, la liste des actions qui la génèrent et celle des actions qui la consomment. Ces listes seront utiles pour faire le lien entre actions et ressources. On doit aussi établir pour chaque action α les liens de ressources correspondant à chaque ressource consommée par α. On peut distinguer un lien de ressources par rapport à un lien causal en se focalisant sur le type de fluents qui constituent le lien. En effet, pour un lien de ressources, le fluent indique la production de la ressource en question, par exemple, pour une ressource r le fluent indiquant son rechargement peut être appelé « r_produced ». Ce fluent doit être demandé par toutes les actions qui consomment la ressource r. Après avoir réussi à distinguer les liens de ressources des liens causaux, on doit détecter les menaces engendrées par les actions sur chaque lien de ressources.

La résolution de ces menaces s’effectue automatiquement par les mécanismes de filtrage et de backtracking présents dans le CPT. Dans le cas d’incrémentation, les actions qui génèrent la ressource r demandent elles-mêmes le fluent r_produced mais avec une quantité nulle de la ressource r. Lorsqu’on a une menace de lien de ressource R(r, αi)= α’, la quantité de r demandée par l’action α’ passe de 0 à ∑ qinf(r, a / a∈{α1,…, αn}) - Qbef(r, α’) + qinc(r, α’) (les actions α1,…, αn sont les actions qui consomment la ressource r et une action parmi elles est celle qui constitue la menace du lien de ressources) et procède comme indiqué dans le paragraphe précédent. 5. Résultats expérimentaux Nous avons fait le test du planificateur obtenu avec plusieurs problèmes tirés de la compétition IPC-2002. Le problème le plus testé est ZenoTravel car il contient une bonne illustration de l’intégration des ressources consommables et renouvelables à différents niveaux de complexité. Après les différents tests, on remarque qu’après les modifications effectuées, le planificateur CPT garde toutes ses performances comme étant un planificateur temporel optimal parallèle, il n’y a aucun changement remarquable de résultat dans les problèmes de planification temporelle sans ressources entre la version originelle et la version modifiée. Les problèmes de planification temporelle avec ressources sont encore plus complexes car ils utilisent à la fois les contraintes temporelles et les contraintes numériques, ce qui fait que certains problèmes nécessitent un traitement un peu long, en particulier les problèmes où la recharge se fait par incrémentation et dans lesquels on doit fréquemment exécuter plusieurs actions de recharge pour obtenir un plan valide. 6. Conclusion et perspectives L’intégration des ressources dans un planificateur temporel optimal augmente considérablement l’intérêt de celui-ci car dans le monde réel, les problèmes de planification temporelle sont souvent liés à des contraintes de ressources qui doivent être respectées pour que le plan trouvé soit exécutable dans le monde réel, surtout que le planificateur qu’on a obtenu à la fin garde les même performances dans la recherche des plans temporels parallèles optimaux que le planificateur d’origine. On peut améliorer le travail par la prise en compte des actions de recharge à temps variable (le temps de la recharge dépend de la quantité à recharger), ou encore de l’incertitude dans l’influence des actions sur le système. On peut aussi chercher l’optimisation non seulement par rapport au temps mais par rapport à une ressource particulière ou par rapport à une fonction d’optimisation intégrant le temps et les différentes ressources du système.

7. Bibliographie Caseau Y., Josset F. X., and Laburthe F., Claire : « Combining sets, search and rules to better express algorithms ». In Proceedings of International Conference on Logic Programming, 1999. Demassey S., « Méthodes Hybrides de Programmation par Contraintes et Programmation Linéaire pour le Problème d'Ordonnancement de Projet à Contraintes de Ressources ». Université d’Avignon - Thèse de doctorat, 2003. Elkhyari A., « Outils d’aide à la décision pour les problèmes d’ordonnancement dynamiques ». Université de Nantes – Thèse de doctorat, 2003. Fikes R.E. and Nilsson N.J., « STRIPS: A new approach to the application of theorem proving to problem solving », Artificial Intelligence 2, 1971, p. 189−208. Fox, M., and Long, D., « PDDL2.1: An extension to PDDL for expressing temporal planning domains », www.dur.ac.uk/d.p.long/competition.html, 2001. Geffner H. and Haslum P., « Admissible heuristics for optimal planning », Proceedings of the Fifth International Conference on AI Planning Systems (AIPS-2000), 2000, p. 70-82. Geffner H. and Haslum P., « Heuristic planning with time and resources », Proceedings of European Conference of Planning (ECP-01), 2001, p 121-132. Geffner H. and Vidal V., « Branching and pruning: An optimal temporal POCL planner based on constraint programming. », Proceedings of the Nineteenth National Conference on Artificial Intelligence (AAAI-2004), 2004, p 570–577. Geffner H. and Vidal V., « Solving Simple Planning Problems with More Inference and No Search », Proceedings of the Eleventh International Conference on Principles and Practice of Constraint Programming (CP-2005), 2005, p. 682696. Gerevini A., Saetti A., Serina I. and Toninelli P., « Fast Planning in Domains with Derived Predicates: An Approach Based on Rule-Action Graphs and Local Search. », Proceedings of the Twentieth National Conference on Artificial Intelligence (AAAI-05), 2005. Ghallab M. and Laborie P., « Planning with sharable resources constraints. », Proceedings of IJCAI-95, 1995, p. 1643-1649.

Kambhampati S. and Minh B. Do, « Improving the Temporal Flexibility of Position Constrained Metric Temporal Plans. », Proceedings of International Competition Of Applications in Planning and Scheduling (ICAPS-03), 2003. Kambhampati S. and Minh B. Do, « Sapa: A Domain-Independent Heuristic Metric Temporal Planner. », Proceedings of European Conference of Planning (ECP01), 2001. Laborie P., « Algorithms for propagating resource constraints in AI planning and scheduling », Artificial Intelligence 143, 2003, p. 151-188. McDermott D.V., PDDL, « The Planning Domain Definition Language », Technical Report, Yale University, 1998. Pednault E.P.D., « ADL: Exploring the middle ground between STRIPS and the situation alculus », Proceedings of the 1st International Conference on Principles of Knowledge Representation and Reasoning (KR−89), 1989, p. 324−332.