总体规划
获取我的课程信息以自动优化并选择我的uni课程时间表
整体算法
6详细说明 使用讲座作为焦点,获得所有课程的排名最高(每个科目只有一个),并尝试安排课程。
问题
任何人都可以向我提供一些链接,这些链接可能类似于希望用python编写的内容吗? 关于6:您建议将此信息存储在哪个数据结构中?一个链表,其中每个uniclass对象? 我应该将所有信息都写入文本文件吗?
我正在考虑将uniclass设置如下 属性:
我几乎没有Python经验,并认为这将是一个很好的学习项目,试图完成。 感谢您提供的任何帮助和链接,以帮助我开始,开放编辑以适当地标记或什么是必要的(不确定除了编程和python之外还有什么?)
编辑:无法为此SO帖子><
获得正确的格式答案 0 :(得分:2)
根据您计划服用#6的程度以及数据集的大小,这可能是非平凡的;它对我来说无疑是NP难的全局优化......
但是,如果你谈论的是数十个(而不是数百个)节点,那么一个相当愚蠢的算法应该能够提供足够好的性能。
所以,你有两个限制:
我的意思是灵活的是你可以去更多间隔的课程(分数较低),但你不能同时在两个班级。有趣的是,得分和冲突之间可能存在正相关关系;得分较高的班级更容易发生冲突。
我对算法的第一次传递:
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)
如果类长度不均匀,从奇怪的时间开始等等,解决冲突可能会很麻烦。将开始和结束时间映射为时间“块”的简化表示(每15分钟/ 30分钟或您需要的任何内容)可以更容易地查找不同类的开始和结束之间的重叠。
答案 1 :(得分:0)
BeautifulSoup,例如get-list-of-xml-attribute-values-in-python。
Beautiful Soup是一个Python HTML / XML解析器,专为快速周转项目而设计,例如屏幕抓取。三个功能使它变得强大:
- 如果给你不好的标记,美丽的汤不会窒息。它产生一个解析树,使其与原始文档几乎一样有意义。这通常足以收集您需要的数据并逃跑。
- Beautiful Soup提供了一些简单的方法和Pythonic习语,用于导航,搜索和修改解析树:用于剖析文档和提取所需内容的工具包。您不必为每个应用程序创建自定义解析器。
- Beautiful Soup会自动将传入的文档转换为Unicode,将传出的文档转换为UTF-8。您不必考虑编码,除非文档没有指定编码并且Beautiful Soup不能自动检测编码。然后你只需要指定原始编码。
醇>美丽的汤解析你给它的任何东西,并为你做树遍历的东西。您可以告诉它“查找所有链接”,或“查找类externalLink的所有链接”,或“查找其网址匹配的所有链接”foo.com“,或”查找具有粗体文本的表格标题,然后给出我那个文字。“
曾经锁定在设计不佳的网站中的宝贵数据现在已经触手可及。使用Beautiful Soup需要花费数小时的项目只需几分钟。
答案 2 :(得分:0)
这里有太多问题。
请将其分解为主题领域,并就每个主题提出具体问题。请关注其中一个具体问题。请定义您的术语:“最佳”并不意味着没有一些特定的测量来优化。
以下是我认为您在主题列表中看到的内容。
抓HTML
1使用Enterprise Sign On Engine登录登录网站
2查找我当前的学期及其相关科目(预先设置)
3导航到右侧页面并获取每个相关主题的数据(讲座,实践和研讨会时间)
4删除无用信息的数据
一些基于“彼此更接近”寻找“最佳时间”的“排名”算法。由于这些术语未定义,因此几乎不可能提供任何帮助。
5对彼此较近的等级进行排序,随机天数较低的等级
6解决最佳时间表解决方案
输出内容。
7输出最佳案例信息的详细列表
8输出可能的班级信息的详细列表(例如,某些可能已满)
优化某些内容,寻找“最佳”。另一个不确定的术语。
9让程序自动选择最佳课程
10继续检查我们是否能达到目标。
BTW,Python有“lists”。他们是否“联系”并没有真正进入它。