Question

Plan d'ensemble

Obtenir des informations sur ma classe afin d’optimiser et de sélectionner automatiquement mon emploi du temps de la classe uni

Algorithme global

  1. Connectez-vous au site Web à l'aide de son Connexion à l'Enterprise Sign On Engine
  2. Trouver mon semestre actuel et ses sujets connexes (configuration préalable)
  3. Accédez à la page de droite et récupérez les données de chaque fichier associé. sujet (conférence, pratique et heures de l'atelier)
  4. Supprimer les données inutiles informations
  5. Classez les classes les plus proches les uns aux autres plus haut, ceux sur jours aléatoires inférieurs
  6. Résoudre une meilleure solution de calendrier
  7. Envoyez-moi une liste détaillée des Informations BEST CASE
  8. Envoyez-moi une liste détaillée des informations de classe possibles (certaines peut être complet par exemple)
  9. Lancez le programme pour sélectionner le meilleur cours automatiquement
  10. Continuez à vérifier pour voir si nous pouvons atteindre 7.

6 en détail Obtenez tous les cours, en utilisant les conférences comme point central, serait le mieux classé (un seul par sujet), et essayez d'organiser les cours autour de cela.

Questions

Quelqu'un peut-il me fournir des liens vers quelque chose qui pourrait ressembler à ceci, espérons-le, écrit en python? En ce qui concerne 6 .: dans quelle structure de données recommanderiez-vous de stocker ces informations? Une liste chaînée où chaque objet de uniclass? Dois-je écrire toutes les informations dans un fichier texte?

Je pense que l'uniclass est configuré comme suit attributs:

  • Objet
  • Rang
  • heure
  • Type
  • Enseignant

Je suis à peine expérimenté en Python et je pense que ce serait un bon projet d’apprentissage à essayer. Merci pour toute aide et les liens fournis pour m'aider à commencer, ouvert aux modifications à baliser de manière appropriée ou à ce qui est nécessaire (vous ne savez pas exactement ce que cela implique, sauf la programmation et le python?)

EDIT: impossible d'obtenir le formatage correct que je souhaite pour cet article SO > <

Était-ce utile?

La solution

En fonction de la distance que vous envisagez de prendre et de la taille de l'ensemble de données, il se peut que ce soit non trivial; ça sent certainement l'optimisation globale NP-difficile pour moi ...

Néanmoins, si vous parlez de dizaines (plutôt que de centaines) de nœuds, un algorithme relativement stupide devrait donner de bonnes performances.

Donc, vous avez deux contraintes:

  1. Un classement total des classes par score; c'est flexible.
  2. Affrontements de classe; ce n'est pas flexible.

Ce que je veux dire par flexible, c'est que vous pouvez aller dans des classes plus espacées (avec des scores plus bas), mais vous ne pouvez pas être dans deux classes à la fois. Fait intéressant, il existe probablement une corrélation positive entre le score et les affrontements; les classes ayant les meilleurs scores sont plus susceptibles de s’affronter.

Mon premier passage à un algorithme:

selected_classes = []
classes = sorted(classes, key=lambda c: c.score)
for clas in classes:
    if not clas.clashes_with(selected_classes):
        selected_classes.append(clas)

Il peut être difficile de résoudre des conflits si les classes sont de longueur inégale, commencent à des heures étranges, etc. Mappage des heures de début et de fin dans une représentation simplifiée de & "; Blocs &"; de temps (toutes les 15 minutes / 30 minutes ou ce dont vous avez besoin) faciliterait la recherche de chevauchements entre le début et la fin de différentes classes.

Autres conseils

BeautifulSoup a été mentionné à quelques reprises ici, par exemple get-list-of-xml-attribute-values-in-python .

  

Beautiful Soup est un analyseur syntaxique HTML / XML Python conçu pour les projets de redressement rapide tels que le nettoyage d’écran. Trois caractéristiques le rendent puissant:

     
      
  1. La belle soupe ne s'étouffera pas si vous lui donnez un mauvais balisage. Il en résulte un arbre d’analyse syntaxique qui a à peu près autant de sens que votre document original. C’est généralement suffisant pour collecter les données dont vous avez besoin et vous enfuir.
  2.   
  3. Beautiful Soup fournit quelques méthodes simples et expressions idiomatiques Pythonic pour la navigation, la recherche et la modification d’un arbre d’analyse syntaxique: une boîte à outils permettant de disséquer un document et d’en extraire ce dont vous avez besoin. Il n'est pas nécessaire de créer un analyseur personnalisé pour chaque application.
  4.   
  5. Beautiful Soup convertit automatiquement les documents entrants au format Unicode et les documents sortants au format UTF-8. Vous n'avez pas à penser aux encodages, à moins que le document ne spécifie pas d'encodage et que Beautiful Soup ne puisse pas le détecter automatiquement. Ensuite, il vous suffit de spécifier le codage d'origine.
  6.   
     

Beautiful Soup analyse ce que vous lui donnez et effectue le parcours des arbres pour vous. Vous pouvez le dire & "Rechercher tous les liens &"; Ou & "Rechercher tous les liens de la classe externalLink &"; Ou & "Trouver tous les liens dont les URL correspond à " foo.com " ;, ou " trouvez l'en-tête de tableau avec du texte en gras, puis donnez-moi ce texte. "

     

Des données précieuses qui étaient autrefois conservées dans des sites Web mal conçus sont désormais à votre portée. Les projets qui auraient pris des heures ne prennent que quelques minutes avec Beautiful Soup.

Il y a beaucoup trop de questions ici.

Veuillez diviser cela en sujets et poser des questions spécifiques sur chaque sujet. Veuillez vous concentrer sur l'une d'elles avec des questions spécifiques. Veuillez définir vos termes: & "Meilleur &"; ne veut rien dire sans une mesure spécifique à optimiser.

Voici ce que je pense voir dans votre liste de sujets.

  1. Scraping HTML

    1 Connectez-vous au site Web à l'aide de son identifiant Enterprise Sign On Engine

    .

    2 Trouver mon semestre actuel et ses matières connexes (configuration préalable)

    3 Accédez à la page de droite et récupérez les données de chaque sujet associé (heure du cours, des travaux pratiques et des ateliers)

    4 Supprimez les informations inutiles

  2. Certains algorithmes pour " rank " basé sur " plus proches les uns des autres " à la recherche d'un & "meilleur temps &"; Étant donné que ces termes ne sont pas définis, il est pratiquement impossible de fournir une aide à cet égard.

    5 Classez les classes les plus proches les unes des autres, celles des jours aléatoires inférieurs

    6 Résolvez une solution de meilleur calendrier

  3. Sortir quelque chose.

    7 Envoyez-moi une liste détaillée des informations BEST CASE

    8 Envoyez-moi une liste détaillée des informations de classe possibles (certaines peuvent être complètes, par exemple)

  4. Optimisez quelque chose en recherchant & "meilleur &". Un autre terme indéfinissable.

    9 Demandez au programme de sélectionner automatiquement les meilleures classes

    10 Continuez à vérifier pour voir si nous pouvons atteindre 7.

BTW, Python a " listes ". Qu'ils soient ou non & Quot; liés & Quot; n'entre pas vraiment dedans.

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