Общий план
Получите информацию о моем классе, чтобы автоматически оптимизировать и выбрать расписание моего класса uni
Общий алгоритм
6 подробно Получите, что все классы, используя лекции как фокус, будут иметь наивысший рейтинг (только по одному на каждый предмет), и попытайтесь организовать классы вокруг этого.
Вопросов
Может ли кто-нибудь предоставить мне ссылки на что-то, что может быть похоже на это, надеюсь, написанное на python? Что касается 6: в какой структуре данных вы бы порекомендовали хранить эту информацию? Связанный список, где каждый объект uniclass? Должен ли я записывать всю информацию в текстовый файл?
Я думаю, что uniclass будет настроен следующим образом атрибуты:
Я почти не разбираюсь в Python и подумал, что это будет хороший учебный проект, который стоит попробовать. Спасибо за любую помощь и ссылки, которые помогут мне начать работу, открыт для редактирования, чтобы пометить соответствующим образом или что когда-либо необходимо (не уверен, что это подпадает под, кроме программирования и Python?)
Обновлено: не могу получить правильное форматирование, которое я хочу для этого сообщения SO> <
Задача, которую я иногда любил, а иногда ненавидел, когда был студентом, хотя всегда делал ее вручную. Лучше всего уроки вторник-четверг забронированы, так что у вас есть 4-дневные выходные. и начало около 10:00 всегда хорошо, так что можно поспать. :)






BeautifulSoup упоминался здесь несколько раз, например Получить список-значений-атрибутов-XML-в-Python.
Beautiful Soup is a Python HTML/XML parser designed for quick turnaround projects like screen-scraping. Three features make it powerful:
- Beautiful Soup won't choke if you give it bad markup. It yields a parse tree that makes approximately as much sense as your original document. This is usually good enough to collect the data you need and run away.
- Beautiful Soup provides a few simple methods and Pythonic idioms for navigating, searching, and modifying a parse tree: a toolkit for dissecting a document and extracting what you need. You don't have to create a custom parser for each application.
- Beautiful Soup automatically converts incoming documents to Unicode and outgoing documents to UTF-8. You don't have to think about encodings, unless the document doesn't specify an encoding and Beautiful Soup can't autodetect one. Then you just have to specify the original encoding.
Beautiful Soup parses anything you give it, and does the tree traversal stuff for you. You can tell it "Find all the links", or "Find all the links of class externalLink", or "Find all the links whose urls match "foo.com", or "Find the table heading that's got bold text, then give me that text."
Valuable data that was once locked up in poorly-designed websites is now within your reach. Projects that would have taken hours take only minutes with Beautiful Soup.
В зависимости от того, насколько далеко вы планируете пройти №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 минут или что угодно, что вам нужно) упростило бы поиск совпадений между началом и концом разных классов.
Здесь слишком много вопросов.
Пожалуйста, разбейте это на предметные области и задавайте конкретные вопросы по каждой теме. Пожалуйста, сосредоточьтесь на одном из них с конкретными вопросами. Пожалуйста, определите ваши термины: «лучший» ничего не значит без каких-либо конкретных измерений, которые необходимо оптимизировать.
Вот что я вижу в вашем списке тем.
Очистка HTML
1 Войдите на сайт, используя логин Enterprise Sign On Engine
2 Найдите мой текущий семестр и связанные с ним предметы (предварительная настройка)
3 Перейдите на правую страницу и получите данные по каждому связанному предмету (время лекций, практических занятий и семинаров)
4 Удалите из данных бесполезную информацию
Какой-то алгоритм «ранжирования» основан на «приближении друг к другу» в поисках «лучшего времени». Поскольку эти термины не определены, помочь в этом практически невозможно.
5 Ранжируйте классы, которые ближе друг к другу, выше, классы в случайные дни ниже
6 Найдите лучшее решение для расписания
Выведите что-нибудь.
7 Выведите мне подробный список ЛУЧШЕЙ информации
8 Выведите мне подробный список возможной информации о классе (например, некоторые могут быть полными)
Оптимизируйте что-нибудь, ищите «лучшее». Еще один неопределенный термин.
9 Получите программу для автоматического выбора лучших классов
10 Продолжайте проверять, сможем ли мы достичь 7.
Кстати, в Python есть «списки». «Связаны» они или нет, на самом деле это не имеет значения.
возможно, это форматирование ближе к тому, что вы хотите