Расписание студентов на занятия - PullRequest
1 голос
/ 11 марта 2010

Я создаю веб-сайт для побочного проекта в школе, где ученики посещают занятия, которые им нужно посещать, в какие дни они хотят или не хотят посещать занятия, а также когда они не могут или не хотят посещать занятия. Основы в том, что есть классы, и каждый класс имеет много разделов в разное время с разными профессорами, из которых студент может выбирать. С классами уровня новичка может быть более 30 различных разделов для каждого класса. У меня есть классы и разделы в базе данных mysql, и я пишу в php.

Пока у меня это работает, но я хочу сделать это быстрее. Я читал о других проблемах с расписанием, но я ищу особенности того, что я делаю. Это не делает графики с нуля. Он составляет графики из доступных разделов и ранжирует их на основе того, что учащиеся вводят. В настоящее время для нескольких возможных разделов он работает быстро. Но когда количество возможных графиков достигает 300 000, на сравнение и ранжирование уходит около 30 секунд. Я улучшил это, изменив, как графики генерируются, но я хочу быстрее. Я перешел от генерации грубой силы к использованию метода на основе дерева.

Я не прошу помощи в выполнении домашних заданий или для того, чтобы кто-то сделал это для меня. Я просто хочу указать правильное направление с уже существующими проблемами и алгоритмами, о которых я могу узнать.

Ответы [ 3 ]

1 голос
/ 11 марта 2010

Помните загадку восемь королев ? Я очень надеюсь, что вы сделаете, если нет, то сначала решите, а потом вернитесь к своей задаче планирования.

Вы уже перешли от грубой силы к древовидной структуре. Теперь пришло время для ветви и границы . Что бы вы ни имели в виду под «хорошими графиками», 170000 - это слишком много & mdash; Вы не подрезаете свое дерево достаточно. Я не думаю, что может быть более 20-50 действительно хороших графиков для каждого студента, если только они не посещают очень мало уроков и чрезвычайно гибки.

1 голос
/ 11 января 2011

Попробуйте метаэвристику, такую ​​как поиск по табу или имитация отжига. Грубая сила, ветвь и ограничение недостаточно растягиваются.

Взгляните на пример моего учебного курса в Планировщике слюней, как он определен ITC2007. Вероятно, это расширенная форма вашего варианта использования (не считая gui / db).

0 голосов
/ 11 марта 2010

Посмотрите на это . Это может быть не совсем то, что вы хотите, но вы можете получить некоторые идеи дизайна.

...