Bonjour à tous,
J'aimerais mettre au point une méthode me permettant d'optimiser l'occupation d'une chambre pendant une période donnée ( par exemple sur un mois) avec comme but de laisser les chambres inoccupées libres un maximum de temps consécutif.
Ceci permettrait de les occuper pour un long séjour le cas échéant.
Par exemple, dans mon hôtel de 13 chambres, où l'on considère que toutes les chambres sont absolument identiques, si j'ai les réservations suivantes :
- du 1 au 7
- du 1 au 16
- du 2 au 18
- du 8 au 14
- du 15 au 23
- du 15 au 27
- du 19 au 27
- du 21 au 29
- du 24 au 28
- du 28 au 31
- du 28 au 30
- du 29 au 31
- du 30 au 31
Je peux placer ces réservations sur les 13 chambres différentes. Mais si on veut me réserver un séjour d'un mois, ce ne sera plus possible.
Par contre, je peux placer dans la 1ere chambre les séjours du 1 au 7, du 8 au 14, du 15 au 27 et du 28 au 31
Dans une seconde chambre, je peux placer les séjours du 1 au 16, du 19 au 27 et du 28 au 30
Dans la 3eme chambre, je mettrai le séjour du 2 au 18 , du 21 au 29 et du 30 au 31
Dans la 4eme je mettrai enfin les séjours du 15 au 23, du 24 au 28 et du 29 au 31
La chambre 1 sera occupée les 31 jours du mois
La chambre 2 n'aura que 3 nuitées sans occupation
La chambre 3 aura également 3 nuitées inoccupées
La chambre 4 aura 14 nuitées consécutives libres
et les chambres de 5 à 13 seront entièrement libres.
Cette optimisation me permet potentiellement d'accepter 8 séjours d'un mois, ce qui n'était pas possible dans la première version des réservations.
Comment puis-je automatiser cette optimisation ?
Pour ne pas ré-inventer la roue, un algorithme réutilisable de ce type existe-t-il déjà ?
En annexe, je joint un fichier avec mes essais.
J'ai tenté, avec un hôtel de 15 chambres et 32 séjours à caser, de remplir la grille d'occupation dans l'ordre de réception des réservations, en plaçant celles-ci dans un endroit libre.
Cela laisse apparaître beaucoup de nuit libres dans chaque chambre, ce qui empêche de d'accepter des réservations pour certains long séjours.
Ensuite j'ai essayé de remplir les chambres en plaçant d'abord les séjours les plus long, puis en complétant les "trous" avec des séjours plus court. Cette méthode permet déjà un meilleur taux d'occupation des premières chambres, mais un examen attentif des attributions permet de voir que certains séjours plus court ne sont pas idéalement placés car les dates sont déjà occupées par des séjours plus long. Pourtant, avec certaines permutations, on pourrait allonger certaines périodes "libres".
J'ai donc modifié ma méthode de remplissage en combinant d'abord les séjours qui s'enchaînent pour les placer dans la même chambre (par exemple, du 1 au 7, du 8 au 14, du 15 au 27 et du 28 au 31.
La première chambre est ainsi complète tout le mois, ce qui est idéal.
Mais si vous regardez la pièce jointe plus attentivement, dans le 3eme tableau, une permutation du séjour 20 avec les séjours 17 et 29 ainsi qu'une permutation entre les séjours 23 et 28 avec le séjour 24 , 2 chambres peuvent accepter des séjours plus long qu'avant.
Dans la pièce jointe, la colonne de gauche indique le numéro de la chambre , celle de droite indique le nombre de nuitées libres par chambre.
Les cases rouges numérotées indiquent le numéro de séjour.
Quelle serait la meilleure méthode pour combiner ces réservations ?
Partager