TRAITEMENT DU PROBLEME DE DRESSER L’EMPLOI DU TEMPS DES PROFESSEURS DANS LA FACULTE DES TECHNOLOGIES DE L’INFORMATION ET DE LA COMMUNICATION, L’UNIVERSITE DE CAN THO

64 108 0
TRAITEMENT DU PROBLEME DE DRESSER L’EMPLOI DU TEMPS DES PROFESSEURS DANS LA FACULTE DES TECHNOLOGIES DE L’INFORMATION ET DE LA COMMUNICATION, L’UNIVERSITE DE CAN THO

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chapitre : Introduction Problème de dresser l’emploi du temps CHAPITRE I: INTRODUCTION š¯› L'emploi du temps, aussi appelé les horaires, est commun dans de nombreux domaines Presque toutes les organisations et les entreprises utilisent des emplois du temps afin de gérer des activités Il y a beaucoup de types d’horaires, par exemple les horaires de production, les horaires des vols d’avion, les horaires d’enseignement Quand un individu a plusieurs occupations, il se propose de quoi faire en premier et de quoi faire après C'est aussi une forme simple des horaires personnels Pour les grandes organisations, la gestion des emplois du temps est beaucoup plus complexe cause des nombreux objets qui sont liés Puisque le temps et les ressources sont limités, donc si on veut travailler efficacement, on doit e les élaborer les emplois du temps l’avance Se basant sur la nature du travail, on peut disposer les tâches du travail sur un ordre logique dans une durée et dans un lieu fixé afin que le volume des tâches effectuées en temps soit le plus haut et que l'utilisation des ressources disponibles est la plus efficace En particulier, la réalisation des emplois du temps est un travail régulier et important dans toutes les écoles L’emploi du temps est un axe des activités d'enseignements et d’études Le personnel du service de formation doit perdre beaucoup de temps et d'efforts pour élaborer des emplois du temps chaque semestre Si on n’a pas d’expériences, on peut se heurter plusieurs difficultés Avec l’échelle croissante des écoles, la réalisation manuelle des emplois du temps devient très complexe Puisque les objets se lient étroitement, on doit comparer et modifier plusieurs fois pour générer un horaire acceptable En cela, apporter des solutions efficaces et performantes au problème d’emplois du temps est très nécessaire Heureusement, l’Informatique n’est pas seulement de théorie Plusieurs approches ont été développées pour résoudre ce problème On peut mentionner la technique du coloriage de carte ; les métas heuristiques comme le Recuit Simulé, la Recherche Tabou et l’Algorithme Génétique ; et la Programmation Par Contraintes Je présente tout d’abord l’idée des approches ci – dessus mentionnées notamment la Programmation Par Contraintes (PPC) qui est appliquée pour résoudre des problèmes dans ce mémoire La PPC s’avère très utile dans de nombreux domaines de la science et de l’industrie On peut bien comprendre la PPC par une présentation des définitions de base de la PPC : ce qu’est une contrainte, la formulation d’un Problème de Satisfaction de Contraintes (CSP, en anglais), les outils de la PPC… Je présente, dans la suite, l’analyse et la conception du système de gestion d’emplois du temps sur la base de la formation actuelle dans la Faculté de Technologies de l’Information Il comporte des modèles conceptuels de données, des modèles logiques de données et des modèles physiques de données avec des contraintes d’intégrités dans la base de données établie ©TRAN My Lan, 2010 10 Chapitre : Introduction Problème de dresser l’emploi du temps Je me consacre ensuite des éléments de modélisation qui constituent la première étape dans la résolution d’un problème Chaque problème est modélisé sous forme d’un CSP Il comprend un ensemble de variables ; chacune des variables prend des valeurs dans un domaine ; et les contraintes sont posées sur des variables La résolution du problème en se basant sur l’algorithme de Retour en arrière – Vérifier d’avance est présenté par les diagrammes Ceci constitue un mécanisme de réalisation des emplois du temps, soit le cœur du système La section dernière est pour la présentation du programme d’application C’est une démonstration des résultats d’analyse obtenus Enfin, je tire des conclusions de tout mon travail et propose des développements ©TRAN My Lan, 2010 11 Chapitre : Développement Problème de dresser l’emploi du temps CHAPITRE II: DÉVELOPPEMENT š¯› I CADRE THÉORIQUE I.1 Rétrospective I.1.1 Heuristique Plusieurs heuristiques pour la réalisation des emplois du temps ont été proposées, la plupart base sur la solution du coloriage de la carte Petit rappel: il s’agit de colorier tous sommets d’un graphique de telle sorte que deux sommets adjacents aient deux couleurs différentes Chaque sommet peut choisir dans son ensemble de couleurs Heuristiques pour ce problème, souvent utilité Algorithme Glouton, est comme suit : - Choisir un sommet pas encore colorié pour le colorier par une nouvelle couleur C - Examiner la liste de sommets pas encore coloriés Si un sommet est non-adjacent au sommet qui a déjà colorié par C, le colorie par la couleur C ® L’idée de cette heuristiques est d’utiliser une couleur pour colorier le plus de sommet possible Le processus de recherche d'une période pour chaque événement de sorte qu’il y n’a pas les deux conflits sur les ressources humaines ainsi que les ressources matérielles correspond la coloration des sommets d’un graphe de sorte que les sommets adjacents ont toujours des couleurs différentes On essaie d’affecter le plus possible des événements non – conflits dans une période Il faut observer la possibilité qu'il y ait suffisamment de places pour tous les événements effectués dans une période fixé Alors on espère que tous les événements seront affectés Il peut souvent créer de bons emplois du temps, mais généralement il ne permet pas quelconque recherche dans l'espace des solutions pour le remplacement Cette méthode est assez simple mettre en œuvre Elle est souvent utilisée afin de trouver des solutions initiales pour les autres méthodes qui visent améliorer l’objectif de résultats partir d’une solution au début, telles que les métaheuristiques ci-dessous I.1.2 Métaheuristique Ø Recuit simulé (SA – simulated annealing, en anglais) : Cette métaheuristique a été mise au point par trois chercheurs de la société IBM, S Kirkpatrick, C.D Gelatt et M.P Vecchi en 1983, et indépendamment par V Cerny en 1985 ©TRAN My Lan, 2010 12 Chapitre : Développement Problème de dresser l’emploi du temps La méthode de recuit simulé tire son nom et son inspiration de la physique des matériaux et plus spécialement de la métallurgie Le recuit est une opération consistant laisser refroidir lentement un métal pour améliorer ses qualités L’idée physique est qu’un refroidissement trop brutal peut bloquer le métal dans un état peu favorable (alors qu’un refroidissement lent permettra aux molécules de s’agencer au mieux dans une configuration stable) C’est cette même idée qui est la base du recuit simulé Pour éviter que l’algorithme ne reste piégé dans des minimaux locaux, on fait en sorte que la température T décroisse lentement en fonction du temps Deux approches sont possibles : · Pour la première, on répète en gardant la température constante Lorsque le système a atteint un équilibre thermodynamique (au bout d'un certain nombre de changements), on diminue la température du système On parle alors de paliers de température · La seconde approche fait baisser la tempộrature de faỗon continue On peut alors imaginer toute sorte de loi de décroissance La plus courante étant Ti+1= a* Ti avec a < (assez couramment a = 0.99) La température joue un rôle important À haute température, le système est libre de se déplacer dans l'espace des solutions (exp(-d/T)1 proche de 1) en choisissant des solutions n’améliore pas forcément le critère que l'on cherche optimiser À basse température, les modifications améliorant le critère sont choisies, mais d'autres peuvent être acceptées, empêchant ainsi l'algorithme de tomber dans un minimum local Le recuit simulé maintient un emploi du temps faisable A chaque itération, un voisin – un autre emploi du temps acceptable – est généré par une modification d =f(S’) – f(S) ; f : fonction objectif Lorsqu’un voisin S’ généré pire que la solution courant S (d>0, dans un problème de minimisation), on va choisir par hasard une valeur x dans l’intervalle [0,1] Si x < exp(-d/T), ce voisin est encore appliqué la solution courant Plus T est haut, plus la probabilité de ce voisin étant acceptés est élevé ©TRAN My Lan, 2010 13 Chapitre : Développement Problème de dresser l’emploi du temps minime partir de la solution actuelle Ce voisin devient un emploi du temps courant s’il a moins de points de pénalité Même si un voisin a plus de points de pénalité, elle est acceptée avec une probabilité exp(-d/T) Lorsque la condition d’arrêt est vérifiée, l’emploi du temps courant est la solution obtenue Le choix approprié des paramètres du recuit simulé, tel que tels que la température initiale, la loi de décroissance de la température, les critères d'arrêt ou la longueur des paliers de température est très important afin de trouver une bonne solution üRecherche tabou (Tabu search, en anglais) La recherche tabou est une métaheuristique d'optimisation présentée par Fred Glover en 1986 C’est une méthode de recherche locale avancée qui fait appel un ensemble de règles et de mécanismes généraux pour guider la recherche de manière intelligente Recherche tabou parce qu’il y a interdiction de reprendre des solutions récemment visitées L'idée de la recherche tabou consiste, partir d'une position donnée, en explorer le voisinage et choisir la position dans ce voisinage qui minimise la fonction objectif Il est essentiel de noter que cette opération peut conduire augmenter la valeur de la fonction (dans un problème de minimisation) : c'est le cas lorsque tous les points du voisinage ont une valeur plus élevée C'est partir de ce mécanisme que l'on sort d'un minimum local Le risque cependant est qu'à l'étape suivante, on retombe dans le minimum local auquel on vient d'échapper C'est pourquoi il faut que l'heuristique ait de la mémoire : le mécanisme consiste interdire (d'où le nom de tabou) de revenir sur les dernières positions explorées Les positions déjà explorées sont conservées dans une file FIFO (appelée souvent liste tabou) d'une taille donnée, qui est un paramètre ajustable de l'heuristique Cette pile doit conserver des positions complètes, ce qui dans certains types de problèmes, peut nécessiter l'archivage d'une grande quantité d'informations Cette difficulté peut être contournée en ne gardant en mémoire que les mouvements précédents, associés la valeur de la fonction minimiser La recherche tabou maintient un emploi du temps faisable courant comme le recuit simulé La différence est la méthode d’un nouvel emploi du temps faisable étant accepté Les solutions générées appartenant la liste de tabou ne sont pas choisi pour éviter les retours en arrière Cette méthode permet aussi un mouvement non améliorateur, comme le permet le recuit simulé La différence entre les méthodes est que la recherche tabou choisira le meilleur i’ dans N(i), l’ensemble des solutions voisines Il est important d’utiliser une liste des tabous appropriée Une liste avec trop d’éléments peut devenir très restrictive Il a été observé que trop de contraintes (tabous) forcent le programme visiter des solutions voisines peu alléchantes la ©TRAN My Lan, 2010 14 Chapitre : Développement Problème de dresser l’emploi du temps prochaine itération Une liste T contenant trop peu d’éléments peu s’avérer inutile et mener des mouvements cycliques üAlgorithme génétique (GAs – Genetic algorithms, en anglais) Les algorithmes génétiques ont déjà une histoire relativement ancienne puisque les premiers travaux de John Holland sur les systèmes adaptatifs ont été remontés 1962 Dans les processus évolutifs, les individus les mieux adaptés, c'est-à-dire capables de mieux effectuer les tâches nécessaires leur survie, se reproduisent des taux les plus élevés, alors que les individus les moins adaptés se reproduisent des taux plus faibles Ce sont les principes de survie et reproduction décrit par Charles Darwin dans « On the Origin of Species By Means of Natural Selection » en 1859 Il s'avère alors qu'une population ayant une grande variété va, de génération en génération, contenir des individus dont le génotype se traduit par une meilleure adaptation, et ceci cause de la contrainte de la sélection naturelle L'utilisation d'un algorithme génétique nécessite le choix préalable d'un code génétique représentant le problème traiter Le choix de ce codage est essentiel car il va déterminer essentiellement les performances de l'algorithme Le code est représenté sous forme d'une chne de bits ou de caractères, chaine analogue un chromosome Il y a un nombre fini de chnes Sur ces codes s'appliquent des opérateurs génétiques, dont les principaux sont : · · · · · opérateur de reproduction, qui duplique le code d'un individu pour en créer un nouveau, opérateur de croisement, qui mélange les chromosomes des individus parents pour créer le code génétique d'un individu fils, opérateur de mutation, qui apporte une modification aléatoire au code génétique d'un individu, opérateur de sélection, qui choisit dans une population les individus qui survivront la génération suivante, en fonction d'une valeur d'adaptation opérateur d'évaluation, qui mesure le degré d'adaptation d'un individu son environnement Un algorithme génétique recherche le ou les extrema d'une fonction définie sur un espace de données Pour l'utiliser, on doit disposer des cinq éléments suivants: Un principe de codage de l'élément de population Cette étape associe chacun des points de l'espace d'état une structure de données Elle se place généralement après une phase de modélisation mathématique du problème traité La qualité du codage des données conditionne le succès des algorithmes génétiques Les codages binaires ont été très utilisés l'origine Les codages réels sont désormais largement utilisés, notamment dans les domaines applicatifs pour l'optimisation de problèmes variables réelles ©TRAN My Lan, 2010 15 Chapitre : Développement Problème de dresser l’emploi du temps Un mécanisme de génération de la population initiale Ce mécanisme doit être capable de produire une population d'individus non homogène qui servira de base pour les générations futures Le choix de la population initiale est important car il peut rendre plus ou moins rapide la convergence vers l'optimum global Dans le cas ó l'on ne connt rien du problème résoudre, il est essentiel que la population initiale soit répartie sur tout le domaine de recherche Une fonction optimiser Celle-ci retourne une valeur de  fonction d'évaluation de l'individu + appelée fitness ou Des opérateurs permettant de diversifier la population au cours des générations et d'explorer l'espace d'état L'opérateur de croisement recompose les gènes d'individus existant dans la population, l'opérateur de mutation a pour but de garantir l'exploration de l'espace d'états Des paramètres de dimensionnement : la taille de la population, le nombre total de générations ou critère d'arrêt, les probabilités d'application des opérateurs de croisement et de mutation Une population des empois du temps faisables est maintenue Chaque individu est un emploi du temps représenté comme un code génétique se traduit quand et où des événements sont affectés A chaque itération, on applique des opérateurs génétiques sur des paires de codes choisis en fonction de leurs adaptations (les meilleurs sont sélectionnés) pour générer des nouveaux emplois du temps de la population Différents critères d'arrêt de l'algorithme peuvent être choisis : le nombre de générations que l'on souhaite exécuter peut être fixé priori C'est ce que l'on est tenté de faire lorsque l'on doit trouver une solution dans un temps limité ; l'algorithme peut être arrêté lorsque la population n'évolue plus ou plus suffisamment rapidement Pendant un période donnée, la valeur de la fonction objective (fitness) est encore inférieure un seuil Le meilleur individu de dernière génération est une solution du problème ü Conclusion Les métaheuristiques peuvent guider la recherche de manière intelligente Ils permettent de visiter des régions différentes dans l’espace des solutions et permet de savoir où se trouvent les meilleures solutions Ils sont de plus en plus bien développés Mais ils sont souvent difficiles mettre en œuvre notamment l’algorithme génétique Les principaux inconvénients des métaheuristiques résident dans le choix de nombreux paramètres La valeur des paramètres est un facteur décisif, elle est pourtant difficile déterminer Il n’y a pas aucune règle Ces paramètres sont souvent choisis de manière empirique Alors, je continue étudier une autre approche aussi bien développée, soit la Programmation par Contraintes Tout problème comporte un certain nombre de variables, chacune ayant un domaine fini, et un certain nombre de contraintes Ainsi trouver une solution un problème par contraintes consiste affecter une valeur chaque variable de telle sorte que la totalité des contraintes soit satisfaite La ©TRAN My Lan, 2010 16 Chapitre : Développement Problème de dresser l’emploi du temps programmation par contrainte s’avère très utile dans de nombreux domaines de la science et de l’industrie, ainsi que sur le problème d’emploi du temps I.1.3 Programmation par contraintes I.1.3.1 Qu’est ce qu’une Contrainte ? - Une contrainte est une relation logique (une propriété qui doit être vérifiée) entre différentes inconnues, appelées variables, chacune prenant ses valeurs dans un ensemble donné, appelé domaine Ainsi, une contrainte restreint les valeurs que peuvent prendre simultanément les variables - Par exemple, la contrainte x + 3*y = 12 restreint les valeurs que l’on peut affecter simultanément aux variables x et y - Déclaration d’une contrainte : types de déclaration : o extension : Pour définir une contrainte en extension, il suffit d’énumérer les valeurs admises - Par exemple, si les domaines des variables x et y contiennent les valeurs 0, et 2, alors on peut définir la contrainte “x est plus grand que y” en extension par “(x = Ù y = 0) Ú(x =2 Ù y = 0) Ú (x = Ù y = 1)”, ou encore par “(x, y) Ỵ {(1, 0), (2, 0), (2, 1)}” o intension : Pour définir une contrainte en intention, il suffit d’utiliser les propriété mathématiques connues (>, y mais on pourrait avoir une définition de contrainte du genre ÁBÞC I.1.3.2 Définition d’un CSP - La programmation par contraintes exige d’abord la description du problème comme un CSP, en termes de variables et de contraintes satisfaire - Un CSP (Problème de Satisfaction de Contraintes) est un problème modélisé par des variables, un domaine, et des contraintes Les contraintes sont posées sur des variables, chacune des variables prend des valeurs dans un domaine - Formellement la définition d’un problème par contrainte se fera de la faỗon suivante : soit un triplet (X, D, C) tel que : 1) X = {X1, X2, …, Xn} est l’ensemble des variables du problème, 2) D est le domaine de définition de chacune des variables, soit l’ensemble des valeurs que peut prendre Xi, 3) C = {C1, C2, …, Cn} est l’ensemble des contraintes Chaque contrainte Cj est une relation entre certaines variables de X, qui limite les valeurs que peuvent prendre simultanément ces variables ©TRAN My Lan, 2010 17 Chapitre : Développement Problème de dresser l’emploi du temps - Par exemple : soit P un CSP P est défini par : o X = {a, b, c, d} o D(a) = D(b) = D(c) = D(d) = {0, 1} o C = {a ¹ b, c ¹ d, a + c < b} I.1.3.3 Définition d’une solution d’un CSP - Une affectation est le fait d’instancier des variables, de créer une instance de certaines variables de X avec des valeurs appartenant leur domaine respectif D A = {(X1, V1), (X3, V3), (X4, V4)} associe la valeur V1 de D1 la variable X1 - Si toutes les variables de X sont instanciées alors on dit que cette affectation est totale, sinon on parle d’affectation partielle - Une affectation (totale ou partielle) est dite consistante si elle ne viole aucune contrainte du CSP, sinon elle est dite inconsistante Þ Une solution pour un CSP est une affectation totale consistante - Par exemple, A = {(a, 0), (b, 1), (c, 0), (d, 1)} est une solution du CSP P en dessus I.1.3.4 Résolution I.1.3.4.1 Résolution naïve - On génère toutes les affectations totales possibles - On vérifie si elles sont consistances - Si on en trouve une consistante, c’est gagné C’est très facile mette en œuvre mais très gourmand en ressource temps I.1.3.4.2 Algorithme de Retour en Arrière (Backtracking, en anglais) - Principe : + On parcourt l’arbre des affectations en profondeur + Lorsqu’une affectation partielle est inconsistante, on n’explore pas le sousarbre correspondant - Pour améliorer cet algorithme, on peut tenter d’anticiper : si on se rend compte qu’une variable non affectée Xi n’a plus de valeur (dans son domaine D(Xi)) dans l’affectation partielle en cours de construction, alors on peut éviter un gaspillage inutile de temps pour développer cette branche, et on peut tout de suite retourner en arrière pour explorer d’autres possibilités A chaque étape de la recherche on va donc filtrer les domaines des variables non affectées en enlevant les valeurs qui n’appartiendront aucune solution (i.e localement inconsistantes) Alors, l’espace de recherche est bien réduit On peut effectuer différents filtrages, chacun correspondant ©TRAN My Lan, 2010 18 Chapitre : Développement Problème de dresser l’emploi du temps un niveau différent de consistance locale, avec sa propre efficacité mais aussi sa difficulté d’application et son temps d’exécution I.1.3.4.3 Filtrage o Filtrage par consistance de nœud (1-consistance) - Formellement, un CSP (X, D, C) est consistant de nœud si pour toute variable Xi de X, et pour toute valeur v de D(Xi), l’affectation partielle (Xi, v) satisfait toutes les contraintes unaires de C - Algorithmiquement, pour chaque variable Xi non affectée dans A, on enlève de D(Xi) toute valeur v telle que l’affectation A È {(Xi, v)} est inconsistante - Il est possible d’améliorer l’algorithmique de Retour en Arrière en filtrant les domaines et les contraintes appliquées au problème Dans notre cas on peut filtrer les domaines On obtient alors la méthode appelée Vérifier d’avance (en anglais Backtracking – Forward Checking, BC-FC) o Filtrage par consistance d’arc (2-consistance) - Formellement, un CSP (X, D, C) est consistant d’arc si pour tout couple de variables (Xi, Xj) de X, et pour toute valeur vi appartenant D(Xi), il existe une valeur vj appartenant D(Xj) telle que l’affectation partielle {(Xi, vi), (Xj, vj)} satisfasse toutes les contraintes binaires de C - Algorithmiquement, pour chaque variable Xi non affectée dans A, on enlève de D(Xi) toute valeur v telle qu’il existe une variable Xj non affectée pour laquelle, pour toute valeur w de D(Xj), l’affectation A È {(Xi, v), (Xj, w)} soit inconsistante I.1.3.4.4 Heuristiques - L’idéal serait qu’à chaque étape on sache exactement quelle variable instancier et avec quelle valeur Ainsi on ne ferait jamais aucun retour Cependant il est peu probable que ce genre d’algorithme puisse être programmé du fait du nondéterminisme des problèmes NP-Complet En revanche il est possible de remédier ce problème par l’intégration d’heuristique nous donnant l’ordre dans lequel instancier ces variables et leurs valeurs - Pour le CSP il existe deux principes d’heuristiques souvent utilisés : 1) l’algorithme meilleur d’abord 2) l’algorithme échec d’abord * Meilleur d’abord : - Cette heuristique, appelée aussi best first, consiste choisir la prochaine variable de telle sorte que la combinaison en cours tend vers la solution optimale, ou vers une bonne solution dans le cas de d’un problème d’optimisation ©TRAN My Lan, 2010 19 Chapitre : Conclusion Problème de dresser l’emploi du temps CHAPITRE III: CONCLUSION š¯› Le problème d’emploi du temps est un problème très complexe Mais c’est précisément pour cela, il est un problème intéressant Les recherches développées ont obtenu plusieurs résultats considérables Tout vise trouver des solutions le plus optimales possible et en un minimum de temps Les résultats acquis dans ce mémoire sont seulement primaire dans un cadre étroit Il y a encore quelques problèmes restants : — Le programme a résolu seulement des contraintes obligés satisfaire pour un emploi du temps faisable Il n’a pas encore observé des contraintes complémentaires partir des professeurs et des classes — Il n’y a pas encore une procédure de vérification la logique des données d’entrée avant de réaliser un emploi du temps — La modification permet de changer le temps, pas de salle — Il faut affecter des salles voisines parce que le programme n’a pas encore résolu une contrainte sur la distance entre des salles Sur la base des résultats obtenus, on peut construire un système plus efficace condition de : — Résoudre des contraintes complémentaires — Vérifier la logique des données d’entrée et donner des messages pour guider des utilisateurs — Réalisation d’autres problèmes d’emploi du temps de la Faculté comme l’emploi du temps d’enseignement pratique, l’emploi du temps d’enseignement au niveau master,… — Utiliser des emplois du temps affectés comme une solution initiale pour les métaheuristiques présentés avant pour créer des emplois du temps le plus optimaux possible Le problème d’emploi du temps ou le problème d’ordonnancement en général est très important dans divers domaines de l’industrie et de l’économie Les résolutions efficaces de ce problème peuvent apporter des avantages importants Donc, partir des savoirs acquis, j’espère continuer étudier et appliquer des approches différentes pour les comparer entre elles- même De plus, je souhaite hybrider des méthodes C’est aussi une bonne tendance au présent ©TRAN My Lan, 2010 59 Problème de dresser l’emploi du temps RÉFÉRENCES š¯› [1] Ç.H.Aladag, G.Hocaoglu A Tabu search algorithm to solve a course timetabling problem Hacettepe Journal of Mathematics and Statistics Volume 36 (1) (2007), 5364 [2] Edmund Burke, Kirk Jackson, Jeff Kingston, Rupert Weare Automated University Timetabling: The State of the Art 2004 [3] Ferro Luca, Khin Samith, Salman Nader Résolution pratique de problems NPcomplets Juin 2005 [4] Joseph Ayas, Marc André Viau La Recherche Tabou 2004 [5] Michael Marte Models and Algorithms for School Timetabling – A constraintProgramming Approach 2002 [6] Pierre Lopez Le concept de contraintes LAAS, Toulouse 2001 [7] Ruslan Sadykov Introduction la Programmation par Contraintes INRIA Bordeaux – Sud-Ouest Nov 2009 [8] Sébastien Verel, Manuel Clergue Métaheuristiques pour l’optimisation combinatoire [9] http://www.coder.awas.vn [10] http://codeprovn.com [11] http://www.codeproject.com [12] http://fr.wikipedia.org [13] http://interstices.info ©TRAN My Lan, 2010 60 Problème de dresser l’emploi du temps ANNEXE š¯› I Enseignement théorique du système de formation régulière Démarrer affecter(k,j,g,i,ref t,ref a) t1=0 Vrai t1

Ngày đăng: 20/03/2018, 00:48

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan