Vous êtes sur la page 1sur 8

Republique Algerienne Democratique et Populaire

Ministere de l’Enseignement Superieur et de la Recherche Scientifique


Universite des Sciences et de la Technologie Houari Boumediene

Faculte de Mathematiques

Département de Recherche Opérationnelle

Master RO2MIR

Projet TP C++

Présenté par:
BOULAHRAM Lysa
SERHANE Hadjer

14 juin 2023
Contents
1 Atelier a cheminement unique (flow shop) 2

2 flow shop pour m machines 2


2.1 ordonnancer les taches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Heuristique de résolution NEH . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.3 Borne inferieur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

3 La question 1 5

4 La question 2 6

5 La question 3 6

1
1 Atelier a cheminement unique (flow shop)
Dans ce cas, toute tache ”doit” visiter chaque machine de l’atelier (les machin ^ es sont
placées en serie) et l’ordre de passage (sur les machines) est le m ème pout toutes les taches
(flot unidirectionnel, c’est-a-dire que Les taches sont enchaınees de maniére linéaire suivant
une chaine).
Ce probleme se rencontre souvent en pratique. Il correspond à une chaine de fabrication ou
de montage

2 flow shop pour m machines


2.1 ordonnancer les taches
Considerons le problème Fm |prmu|Cmax . Pour une sequence de taches (ou permutation)
T1 → T2 → ... → Tn et une gamme de fabrication M1 → M2 → ... → Mm , la date de fin d’une
tache Ti sur une machine Mj est donnee par les expressions récursives .
 Pj
C1j = P k=1 p1k
 ; j = 1, ....m.
i
Ci1 = k=1 pk1 ; i = 1, ....n.

Cij = max{C(i−1)j , Ci(j − 1)} ; i = 2, ...n; j = 2..., m

Notons que Cmax = Cnm

2.2 Heuristique de résolution NEH


Proposee par M. Nawaz, E. Enscore et I. Ham en 1983. Elle est la meilléure heuristique
connue a ce jour pour le flow shop de permutation. Son principe est de sélectionner la tache
ayant le plus long temps de traitement global parmi les taches non encore placées et essaie de
l’insérer dans toutes les positions possibles de la sequence partielle en cours de construction.
Elle choisit enfin la sequence qui augmente le moins le makespan de l’ordonnancement partiel
forme par les taches déjà placés.
Soit Seq la meilleure sequence de taches, initialement vide.

2
Algorithm 1 Heuristique NEH
Debut
. Soit T1 , T2 , ..., Tn la liste de taches rangées dans l’ordre décroissant de leurs durées
globales.
. Placer la tache T1 dans la séquence Seq .
. Pour i = 2 à n faire
Cmax = ∞;
Pour k = 1 à i faire
Construire une solution partielle en mettant la tache Ti a la position k dans la
sequence Seq .
Calculer le makespan Cmax de cette solution partielle.
Si Cmax < Cmax ′ alors
best = k ;

Cmax = Cmax
Fsi
Finpour
Placer la tache Ti a la position best dans la sequence Seq .
Finpour
Appliquer cette sequence au problème ;

Fin de l’algorithme

2.3 Borne inferieur


Concernant la borne inférieure du flow-shop de permutation, nous considérons celle de B.
J. Lageweg, J. K. Lenstra et A. H. G. Rinnooy Kan (Lageweg et al., 1978).
Pour calculer cette borne nous allons d’abord résoudre des sous-problèmes à 2 machines
avec des temps de latence.
Pour cela on choisit deux machines Mk et Ml (avec k < l), ensuite on pose :


p1i =Ppki
 ; i = 1, ....n.
l−1
F 2|prmt, li |Cmax : li = h=k+1 phi ; i = 1, ....n.
 ′

p2i = pil ; i = 2, ...n
ainsi que
 Pk−1
ri = Ph=1 phi

qi = m h=l+1 phi

i = 1, . . . , n

On obtient le sous-problème qui peut résolu à l’optimalité en temps polynomial par


l’algorithme de Mitten-Jackson. On note la solution optimale obtenue : P ∗ (Mk , Ml ) .
La borne inférieure est donc égale à :

LB = min{P ∗ (Mk , Ml ) + min{ri + qi′ }}

3
La solution du F 2|prmt, li |Cmax , est obtenue à partir de l’ordre définit par la relation ≤
entre de tâches Ti et Ti′ ainsi,

Ti ≤ Ti′ ⇐⇒ min(p′1i + li, p′2i′ + li′ ) ≤ min(p′2i + li, p′1i′ + li′ )

4
3 La question 1
la fonction ordonnancer avec la matrice C en paramètre
ajouter une fonction saisire qui permet de remplir la matrice C avec des zéro comme suit :

la fonction ordonnancer devien comme suit :

la seconde fonction ordonnancer devien comme suit :

5
on doit ajouter dans les paramèttre des autre fonction (NEH ,OPT ,BB ) la matrice C
en paramàtre vector<vector<int> c

4 La question 2
evaluer une solution pariel :
le contunue de sigma1 et calculer les temps de fin de traitement des tache de la solotion
pariel , en suit les utiliser dans les fonction NEH , LB en ajouton la matrice C en parametre

5 La question 3
l’écriture de programme avec std::list au lieu de vector
la déclaration d’une liste : std::list<int> nomlist ;
la déclaration d’une liste des liste (matrice) : std::list<list<int> > nomliste ;
on change la déclaration de tous les listes et les matices déclarie en vector on le déclare en
liste comme suit .

pour accedée au élément de la liste on doit faire une fonction qui récupère les élement
de la position que je veux modifier , et une fonction qui modifie l’élément

6
7

Vous aimerez peut-être aussi