Utilisation de la grille CONFIIT pour la résolution du problème de car-sequencing Pierre-Paul Mérel, Michaël Krajecki, Olivier Flauzac, Simon Boivin. NP-Par'05 05/04/05
Plan de l'exposé Problème de car-sequencing. L'intergiciel CONFIIT. Résolution dans CONFIIT. Expérimentations. Conclusion.
Problème de car-sequencing Car-sequencing CONFIIT Résolution Expérimentations Conclusion Ordonner des véhicules dans une chaine d'assemblage. Contraintes de capacité des options. Catégories de véhicules. Demandes de chaque catégorie. Contrainte de capacité C i = q i / p i : q i = véhicules maximum sur une sous séquence. p i = taille de la sous séquence.
Exemple de problème Car-sequencing CONFIIT Résolution Expérimentations Conclusion Catégories Option Contrainte 1 2 3 4 5 6 7 8 9 10 11 12 1 1 / 2 2 2 / 3 3 1 / 3 4 2 / 5 5 1 / 5 Demande 3 1 2 4 3 3 2 1 1 2 2 1
Formalisation CSP Car-sequencing CONFIIT Résolution Expérimentations Conclusion Variable X i = véhicule produit à la position i. Domaine D i = catégories de véhicules. Contraintes de capacité C j = q j / p j : Sur chaque p j -uplet de X. Contraintes de demande des catégories : Globales sur X.
Résolution séquentielle Car-sequencing CONFIIT Résolution Expérimentations Conclusion Résolution complète : Forward Checking. Arbre de recherche déséquilibré.
L'intergiciel CONFIIT Car-sequencing CONFIIT Résolution Expérimentations Conclusion Applications FIIT : Finite number of Independent and Irregular Tasks. Pour chaque tâche, on a : Tâches indépendantes : pas de communications. Temps d'exécution inconnu a priori. Algorithme identique pour chaque tâche. Programmation FIIT : Comment diviser le problème? Comment calculer une tâche?
L'intergiciel CONFIIT Car-sequencing CONFIIT Résolution Expérimentations Conclusion Computation Over a Network for FIIT. Objectifs : Distribution des tâches sur le réseau. Résolution des tâches. Collecte des résultats. Caractéristiques : Totalement distribué (réseau dynamique). Hétérogène (système, matériel, architecture). Ecrit en Java. Ordre de calcul aléatoire des tâches.
Topologie CONFIIT Car-sequencing CONFIIT Résolution Expérimentations Conclusion 1 ordinateur = 1 nœud. Gestion de topologie et des communications. Gestion des tâches. Gestion calcul(s). Anneau logique : Connaissance des voisins. Circulation d'un jeton. Calc. Tâches Comm. Comm. Tâches Calc. Calc. Calc. Calc. Calc. Tâches Comm.
Mode de programmation Car-sequencing CONFIIT Résolution Expérimentations Conclusion Application batch : Lanceur ponctuel. Résultats stockés. Lanceur Réception séparée. Code exécutable Java : Fourni par le lanceur. Diffusé sur l'anneau. Récepteur
Conception d'une application Car-sequencing CONFIIT Résolution Expérimentations Conclusion Classe Java implémentant les fonctionnalités. Division du problème initial : Fonction nbtasks. Résolution d'une tâche : Fonction runtask. Collecte du résultat final : Méthode initializeaccumulator. Méthode addresult. Méthode finalizeaccumulator.
Résolution dans CONFIIT Car-sequencing CONFIIT Résolution Expérimentations Conclusion Cadre : confluence de deux domaines : Recherche arborescente. Algorithmique distribuée. Objectif : efficacité en limitant les recoupements des domaines. Algorithmique distribuée : agrégation de ressources. Transparence, efficacité... Recherche arborescente : améliorer le parcours. Filtrage, heuristiques d'ordre...
Division de l'arbre de recherche Car-sequencing CONFIIT Résolution Expérimentations Conclusion Generate-and-Test avec vérification de consistance. Nombre dépend de la profondeur et de la consistance vérifiée.
Problématique de distribution Car-sequencing CONFIIT Résolution Expérimentations Conclusion Recherche arborescente : indépendante de CONFIIT. Programmation C++. CONFIIT développé en Java. Tâches indépendantes (branches de recherche). Mise en commun de la solution globale Arrêt de la recherche si une solution est trouvée. Tâches variables selon l'ordre de résolution. Exploration d'une tâche bornée dans le temps.
Recherche arborescente Car-sequencing CONFIIT Résolution Expérimentations Conclusion Adaptations mineures : Parcours en largeur pour la génération des tâches. Résolution avec pré-instanciation de variables. Une tâche définie par : Problème initial. Chemin d'instanciation des premières variables. Développement du parcours indépendant de CONFIIT.
Architecture de résolution Car-sequencing CONFIIT Résolution Expérimentations Conclusion Lancement : Appel du diviseur externe. Tâches stockées sur un serveur FTP. Résolution : Lanceur Chargement du fichier. Appel du solveur externe. Récepteur
Gestion des résultats Car-sequencing CONFIIT Résolution Expérimentations Conclusion Objectif : arrêter la recherche quand une solution est trouvée. Initialisation de l'accumulateur : Aucune solution. Ajout d'un résultat intermédiaire : Seulement si c'est une solution globale. Calcul d'une tâche : Uniquement si aucune solution globale connue. Sinon, renvoyer le résultat global.
Expérimentations Car-sequencing CONFIIT Résolution Expérimentations Conclusion Problèmes résolus : CSPLib. http://4c.ucc.ie/~tw/csplib/prob/prob001/index.html. Deux séries de problèmes : Série 1 : taux d'utilisation variable. Série 2 : problèmes difficiles satisfiables. Première série : 70 problèmes au total. 1 tâche = 1 problème. Résolution limitée à 15' par tâche.
Taux d'utilisation variable Car-sequencing CONFIIT Résolution Expérimentations Conclusion 59 problèmes résolus (sur 70). 1 nœud : 2h 53' 28''. 2 nœuds : 1h 34' 43''. 3 nœuds : 1h 00' 30''. Taux d'utilisation 1 2 3 4 5 6 7 8 9 10 60 4'' 2'' 2'' 2'' 2'' 2'' 3'' 11'' 3'' 15' 00'' 65 4'' 2'' 2'' 4'' 2'' 6'' 2'' 2' 38'' 2'' 15' 00'' 70 2'' 2'' 3'' 3'' 2'' 8'' 1' 30'' 15' 00'' 3'' 1' 04'' 75 2'' 3'' 3'' 3'' 2'' 3'' 2'' 15' 00'' 15' 00'' 7'' 80 1'' 2'' 15' 00'' 2'' 2'' 3'' 3'' 4'' 15' 00'' 15' 00'' 85 2'' 3'' 3'' 25'' 3'' 2'' 15' 00'' 15' 00'' 2'' 15' 00'' 90 2'' 2'' 2'' 2'' 2'' 2'' 2'' 2'' 3'' 3''
Problèmes difficiles Car-sequencing CONFIIT Résolution Expérimentations Conclusion Deuxième série : 4 problèmes satisfiables. Profondeur 1 et 2. Résolution limitée dans le temps. Résolution non mesurée en séquentiel. Lancement sur un anneau de 3 Pentium 4 à 2,8 GHz. 5 exécutions pour chaque problème.
Profondeur 1, 15' par tâche Car-sequencing CONFIIT Résolution Expérimentations Conclusion 04-72 16-81 26-82 41-66 Exécution Tâches Temps Tâches Temps Tâches Temps Tâches Temps 1 22 1' 35'' 26 45' 19'' 24 25' 17'' 19 59'' 2 22 16' 40'' 26 1h 30' 17'' 24 14' 16'' 19 30' 50'' 3 22 7' 30'' 26 33'' 24 16'' 19 16' 07'' 4 22 24'' 26 1h 44' 20'' 24 45' 19'' 19 15' 34'' 5 22 45' 32'' 26 1h 14' 04'' 24 1h 15' 27'' 19 1' 19'' Moyenne 22 14' 14'' 26 1h 02' 54'' 24 32' 07'' 19 12' 57'' Variation importante de la durée de résolution. Tâche satisfiable trouvée très rapidement (< 1'). Diminution du temps limite par tâche?
Profondeur 1, 2' par tâche Car-sequencing CONFIIT Résolution Expérimentations Conclusion 04-72 16-81 26-82 41-66 Exécution Tâches Temps Tâches Temps Tâches Temps Tâches Temps 1 22 1' 08'' 26 12' 10'' 24 11' 36'' 19 4' 41'' 2 22 5' 06'' 26 16' 09'' 24 4' 46'' 19 2' 56'' 3 22 5' 11'' 26 18' 12'' 24 4' 46'' 19 4' 37'' 4 22 6' 59'' 26 10' 24'' 24 3' 06'' 19 1' 13'' 5 22 1' 02'' 26 18' 12'' 24 1' 02'' 19 3' 12'' Moyenne 22 4' 53'' 26 15' 01'' 24 5' 03'' 19 3' 20'' Résolution plus rapide. Variation plus réduite entre les exécutions. Test à profondeur 2?
Profondeur 2, 2' par tâche Car-sequencing CONFIIT Résolution Expérimentations Conclusion 04-72 16-81 26-82 41-66 Exécution Tâches Temps Tâches Temps Tâches Temps Tâches Temps 1 223 17' 09'' 291 8' 11'' 255 5' 38'' 211 5' 48'' 2 223 5' 38'' 291 57' 16'' 255 16' 48'' 211 12' 57'' 3 223 29' 44'' 291 15' 49'' 255 6' 48'' 211 15' 52'' 4 223 8' 34'' 291 11' 40'' 255 8' 18'' 211 5' 16'' 5 223 6' 07'' 291 27' 27'' 255 10' 43'' 211 14' 47'' Moyenne 223 13' 26'' 291 24' 04'' 255 9' 39'' 211 10' 56'' Résolution moins rapide qu'à profondeur 1. Variation réduite entre les exécutions. Temps perdu après la solution trouvée.
Conclusion Car-sequencing CONFIIT Résolution Expérimentations Conclusion Utilisation de CONFIIT pour la résolution de CSP. Accès simple à une programmation parallèle. Calculs sur des machines hétérogènes. Efficace pour les problèmes satisfiables. Durée limitée sur une tâche. Compromis à trouver entre profondeur et durée. Intérêt moindre pour les problèmes non satisfiables. Pas d'efficacité > 100%.
Perspectives (CONFIIT) Car-sequencing CONFIIT Résolution Expérimentations Conclusion Expérimentations à plus grande échelle. Ordonnancement des tâches. Gestion des données : Base de données. Données distribuées? Autres cadres d'applications : CSP généraux. SAT.