Скрипт школьного расписания.

funkster

Новичок
Скрипт школьного расписания.

На форуме поднимались вопросы о структуре БД для школьного расписания.
Там Alexandre предложил наиболее оптимальный вариант

таблица уроки
урок_ид
название

таблица группы
группа_иди
название

таблица аудитории
аудитория_иди
название

таблица расписание
аудитория_иди
группа_иди
урок_ид
время_дата

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

Подскажите, в каком направлении идти и что почитать (по возможности с ссылками). Хочется сделать максимально оптимально, а не "тяп-ляп".
 

HEm

Сетевой бобер
Билл Гейтс таковую программу написал еще будучи школьником
 

funkster

Новичок
Знаю, читал ... но у них другая система образования, да и функционал неизвестен кроме того, что он попадал в классы с самыми красивыми девушками. Но все же ... по теме есть идем ?
 

Dovg

Продвинутый новичок
Погугли на тему решения задач симплекс-методом
ИМХО должны быть готовые решения в исходниках на распространенных языках программирования.

По сути тебе нужно оптимизировать функцию
f(x) = a*x + b*y + ...

где
x,y - параметры, которые необходимо оптимизировать (коэф. окон, загруженности преподавателей, количество однотипных уроков, число уроков в день)
a,b - их веса, задавать должен пользователь. (что важнее: чтобы дыр не было или чтобы преподаватели были загружены)
 

Alexandre

PHPПенсионер
Есть ли базовые разработки подобной направленности, какой логикой лучше пользоваться
это простейшая задача "Линейного программирования".

только когда его начинаешь реализовать - понимаешь, что оно не такое уж и простейшее.

я это реализовывал для "Учебного отдела" лет 10 назад на паскале или си - уже не помню... Использовал готовую библиотеку и накручивал на нее пользовательский интерфейс.

Программ по реализации "Линейного программирования" на пхп не встречал (очевидно специальон не искал), да и не эффективны они будут. Надо прикручивать Синшые модули.

Очевидно подход "эвристичекой подстановки" более подходящее решение.
 

funkster

Новичок
Спасибо, буду разбираться ....
Хотя использование "линейного программирования" для всех проблем при составлении расписания вызывает легкие сомнения =\
 
Сверху