APPRENDRE No Nom du champ Type Domaine de la valeur / Contrainte Valeur tacite Clé Primaire Unique Non Nul Clé étrangère Explication 1 CODE_DE_CLASSE Text 10 x x CLASSE CODE_DE
Trang 1CHAPITRE 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
Trang 2Je 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
Trang 3
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
Trang 4La 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* Tiavec a < 1 (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
1 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é
Trang 5minime à 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'ó 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 2 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
Trang 6prochaine 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étiquerepré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 chaîne de bits ou de caractères, chaine analogue à un chromosome Il
y a un nombre fini de chaînes
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:
1 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
Trang 72 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 connaỵt rien du problème à résoudre, il est essentiel que la population initiale soit répartie sur tout le domaine de recherche
3 Une fonction à optimiser Celle-ci retourne une valeur de  +
appelée fitness ou
fonction d'évaluation de l'individu
4 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
5 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 ó 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 ó 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
Trang 8programmation 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 : 2 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, 1
et 2, alors on peut définir la contrainte “x est plus grand que y” en extension par “(x =
1 Ù y = 0) Ú(x =2 Ù y = 0) Ú (x = 2 Ù 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 (>, <,Þ, ¹ , etc.)
- Par exemple, si l’on reprend l’exemple cité précédemment, la contrainte par intention qui en découlerait serais la suivante : x > 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 Cjest une relation entre certaines variables de X, qui limite les valeurs que peuvent prendre simultanément ces variables
Trang 9- 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 elleest 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 nạ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 arbre correspondant
sous 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 à
Trang 10un 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 non-dé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
Trang 11- Cette heuristique influe uniquement sur l’ordre d’exploration de l’arbre de recherche et donc sur le temps de recherche ainsi que sur la qualité des solutions trouvées
* Echec d’abord :
- Cette heuristique, appelée aussi first fail ou MRV pour “Minimum Remaining
Value”, consiste à choisir la prochaine variable de telle sorte que la prochaine
combinaison soit plus dure à résoudre ou conduise à un échec De cette façon on s’arrête plus tôt dans le parcours de l’arbre et on élimine ainsi le nombre de sous arbre
La problématique est de réaliser des emplois du temps pour les professeurs dans
la Faculté des Technologies de l’Information de l’Université de Cantho Actuellement, la Faculté de Technologies assume des enseignements aux deux systèmes de formation: le système régulier pour les étudiants inscrits à l’Université de Can Tho et le système irrégulier aux établissements coopérés pour les étudiants qui apprennent en travaillant Donc, ce problème contient en général deux sous-problèmes, soit l’emploi du temps d’enseignement régulier et l’emploi du temps d’enseignement irrégulier Deux problèmes sont différents mais lié étroitement par la ressource humaine, soit des professeurs
D’ailleurs, au système de formation régulière, il y a deux niveaux de formation: Licence et Master Le système de formation irrégulière est seulement au niveau de Licence Normalement, l’enseignement consiste en théorie et pratique Alors, on peut mentionner en détail quatre sous-problèmes tels que l’enseignement théorique du système de formation régulière, l’enseignement du système de formation irrégulière, l’enseignement pratique du système de formation régulière, et l’enseignement du niveau de mastère Les problèmes se lient étroitement De plus, chaque problème possède des contraintes différentes à satisfaire La forme des emplois du temps est aussi différente Pour chaque problème, un professeur est responsable d’un nombre de cours Réaliser des emplois du temps pour les professeurs est d’affecter tous les cours
en temps et en place appropriée
I.3 Perspective
Les sous-problèmes sont très différents On ne peut pas les résoudre en même temps Donc, on résoudre un par un Cela about une augmentation de complexité Chaque problème doit satisfaire des contraintes de lui – même, il faut aussi respecter les résultats obtenus d’autres
Trang 12Sur la base de la réalité, des problèmes sont arrangés dans l’ordre décroissant de
la priorité de réalisation Un emploi du temps généré après doit éviter le temps affecté déjà J’ai l’ambition de réaliser tous les quatre problèmes mentionnés ci – dessus pour créer un système complète étant très efficace pour la gestion des emplois du temps de
ma Faculté Mais dans la limite de temps accordé au travail de mon mémoire, je peux seulement m’efforcer de résoudre le plus possible des problèmes Je me propose de réaliser deux problèmes premiers selon la priorité, soit l’emploi du temps d’enseignement théorique du système de formation régulière et l’emploi du temps d’enseignement du système de formation irrégulière Mon objectif principal est de traiter entièrement chaque problème Il comporte une modélisation, une initialisation des données d’entrée, un mécanisme de réalisation d’emploi du temps, une modification et une exportation des emplois du temps réalisés Toutes les contraintes d’intégrité doivent être assurées De plus, l’utilisation du système est assez facile En
se basant sur les résultats obtenus, les problèmes restant seraient été résolus dans le futur D’ailleurs, on peut étudier les méthodes différentes ainsi que résoudre les problèmes d’ordonnancement dans de nombreux domaines de la science et de l’industrie
I.4 Délimitation de l’étude
- Modélisation du problème de réalisation des emplois du temps en basant sur l’opération d’enseignement des enseignants dans la Faculté des Technologies
de l’Information et de la Communication, l’Université de Cantho
- Conception de l’algorithme de réalisation des emplois du temps
- Conception et installation de programme d’application
- Les objectifs à atteindre de système :
+ Gestion de toutes les données liées aux emplois du temps
+ Réalisation automatique des emplois du temps
+ Modification manuelle des emplois du temps
+ Exportation et impression
I.5 Limitation de l’étude
Le problème d’emploi du temps appartient à la classe des problèmes complète Ça veut dire qu’on ne sait pas s’il y a n’importe algorithme vraiment efficace pour le résoudre en temps polynomial On peut seulement essayer de présenter
NP-un algorithme mais on ne peut pas évaluer s’il est le meilleur ou non Il faut aussi noter l'impossibilité d'être assuré que la solution trouvée soit la meilleure
Trang 13II CADRE EXPÉRIMENTAL
II.1 Description des sujets
Actuellement, Faculté de Technologies de l’Information comprend 4 branches qui assument des enseignements, soit le Système d'Information, le Réseau d'ordinateur,
le Génie logiciel, la Science d'ordinateur
Chaque branche gère une équipe de professeurs Elle est responsable des disciplines spécifiques Un professeur ou une discipline appartient à une seule branche
En défaillant, un professeur pourrait enseigner des disciplines de la branche à laquelle
il appartient
Un professeur a un code distinct On enregistre aussi d’autres informations comme un nom, un prénom, une date de naissance, un sexe et une année de fin d’études universitaire Selon la demande d’enseignement, un professeur pourrait suivre des formations avancées pour obtenir des grades tels que le mastère, le doctorat
Une discipline correspond à un nombre de crédits Un crédit égale 15 heures de cours théoriques ou à 30-45 heures des travaux pratiques Sur la base de la nature de discipline, la Faculté détermine le volume horaire des cours théoriques et le volume horaire des travaux pratiques
La Faculté de Technologies assume des enseignements aux deux systèmes de formation: le système de formation régulière pour les étudiants inscrits à l’Université
de Can Tho et le système formation irrégulière aux établissements coopérés pour les étudiants qui apprennent en travaillant
Au système de formation régulière, il y a 2 niveaux de formation: Licence et Mastère Le système de formation irrégulière est seulement au niveau de Licence Donc, il faut spécifier un système de formation, un niveau de formation et un établissement d’une classe On distingue 2 types de classes dans ce mémoire :
- Classe de discipline: soit un groupe d'étudiants suit une discipline ensemble dans un semestre Cette classe apprend une seule discipline Elle existe pendant un seul semestre Elle appartient au système de formation régulier, au niveau Licence, à l’Université de Can Tho
- Classe appartenant au système irrégulier aux établissements coopérés: être formé au début de promotion jusqu'à la fin Une classe suit une formation fixé qui détermine des disciplines à apprendre
ü Enseignement théorique du système de formation régulière
A chaque semestre, en se basant sur les statistiques du besoin des étudiants, la
Faculté décide des disciplines ouvertes et des classes de discipline de chaque
discipline Une classe comprend de 15 à 100 étudiants
Trang 14Le volume horaire (le nombre de périodes) par semaine d'une classe est calculé par:
o Le volume horaire de cour magistral/15, dans le semestre 1 ou 2
o Le volume horaire de cour magistral/5, dans le semestre 3 (en été)
Si le nombre de périodes est plus 4, il faut le divise en plusieurs cours Un cours dure de 2 à 4 périodes
De plus, l'Université affecte un nombre de salles disponibles pour des cours Ce sont des salles appartenant au type de salle théorique Normalement, ces salles appartiennent à un même bâtiment ou aux bâtiments voisins
D'après la répartition de la faculté, un professeur est responsable d'un certain nombre de classes Un professeur peut être responsable de plusieurs classes mais une classe est enseignée par un seul professeur On réalise un emploi du temps en affectation tous les cours des professeurs
C’est la forme d’emploi du temps courante Il y a 6 jours par semaine, du lundi
au samedi Chaque jour est séparé en 2 séances La matinée comprend 5 périodes L’après-midi comprend 4 périodes
L’affectation un cours comporte tous les 2 opérations: choisir une salle appropriée et choisir un période de début Il faut satisfaire des contraintes pendant l’affectation
Cet emploi du temps est appliqué itérativement à chaque semaine pendant tout le semestre
ü Enseignement du système de formation irrégulière
A chaque semestre, la Faculté détermine des disciplines qu’une classe doit apprendre Ensuite, la Faculté répart aussi un professeur responsable d’une discipline
de chaque classe
Pour ce problème, une classe apprend plusieurs disciplines Il faut préciser quelle discipline d’une classe dont un professeur est responsable
Une discipline d’une classe est aussi enseignée par un seul professeur
Figure 1 : Emploi du temps d’enseignement théorique du système de formation régulière
Trang 15Sur la base de nombre de crédits d’une discipline, une classe doit apprendre un
ou plusieurs cours Un cours a lieu dans une semaine
La forme de l’emploi du temps est très différente par rapport au système régulier
Il consiste en 20 semaines d’un semestre Une semaine est séparé en 2 sections: le début et la fin Un professeur peut enseigner en section de début ou de fin C’est fixé pendant tout le semestre
Figure 2 : Emploi du temps d’enseignement du système de formation irrégulière
Il ne faut pas s’intéresser à l’affectation de salle C’est une responsabilité de l’établissement coopéré
On doit réaliser un emploi du temps qui spécifie qu’un professeur enseigne un cours en quelle semaine à condition d’assurer des contraintes
II.2 Etapes méthodologiques
- Etude de l’histoire du problème
- Analyse et conception de système
- Modélisation de problème, conception d’algorithme
- Installation de programme d’application
- Test de programme et correction des erreurs
- Rapport de recherche
II.3 Techniques et méthodes de prise, d’analyse et de traitement des
données
II.3.1 Conception de système
II.3.1.1 Modèles conceptuels de données
En utilisant l’outil de Power Designer 7
Trang 160,n 0,n
0,n
0,1
0,n
0,1 0,n
Classe Code_de_classe Nom_de_classe Nombre_d_etudiants Annee_d_entree
VA10 VA200 I I
Systeme_de_formation Code_de_systeme Nom_de_systeme
VA8 VA200
Branche
Code_de_branche
Nom_de_branche
VA8 VA200
Grade_universitaire Code_de_grade Explication
VA3 VA100
VA8 VA200 appartenir5
Niveau_de_formation Code_de_niveau Nom_de_niveau
VA8 VA200
Formation Code_de_formation Nom_de_formation
VA8 VA200
suivre
comprendre Semestre I
appartenir4
apprendre
Semestre Semestre Annee Date_de_debut Date_de_fin
I A9 D D
Figure 3 : Modèle conceptuel de données - en général
Trang 17II.3.1.1.2 Enseignement théorique du système de formation régulière
0,1 0,n
Prenom Date_de_naissance Sexe
Annee_de_fin_d'etudes
A5 VA20 VA20 D A1 D
Discipline Code_de_discipline Nom_de_discipline Nombre_de_credits Volume_horaire_de_CM Volume_horaire_de_T P
A5 VA200 I I I Classe Code_de_classe Nom_de_classe Nombre_d_etudiants Annee_d_entree
VA10 VA200 I I
Salle Code_de_salle Nom_de_salle Capacite
A5 VA20 I
Repartir_re
enseigner_re jour_de_semaine Seance
periode_de_debut nombre_de_periodes
I VA20 I I
T ype_de_la_salle Code_d_type Explication
A8 VA100 appartenir7
T ype d'enseignement Code_de_type Explication
A8 VA100
Batiment
Code_de_batiment
Nom_de_batiment
A8 VA100
appartenir6
etre_disponible
Figure 4 : Modèle conceptuel de données - Enseignement théorique du système de formation régulière
Trang 18II.3.1.1.3 Enseignement du système de formation irrégulière
0,n
0,n
0,n 0,n
0,n
0,n
0,n
1,1 0,n
Discipline Code_de_discipline Nom_de_discipline Nombre_de_credits Volume_horaire_de_CM Volume_horaire_de_T P
A5 VA200 I I I
Classe Code_de_classe Nom_de_classe Nombre_d_etudiants Annee_d_entree
VA10 VA200 I I
Repartir_irre
enseigner_irre
Semestre Semestre Annee Date_de_debut Date_de_fin
I A9 D D
Semaine Numero_de_semaine Date_de_debut Date_de_fin
I D D
contenir Repartir_Temps
Section VA10
Figure 5 : Modèle conceptuel de données - Enseignement du système de formation irrégulière
II.3.1.2 Modèles logiques de données
Note :
- Caractère gras et souligné : soit une clé primaire (ex : Code_De_Classe )
- Caractère gras et italique : soit une clé étrangère (ex : Code_De_Classe)
- Caractère gras, italique et souligné : soit un élément d’une clé primaire et une clé étrangère en
même temps (ex :Code_De_Classe)
1 APPRENDRE (Code_De_Classe, Code_De _Discipline, Annee, Semestre)
2 BATIMENT (Code_De_Batiment, Nom_De_Batiment)
3 BRANCHE (Code_De _Branche, Nom_De _Branche)
4 CLASSE (Code_De _Classe, Code_De_Systeme, Code_D_Etablissement, Code_De _Formation, Code_De_Niveau, Nom_De _Classe,
Nombre_D_Etudiants, Annee_D_Entree)
5 COMPRENDRE (Code_De _Formation, Code_De _Discipline, Semestre)
6 DISCIPLINE (Code_De _Discipline, Code_De _Branche,
Nom_De_Discipline, Nombre_D_Credits, Volume_Horaire_De_Cm,
Volume_Horaire_De_Tp)
7 ENSEIGNER_IRRE (Code_De _Classe, Code_De_Professeur,
Code_De_Discipline, Numero_De_Semaine, Semestre, Annee)
Trang 198 ENSEIGNER_RE (Code_De _Salle, Code_De _Classe, Code_De_Professeur, Code_De_Type, Code_De _Discipline, Numero_De_Semaine, Semestre, Annee, Jour_De _Semaine, Seance, Periode_De_Debut,
Nombre_De_Periodes)
9 ETABLISSEMENT (Code_D_Etablissement, Nom_D_Etablissement)
10 ETRE_DISPONIBLE (Code_De_Salle, Annee, Semestre)
11 FORMATION (Code_De_Formation, Nom_De_Formation)
12 GRADE_UNIVERSITAIRE (Code_De_Grade, Explication)
13 NIVEAU_DE_FORMATION (Code_De_Niveau, Nom_De_Niveau)
14 OBTENIR (Code_De_Grade, Code_De_Professeur, Date_D_Obtention)
15 PROFESSEUR (Code_De_Professeur, Code_De_Branche, Nom, Prenom,
Date_De_Naissance, Sexe, Annee_De_Fin_D_Etudes)
16 REPARTIR_IRRE (Code_De_Professeur, Code_De_Classe,
Code_De_Discipline, Annee, Semestre, Nombre_D_Semaines)
17 REPARTIR_RE (Code_De_Professeur, Code_De_Classe, Code_De_Type, Code_De _Discipline, Annee, Semestre)
18 REPARTIR_TEMPS (Semestre, Annee, Code_De_Professeur, Section)
19 SALLE (Code_De_Salle, Code_D_Type, Code_De_Batiment, Nom_De_Salle,
Capacite)
20 SEMAINE (Numero_De_Semaine, Semestre, Annee, Date_De_Debut,
Date_De_Fin)
21 SEMESTRE (Semestre, Annee, Date_De_Debut, Date_De_Fin)
22 SYSTEME_DE_FORMATION (Code_De_Systeme, Nom_De_Systeme)
23 TYPE_D_ENSEIGNENT (Code_De_Type, Explication)
24 TYPE_DE_SALLE (Code_D_Type, Explication)
Trang 20II.3.1.3 Modèles physiques de données
En utilisant le système de gestion de base de données MICROSOFT ACCESS 2007
1 APPRENDRE
No Nom du champ Type Domaine de la valeur /
Contrainte
Valeur tacite
Clé Primaire Unique Non
Nul Clé étrangère Explication
1 CODE_DE_CLASSE Text (10)
x
x CLASSE (CODE_DE_CLASSE) Code de classe
- La suppression d’une classe amène la suppression de tous les enregistrements concernant celle – là dans la table « Apprendre »
- Il faut avoir déjà conservé une classe avant de conserver les enregistrements concernant celle – là dans la table « Apprendre »
b APPRENDRE – DISCIPLINE
- La suppression d’une discipline amène la suppression de tous les enregistrements concernant celle – là dans la table « Apprendre »
- Il faut avoir déjà conservé une discipline avant de conserver les enregistrements concernant celle – là dans la table « Apprendre »
c APPRENDRE – SEMESTRE
- La suppression d’un semestre amène la suppression de tous les enregistrements concernant celle – là dans la table « Apprendre »
Trang 21- Il faut avoir déjà conservé un semestre avant de conserver les enregistrements concernant celui – là dans la table « Apprendre »
2 BATIMENT
No Nom du champ Type Domaine de la valeur /
Contrainte
Valeur tacite
Clé Primaire Unique Non
Nul Clé étrangère Explication
Clé Primaire Unique Non
Nul Clé étrangère Explication
Clé Primaire Unique Non
Nul Clé étrangère Explication
(CODE_DE_SYSTEME) Code de système
(CODE_D_ETABLISSEMENT)
Code d’établissement
Trang 224 CODE_DE_FORMATION Text (8) FORMATION
(CODE_DE_FORMATION) Code de formation
(CODE_DE_NIVEAU) Code de niveau
Tableau 4 : Classe
CONTRAINTE D’INTÉGRITÉ DE RÉFÉRENCE :
a CLASSE – SYSTEME_DE_FORMATION
- La suppression d’un système de formation amène la suppression de toutes les classes appartenant à lequel
- Il faut avoir déjà conservé un système de formation avant de conserver des classes appartenant à lequel
b CLASSE - ETABLISSEMENT
- La suppression d’un établissement amène la suppression de toutes les classes appartenant à lequel
- Il faut avoir déjà conservé un établissement avant de conserver des classes appartenant à lequel
c CLASSE - FORMATION
- On ne peut pas supprimer une formation s’il y avait déjà des classes suivies celle – là
- Il faut avoir déjà conservé une formation avant de conserver les classes suivies celle – là
d CLASSE – NIVEAU_DE_FORMATION
- La suppression d’un niveau de formation amène la suppression de toutes les classes appartenant à lequel
- Il faut avoir déjà conservé un niveau de formation avant de conserver des classes appartenant à lequel
Trang 235 COMPRENDRE
No Nom du champ Type Domaine de la valeur
/ Contrainte
Valeur tacite
Clé Primaire Unique Non
Nul Clé étrangère Explication
1 CODE_DE_FORMATION Text (8)
x
x FORMATION (CODE_DE_FORMATION) Code de formation
(CODE_DE_DISCIPLINE) Code de discipline
Tableau 5 : Comprendre
CONTRAINTE D’INTÉGRITÉ DE RÉFÉRENCE :
a COMPRENDRE – FORMATION
- La suppression d’une formation amène la suppression de tous les enregistrements concernant celle – là dans la table « Comprendre »
- Il faut avoir déjà conservé une formation avant de conserver les enregistrements concernant celle – là dans la table « Comprendre »
b COMPRENDRE – DISCIPLINE
- La suppression d’une discipline amène la suppression de tous les enregistrements concernant celle – là dans la table « Comprendre »
- Il faut avoir déjà conservé une discipline avant de conserver les enregistrements concernant celle – là dans la table « Comprendre »
6 DISCIPLINE
No Nom du champ Type Domaine de la
valeur / Contrainte
Valeur tacite
Clé primaire
Unique Non
nul Clé étrangère Explication
(CODE_DE_BRANCHE)
Code de branche
Trang 244 NOMBRE_D_CREDITS Integer De 1 à 10 X Nombre de crédits
magistral
travail pratique
Tableau 6 : Discipline
CONTRAINTE D’INTÉGRITÉ DE RÉFÉRENCE : DISCIPLINE – BRANCHE :
- La suppression d’une branche amène la suppression de toutes les disciplines appartenant à laquelle
- Il faut avoir déjà conservé une branche avant de conserver les disciplines appartenant à laquelle
7 ENSEIGNER_IRRE
No Nom du champ Type Domaine de
la valeur /
Valeur tacite
Clé primaire
Code de classe
2 CODE_DE_PROFESSEUR Text
Code de professeur
3 CODE_DE_DISCIPLINE Text
Code de discipline
SEMAINE (NUMERO_DE_SEMAINE, SEMESTRE, ANNEE)
Semestre
semaine
Tableau 7 : Enseigner_irre
CONTRAINTE D’INTÉGRITÉ DE RÉFÉRENCE :
a ENSEIGNER_IRRE – REPARTIR_IRRE :
Trang 25- On ne peut pas supprimer un enregistrement dans la table « Repartir_irre » si on a déjà conservé un enregistrement concernant celui – là dans la table « Enseigner_irre »
- Il faut avoir déjà conservé un enregistrement dans la table « Repartir_irre » avant de conserver un enregistrement concernant celui – là dans
Valeur tacite
Clé primaire
Unique
Non nul
Code de classe
Semestre
Trang 268 JOUR_DE_SEMAINE Integer De 2 à 7 X Jour de
semaine
Trang 279 ETABLISSEMENT
No Nom du champ Type Domaine de la valeur /
Contrainte
Valeur tacite
Clé Primaire Unique Non
Nul
Clé étrangère Explication
Clé Primaire Unique Non
SEMESTRE (SEMESTRE, ANNEE) Année
Tableau 10 : Etre_disponible
CONTRAINTE D’INTÉGRITÉ DE RÉFÉRENCE :
a ETRE_DISPONIBLE – SALLE
- La suppression d’une salle amène la suppression de tous les enregistrements concernant celle – là dans la table « Etre_disponible »
- Il faut avoir déjà conservé une salle avant de conserver les enregistrements concernant celle– là dans la table « Etre_disponible »
b ETRE_DISPONIBLE – SEMAINE
- La suppression d’une semaine amène la suppression de tous les enregistrements concernant celle – là dans la table « Etre_disponible »
- Il faut avoir déjà conservé une semaine avant de conserver les enregistrements concernant celle– là dans la table « Etre_disponible »
Trang 2811 FORMATION
No Nom du champ Type Domaine de la valeur
/ Contrainte
Valeur tacite Clé primaire
Unique Non Nul Clé étrangère Explication
Unique Non Nul Clé étrangère Explication
Trang 29Code de professeur
3 DATE_D_OBTENTION Date >ANNEE_DE_FIN_D_ETUDES
- On ne peut pas supprimer un grade universitaire s’il y avait un professeur qui l’a obtenu
- Il faut avoir déjà conservé un grade avant de conserver les enregistrements concernant celui– là dans la table « Obtenir »
b OBTENIR – PROFESSEUR
- La suppression d’un professeur amène la suppression de tous les enregistrements concernant celle – là dans la table « Obtenir »
- Il faut avoir déjà conservé une semaine avant de conserver les enregistrements concernant celle– là dans la table « Obtenir »
15 PROFESSEUR
No Nom du champ Type Domaine de la valeur / Contrainte Valeur
tacite
Clé primaire
Unique Non
Nul Clé étrangère Explication
Trang 305 DATE_DE_NAISSANCE Date
Between DateAdd(“yyyy”, -65, Date()) and DateAdd(“yyyy”, -20, Date())
d’études
Tableau 15 : Professeur
CONTRAINTE D’INTÉGRITÉ DE RÉFÉRENCE : PROFESSEUR – BRANCHE
- La suppression d’une branche amène la suppression de tous les professeurs appartenant à laquelle
- Il faut avoir déjà conservé une branche avant de conserver les professeurs appartenant à laquelle
16 REPARTIR_IRRE
No Nom du champ Type
Domaine de la valeur / Contrainte
Valeur tacite Clé
PROFESSEUR, SEMESTRE, ANNEE)
Code de professeur
APPRENDRE (CODE_DE CLASSE, CODE_DISCIPLINE, SEMESTRE, ANNEE)
Année
Trang 31Clé primaire Unique Non Nul Clé étrangère Explication
1 CODE_DE_PROFESSEUR Text (5)
x
x PROFESSEUR (CODE_DE_PROFESSEUR) Code de professeur
(CODE_DE_TYPE)
Code de type
APPRENDRE (CODE_DE CLASSE, CODE_DISCIPLINE, SEMESTRE, ANNEE)
Code de classe
Trang 32CONTRAINTE D’INTÉGRITÉ DE RÉFÉRENCE :
a REPARTIR_RE – PROFESSEUR
- La suppression d’un professeur amène la suppression de tous les enregistrements concernant celui – là dans la table « Repartir_re »
- Il faut avoir déjà conservé un professeur avant de conserver les enregistrements concernant celui – là « Repartir_re »
Clé primaire Unique Non Nul Clé étrangère Explication
1 CODE_DE_PROFESSEUR Text (5)
x
x PROFESSEUR (CODE_DE_PROFESSEUR) Code de professeur
SEMESTRE (SEMESTRE, ANNEE)
Année
Tableau 18 : Répartir_temps