2010-09-15 5 views
0

Voici mon problème: Je suis en train de concevoir une application qui permettra aux étudiants de sélectionner les cours qu'ils veulent suivre pour le semestre et de créer des plans d'emploi pour eux. Chaque classe a généralement plusieurs sections possibles qui se produisent à des moments différents. Donc, je cherche une bonne structure de données à utiliser pour développer un algorithme qui va le faire.Générer des horaires potentiels pour les étudiants

Existe-t-il un moyen commun de le faire? Toutes les structures de données et/ou algorithmes que je peux appliquer à cette situation? Je cherche juste un endroit pour commencer.

EDIT: Les cours ont tendance à être lundi, mercredi, vendredi ou mardi, jeudi. Dans beaucoup de cas, il y a aussi des laboratoires ou des récitations qui se produisent à différents moments au cours de la semaine

Merci, Rob

+0

Donc, fondamentalement, vous voulez un étudiant de choisir des cours A, B, C, etc., puis l'algorithme entier chercher toutes les possibilités? Je ne pense pas qu'il existe une telle chose, et s'il y a alors s'il vous plaît quelqu'un me lier la source depuis mon université a du mal à nous fournir un horaire à moitié acceptable chaque semestre :) –

+0

Notre école en a déjà un, mais fait par un étudiant il y a quelques années. Nous allons essayer de l'améliorer, voici un lien: http://planner.iastate.edu/planner.jsp. Aussi myEDU.com offre la même fonctionnalité. J'ai trouvé le site il y a quelques jours en faisant des recherches sur ce sujet. – tgai

+0

Ah oui je suis allé trop loin avec ma réflexion - les classes sont déjà là et l'étudiant ne peut choisir que d'un certain ensemble. –

Répondre

1

J'utiliser un arbre
A chaque noeud (ce qui représente une classe) branche pour chaque section et une branche supplémentaire pour ne pas avoir suivi le cours
vous pouvez élaguer les conflits d'horaire à tout moment

Cela ne devrait pas être trop grand aussi longtemps que vous n'êtes pas le stockage de ces toujours, et aussi longtemps que vous n » t inclure trop de cours par étudiant et par semestre


L'arbre serait ancré dans n'importe quelle classe arbitraire. Chaque branche de root serait une section de cette classe (et la branche supplémentaire pour ne pas la prendre) Ensuite, à la fin de chacune de ces branches, vous avez plus de nœuds. Ces nœuds représenteraient tous la deuxième classe que vous intégrez dans le planning.
Chacun de ces nœuds aurait une autre branche pour chaque section de la seconde classe. Etc.

ex:

   math 
/  /   \ 
2:00  1:00   blank 
    |   |    | 
p.e   p.e   p.e 
/ \  / \  /\ 
2:00 blank 2:00 blank 2:00 blank 
| 
conflict 
+0

Je ne comprends pas complètement ce que serait la structure de mon arbre. Est-ce que mon nœud racine se connecte à toute la classe sélectionnée et que ces classes se connecteraient à chaque section à toutes les autres classes? Mon expérience avec les arbres est limitée à ma classe de structures de données il y a un an et demi. – tgai

+0

édité avec un exemple –

+0

Merci beaucoup pour l'exemple. – tgai

1

Est-ce que chaque classe ont le même horaire chaque jour de la semaine? Ou sont-ils comme les miens, où certains étaient MWF, d'autres TuTh, et d'autres Sat?

Si tous les cours sont à la même heure tous les jours de la semaine, le modèle est assez facile. Vous avez besoin de tables pour les étudiants, les classes, classSections et studentSchedules.

Pour votre table classSection, comme les cours ne sont pas la même heure tous les jours, s'ils sont les mêmes jours chaque semaine, vous pouvez inclure des champs pour chaque jour de la semaine (M-Sa), heure de début, la longueur de la classe (en heures,) et, bien sûr, le classCodeID.

Au minimum:

Student 
    ID 
Class 
    classCodeID 
    description 
classSection 
    classCodeID 
    classSectionID 
    isOnM 
    isOnTu 
    isOnW 
    isOnTh 
    isOnF 
    isOnSat 
    startTime 
    length 
studentSchedule 
    studentID 
    classCodeID 
    classSectionID 

Vous pouvez aussi normaliser les jours de la semaine au lieu de les avoir dans la table classSection, mais j'aime voir la semaine cartographiés dans un tas de cases à cocher.

Je vois que vous avez plusieurs heures de début par semaine, donc vous aurez besoin d'un autre champ ID dans la table classSection.

L'application que vous avez semble correcte, n'avez-vous pas déjà un modèle de données? On dirait que vous n'avez même pas besoin d'être un étudiant pour voir les horaires de cours.

+0

J'ai ajouté une note ci-dessus à ce sujet. Je n'ai même pas pensé à le mentionner, merci. – tgai

+0

J'aime l'endroit où vous allez, mais avez-vous une idée de la façon dont j'appliquerais cela pour trouver des horaires possibles? – tgai

+0

il peut ne pas y avoir un calendrier qui comprend tout ce qu'un étudiant veut. J'ai trouvé quelques classes sans places disponibles. Fondamentalement, vous devez prendre toutes les permutations d'un ensemble de classes et de sections et les superposer. – Beth

1

Ceci est un problème où des algorithmes génétiques sont appropriés. Au moins, le personnel de mon université a développé un algorithme basé dessus. Voici quelques uns de leurs papiers où la technique est présentée.

http://morgoth.zemris.fer.hr/people/Marko.Cupic/files/2009-425555.EvoCOP_2009.pdf

http://morgoth.zemris.fer.hr/people/Marko.Cupic/files/2009-422047.iti2009.pdf

+0

D'accord, pas quelque chose que je connais vraiment mais je vais le lire et voir si je peux l'appliquer à mon problème. Merci! – tgai

Questions connexes