Question

J'ai un problème de calendrier classique composé des classes de variables (~ 100), des salles (20), des termes (8) et des jours de semaine (5).

Pour simplifier le problème, les contraintes sont réduites.

Une journée est de 9 heures.

Certaines classes sont obligatoires pour les étudiants, et les classes obligatoires des termes 1,3,5,7 (et pour 2,4,6,8) ne doivent pas se chevaucher.

Les cours ont des poids différents en termes d'heures, certains durent 2 heures, certains ont 3.

Certaines classes devraient être dans des pièces spécifiques.

Il ne peut pas y avoir deux conférences à la même classe en même temps.

Je vais avec le module de contrainte Python Logilabs. Et je suis conscient que le choix des variables et des domaines sagement entraînera moins de temps pour résoudre le problème. Le problème est que je n'ai jamais fait de programmation de contraintes auparavant et d'avoir du mal à résoudre le problème pour savoir où et avec quoi commencer. Par exemple:

Je peux définir une contrainte telle que "pas deux classes avec la même pièce, le même jour peut se chevaucher l'une l'autre de l'honneur". Ou commencer par "Aucune pièce ne peut avoir plus de 9 heures réservées le même jour", puis continuez avec un domaine de solution réduit. J'estime (je n'ai pas essayé) que la première contrainte prendra beaucoup plus de temps à résoudre que l'autre. Mais cela nécessite également (je suppose) la modification des variables et des domaines de solution ou une reconstruction d'un problème plus petit. Je suis déjà un peu perdu dans les variables, les domaines, les intervalles, les implémentations, etc.

Pour faire court, j'ai besoin de pointeurs pour résoudre le problème, des domaines de solution, de la chossange de variables judicieusement, etc.

Merci

METTRE À JOUR

En utilisant le package de contrainte Logilab, j'ai fait une application de base et je l'ai téléchargée sur github

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top