Précédent : Vérification et Validation Remonter :
Pilotage
de programmes Suivant : Bases de connaissances
Participants : John van den Elst, Régis Vincent
Mots-clés : pilotage de programmes, moteurs, planification
La bibliothèque de composants de LAMA nous a permis de développer différents types de moteurs de pilotage. Nous avons écrit six moteurs ayant des fonctionnalités spécifiques, dont nous avons développé plusieurs versions. Les tableaux suivants résument les différentes fonctionnalités de chaque moteur.
Les moteurs NL-II, PULSAR DD et PULSAR IU implantent une planification non ordonnée, qui produit des plans où les opérateurs sont exécutés dès que les conditions sont remplies pour qu'ils soient exécutables, sans souci d'ordre. Ces moteurs ont servi de tests pour des problèmes classiques de planification.
PéGASE est un moteur de pilotage hiérarchique dont la stratégie est proche de celle du moteur d'OCAPI. Nous avons cependant amélioré les mécanismes de réparation. En utilisant PéGASE, l'expert peut définir dans la base de connaissances les actions de réparation nécessaires pour corriger un plan en fonction des erreurs détectées.
PHéNIX et PULSAR IP sont des moteurs hybrides. Ils combinent à la fois une planification hiérarchique et une planification dynamique. Leur intérêt est de pouvoir développer des bases de connaissances impliquant les deux types de planification. Aux plus hauts niveaux d'abstraction, l'expert peut généralement fournir des squelettes de plan partiels pour la résolution de différents buts. A des niveaux inférieurs, il peut souhaiter laisser un planificateur dynamique trouver les meilleurs programmes en fonction des données réelles et des conditions d'exécution.
Il est intéressant de noter qu'en tout, nous avons développé plus de 11 moteurs en un an. Afin de comparer les différents moteurs, nous avons utilisé la même base de connaissances comme test (voir [4] ). Nous avons choisi comme critère de comparaison la qualité du plan obtenu, sans tenir compte de la complexité de la recherche, ou des performances en temps.
Tous ces moteurs s'appuyant sur des structures communes, la base de connaissances de test n'a pas eu à être modifiée. Cette technique de conception nous a permis de tester facilement différentes variantes du même type de moteur simplement en modifiant la spécification de sa stratégie et le code correspondant.