Plan de table

Eléphant du PHP | 80 Messages

13 janv. 2015, 17:08

Bonjour,

Responsable d'une résidence de vacances, j'ai un listing en base de données avec des familles (de 1 à 6 personnes) sur une période donnée.
A coté de cela, j'ai une salle de restaurant, dans laquelle j'ai des tables, sauf que ces tables ne sont pas de la même taille : table de 10, 12, 14, 20 personnes etc ..

Je voudrais savoir s'il existe un algorithme ou une fonction afin de positionner au mieux toutes les familles en optimisant les remplissage des tables.

Merci de votre aide.

Stéphane

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

13 janv. 2015, 18:33

Problématique intéressante dont je n'ai pas la solution mais qui m'intéresse :)

Une question : qu'entends-tu par "optimiser le remplissage des tables" ?
Est-ce que l'objectif est de remplir au maximum un minimum de table ou de répartir le plus possible sur l'ensemble des tables existantes ?


Un exemple : si j'ai 3 familles de 4 personnes et 3 tables de 12 places est-ce qu'il vaut mieux avoir 1 famille par table ou les 3 familles sur la même table (et donc 2 tables de vide) ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 80 Messages

13 janv. 2015, 18:38

Dans MA logique, sur ce point précis, je souhaite remplir au mieux les tables afin d'en laisser le maximum vides.

De toute façon, si une solution m'est proposée via le forum, je pense qu'ensuite, il ne restera plus qu'a réfléchir pour un autre mode d'optimisation.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

13 janv. 2015, 20:04

Bon alors j'ai beau me creuser la tête, je ne vois pas de solution simple pour modéliser ton problème.

Et soudainement, je suis tombé sur une thèse dédiée à ton sujet :
http://tidel.mie.utoronto.ca/pubs/These ... to.phd.pdf
Bon courage pour la lecture :D
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 2278 Messages

14 janv. 2015, 10:40

Il s'agit d'une solution par programmation sous contraintes mais dont les contraintes sont très supérieures à celles que je suppose être celles d'un logis de vacances:

tables combinables
service à des tables séparées pour des groupes séparés;
plusieurs services à des heures imprédictibles dans un intervalle donné;
possibilité de réserver ou non...

Ca n'empeche qu'on doit pouvoir se servir de programmation sous contrainte dans ton cas... ou par contraintes
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Mammouth du PHP | 2278 Messages

14 janv. 2015, 17:31

Tout le monde mange à la même heure? (Il y a un seul service)
Il faut mettre sur la même table les gens du même groupe?
Un Tableau des tables:
$tables = array ( 1=> 30, 2=>16, 3=>4, 4=>4); //ordre sans importance
IUn tableau des groupes à caser :
$groupe = array ( 1=> 6, 2=>6, 3=>4, 4=>4, 5 =>2);//ordre important
Je fais la somme des gens à placer pour voir s'ils ne tiendraient pas sur une seule table.
1 Je case le plus gros groupe sur la plus grande table.
A Je cherche si un groupe complète exactement cette table:
si oui je le loge et je repars en 1avec le table suivante
si non je case le plus grand qui tient
si la table n'est pas complète je repars en A sinon en 1avec le table suivante
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD