Browse Source

MaJ Sujet

Arthur Bit-Monnot 4 years ago
parent
commit
8cc959a766
4 changed files with 0 additions and 250 deletions
  1. 0
    4
      sujet/Makefile
  2. 0
    59
      sujet/biblio-js.bib
  3. 0
    187
      sujet/sujet.md
  4. BIN
      sujet/sujet.pdf

+ 0
- 4
sujet/Makefile View File

@@ -1,4 +0,0 @@
1
-
2
-
3
-sujet.pdf: sujet.md biblio-js.bib
4
-	pandoc --number-sections --bibliography=biblio-js.bib -o sujet.pdf sujet.md

+ 0
- 59
sujet/biblio-js.bib View File

@@ -1,59 +0,0 @@
1
-@Article{Ku2016,
2
-author = {Ku, Wen-Yang and Beck, J.},
3
-year = {2016},
4
-month = {04},
5
-pages = {},
6
-title = {Mixed Integer Programming Models for Job Shop Scheduling: A Computational Analysis},
7
-volume = {73},
8
-journal = {Computers \& Operations Research},
9
-doi = {10.1016/j.cor.2016.04.006}
10
-}
11
-
12
-@Article{Blazewicz1996,
13
-author="Blazewicz, Jacek
14
-and Domchke, Wolfgang
15
-and Pesch, Erwin",
16
-title="The job shop scheduling problem: Conventional and new solution techniques",
17
-journal="European Journal of Operational Research",
18
-year="1996",
19
-month="Aug",
20
-day="23",
21
-volume="93",
22
-number="1",
23
-pages="1--33"
24
-}
25
-@Article{Calis2015,
26
-author="{\c{C}}ali{\c{s}}, Banu
27
-and Bulkan, Serol",
28
-title="A research survey: review of AI solution strategies of job shop scheduling problem",
29
-journal="Journal of Intelligent Manufacturing",
30
-year="2015",
31
-month="Oct",
32
-day="01",
33
-volume="26",
34
-number="5",
35
-pages="961--973",
36
-abstract="This paper focus on artificial intelligence approaches to NP-hard job shop scheduling (JSS) problem. In the literature successful approaches of artificial intelligence techniques such as neural network, genetic algorithm, multi agent systems, simulating annealing, bee colony optimization, ant colony optimization, particle swarm algorithm, etc. are presented as solution approaches to job shop scheduling problem. These studies are surveyed and their successes are listed in this article.",
37
-issn="1572-8145",
38
-doi="10.1007/s10845-013-0837-8",
39
-url="https://doi.org/10.1007/s10845-013-0837-8"
40
-}
41
-@Article{Zhang2019,
42
-author="Zhang, Jian
43
-and Ding, Guofu
44
-and Zou, Yisheng
45
-and Qin, Shengfeng
46
-and Fu, Jianlin",
47
-title="Review of job shop scheduling research and its new perspectives under Industry 4.0",
48
-journal="Journal of Intelligent Manufacturing",
49
-year="2019",
50
-month="Apr",
51
-day="01",
52
-volume="30",
53
-number="4",
54
-pages="1809--1830",
55
-abstract="Traditional job shop scheduling is concentrated on centralized scheduling or semi-distributed scheduling. Under the Industry 4.0, the scheduling should deal with a smart and distributed manufacturing system supported by novel and emerging manufacturing technologies such as mass customization, Cyber-Physics Systems, Digital Twin, and SMAC (Social, Mobile, Analytics, Cloud). The scheduling research needs to shift its focus to smart distributed scheduling modeling and optimization. In order to transferring traditional scheduling into smart distributed scheduling (SDS), we aim to answer two questions: (1) what traditional scheduling methods and techniques can be combined and reused in SDS and (2) what are new methods and techniques required for SDS. In this paper, we first review existing researches from over 120 papers and answer the first question and then we explore a future research direction in SDS and discuss the new techniques for developing future new JSP scheduling models and constructing a framework on solving the JSP problem under Industry 4.0.",
56
-issn="1572-8145",
57
-doi="10.1007/s10845-017-1350-2",
58
-url="https://doi.org/10.1007/s10845-017-1350-2"
59
-}

+ 0
- 187
sujet/sujet.md View File

@@ -1,187 +0,0 @@
1
----
2
-title: Méthodes Approchées pour la Résolution de Problèmes d'Ordonnancement
3
-subtitle: Partie 1
4
-author: Arthur Bit-Monnot, Marie-Jo Huguet
5
-geometry: margin=3cm
6
-...
7
-
8
-# Étapes de mise en place
9
-
10
-## Discord
11
-
12
- - rejoignez le serveur Discord pour ces TP : [https://discord.gg/KyUbCCT](https://discord.gg/KyUbCCT). 
13
- - indiquez votre *Prénom Nom* comme pseudo, pour que l'on puisse vous identifier
14
- - en cas de problème technique, vous pourrez vous adresser au chan *support-technique* de ce serveur.
15
- 
16
-## Document de suivi 
17
-     
18
- - inscrivez vous dans le document de suivi : [https://docs.google.com/spreadsheets/d/1QAZlWaTCvrMlLLuwuVFmCD8Plr9QvOoPVpIR4g1PSBk/edit?usp=sharing](https://docs.google.com/spreadsheets/d/1QAZlWaTCvrMlLLuwuVFmCD8Plr9QvOoPVpIR4g1PSBk/edit?usp=sharing)
19
- - à chaque étape franchie dans le TP, ajountez un `X` dans la case correspondante 
20
- 
21
-## Récuperation du code
22
-
23
-- Récupérez la base de code sur Github : [https://github.com/insa-4ir-meta-heuristiques/template-jobshop](https://github.com/insa-4ir-meta-heuristiques/template-jobshop)
24
-
25
-- Suivez les instructions dans le README pour vous assurer que le code compile.
26
-- Importez le projet dans votre IDE préféré. Tous doivent pouvoir supporter l'import de projet gradle et quelques liens sont donnés en bas du README. 
27
-
28
- 
29
-# Prise en main
30
-
31
-## Représentation d'un problème de JobShop
32
-
33
-Vous trouverez dans le dossier `instances/` un ensemble d'instances communément utilisées pour le problème de jobshop.
34
-Si l'on considère l'instance vu dans les exercices, constituée de deux jobs avec trois tâches chacun :
35
-
36
-\begin{table}[h!]
37
- 	\centering
38
- 		\begin{tabular}{c | c | c | c   }
39
- 		  $J_1$  & $r_1, 3$ & $r_2, 3$ & $r_3, 2$ \\
40
- 		  \hline
41
- 		  $J_2$  & $r_2, 2$ & $r_1, 2$ & $r_3, 4$ \\
42
- 		\end{tabular}
43
- 	\label{tab:tache}
44
- \end{table}
45
- 
46
-L'instance est nommée `aaa1` décrite ci-dessus est donnée dans le fichier `instances/aaa1` :
47
-
48
-```
49
-    # Fichier instances/aaa1
50
-    2 3 # 2 jobs and 3 tasks per job
51
-    0 3 1 3 2 2 # Job 1 : (machine duration) for each task 
52
-    1 2 0 2 2 4 # Job 2 : (machine duration) for each task 
53
-```
54
-
55
-La première ligne donnée le nombre de jobs et le nombre de tâches par jobs. Le nombre de machine est égal au nombre de tâches.
56
-Chacune des lignes suivantes spécifie la machine (ici numérotées `0`, `1` et `2`) et la durée de chaque tâche. Par exemple la ligne
57
-`0 3 1 3 2 2` spécifie que pour le premier job :
58
-
59
- - `0 3`: la première tâche s'execute sur la machine `0` et dure `3` unités de temps
60
- - `1 3`: la deuxième tâche s'execute sur la machine `1` et dure `3` unités de temps
61
- - `2 2`: la troisième tâche s'execute sur la machine `2` et dure `2` unités de temps
62
-
63
- 
64
-## Base de code
65
-
66
-Il vous est fourni une base de code pour faciliter votre prise en main du problème.
67
-Vous trouverez dans la classe `jobshop.Main` un point d'entrée pour réaliser des tests de performance de méthodes heuristiques.
68
-Les autres points d'entrée du programme sont les tests déjà présent ou pouvant être ajoutés dans le dossier `src/test/java/`. 
69
-
70
-### Problème et Solution
71
- 
72
- - classe `jobshop.Instance` qui contient la représentation d'un problème et une méthode pour parser un fichier de problème.
73
- - classe `jobshop.Schedule` qui contient la représentation directe, associant à chaque tâche une date de début.
74
- La classe schedule sert notamment à la représentation d'une solution et toute autre représentation doit pouvoir être traduite dans un `Schedule`
75
- 
76
-### Représentation 
77
- 
78
- - une classe abstraite `jobshop.Encoding` dont les sous classes sont des représentations d'une solution au JobShop. 
79
- - une classe `jobshop.encoding.NumJobs` qui contient une implémentation de la représentation par numéro de job
80
- 
81
-### Solveurs
82
-
83
-Deux solveurs très simples basés sur une représentation par numéro de job. Les nouveaux solveurs doivent être ajoutés à la structure `jobshop.Main.solvers` pour être accessibles dans le programme principal.
84
- 
85
- - `basic` : méthode pour la génération d'une solution pour une représentation par numéro de job
86
- - `random` : méthode de génération de solutions aléatoires par numéro de job
87
-
88
-
89
-
90
-## À faire : manipulation de représentations
91
-
92
-Ouvrez la méthode `DebuggingMain.main()`. 
93
-
94
- - Pour la solutions en représentation par numéro de job donnée, calculez (à la main) les dates de début de chaque tâche
95
- - implémentez la méthode `toString()` de la classe `Schedule` pour afficher les dates de début de chaque tâche dans un schedule.
96
- - Vérifiez que ceci correspond bien aux calculs que vous aviez fait à la main.
97
- 
98
-Création d'une nouvelle representation par ordre de passage sur les ressources : 
99
-
100
-- Créer une classe `jobshop.encodings.ResourceOrder` qui contient la représentation par ordre de passage sur ressources vue dans les exercices (section 3.2). Il s'agit ici d'une reprsentation sous forme de matrice où chaque ligne correspond à une machine, et sur cette ligne se trouvent les tâches qui s'exécutent dessus dans leur ordre de passage. Pour la representation d'une tâche dans la matrice, vous pouvez utiliser la classe `jobshop.encodings.Task` qui vous est fournie.
101
-
102
-- Pour cette classe, implémentez la méthode `toSchedule()` qui permet d'extraire une représentation directe. 
103
-Pour l'implémentation de cette méthode `toSchedule()`, il vous faut construire un schedule qui associe à chaque tâche une date de début (vous pouvez regardez l'implémentation pour `JobNums` pour en comprendre le principe).
104
-Pour construire ce schedule il faudra que vous mainteniez une liste des tâches qui ont été schédulé. Cette liste est initialement vide.
105
-À chaque itération de l'algorithme, on identifie les tâches executables. Une tâche est executable si 
106
-
107
-     - son prédecesseur sur le job a été schedulé (si c'est la tache (1, 3), il faut que les tâches (1,1) et (1,2) aient été schédulée)
108
-     - son prédecesseur sur la ressource a été schedulé (l'ordre sur passage sur les ressources est précisement ce qui vous est donné par cette représentation).
109
- 
110
-- Ajouter des tests dans `src/test/java/jobshop` permettant de vérifier que vos méthodes fonctionnent bien pour les exemples traités en cours (instance `aaa1`). Vous pouvez pour cela vous inspirer et ajouter des cas de test à `EncodingTests`. 
111
-
112
-
113
-
114
-Changement de représentation : 
115
-
116
-- pour les deux représentations `ResourceOrder` et `JobNums`, créez des méthodes permettant de créer cette représentation depuis un `Schedule`.
117
-- utilisez la pour tester la conversion de `ResourceOrder` vers `JobNums` et vice-versa.
118
-
119
-
120
-# Heuristiques gloutonne
121
-
122
-Un schéma général d'heuristique est présenté dans l'article [@Blazewicz1996] et est résumé ci-dessous:
123
-
124
- #. se placer à une date $t$ égale à la plus petite date de début des opérations 
125
- #. construire l'ensemble des opérations pouvant être réalisées à la date $t$
126
- #. sélectionner l'operation $(i,j)$ réalisable de plus grande priorité
127
- #. placer $(i,j)$ au plus tôt sur la ressource $k$ qui la réalise (en respectant les contraintes de partage de ressources, c'est à dire en vérifiant la date de disponibilité de la ressource $k$)
128
- #. recommencer en (3) tant qu'il reste des opérations à ordonnancer 
129
- #. recommencer en (2) en incrémentant la date $t$ (à la prochaine date possible compte tenu des dates de début des opérations)
130
-
131
-
132
-Selon la manière dont sont gérées les priorités entre les opérations on obtient différentes solutions d'ordonnancement. Les règles de piorité classiquement utilisées sont : 
133
-
134
- - SPT (Shortest Processing Time) : donne la priorité à la tâche ayant la plus petite durée;
135
- - LPT (Longest Processing Time) : donne la priorité à la tâche ayant la plus grande durée 
136
-
137
-## À faire
138
-
139
- - Créer un nouveau solveur implémentant une recherche gloutonne pour les priorités SPT et LPT, basé sur la représentation par ordre de passage sur les ressources
140
- - Evaluer ces heuristiques sur les instances fournies et pour la métrique d'écart fournie.
141
- - (optionnel) Concevoir une version randomisée de ces heuristiques où une partie des choix est soumise à un tirage aléatoire
142
- - Débuter la rédaction d'un rapport présentant le travail effectué
143
-
144
-Pour les tests de performance, on privilégiera les instance `ft06`, `ft10`, `ft20` et les instances de Lawrence `la01` à `la40`.
145
-
146
-<!--
147
- - Concevoir version *randomisée* de ces recherches gloutonnes
148
- - Evaluer cette nouvelle heuristique sur les instances fournies et pour les métriques définies précédemment
149
- - Comparer les résultats obtenus par ces deux heuristiques par rapport à ceux de la littérature et à la méthode exacte
150
- - Débuter la rédaction d'un rapport présentant le travail effectué
151
--->
152
-
153
-# Recherche exhaustive
154
-
155
-Dans le but de garantir l'optimalité des solutions trouvée, implémentez une recherche exhaustive basée sur une recherche en profondeur d'abord (Depth-First Search).  
156
-On notera que par rapport à la méthode gloutonne, une recherche exhaustive doit permettre de tester l'ensemble des opérations pouvant être réalisée à instant $t$ (étape (2) de la méthode gloutonne ci-dessus).
157
-On ne cherchera pas à optimiser cette méthode, des techniques plus adaptées à la recherche exhaustive pour de tels problèmes seront traitées en 5ème année.
158
-
159
-Quelle semble être la taille limite d'une instance pour permettre une recherche exhaustive ?
160
-
161
-# Références 
162
-
163
-<!--
164
-# Méthode de descente
165
-
166
-- implémenter chemin critique
167
-- méthode de validation
168
-
169
-- implémenter voisinage 
170
-   - Laarhoven
171
-   - Nowicki et Smutnicki (optionnel)
172
-
173
-- méthode descente 
174
-
175
-- méthode de descente avec départ multiples (optionnel)
176
-
177
-
178
-# Métaheuristiques
179
-
180
-Au choix : Méthode tabou ou Algorithme génétique
181
-
182
-
183
-
184
- -->
185
- 
186
- 
187
- 

BIN
sujet/sujet.pdf View File


Loading…
Cancel
Save