Un outil d`aide au dimensionnement et à la planification des

Transcription

Un outil d`aide au dimensionnement et à la planification des
Institut
Supérieur d’
Informatique de
Modélisation et de leurs
Applications
Complexe des Cézeaux
BP 125
63173 Aubière CEDEX
Rapport de projet de troisième année
Filière Calcul et Modélisation Scientifiques
Un outil d’aide au dimensionnement
et à la planification des blocs opératoires
du Nouvel Hôpital d’Estaing
Présenté par
: Rudi Helfenstein, Julien Schueller jeudi, 19 mars 2009
Responsables ISIMA : Michel Gourgand, Sophie Rodier durée : 120h
Institut
Supérieur d’
Informatique de
Modélisation et de leurs
Applications
Complexe des Cézeaux
BP 125
63173 Aubière CEDEX
Rapport de projet de troisième année
Filière Calcul et Modélisation Scientifiques
Un outil d’aide au dimensionnement
et à la planification des blocs opératoires
du Nouvel Hôpital d’Estaing
Présenté par
: Rudi Helfenstein, Julien Schueller jeudi, 19 mars 2009
Responsables ISIMA : Michel Gourgand, Sophie Rodier durée : 120h
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
Remerciements
Nous tenons à remercier nos responsables de projet Michel Gourgand et Sophie Rodier pour leurs conseils
prodigués au fur et à mesure de l’avancement du projet.
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
Table des figures
1
2
3
4
5
6
7
Diagramme de classes du problème de planification . .
Planification hebdomadaire de 59 opérations . . . . . .
Planification hebdomadaire de 100 opérations . . . . .
Planification hebdomadaire de 198 opérations . . . . .
Planification hebdomadaire dans des salles spécialisées
Planification hebdomadaire dans un mélange de salles .
Planification hebdomadaire dans des salles polyvalentes
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
11
12
13
14
15
16
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Planification sur 12 opérations, en 600 secondes . . . . . . . . . . . . . . . . . . . . .
Planification de 20 opérations, en 600 secondes . . . . . . . . . . . . . . . . . . . . .
Planification de 39 opérations en 600 secondes . . . . . . . . . . . . . . . . . . . . .
Planification de 39 opérations en 1800 secondes . . . . . . . . . . . . . . . . . . . . .
Planification de 39 opérations en 7200 secondes . . . . . . . . . . . . . . . . . . . . .
Planification de 39 opérations en 600 secondes . . . . . . . . . . . . . . . . . . . . .
Planification de 39 opérations en 7200 secondes . . . . . . . . . . . . . . . . . . . . .
Planification de 39 opérations en 600 secondes, avec prise en compte des chirurgiens .
Planification de 39 opérations en 1800 secondes, avec prise en compte des chirurgiens .
Planification de 39 opérations en 7200 secondes, avec prise en compte des chirurgiens .
Planification de 39 opérations en 600 secondes, salles spécialisées . . . . . . . . . . .
Planification de 39 opérations en 600 secondes, mélange de salles . . . . . . . . . . .
Planification de 39 opérations en 600 secondes, salles polyvalentes . . . . . . . . . . .
Planification de 39 opérations en 7200 secondes, salles spécialisées . . . . . . . . . . .
Planification de 39 opérations en 7200 secondes, mélange de salles . . . . . . . . . . .
Planification de 39 opérations en 7200 secondes, salles polyvalentes . . . . . . . . . .
Tableau de résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
25
26
27
28
29
30
Codage des données d’entrée. . . . . . . . . .
Codage des niveaux de contraintes du modèle.
Structure des paramètres du solveur. . . . . .
Structure des résultas. . . . . . . . . . . . . .
Structure de statistiques du solveur. . . . . . .
Exemple de fichier de bloc . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
41
41
42
42
43
44
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
Résumé
Ces travaux s’intéressent au dimensionnement d’un bloc opératoire ainsi qu’à la planification des opérations dans ce bloc au moyen de programmes linéaires utilisant le solveur Cplex. Les problèmes de planification en milieu hospitalier sont soumis à plus de contraintes que les générations d’emploi du temps habituels.
Le domaine est en effet très particulier, et nécessite une gestion du personnel très lourde qui se traduit par
un trop grand nombre de contraintes pour un programme linéaire. Des simplifications ont été nécessaires et
deux modèles ont été développés, chacun traitant d’une petite partie du problème initial. Le premier permet
de faire la planification sur toute la semaine, sans tenir compte des disponibilités du personnel hospitalier. Le
second effectue la planification sur une seule journée, mais en tenant compte des disponibilités des chirurgiens.
Plusieurs fonctions objectifs ont été testées pour chaque programme linéaire, chacune prenant en compte un
certain nombre de critères différents. Le dimensionnement du bloc opératoire a été inclus dans les programmes
linéaires, en ajoutant dans la fonction objectif la minimisation du nombre de salles.
mots-clés : dimensionnement, planification, bloc opératoire, Cplex, programmation linéaire
Abstract
This work is about dimensionning an operating block and scheduling the operations in this same block,
using linear programming and Cplex solver. Scheduling problems in hospitals are very specific : there are
more constrained than the usual scheduling problems. This domain is indeed very special, because it is difficult
to include all the hospital workers in the model. Simplifications were made, and two differents models were
created, each one dealing with a small part of the whole scheduling problem. The first one schedules the operations for the whole week, without taking care of hospital workers. The second one schedules the operations
for only one day, and surgeon’s management has been included in the model. Several objectives functions have
been tested for each program, all of them dealing with different criteria. The operating block dimensionning
have been included in the linear programs, by adding in the objective function the minimisation of the rooms’
number.
keywords : dimensionning, scheduling, operating block, Cplex, linear programming
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
Table des matières
Remerciements
Résumé / Abstract
Introduction
1
I
Présentation du problème
2
1
But et contraintes
1.1 But du projet . . . . . . . . . . . . .
1.2 Contraintes classiques de planification
1.3 Contraintes liées aux personnels . . .
1.4 Contraintes liées aux opérations . . .
1.5 Contraintes liées aux coûts . . . . . .
1.6 Contraintes logistiques . . . . . . . .
1.7 Problème de dimensionnement . . . .
.
.
.
.
.
.
.
2
2
2
3
3
4
4
5
.
.
.
.
.
5
5
5
5
6
6
2
II
1
Modélisation des différents éléments
2.1 Les opérations . . . . . . . . . .
2.2 Les salles d’opération . . . . . .
2.3 Les chirurgiens . . . . . . . . .
2.4 Modélisation UML . . . . . . .
2.5 Les spécialités . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Planification hebdomadaire
Le programme linéaire
1.1 Description . . . . . . . . . . . . . . . . . .
1.2 Les variables . . . . . . . . . . . . . . . . .
1.3 Les fonctions objectifs . . . . . . . . . . . .
1.3.1 La première fonction objectif . . . . .
1.3.2 Prise en compte du dimensionnement
1.4 Les contraintes . . . . . . . . . . . . . . . .
7
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
7
8
8
8
9
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
2
III
1
2
Résultats
2.1 Paramètres du programme . . . . . .
2.1.1 Paramètres généraux . . . . .
2.1.2 Types de salles . . . . . . . .
2.1.3 Nombre d’opérations . . . . .
2.2 Résultats . . . . . . . . . . . . . . . .
2.2.1 Variation de la taille du fichier
2.2.2 Variation des types de salles .
2.3 Analyse des résultats . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Planification avec gestion des chirurgiens
Le programme linéaire
1.1 Définition des variables . . . . . . . . .
1.2 Les fonctions objectifs . . . . . . . . .
1.2.1 Fonction objectif liée aux salles
1.2.2 Deuxième fonction objectif . . .
1.2.3 Fonction objectif complète . . .
1.3 Les contraintes . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
10
10
10
10
10
11
11
13
16
17
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Résultats
2.1 Paramètres du programme . . . . . . . . . . . . . .
2.2 Méthodologie des tests . . . . . . . . . . . . . . . .
2.2.1 Tests sur des problèmes de différentes tailles
2.2.2 Tests sur différents types de salles . . . . . .
2.2.3 Différents temps d’exécution . . . . . . . . .
2.3 Variation de la taille du fichier d’entrée . . . . . . . .
2.3.1 12 opérations . . . . . . . . . . . . . . . . .
2.3.2 20 opérations . . . . . . . . . . . . . . . . .
2.3.3 39 opérations . . . . . . . . . . . . . . . . .
2.4 Variation de la fonction objectif . . . . . . . . . . .
2.4.1 Fonction objectif la plus simple . . . . . . .
2.4.2 Deuxième fonction objectif . . . . . . . . . .
2.4.3 Prise en compte des chirurgiens . . . . . . .
2.5 Variation des types de salles . . . . . . . . . . . . .
2.5.1 Résolution de 600 secondes . . . . . . . . .
2.5.2 Résolution de 1800 secondes . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
17
17
18
18
18
19
19
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
21
21
21
21
21
22
22
22
23
24
27
27
28
29
32
33
35
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
2.5.3
2.5.4
IV
1
2
Résolution de 7200 secondes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Analyse des résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
38
Résolution avec Cplex
40
Structure du programme
1.1 Fichiers sources . . . . .
1.1.1 data.c / data.h . .
1.1.2 solver.c / solver.h
1.1.3 result.c / result.h
1.1.4 stat.c / stat.h . .
1.2 Scripts . . . . . . . . . .
1.2.1 Makefile . . . .
1.2.2 run.sh . . . . . .
1.2.3 nohup_run.sh . .
.
.
.
.
.
.
.
.
.
40
40
40
42
42
43
43
43
43
44
Problèmes rencontrés
2.1 Limites de Cplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Problème de rappatriement des données depuis Cplex . . . . . . . . . . . . . . . . . . . . . .
44
44
45
Conclusion
Références bibliographiques
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
Introduction
Ce travail s’inscrit dans le cadre de la construction du Nouvel Hôpital d’Estaing (N.H.E.) à Clermont-Ferrand.
Il a pour but de dimensionner la taille du bloc opératoire de ce nouvel hôpital, ainsi que d’effectuer la planification de l’emploi du temps des salles d’opérations du bloc. Cette planification sera effectuée au moyen d’un
programme linéaire résolu par Cplex. Les résultats obtenus font l’objet d’une simulation QNAP effectuée par
deux élèves de deuxième année dans le cadre de leur projet.
La génération d’un emploi du temps est un problème classique de recherche opérationnelle. Cependant, le
domaine hospitalier amène une complexité beaucoup plus grande que les problèmes de planification habituels,
que ce soit au niveau du personnel ou de la logistique. En effet, une opération est effectuée par un ensemble
de personnes de métiers différents : chirurgiens, anesthésistes, internes, infirmières spécialisées ou non. Les
équipements nécessaires à une opération sont nombreux et coûteux, et il est donc nécessaire d’en minimiser
le nombre. De plus, les patients ne peuvent être traités comme une quelconque marchandise, ce qui impose
des contraintes supplémentaires. Le nombre de contraintes à respecter pour générer l’emploi du temps est donc
beaucoup plus grand que la normale. À cela s’ajoute le problème de dimensionnement du bloc opératoire,
c’est-à-dire qu’il faut déterminer en fonction de la charge de travail à effectuer quelle est le nombre de salles
nécessaires. Le grand nombre de contraintes existant nous a conduit à effectuer des simplifications afin d’obtenir une bonne solution dans un temps acceptable.
Dans la première partie seront détaillées les contraintes, qui font de ce problème un problème si particulier,
ainsi que les simplifications et choix opérés. Les deux parties suivantes seront chacune consacrées à un modèle linéaire construit pour répondre à deux facettes du problèmes, ainsi qu’aux tests qui nous ont permis d’en
vérifier la validité. Finalement sera expliquée dans une dernière partie la structure du programme mis en place.
page 1 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
Première partie
Présentation du problème
1
1.1
But et contraintes
But du projet
Ce projet est effectué en parallèle avec un projet de deuxième année en filière 3, travaillant sur un modèle
de simulation avec le logiciel QNAP. Il a pour but de planifier l’emploi du temps des salles d’opération du
N.H.E., Nouvel Hôpital d’Estaing. Pour cela, en plus de répartir les actes chirurgicaux à effectuer dans les
différentes salles d’opérations, il faut choisir le nombre de salles d’opérations nécessaires à la réalisation des
opérations dans le temps imparti. Il faut également choisir le type de salles. En effet, les salles ne seront pas
forcément équipées du matériel nécessaire à toutes les opérations. Il en résulte une spécialisation des salles. Il
y a quatre spécialités en tout, et les salles peuvent être :
– "spécialisées", c’est-à-dire qu’elles ne peuvent accueillir des opérations que d’une seule spécialité
– "partagées", c’est-à-dire qu’elles peuvent accueillir des opérations de plusieurs spécialités
– "polyvalentes", c’est-à-dire qu’elles peuvent accueillir des opérations de toutes les spécialités.
L’idéal serait d’être capable de générer un emploi du temps pour la semaine entière, afin que les patients
soient prévenus assez tôt du jour exact de leur opération, ainsi que de leur jour d’entrée à l’hôpital.
La création de cet emploi du temps est soumise à de nombreuses contraintes, tant humaines, que logistiques
ou pécuniaires. Ces contraintes sont détaillées dans les parties suivantes, en même temps que les hypothèses de
simplification émises à leur sujet.
1.2
Contraintes classiques de planification
Il existe un certain nombre de contraintes communes à tout problème de planification :
– deux tâches ne peuvent se chevaucher : ici, deux actes chirurgicaux ont au moins lieu soit dans des salles
différentes, soit à un moment différent, soit à un jour différent.
– les personnels ne peuvent effectuer deux tâches à la fois, les tâches étant ici des opérations.
– il existe des horaires d’utilisation des ressources, ici les salles d’opérations et le personnel hospitalier.
– un temps d’exécution est affecté à chaque tâche
Beaucoup de contraintes sont spécifiques au domaine hospitalier et contribuent à complexifier le problème.
page 2 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
1.3
Contraintes liées aux personnels
Le problème posé par la gestion du personnel en salle d’opération est complexe. En effet, plusieurs types de
personnels cohabitent dans une salle d’opération :
– les chirurgiens
– les internes
– les anesthésistes
– les Aide Soignants
– les infirmiers, qui peuvent posséder des diplômes et donc des qualifications différentes ; il y a :
– les IDE (Infirmiers Diplômés d’Etat)
– les IBODE (Infirmiers de Bloc Opératoire Diplômé d’Etat)
– les IADE (Infirmiers Anesthésistes Diplômés d’Etat)
Pour planifier une opération donnée, il faut donc affecter une équipe composée de plusieurs types de personnels, ce qui rend l’affectation complexe. De plus, plusieurs structures d’équipes sont possibles. Par exemple,
un IADE (Infirmier Anesthésiste Diplômés d’Etat) peut très bien remplacer l’anesthésiste dans certains cas, et
l’interne peut faire le travail d’une infirmière. Il en résulte un surplus de paramètres, trop pour que ces derniers
soient tous considérés efficacement dans un programme linéaire.
Les programmes mis en place ne considèrent au maximum que les chirurgiens. Chaque chirurgien ne peut
effectuer que des opérations dans son domaine de compétences. Le reste du personnel opérant ne sera donc pas
pris en compte lors de la planification, il le sera uniquement lors de la simulation QNAP effectuée dans le cadre
du projet de deuxième année.
1.4
Contraintes liées aux opérations
Il existe également un épineux problème au sujet des actes chirurgicaux. En effet, le temps de chaque opération est donné, en entrée du problème, mais ces temps ne sont jamais que des estimations. En effet, chaque
patient est différent, chaque chirurgien est différent, et les temps d’opération d’un même acte sur deux patients
différents peuvent être très inégaux. Il peut arriver qu’une complication survienne, qui fasse durer l’opération
une heure de plus que prévu. Que faire alors si une autre opération a été prévue dans la même salle juste après
la fin théorique de la première ? L’utilisation de lois probabilistes est possible, mais le temps a manqué pour se
pencher sur le problème.
Par ailleurs, un intervalle de temps de 15 minutes est laissé entre la fin d’une opération et le début de la
suivante. Cette durée, paramètrable, correspond au temps de décontamination de la salle après l’opération.
De plus, certaines opérations doivent être terminées avant une certaine heure de la journée, principalement
les opérations effectuées en ambulatoire, c’est-à-dire lorsque le patient sort le jour de son opération. Pour gérer
page 3 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
cela il a été mis en place un système de date au plus tard. Chaque opération, en plus de sa durée, aura une date
au plus tard qui correspondra à l’heure à laquelle l’opération doit obligatoirement être achevée.
Un patient ne peut pas être considéré comme un produit habituel ; en effet, on ne peut par exemple pas arrêter
une opération un soir pour la terminer le lendemain, ce qui rajoute encore une fois une contrainte.
Une opération peut être découpée en plusieurs phases : avant l’acte chirurgical en lui-même, il y a le temps
de préparation du patient ainsi que le temps d’anesthésie. Après l’acte se déroule le temps du pansement, puis
la décontamination de la salle d’opération. Affiner ainsi le déroulement d’une opération permettrait d’affiner la
gestion du personnel. En effet, un chirurgien n’a besoin d’être présent qu’au moment de l’acte chirurgical, pas
avant ni après. De même, une infirmière peut s’en aller après avoir effectuer le pansement, avant la décontamination, mais elle doit être là avant l’acte pour préparer le patient.
Malheureusement, le modèle qui tiendrait compte de ces paramètres serait bien trop gros pour pouvoir être
résolu en un temps raisonnable ; une opération sera donc considérée comme étant un seul et même évènement
auquel doivent prendre part tout le personnel qui y est affecté. Seul sera séparé de l’opération le temps de
décontamination, fixé provisoirement à 15 minutes, comme décrit plus haut.
1.5
Contraintes liées aux coûts
Les coûts engendrés par la construction d’une salle d’opération sont grands. Lors du dimensionnement, il
faut donc essayer de minimiser le nombre de salles, afin que le moins possible soient construites.
L’équipement d’une salle est également très coûteux. En plus de minimiser le nombre de salles, il faut aussi
privilégier les salles spécialisées aux salles partagées ou polyvalentes.
1.6
Contraintes logistiques
Dans un bloc opératoire ne se trouvent pas uniquement des salles d’opérations, il y a également des salles de
réveil, où les patients sont placés juste après leur opération. Ces salles de réveil comportent un certain nombre
de lits, qui doit être suffisant pour ne pas être obligé de bloquer une salle d’opération en attendant le réveil du
patient, ce qui engendrerait des retards dans le planning.
De la même manière, il existe du personnel en dehors des salles d’opération : des brancardiers emmènent
les patients de leur chambre à la salle d’opération. Il faut veiller à ce que les brancardiers n’aient pas trop de
patients à acheminer au même moment, ce qui créerait un goulot d’étranglement, retardant encore une fois le
planning.
Tous ces problèmes hors de la salle d’opération ne seront pas traités dans le programme linéaire, car ils le
complexifieraient beaucoup trop. La gestion en sera laissée à la simulation QNAP du projet parallèle.
page 4 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
1.7
Problème de dimensionnement
Le dimensionnement du bloc opératoire a été inclus de manière détournée dans le programme linéaire, en
rajoutant dans les critères de la fonction objectif la minimisation du nombre de salles utilisées.
L’un des problèmes induits par cette méthode est qu’il a fallu calibrer le poids de ce critère dans la fonction
objectif, pour que le résultat obtenu ne soit pas une seule salle avec un dépassement astronomique de son
horaire. L’autre problème est que cela nous oblige à déclarer un grand nombre de salles dans le programme
linéaire initial, afin que ce dernier ait assez de choix dans les types de salles pour pouvoir optimiser correctement
ce dimensionnement, le problème étant que plus le nombre de salles est important dans le programme, plus le
nombre de contraintes et donc la taille du programme, augmente, ce qu’il aurait été bien d’éviter vu la taille
initiale du problème.
2
2.1
Modélisation des différents éléments
Les opérations
Les opérations sont caractérisées par une spécialité unique, une date au plus tard, et par le jour auquel elles
ont lieu.
2.2
Les salles d’opération
Une salle d’opération a, pour chaque jour, une horaire d’ouverture et une horaire de fermeture. Une salle
d’opération peut accueillir des opérations de spécialités différentes. Toutefois le coût de telles salles est élevé
en raison du matériel qui l’équipe.
2.3
Les chirurgiens
Le codage des chirurgiens est très semblable au codage des salles : un chirurgien a une horaire de début de
service et une horaire de fin de service. Il a également une ou plusieurs spécialités.
page 5 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
2.4
Modélisation UML
La modélisation des objets mis en jeu par le problème de planification peut être résumée par le diagramme
de classes suivant :
F IG . 1 – Diagramme de classes du problème de planification
On affecte à chaque opération une date de début (et donc intrinsèquement une date de fin), une salle compatible avec la spécialité de l’opération, ainsi qu’un chirurgien compatible.
2.5
Les spécialités
Opérations, chirurgiens et salles ont leur propre spécialité. Chaque opération a une spécialité unique. À
l’opposé, chirurgiens et salles peuvent accueillir des opérations de spécialités différentes. Ils sont dits polyvalents.
Une spécialité est représentée par un nombre entier positif. Nous utilisons la représentation binaire. La spécialité 1 est associée au bit de poids le plus faible. Plus généralement, la spécialité unique numéro i est associée
au nombre 2i . Pour une spécialité multiple représentant la spécialité j et la spécialité j, le nombre associé est
2i + 2j . Il en va de même s’il y a encore plus de spécialités. Donc pour tester si la salle m de spécialité éventuellemnt multiple spem est compatible avec l’opération i de spécialité unique spei , il suffit de faire un ET bit à
bit des deux nombres. Si le nombre spei ET spem obtenu est positif, l’opération i peut avoir lieu dans la salle
m.
page 6 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
Deuxième partie
Planification hebdomadaire
1
Le programme linéaire
Un programme est constitué de variables mises en relation par des contraintes exprimées par des relations
algébriques. Notre programme est dit linéaire, car les relations entre les variables sont linéaires.
1.1
Description
Ce programme linéaire effectue, en plus du dimensionnement du bloc opératoire, une planification hebdomadaire des opérations chirurgicales. Il ne prend pas en compte la gestion du personnel et les affectations
des employés aux opérations. Il lui faut en revanche gérer le planning des salles, de manière à ce qu’aucunes
opérations ne se chevauchent un même jour dans une même salle.
1.2
Les variables
Nous allons définir les variables mises en jeu par le programme. Il s’agit essentiellement de variables
entières positives, dont des variables booléennes, à valeur dans {0, 1}. Les notations sont en bonne partie issues
de [1].
– N op le nombre d’opérations
– S le nombre de salles
– xi,m booléen à valeur 1 l’opération i a lieu dans la salle m, 0 sinon
– wm booléen à valeur 1 si la salle m est utilisée
– ti la date de début de l’opération i
– di la durée de l’opération i
– dayi jour de l’opération i
– θi,j booléen à valeur 1 si l’opération i commence avant l’opération j, 0 sinon
– sri,m booléen indiquant si la salle m est compatible avec l’opération i
– N spem le nombre de spécialité de la salle m
– spek la spécialité de l’opération k
– Li retard par rapport à la date prévue pour l’opération i
– ddi la date de fin au plus tard de l’opération i
– Hm la durée effective d’ouverture de la salle m
– Cm la durée d’ouverture de la salle m prévue initialement
– Ym le retard de la salle m
– M constante à valeur élevée 10000
page 7 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
1.3
Les fonctions objectifs
Le programme comprend une fonction objectif, qui représente le critère de qualité à optimiser. Dans notre
cas, il s’agit d’une minimisation. Le programme comprend plusieurs fonctions objectifs possibles, qui prennent
en compte différents critères.
1.3.1
La première fonction objectif
Elle ne prend pas en compte le problème du dimensionnement. Trois critères sont minimisés dans cette fonction objectif :
– la somme des retards à la fermeture des salles d’opérations
– la somme des retards de la fin des opérations par rapport à leur date au plus tard
– la somme des dates de début d’opérations
Voici l’expression de cette fonction objectif :
Minimiser z =
S
X
100Ym +
m=1
N
op
X
100Li +
i=1
N
op
X
ti
i=1
Des coefficients ont été affectés aux critères en fonction de leur importance. Les sommes des retards sont
les critères principaux, et sont donc affectés du plus grand coefficient. La somme des dates de début n’est
qu’un critère d’affinement du résultat qui permet de fixer les opérations le plus proche possible de la fin de la
précédente. En effet, sans ce critère, des opérations peuvent être placées n’importe quand dans une salle tant
qu’elles ne dépassent ni l’horaire de fermeture de la salle ni leur date au plus tard. Par exemple, une opération
durant 100 minutes prévue dans une salle fermant au bout de 500 minutes peut commencer à la date t = 100
ou t = 400 sans que cela affecte la fonction objectif. Comme ce critère a une valeur beaucoup plus grande que
la valeur des autres critères, un coefficient beaucoup plus faible lui est affecté.
1.3.2
Prise en compte du dimensionnement
La deuxième fonction objectif prend en compte le problème de dimensionnement du bloc opératoire. Pour
cela, un critère est ajouté à la fonction objectif précédente : la minimisation du nombre de salles utilisées. Voici
l’expression de cette nouvelle fonction objectif :
Minimiser z =
S
X
m=1
100Ym +
N
op
X
i=1
100Li +
N
op
X
i=1
ti +
S
X
10000wm
m=1
page 8 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
Un coefficient 10000 est affecté à ce dernier critère, car le dimensionnement devient alors le problème principal lorsqu’il est pris en compte dans le modèle. Le rapport de 100 entre les coefficients affectés à wm et Ym
permet de faire en sorte qu’une nouvelle salle soit ouverte lorsqu’il y a au moins 100 minutes de dépassement
des salles actuelles au total.
1.4
Les contraintes
Certaines contraintes ont été inspirées de [2].
ti + di − M (3 − θi,j − xi,m − xj,m ) ≤ tj , ∀i, j ∈ J1, N opK si dayi = dayj , ∀m ∈ J1, SK
(1)
θi,j + θj,i = 1, ∀i, j ∈ J1, N opK si dayi = dayj
(2)
S
X
m=1
xi,m = 1, ∀i ∈ J1, N opK
(3)
ti − M (1 − xi,m ) ≤ Hm , ∀i ∈ J1, N opK, ∀m ∈ J1, SK
(4)
Hm − Cm ≤ Ym , ∀m ∈ J1, SK
(5)
xi,m (1 − sri,m ) = 0, ∀i ∈ J1, N opK, ∀m ∈ J1, SK
(6)
Li ≥ ti + di − ddi , ∀i ∈ J1, N opK
(7)
N op ∗ wm ≥
N
op
X
i=1
xi,m , ∀m ∈ J1, SK
(8)
Nous allons donner ci-après la correspondance entre les expressions algébriques des contraintes et leur sémantique.
La contrainte (1) assure que dans chaque salle, deux opérations ne se chevauchent pas (S∗N op2 contraintes).
La contrainte n’est active seulement dans le cas où les deux opérations sont prévues le même jour.
La contrainte (2) valide les contraintes de précédence : soit l’opération i commence avant l’opération j, soit
c’est l’inverse (N op2 contraintes). La contrainte n’est active seulement dans le cas où les deux opérations sont
prévues le même jour.
La contrainte (3) assure qu’une opération a lieu une seule fois (N op contraintes).
La contrainte (4) permet de trouver l’horaire effectif de fermeture d’une salle m (N op ∗ S contraintes).
La contrainte (5) exprime le retard de d’une salle m par rapport à l’horaire de fermeture (S contraintes).
La contrainte (6) assure que l’opération i aura lieu dans une salle ou les équipements nécessaires sont présents (N op∗S contraintes). Une salle peut être polyvalente ; elle acueille des opérations de plusieurs spécialités
notées srm,k .
La contrainte (7) permet de s’assurer qu’une opération i se terminera avant sa date de fin au plus tard (N op
page 9 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
contraintes).
La contrainte (8) crée la salle m si elle contient au moins une opération (S contraintes). Elle est active
uniquement dans le cas du dimensionnement.
Ce programme linéaire génère donc S ∗ N op ∗ N op + N op ∗ N op + 2N op + 2N op ∗ S + 2S contraintes. Cela
fait, pour 100 opérations et 20 salles, un total de 214240. Mais le nombre de contraintes effectives du fichier .lp
généré est d’environ 40000, à cause des simplifications dues au test dayi = dayj dans les contraintes (1) et (2).
2
Résultats
2.1
Paramètres du programme
On considère donc pour cette planification que le jour de chaque opération a déjà été choisi au préalable.
Dans la pratique, cela peut être réalisé par une heuristique, qui répartirait équitablement sur les 5 jours le
nombre (ou encore mieux la somme des durées) d’opérations de spécialité identique, en prenant éventuellement
en compte que certaines opérations ont des dates au plus tard.
2.1.1
Paramètres généraux
Tous les tests ont été effectués avec les paramètres suivants :
– 20 salles d’opérations (avant dimensionnement)
– 15 minutes d’intervalles entre la fin d’une opération et le début de la suivante
– le temps d’ouverture normale des salles est de 540 minutes (9 heures)
– il y a 4 spécialités différentes
– les dates au plus tard pour chaque opération sont fixées à 1000 minutes.
2.1.2
Types de salles
Le programme a été testé sur 3 types d’ensemble de salles différents :
– uniquement des salles spécialisées
– uniquement des salles polyvalentes
– un mélange de salles spécialisées, partagées et polyvalentes.
2.1.3
Nombre d’opérations
Le programme a été testé sur des ensembles de 59 opérations, 100 opérations, et 198 opérations. Ce dernier
ensemble est le plus réaliste quant au nombre d’opérations hebdomadaires. Il a été tiré de la base de données
page 10 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
de l’hôpital.
2.2
2.2.1
Résultats
Variation de la taille du fichier
Dans toute cette partie, l’ensemble de salles utilisées sera un mélange des types de salles, et la fonction objectif minimisera le nombre de salles utilisées ainsi que la somme des retards de fermeture de ces salles :
Minimiser z =
S
X
m=1
Ym +
S
X
100wm
m=1
Pour un fichier de 59 opérations, l’optimalité n’est pas atteinte au bout de deux heures de résolution, mais la
planification obtenue est acceptable (z = 52500) :
F IG . 2 – Planification hebdomadaire de 59 opérations
page 11 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
La solution obtenue utilise seulement 5 salles d’opérations, et ces salles sont toutes au minimum partagées,
voire polyvalentes.
Pour un fichier de 100 opérations, le résultat est bon (z = 102200), comme le montre le diagramme de Gantt
associé :
F IG . 3 – Planification hebdomadaire de 100 opérations
On voit que 9 salles ont été nécessaires pour cette planification, et, comme aucune horaire de fermeture ne
dépasse trop de l’horaire prévu, on peut considérer que dimensionnement et planification sont acceptables.
Pour un fichier de 198 opérations, qui correspond plus à la réalité du terrain, l’optimalité n’est bien sûr pas
atteinte, et la solution obtenue est assez moyenne (pour le seul test effectué, z = 249700). Voici le diagramme
de Gantt associé :
page 12 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
F IG . 4 – Planification hebdomadaire de 198 opérations
Seulement 10 salles sont utilisées, mais le dépassement d’horaire dans certaines d’entre elles est beaucoup
trop grand pour que la solution soit considérée comme acceptable.
2.2.2
Variation des types de salles
Dans cette partie, les tests sont effectués sur le fichier de 198 opérations, avec la fonction objectif minimisant
le nombre de salle, la somme des dépassements d’horaires des salles et des dates au plus tard, et la somme des
dates de début d’opérations :
Minimiser z =
S
X
m=1
100Ym +
S
X
m=1
10000wm +
N
op
X
i=1
100Li +
N
op
X
ti
i=1
Lorsqu’on considère que l’hôpital n’est constitué que de salles spécialisées, le résultat obtenu est très bon
(z = 98221), comme le montre le diagramme de Gantt retranscrivant les résultats :
page 13 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
F IG . 5 – Planification hebdomadaire dans des salles spécialisées
Seulement 9 salles sont nécessaires à la planification des opérations.
Lorsqu’on considère un mélange de types de salles, le résultat obtenu est moyen (z = 152033).
page 14 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
F IG . 6 – Planification hebdomadaire dans un mélange de salles
Comme le montre le diagramme de Gantt associé, 7 salles sont nécessaires à la planification des opérations
mais certaines dépassent largement leur horaire prévue, ce qui fait penser qu’il serait utile de rajouter une ou
deux salles.
Lorsqu’on considère uniquement des salles polyvalentes, le résultat obtenu est là encore moyen (z = 125521).
page 15 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
F IG . 7 – Planification hebdomadaire dans des salles polyvalentes
Comme pour le jeu de salles précédent, 7 salles ont été utilisées pour planifier les opérations mais l’une
d’entre elles dépasse largement l’horaire prévue, ce qui fait penser qu’il serait utile de rajouter une salle.
2.3
Analyse des résultats
Tous les résultats obtenus ici sont à prendre avec précaution, car tous ces tests n’ont été effectués qu’une
seule fois. Les résultats pourraient donc être faussés. On peut néanmoins en déduire que le modèle permet une
planification hebdomadaire efficace dans la plupart des cas, même si une solution vraiment bonne soit parfois
difficile à atteindre.
page 16 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
Troisième partie
Planification avec gestion des chirurgiens
Par rapport au programme précédent, deux choses ont principalement été rajoutées. Tout d’abord a été rajoutée la gestion des chirurgiens. Le principe est le suivant : on affecte à chaque opération un chirurgien disponible
et compatible, sans tenir compte du fait qu’il n’a pas réellement besoin d’être présent durant toute l’opération,
mais seulement durant l’acte chirurgical. Pour compenser cette complexification du problème, la planification
s’effectuera maintenant sur une seule journée.
1
1.1
Le programme linéaire
Définition des variables
Nous allons définir les variables mises en jeu par le programme. Il s’agit essentiellement de variables
entières positives, dont des variables booléennes, à valeur dans {0, 1}.
– N op le nombre d’opérations
– N surg le nombre de chirurgiens
– S le nombre de salles
– xi,m booléen à valeur 1 l’opération i a lieu dans la salle m, 0 sinon
– wm booléen à valeur 1 si la salle m est utilisée
– ti la date de début de l’opération i
– di la durée de l’opération i
– θi,j booléen à valeur 1 si l’opération i commence avant l’opération j, 0 sinon
– srm,i booléen indiquant si la salle m est compatible avec l’opération i
– N spem le nombre de spécialités de la salle m
– sgi,p booléen indiquant si le chirurgien p est compatible avec l’opération i
– spek la spécialité de l’opération i
– Li retard par rapport à la date prévue pour l’opération i
– ddi la date de fin au plus tard de l’opération i
– Hm la durée effective d’ouverture de la salle m
– Cm la durée d’ouverture de la salle m prévue initialement
– Ym le retard de la salle m
– M constante à valeur élevée 10000
– νi,p booléen à valeur 1 si l’opération i est pratiquée par le chirugien p, 0 sinon
– [Ap ; Bp ] la période de travail du chirurgien p
– Kp le dépassement par valeur supérieure d’horaire de fin du chirurgien p
page 17 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
–
–
–
–
1.2
Jp le dépassement par valeur inférieure de l’horaire de début du chirurgien p
αp date de début de la première opération du chirurgien p
βp date de fin de la dernière opération du chirurgien p
N spep le nombre de spécialités du chirurgien p
Les fonctions objectifs
Le programme comprend une fonction objectif, qui représente le critère de qualité à optimiser. Dans notre cas,
il s’agit d’une minimisation. Un choix était cependant nécessaire pour établir la fonction objectif, car beaucoup
de valeurs pouvaient être minimisées : la somme des retards de fermeture des salles, la somme des retards
des opérations par rapport à leur date au plus tard, la somme des heures supplémentaires des chirurgiens, sans
oublier la minimisation du nombre de salles d’opérations inhérente au dimensionnement du bloc opératoire.
Ce problème de choix nous a conduit à tester plusieurs fonctions objectifs successives, pour en comparer les
résultats et le temps d’exécution.
1.2.1
Fonction objectif liée aux salles
La première fonction objectif ne minimise que le nombre de salles (et donc réalise le dimensionnement),
ainsi que la somme des retards de fermeture des salles. Il a fallu pondérer ces deux paramètres. En effet, il est
plus important de minimiser le nombre de salles que leur retard. Il serait stupide de créer une salle supplémentaire parce qu’une des salles ferme 10 minutes plus tard. Un coefficient 100 a été placé devant le nombre de
salles. Ainsi, une salle est créee lorsqu’une des autres salles ferme 100 minutes plus tard que la normale. Voici
cette fonction objectif :
Minimiser z =
S
X
m=1
1.2.2
Ym +
S
X
100wm
m=1
Deuxième fonction objectif
La deuxième fonction objectif minimise non seulement le nombre de salles et leur retard de fermeture, mais
aussi le retard des opérations par rapport à leur date au plus tard, ainsi que la somme des dates de débuts.
Cette dernière partie de la fonction objectif a été rajoutée pour qu’il y ait moins de solutions équivalentes. En
effet, sans cela les opérations peuvent être placées n’importe quand dans une salle tant qu’elles ne dépassent ni
l’horaire de fermeture de la salle ni leur date au plus tard. Le rajout de la minimisation de la somme des dates
de début d’opération permet à la fois d’obtenir moins de solutions équivalentes qui ralentissent Cplex, et de
faire commencer les opérations le plus tôt possible. Cela permet d’obtenir un emploi du temps plus compact, et
d’éventuellement fermer certaines salles plus tôt que prévu.
page 18 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
Encore une fois, des coefficients ont été nécessaires pour pondérer la fonction objectif. La somme des retards des opérations par rapport à leur date au plus tard est de même ordre que le retard de fermeture des salles.
Elle a le même poids dans la fonction objectif. La somme de date de début étant très grande et n’ayant que
peu d’importance, par rapport au nombre de salles par exemple puisqu’il s’agit d’un affinement, nous avons
multiplié par 100 tous les autres critères à minimiser. On obtient la fonction objectif suivante :
Minimiser z =
S
X
100Ym +
m=1
1.2.3
S
X
10000wm +
N
op
X
m=1
100Li +
i=1
N
op
X
ti
i=1
Fonction objectif complète
La troisième fonction objectif minimise également les heures supplémentaires des chirurgiens, en minimisant à la fois la somme des dépassements d’horaire en fin de journée et la somme des dépassements d’horaire
avant leur prise théorique de service.
Ces deux critères étant clairement équivalents aux sommes des dépassements pour les salles et les opérations,
le même coefficient leur sera affecté dans la fonction objectif.
La fonction objectif obtenue est la suivante :
Minimiser z =
S
X
m=1
1.3
100Ym +
S
X
10000wm +
m=1
N
op
X
i=1
100Li +
N
op
X
ti +
NX
surg
i=1
100Kp +
NX
surg
p=1
100Jp
p=1
Les contraintes
ti + di − M (3 − θi,j − xi,m − xj,m ) ≤ tj , ∀i, j ∈ J1, N opK, ∀m ∈ J1, SK
(1)
θi,j + θj,i = 1, ∀i, j ∈ J1, N opK
(2)
S
X
m=1
xi,m = 1, ∀i ∈ J1, N opK
(3)
ti − M (1 − xi,m ) ≤ Hm , ∀i ∈ J1, N opK, ∀m ∈ J1, SK
(4)
Hm − Cm ≤ Ym , ∀m ∈ J1, SK
(5)
xi,m sri,m = 0, ∀i ∈ J1, N opK, ∀m ∈ J1, SK
(6)
Li ≥ ti + di − ddi , ∀i ∈ J1, N opK
(7)
page 19 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
NX
surg
p=1
νi,p = 1, ∀i ∈ J1, N opK
(8)
ti ≥ νi,p αp , ∀i ∈ J1, N opK, ∀p ∈ J1, N surgK
(9)
Ap − αp ≤ Jp , ∀p ∈ J1, N surgK
(10)
ti + di − M (1 − νi,p ) ≤ βp , ∀i ∈ J1, N opK, ∀p ∈ J1, N surgK
(11)
βp − Bp ≤ Kp , ∀p ∈ J1, N surgK
(12)
ti + di − M (3 − νi,p − νj,p − θi,j ) ≤ tj , ∀i, j ∈ J1, N opK, ∀p ∈ J1, N surgK
(13)
νi,p (1 − sgi,p ) = 0, ∀i ∈ J1, N opK, ∀p ∈ J1, N surgK
(14)
Nous allons donner ci-après la correspondance entre les expressions algébriques des contraintes et leur sémantique.
La contrainte (1) assure que dans chaque salle, deux opérations ne se chevauchent pas ((N op2 )S contraintes).
La contrainte n’est active seulement dans le cas où les deux opérations sont prévues le même jour.
La contrainte (2) valide les contraintes de précédence : soit l’opération i commence avant l’opération j, soit
c’est l’inverse (N op2 /2 contraintes). La contrainte n’est active seulement dans le cas où les deux opérations
sont prévues le même jour.
La contrainte (3) assure qu’une opération a lieu une seule fois (N op contraintes).
La contrainte (4) permet de trouver l’horaire effectif de fermeture d’une salle m (N op ∗ S contraintes).
La contrainte (5) exprime le retard de d’une salle m par rapport à l’horaire de fermeture (S contraintes).
La contrainte (6) assure que l’opération i aura lieu dans une salle où les équipements nécessaires sont présents (N op ∗ S contraintes). Une salle peut être polyvalente ; c’est à dire qu’elle peut acueillir des opérations
de plusieurs spécialités notées srm,k .
La contrainte (7) permet de s’assurer qu’une opération i se terminera avant sa date de fin au plus tard (N op
contraintes).
La contrainte (8) assure qu’une opération est traitée par un et un seul chirurgien (N op contraintes).
La contrainte (9) fixe une limite de temps de travail inférieure pour les chirurgiens (N op∗N surg contraintes).
La contrainte (10) définit le dépassement par valeur inférieure du temps de travail des chirurgiens (N surg
contraintes).
La contrainte (11) fixe une limite de temps de travail supérieure pour les chirurgiens (N op ∗ N surg
contraintes).
La contrainte (12) définit le dépassement par valeur supérieure du temps de travail des chirurgiens (N surg
contraintes).
La contrainte (13) assure qu’un chirurgien n’effectue qu’une opération à la fois ((N op2 )∗N surg contraintes).
page 20 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
La contrainte (14) assure qu’une opération est réalisée par un chirurgien compatible (N op∗N surg contraintes).
Ce programme linéaire génère donc (N op2 ) ∗ S + (N op2 ) ∗ N surg + N op ∗ N op/22 ∗ N op ∗ S + 3 ∗
N op ∗ N surg + 3N op + 2N surg + S contraintes. Cela fait, pour 40 opérations, 15 salles et 15 chirurgiens, un
nombre de 51965 contraintes, dont 24000 uniquement pour les contraintes (1) et (13). Rajouter la gestion des
différents jours de la semaine rendrait insolvable un programme linéaire déjà très long à résoudre.
2
Résultats
2.1
Paramètres du programme
Tous les tests ont été effectués avec les paramètres suivants :
– 20 salles d’opérations (avant dimensionnement)
– 15 minutes d’intervalle entre la fin d’une opération et le début de la suivante
– le temps d’ouverture normal des salles est de 540 minutes (9 heures)
– il y a 4 spécialités différentes
– les dates au plus tard pour chaque opération sont fixées à 1000 minutes
– 17 chirurgiens de disponibilités et spécialités différentes.
2.2
Méthodologie des tests
2.2.1
Tests sur des problèmes de différentes tailles
Ce programme linéaire a été testé sur 3 fichiers d’entrée différents :
– un fichier de 12 opérations
– un fichier de 20 opérations
– un fichier de 39 opérations.
Les tests se concentrent majoritairement sur le fichier à 39 opérations, qui correspond le plus au nombre
d’opérations à planifier dans une journée.
2.2.2
Tests sur différents types de salles
Le programme linéaire a également été testé sur trois ensembles de salles différents :
– uniquement des salles spécialisées
– uniquement des salles entièrement polyvalentes
– un mélange de salles spécialisées, polyvalentes et partagées.
page 21 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
Le nombre de ces salles varie en fonction de la taille du fichier d’entrée : 10 pour le fichier de 12 opérations,
15 pour celui de 20 opérations, et 20 pour celui de 39 opérations.
2.2.3
Différents temps d’exécution
Lorsque le programme linéaire est trop gros pour être résolu de manière exacte (c’est-à-dire pour les problèmes à 20 et 39 opérations), des résultats au bout de 600, 1800 et 7200 secondes ont été calculés, afin de voir
à quelle vitesse Cplex trouvait une bonne solution.
Enfin, tous ces tests ont été effectués avec les trois fonctions objectifs différentes.
2.3
Variation de la taille du fichier d’entrée
La comparaison des tests s’effectueront ici uniquement avec un mélange de salles spécialisées, partagées et
polyvalentes et pour la fonction objectif la plus simple :
Minimiser
S
X
m=1
2.3.1
Ym +
S
X
100wm
m=1
12 opérations
Un problème à 12 opérations ne pose aucun souci de taille à Cplex. La résolution s’effectue en 160 secondes
environ, pour le résultat suivant :
page 22 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
F IG . 8 – Planification sur 12 opérations, en 600 secondes
On constate que seules 4 salles sont nécessaires pour effectuer ces opérations. Mais ce jeu de données est
bien trop petit et ne correspond pas à la quantité réelle d’opérations traitée par l’hôpital.
2.3.2
20 opérations
Avec 20 opérations, le problème est déjà trop gros pour que Cplex puisse nous garantir l’optimalité. Une très
bonne solution est cependant obtenue en peu de temps (70 secondes). Voici le diagramme de Gantt associé à
cette solution :
page 23 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
F IG . 9 – Planification de 20 opérations, en 600 secondes
7 salles sont ici nécessaires, mais là encore le jeu de données est plus petit que la réalité.
2.3.3
39 opérations
Avec 39 opérations, le problème est encore plus grand ; au bout de 600 secondes de résolution, le diagramme
de Gantt associé à la solution montre que cette dernière est loin d’être optimale :
page 24 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
F IG . 10 – Planification de 39 opérations en 600 secondes
Le diagramme montre que 10 salles ont été utilisées, dont deux salles polyvalentes (19 et 20) et deux salles
partagées (13 et 15).
Même au bout de 1800 secondes, la solution peut nettement être améliorée :
page 25 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
F IG . 11 – Planification de 39 opérations en 1800 secondes
Le nombre de salles a augmenté puisque 11 sont maintenant utilisées, mais les salles partagées ne sont plus
nécessaires avec cette solution.
C’est seulement après 7200 secondes (2 heures) que la solution obtenue est bonne :
page 26 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
F IG . 12 – Planification de 39 opérations en 7200 secondes
2.4
Variation de la fonction objectif
Tous les tests de cette partie seront des tests sur 39 opérations, et avec un mélange de salles.
2.4.1
Fonction objectif la plus simple
C’est la fonction qui minimise le nombre de salles utilisées et la somme des retards à la fermeture de ces
salles. Cette fonction, relativement simple, donne déjà des résultats corrects au bout de 600 secondes (z =
131000), et dès 1800 secondes de résolution, la solution est très bonne (z = 123000), et n’est que très peu
améliorée après 7200 secondes (z = 122500). Les diagrammes de Gantt associés à ces tests sont à voir cidessus.
page 27 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
2.4.2
Deuxième fonction objectif
On rajoute à la fonction objectif précédente les critères de la somme des dates de début et la somme des
retards aux dates au plus tard. Cette fonction objectif est un peu moins souple, et la résolution est donc plus
longue. La solution obtenue au bout de 600 secondes est déjà bonne (z = 117343) :
F IG . 13 – Planification de 39 opérations en 600 secondes
Le diagramme de Gantt montre que 11 salles sont utilisées, mais surtout que parmi elles, 4 sont polyvalentes.
La solution au bout de 7200 secondes est à peine améliorée (z = 115639) :
page 28 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
F IG . 14 – Planification de 39 opérations en 7200 secondes
Même si la valeur de la fonction objectif est similaire, certaines différences sont à remarquer. Une salle de
moins est utilisée dans ce résultat, et seulement 3 salles polyvalentes sont utilisées.
2.4.3
Prise en compte des chirurgiens
On rajoute à la fonction objectif précédente la minimisation des dépassements d’horaires des chirurgiens. Au
bout de 600 secondes de résolution, la solution obtenue est franchement mauvaise (z = 252456) :
page 29 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
F IG . 15 – Planification de 39 opérations en 600 secondes, avec prise en compte des chirurgiens
On voit clairement que la planification de la salle (7) montrée sur le diagramme est inacceptable. Il faut donc
faire durer la résolution plus longtemps.
La solution obtenue après 1800 secondes est là encore visiblement très loin de l’optimal (z = 247817) :
page 30 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
F IG . 16 – Planification de 39 opérations en 1800 secondes, avec prise en compte des chirurgiens
Cette fois, c’est la salle (18) qui prouve que l’optimalité est loin d’être atteinte.
En revanche, au bout de 7200 secondes, la planification obtenue est nettement meilleure (z = 133648) :
page 31 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
F IG . 17 – Planification de 39 opérations en 7200 secondes, avec prise en compte des chirurgiens
Ce résultat est exploitable. 12 salles d’opérations sont utilisées, dont 3 salles polyvalentes (17, 19 et 20) et
2 partagées (13 et 16). On s’aperçoit cependant que certaines salles contiennent peu d’opérations, on peut en
déduire que la solution obtenue est améliorable, peut-être en réduisant le nombre de salles nécessaires.
On peut facilement voir que plus la fonction objectif contient de critères, plus l’optimisation est difficile.
L’ajout des critères liés aux horaires des chirurgiens dégrade particulièrement la vitesse de convergence du
programme, qui n’obtient même pas une solution satisfaisante au bout d’une demi-heure.
2.5
Variation des types de salles
On considérera des tests sur le fichier de 39 opérations, avec la fonction objectif la plus complexe, celle qui
minimise aussi les dépassements des chirurgiens :
page 32 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
Minimiser
S
X
m=1
2.5.1
100Ym +
S
X
m=1
10000wm +
N
op
X
i=1
100Li +
N
op
X
i=1
ti +
NX
surg
p=1
100Km +
NX
surg
100Jp
p=1
Résolution de 600 secondes
Au bout de 600 secondes, la convergence la plus rapide s’effectue lorsque l’ensemble de salles initiales
est fait uniquement de salles spécialisées. En effet la fonction objectif a pour valeur z = 196661. Voici le
diagramme de Gantt associé à cette solution :
F IG . 18 – Planification de 39 opérations en 600 secondes, salles spécialisées
On voit tout de même que, sur les 12 salles utilisées, certaines sont partiellement inoccupées, ce qui laisse
penser qu’il est possible de réduire le nombre de salles.
Le résultat obtenu est un peu moins bon lorsqu’on considère un mélange de salles (z = 252456) :
page 33 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
F IG . 19 – Planification de 39 opérations en 600 secondes, mélange de salles
Il est par contre très mauvais lorsqu’on n’utilise que des salles polyvalentes (z = 665628). Le diagramme de
Gantt associé montre clairement que la convergence est difficile pour ce dernier type de salle :
page 34 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
F IG . 20 – Planification de 39 opérations en 600 secondes, salles polyvalentes
2.5.2
Résolution de 1800 secondes
La tendance est la même après 1800 secondes de résolution ; les valeurs des fonctions objectifs n’ont pas
beaucoup évoluées que ce soit pour les salles spécialisées (z1800 = 188632 contre z600 = 196661), les salles
mélangées (z1800 = 247548 contre z600 = 252456) où les salles polyvalentes (z1800 = 615677 contre z600 =
665628).
2.5.3
Résolution de 7200 secondes
La tendance change un petit peu après 7200 secondes de résolution. La valeur de la fonction objectif avec les
salles spécialisées est maintenant supérieure aux deux autres (z = 156482 contre z = 133648 et z = 136857).
Le diagramme de Gantt associé aux salles spécialisées montre une solution correcte :
page 35 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
F IG . 21 – Planification de 39 opérations en 7200 secondes, salles spécialisées
12 salles sont utilisées, mais certaines d’entre elles (5 et 7) sont presque vides, tandis qu’une autre (15) dépasse de beaucoup sa date de fermeture théorique. La solution est donc nettement améliorable.
page 36 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
Les deux autres ensembles de salles donnent d’ailleurs une bien meilleure planification :
F IG . 22 – Planification de 39 opérations en 7200 secondes, mélange de salles
page 37 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
F IG . 23 – Planification de 39 opérations en 7200 secondes, salles polyvalentes
À chaque fois, 12 salles sont utilisées, mais aucune ne dépasse de beaucoup son horaire théorique de
fermeture. Cependant, certaines salles sont toujours faiblement occupées, ce qui laisse penser que diminuer
le nombre de salles est possible, particulièrement pour l’ensemble de salles polyvalentes, où la compatibilité
entre opération et salle n’est pas un problème.
2.5.4
Analyse des résultats
Ce modèle présente certains avantages, dans la mesure où il donne de bons résultats au bout d’une demi-heure
dans la plupart des cas. Il permet également de gérer l’affectation des chirurgiens, ce qui rallonge toutefois un
peu le délai d’obtention d’une planification correcte.
La convergence est nettement plus lente lorsqu’on ne considère que des salles polyvalentes, ce qui s’explique par le fait que le nombre de degrés de liberté dans ce cas est augmenté, puisque chaque opération peut
se dérouler dans n’importe quelle salle.
Si on s’intéresse au dimensionnement, on peut voir que l’ensemble des salles utilisées au départ influe sur
le nombre de salles utilisées. En effet, avec uniquement des salles spécialisées, le nombre de salles utilisées, en
page 38 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
moyenne sur les 3 fonctions objectifs différentes, est de 11,3. Elle descend à 11 lorsqu’on considère un mélange
de salles, et atteint 10,3 avec uniquement des salles polyvalentes.
On constate également que le programme a tendance, lorsqu’il en a la possibilité, à affecter des opérations
dans les salles polyvalentes ou partagées, ce qui révèle leur utilité pour diminuer le nombre de salles nécessaires. Cependant, on pourrait affiner le programme en utilisant les coûts de construction de chaque type de
salle pour pondérer les variables associées aux salles dans le dimensionnement. Cela permettrait de vérifier que
la construction d’une salle polyvalente réduirait effectivement les coûts par rapport à deux salles spécialisées.
Les résultats sont résumés dans le tableau suivant :
fonctions objectifs
salles
spécialisées
mélangées
polyvalentes
simple
z
nombre de salles
113500
11
115900
11
114000
10
intermédiaire
z
nombre de salles
120431
11
115639
10
137441
9
avec chirurgiens
z
nombre de salles
156482
12
133648
12
136857
12
F IG . 24 – Tableau de résultats
page 39 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
Quatrième partie
Résolution avec Cplex
Pour résoudre nos programmes linéaires, nous avons à notre disposition le logiciel Cplex en version 11.0.
Ce dernier s’exécute sur le serveur ’etud’ avec le système d’exploitation GNU/Linux CentOs 5.2. La machine
est équipée de 4 processeurs AMD Opteron à 4 x 2.0 Ghz.
1
Structure du programme
Nous utilisons le solveur Cplex au moyen de sa librairie en language C. Elle nous permet de résoudre de
façon automatisée des programmes linéaires, au lieu de lancer la résolution depuis l’interface textuelle. L’utilisation du language C a aussi l’avantage de permettre facilement les manipulations de fichiers. De plus le C est
idéal pour développer rapidement une petite application comme celle-ci.
Nous allons énumérer ci-après les fichiers sources constituant le programme en lui-même, et les scripts permettant son utilisation.
D’abord les fichiers sources constituant le programme C :
– data.h / data.c : les données d’entrée
– solver.h / solver.c : le solveur
– result.h / result.c : résultats du solveur
– stat.h / stat.c : les statistiques sur la résolution
– main.c : le programme principal
Enfin les scripts shell pour lancer le programme :
– Makefile : génère le programme exécutable
– run.sh : lance le programme solveur
– nohup_run.sh : lance run.sh en arrière-plan
1.1
Fichiers sources
1.1.1
data.c / data.h
Cet élément regroupe les données d’entrée fournis au programme de résolution.
page 40 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/* data storage structure */
typedef struct data {
/* general parameters */
int n_op;/*number of operations*/
int n_day;/*number of days*/
int n_room;/*number of rooms*/
int n_spe_op;/*number of speciaties*/
int n_surg;
int od;/*opening duration of rooms*/
int in_time;/*minimum time between two operations*/
/* for each operation */
int* day;/*day*/
int* duration;/*duration*/
int* duedate;/*due date*/
int* spe_op;/*speciality*/
/* for each room */
int* spe_room;/*speciality of each room*/
/* for each surgeon */
int* spe_surg;/*specialty of surgeon*/
int* begin_surg;/*begining time of work*/
int* end_surg;/*ending time of work*/
char* f;/*file from which the data has been created*/
} data_t;
F IG . 25 – Codage des données d’entrée.
Le programme linéaire est établi à partir des données d’entrée. Nous avons la possibilité de paramétrer le
niveau de contraintes du modèle grâce au type level_t.
1 /* model constraint level */
2 typedef enum {
3
NullLevel = 0,/*no specific constraints*/
4
SurgeonLevel = 1,/*surgeon-specific constraints*/
5
DimensionLevel = 2,/*dimension constraints*/
6
AllLevel = 255/*all constraints*/
7 } level_t;
F IG . 26 – Codage des niveaux de contraintes du modèle.
page 41 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
1.1.2
solver.c / solver.h
Cette partie constitue le solveur. C’est ici qu’est réalisé l’interfaçage avec le logiciel Cplex via la librairie
Cplex. Le solveur est caractérisé par ses paramètres. Les paramètres sont regroupés au sein de la structure
solver_param_t :
1 /* parameters of the solver */
2 typedef struct solver_param {
3
4
double max_run_time;/*maximum run time in seconds*/
5
int verbose;/*whether to display output or not*/
6
7 } solver_param_t;
F IG . 27 – Structure des paramètres du solveur.
Cette structure stocke le temps d’exécution maximal que l’on souhaite allouer au programme, ainsi qu’un
paramètre booléen décidant de l’affichage ou non de certaines sorties du solveur. Ce dernier paramètre est utile
pour supprimer l’affichage des valeurs des variables, qui devient lent avec le nombre croissant de variables.
1.1.3
result.c / result.h
Cette structure stocke les résultats fournis par le solveur. Cela concerne entre autres les dates de début
des opérations, la salle attribuée à l’opération, le chirurgien affecté. C’est ici que sont regroupées les routines
concernant les diagrammmes de Gantt et diagrammes de charge. Le programme écrit des scripts destinés à
Gnuplot [3] qui les interprète et les convertit en images. Gnuplot est appelé par le script run.sh.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/* result storage structure */
typedef struct result {
int n_op;/*number of operations scheduled*/
int n_surg;/*number of surgeons*/
/*for each operation*/
int* start;/*start times*/
int* end;/*end time*/
int* room;/*room of operation*/
int* surg;/*surgeon of operation*/
int* duedate_late;/*lateness from duedate*/
/*for each surgeon*/
int* surg_early;/*amount of time before normal hours*/
int* surg_late;/*amount of time after normal hours*/
} result_t;
F IG . 28 – Structure des résultas.
page 42 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
1.1.4
stat.c / stat.h
Cette structure concerne certaines statistiques obtenues lors de la résolution, telle que la valeur de la fonction
objectif, le temps d’exécution, le nombre de noeuds visités par Cplex.
1 /* solver statistic storage structure */
2 typedef struct stat {
3
int z;/*objective value*/
4
double zc;/*continuous objective value*/
5
int node;/*node count*/
6
double time;/*computation time in seconds
*/
7
8
char* name;/*the name of the original
instance file*/
9
10 } stat_t;
F IG . 29 – Structure de statistiques du solveur.
1.2
Scripts
Des scripts shell facilitent le lancement de notre programme.
1.2.1
Makefile
Ce script réalise la génération du programme exécutable. Il est destiné au moteur de production make [4]. Le
programme C est compilé avec GCC [5], le compilateur C libre. Le script fournit au compilateur l’emplacement
de la librairie Cplex. Cet emplacement varie selon le type de système d’exploitation et la version de Cplex ; il
est probable de devoir le modifier légèrement pour faire fonctionner le logiciel sur une autre machine. Les
conditions pour pouvoir compiler le programme sont donc d’avoir les logiciels installés : make, gcc, et la
libraire Cplex 11.0.
1.2.2
run.sh
Ce script permet de choisir un cahier de bloc, de lancer le solveur sur ces données et de optionellement de
visualiser les diagrammes de Gantt et de charge produit. Les cahiers de bloc sont au format suivant :
– le nombre d’opérations n_op sur la première ligne
– le nombre de spécialités sur la deuxième ligne
– n_op lignes contenant : la durée de l’opération en minutes, le numéro du jour, le numéro de la spécialité
page 43 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
5
1
345
100
280
75
55
1
1
1
1
1
1
1
1
2
3
F IG . 30 – Exemple de fichier de bloc
Le nom du fichier de bloc à utiliser doit être entré dans le script en premier argument de notre programme
en C. Le programme est appelé solve, et ici le cahier de bloc est le fichier bloc10T_R_SEM07.txt :
# run solver
./solve bloc10T_R_SEM07.txt $RANK && \
1.2.3
nohup_run.sh
Le script lance la résolution en tâche de fond, c’est-à-dire que l’utilisateur a la possibilité de se déconnecter
sans interrompre l’exécution du programme. Il permet surtout de séparer les données lors du lancement de
résolutions concurrentes. L’utilisateur doit spécifier un numéro qui distingue chaque jeu de données d’entrée et
de sortie.
2
Problèmes rencontrés
Nous détaillerons ici certains problèmes techniques rencontrés.
2.1
Limites de Cplex
Effectuer un test avec une bonne qualité de la solution nécessite de lancer le programme pendant 2 heures.
C’est long. L’exécution de plusieurs tests simultanés représente un gain de temps non-négligable. Par défault,
le solveur Cplex essaie de tirer partie d’une architecture multiprocesseur comme celle de la machine que nous
utilisons. Malheureusement la license de Cplex de l’isima ne permet pas l’exécution parallèle, et le solveur
lance un seul thread d’exécution. Par contre, on peut tout à fait lancer deux instances de notre programme. Mais
il faut séparer les données d’entrée et de sortie pour chaque programme lancé. C’est là qu’intervient le script
shell nohup_run.sh présenté un peu plus haut.
page 44 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
2.2
Problème de rappatriement des données depuis Cplex
Cplex stocke les variables en nombres réels. Certaines des variables booléennes étaient fixées par Cplex à
des valeurs non entières, commme 10−13 par exemple. La valeur convertie en nombre entier ne correspondait
pas. Ceci avait un impact sur les variables xi,j . En conséquence, certaines opérations se chevauchaient et cela se
voyait sur les diagrammes de Gantt. Nous avons dû écrire une fonction d’arrondi. Les valeurs réelles supposées
booléennes sont désormais seuillées à la valeur 0.5.
page 45 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
Conclusion
Les contraintes inhérentes au milieu hospitalier ont rendu ce problème de planification beaucoup plus compliqué que la plupart des problèmes similaires. Ces contraintes supplémentaires sont dues à des facteurs aussi
divers et variés que la gestion du personnel, les problèmes de logistique, ou le caractère aléatoire de la durée
d’une opération, auxquels s’est ajouté le dimensionnement du bloc opératoire à effectuer. Durant ce projet, deux
modèles ont été crées, qui répondaient chacun à une facette du problème. Outre le fait qu’ils effectuent tous
deux le dimensionnement, le premier modèle effectue une planification hebdomadaire des opérations, tandis
que le second n’effectue qu’une planification journalière, tout en affectant les chirurgiens aux opérations. Les
programmes linéaires associés à ces modèles sont modulables, puisqu’ils peuvent prendre en compte plusieurs
fonctions objectifs possibles. Ils sont résolus à l’aide du solveur Cplex. Plus de tests auraient été utiles pour en
avoir la certitude, mais ces deux modèles semblent donner de bons résultats quels que soient les paramètres,
malgré le fait que ces programmes sont trop gros pour être résolus de manière exacte avec des jeux de données
réalistes. Le meilleur moyen de vérifier la réalisabilité de ces modèles est de les faire valider par le modèle de
simulation QNAP développé dans le cadre d’un projet de deuxième année.
page 46 sur 46
Un outil d’aide au dimensionnement et à la planification des blocs opératoires du N.H.E.
Références bibliographiques
[1] Operating rooms scheduling
A. Jebali, A. B. H. Alouane, P. Ladet
Int. J. Production Economics 99 (2006) 52-62.
[2] Blocs opératoires publics : application de la stratégie block scheduling
S. Kharraja, F. Albert, S. Chaabane
MOSIM ’06 du 3 au 5 avril 2006.
[3] Gnuplot, un logiciel de tracé de courbes
http ://www.gnuplot.info, 1986.
[4] Make, le moteur de production
http ://www.gnu.org/software/make, 1977.
[5] GCC, le compilateur C
http ://gcc.gnu.org, 1985.

Documents pareils