Tải bản đầy đủ (.pdf) (64 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.56 MB, 64 trang )

Chapitre 1 : 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 1 : 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 2 : 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 2 : 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 < 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é.
©TRAN My Lan, 2010

13


Chapitre 2 : 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 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
©TRAN My Lan, 2010

14



Chapitre 2 : 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 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.

©TRAN My Lan, 2010

15


Chapitre 2 : Développement

Problème de dresser l’emploi du temps


2. 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
où 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 Â
fonction d'évaluation de l'individu.

+

appelée fitness ou

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 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 2 : 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 : 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 AÙ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 2 : 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 2 : 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 2 : Développement

Problème de dresser l’emploi du temps

- 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
à explorer.
- Cette heuristique influe directement sur les performances de la recherche, étant
donné qu’elle tend à diminuer de façon drastique le nombre de nœuds à parcourir. On
associe souvent cette heuristique à l’algorithme de Retour en Arrière et de Vérifier
d’avance.
I.2. Introspective
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.
©TRAN My Lan, 2010

20


Chapitre 2 : Développement


Problème de dresser l’emploi du temps

Sur 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 NPcomplè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
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.

©TRAN My Lan, 2010

21


Chapitre 2 : Développement

Problème de dresser l’emploi du temps

II. 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.

©TRAN My Lan, 2010

22


Chapitre 2 : Développement


Problème de dresser l’emploi du temps

Le 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.

Figure 1 : Emploi du temps
d’enseignement théorique du
système de formation régulière

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.

©TRAN My Lan, 2010

23


Chapitre 2 : Développement

Problème de dresser l’emploi du temps

Sur 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

©TRAN My Lan, 2010

24


Chapitre 2 : Développement

Problème de dresser l’emploi du temps

II.3.1.1.1. En général
Grade_universitaire

obtenir
0,n


Date_d_obtention D

Code_de_grade VA3
Explication
VA100

Systeme_de_formation
Code_de_systeme VA8
Nom_de_systeme VA200

0,n

0,n

Professeur
Code_de_professeur
Nom
Prenom
Date_de_naissance
Sexe
Annee_de_fin_d'etudes

Semestre

A5
VA20
VA20
D
A1
D


Semestre
Annee
Date_de_debut
Date_de_fin

I
A9
D
D

appartenir3
Niveau_de_formation
Code_de_niveau VA8
Nom_de_niveau VA200

0,n
0,1

0,1
0,n

appartenir1

0,n

Classe
Code_de_classe
Nom_de_classe
Nombre_d_etudiants

Annee_d_entree

0,n
Branche

VA10
VA200
I
I

0,1

0,1

0,1

appartenir4

appartenir5

Code_de_branche VA8
Nom_de_branche VA200
0,n
0,n

apprendre
suivre

appartenir2


Etablissement
Code_d_etablissement VA8
Nom_d_etablissement VA200

0,n

0,1
Discipline
Code_de_discipline
Nom_de_discipline
Nombre_de_credits
Volume_horaire_de_CM
Volume_horaire_de_TP

A5
VA200
I
0,n
I
I

0,n
comprendre

Formation
0,n Code_de_formation VA8
Nom_de_formation VA200

Semestre I


Figure 3 : Modèle conceptuel de données - en général

©TRAN My Lan, 2010

25


Chapitre 2 : Développement

Problème de dresser l’emploi du temps

II.3.1.1.2. Enseignement théorique du système de formation régulière
Type_de_la_salle
0,n

appartenir7

0,1

appartenir6

Batiment

0,1

0,n

Code_de_batiment A8
Nom_de_batiment VA100
0,n


Salle
Code_de_salle A5
Nom_de_salle VA20
Capacite
I

0,n

etre_disponible

Semestre
Semestre
Annee
Date_de_debut
Date_de_fin

Code_d_type A8
Explication
VA100

I
0,n
A10
D
D
0,n

enseigner_re
jour_de_semaine

Seance
periode_de_debut
nombre_de_periodes

0,n
0,n
Professeur
Code_de_professeur
Nom
Prenom
Date_de_naissance
Sexe
Annee_de_fin_d'etudes

I
VA20
I
I

A5
VA20
VA20
D
A1
D

0,n

0,n
Type d'enseignement

Code_de_type A8
Explication
VA100
0,n

0,n
Discipline
Code_de_discipline
Nom_de_discipline
Nombre_de_credits
0,n Volume_horaire_de_CM
Volume_horaire_de_TP

A5
VA200
I
I
I
0,n
Classe

Code_de_classe
0,n Nom_de_classe
Nombre_d_etudiants
Annee_d_entree

Repartir_re

VA10
VA200

I
I

Figure 4 : Modèle conceptuel de données - Enseignement théorique du système de formation régulière

©TRAN My Lan, 2010

26


Chapitre 2 : Développement

Problème de dresser l’emploi du temps

II.3.1.1.3. Enseignement du système de formation irrégulière
Semaine

Repartir_Temps
Section VA10

contenir

Semestre
0,n Semestre
Annee
Date_de_debut
Date_de_fin

Numero_de_semaine I
Date_de_debut

D
1,1
Date_de_fin
D

I
0,n
A9
D
D

0,n

0,n

enseigner_irre

0,n
0,n

Discipline

0,n
Professeur

Code_de_professeur
Nom
Prenom
Date_de_naissance
Sexe

Annee_de_fin_d'etudes

A5
VA20
VA20
D
A1
D

0,n

Code_de_discipline
Nom_de_discipline
Nombre_de_credits
Volume_horaire_de_CM
Volume_horaire_de_TP

A5
VA200
I
I
I

0,n

0,n
Classe

0,n


Code_de_classe
Nom_de_classe
Nombre_d_etudiants
Annee_d_entree

VA10
VA200
I
I

Repartir_irre

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)

©TRAN My Lan, 2010

27


Chapitre 2 : Développement

Problème de dresser l’emploi du temps

8. 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)

©TRAN My Lan, 2010

28


Chapitre 2 : Développement

Problème de dresser l’emploi du temps

II.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

1

CODE_DE_CLASSE


Text (10)

2

CODE_DE_DISCIPLINE

Text (5)

3

ANNEE

Text (9)

4

SEMESTRE

Integer

Domaine de la valeur /
Contrainte

Clé
Valeur
Unique Non Clé étrangère
tacite Primaire
Nul

Explication


x

CLASSE (CODE_DE_CLASSE)

Code de classe

x

DISCIPLINE
(CODE_DE_DISCIPLINE)

Code de discipline

0000-0000

x

Année

De 1 à 3

x

SEMESTRE (SEMESTRE,
ANNEE)

x

Semestre


Tableau 1 : Apprendre

CONTRAINTE D’INTÉGRITÉ DE RÉFÉRENCE :
a.

APPRENDRE – 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 »
©TRAN My Lan, 2010

29


Chapitre 2 : Développement

Problème de dresser l’emploi du temps


- 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

1

CODE_DE_BATIMENT

Text (8)

2

NOM_DE_BATIMENT

Text (100)

Domaine de la valeur /
Contrainte

Clé
Valeur
Unique Non Clé étrangère
tacite Primaire
Nul
x
x

Explication


x

Code de bâtiment

x

Nom de bâtiment

Tableau 2 : Bâtiment

3. BRANCHE
No Nom du champ

Type

1

CODE_DE _BRANCHE

Text (8)

2

NOM_DE_BRANCHE

Text (200)

Domaine de la valeur /
Contrainte


Clé
Valeur
Unique Non Clé étrangère
tacite Primaire
Nul
x
x
x

x

Explication
Code de branche
Nom de branche

Tableau 3 : Branche

4. CLASSE
Domaine de la valeur / Valeur
Contrainte
tacite

Clé
Unique
Primaire

Non Clé étrangère
Nul
x


Explication

No Nom du champ

Type

1

CODE_DE _CLASSE

Text (10)

2

CODE_DE_SYSTEME

Text (8)

x

SYSTEME_DE_FORMATION
Code de système
(CODE_DE_SYSTEME)

3

CODE_D_ETABLISSEMENT

Text (8)


x

ETABLISSEMENT
Code
(CODE_D_ETABLISSEMENT) d’établissement

©TRAN My Lan, 2010

x

30

Code de classe


Chapitre 2 : Développement

Problème de dresser l’emploi du temps

FORMATION
(CODE_DE_FORMATION)

Code de formation

NIVEAU_DE_FORMATION
(CODE_DE_NIVEAU)

Code de niveau


4

CODE_DE_FORMATION

Text (8)

5

CODE_DE_NIVEAU

Text (8)

x

6

NOM_DE_CLASSE

Text (200)

x

Nom de classe

7

NOMBRE_D_ETUDIANTS

Integer


De 15 à 100

x

Nombre d’étudiants

8

ANNEE_D_ENTREE

Integer

De 2000 à 2100

Année d’entrée
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.
©TRAN My Lan, 2010

31


Chapitre 2 : Développement

Problème de dresser l’emploi du temps

5. COMPRENDRE
No

Nom du champ

Type

1

CODE_DE_FORMATION


Text (8)

Domaine de la valeur Valeur
/ Contrainte
tacite

Clé
Unique
Primaire

Non
Nul

Clé étrangère

Explication

x

FORMATION
(CODE_DE_FORMATION)

Code de formation

DISCIPLINE
(CODE_DE_DISCIPLINE)

Code de discipline

x

2

CODE_DE_DISCIPLINE

Text (5)

x

3

SEMESTRE

Text (1)

x

Semestre

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
Domaine de la
valeur / Contrainte

No Nom du champ

Type

1

CODE_DE_DISCIPLINE

Text (5)

2

CODE_DE_BRANCHE

Text (8)

3

NOM_DE_DISCIPLINE

Text (200)

©TRAN My Lan, 2010

Valeur

tacite

Unique
Clé
primaire
x

Non
nul
X
X

32

Clé étrangère

x

X

BRANCHE
(CODE_DE_BRANCHE)

Explication

Code de discipline
Code de branche
Nom de discipline



Chapitre 2 : Développement

Problème de dresser l’emploi du temps

4

NOMBRE_D_CREDITS

Integer

De 1 à 10

X

5

VOLUME_HORAIRE_DE_CM

Integer

>=0

X

6

VOLUME_HORAIRE_DE_TP

Integer


>=0

X

Nombre de crédits
Volume horaire de cour
magistral
Volume horaire de
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 /

Text
(10)
Text
(5)

1


CODE_DE_CLASSE

2

CODE_DE_PROFESSEUR

3

CODE_DE_DISCIPLINE

5

SEMESTRE

Text
(5)
Integer De 1 à 2

4

ANNEE

Text

5

NUMERO_DE_SEMAINE

Integer De 1 à 20


Valeur
Clé
Unique Non
tacite primaire
nul

Clé étrangère

0000-0000

X
X
X

REPARTIR_IRRE
(CODE_DE_CLASSE,
CODE_DE_DISCIPLINE,
CODE_DE_PROFESSEUR,
SEMESTRE, ANNEE)

X

Tableau 7 : Enseigner_irre

CONTRAINTE D’INTÉGRITÉ DE RÉFÉRENCE :
a.

ENSEIGNER_IRRE – REPARTIR_IRRE :


©TRAN My Lan, 2010

Code de
classe
Code de
professeur

X
x

33

Explication

SEMAINE
(NUMERO_DE_SEMAINE,
SEMESTRE, ANNEE)

Code de
discipline
Semestre
Année
Numéro de
semaine


Chapitre 2 : Développement

Problème de dresser l’emploi du temps


- 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
la table « Enseigner_irre ».
b. ENSEIGNER_IRRE – SEMAINE :

- On ne peut pas supprimer une semaine dans la table « Semaine » si on a déjà conservé un enregistrement concernant celle – là dans la table
« Enseigner_irre ».
- Il faut avoir déjà conservé une semaine dans la table « Semaine » avant de conserver un enregistrement concernant celle – là dans la table
« Enseigner_irre ».
8. ENSEIGNER_RE
Domaine de la
valeur /
Contrainte

Clé
Unique
Valeur
Non
primaire
tacite
nul

No Nom du champ

Type

1

CODE_DE_CLASSE


Text (10)

X

2

CODE_DE_PROFESSEUR

Text (5)

X

3

CODE_DE_TYPE

Text (8)

4

CODE_DE_DISCIPLINE

Text (5)

5

SEMESTRE

Integer


6

ANNEE

Text (9)

7

CODE_DE_SALLE

Text (5)

©TRAN My Lan, 2010

X
X
De 1 à 3
0000-0000

X
X
X
X

34

Clé étrangère

REPARTIR_RE

(CODE_DE_PROFESSEUR,
CODE_DE_CLASSE,
CODE_DE_DISCIPLINE,
CODE_DE_TYPE,
SEMESTRE, ANNEE)

Explication

Code de
classe
Code de
professeur
Code de
type
Code de
discipline
Semestre
ETRE_DISPONIBLE
(CODE_DE_SALLE, Année
SEMESTRE, ANNEE)
Code de
salle


×