batyrmastyr писал(а):
Я увидел здесь транспортную задачу линейного программирования (хотя мог чего недоглядеть). "http://ru.wikipedia.org/wiki/Транспортная_задача"
Там по одну сторону - часы учебного плана (Аi), по другую - время преподавателей(Вj), в центре - "удобство" преподавателей и студентов (Cij).
Хотя надо подумать прокатит ли - очевидно что при решении надо уметь фиксировать часть расписания,
Если удастся впихнуть в эти рамки, то решать должно очень быстро.
Спасибо за помощь, но, честно говоря, сейчас просто нет времени анализировать, насколько применимы методы решения транспортной задачи к задаче составления расписание, да и не уверен, нужно ли это.
Я вот сейчас глянул мельком в yandex и google. Похоже, что задача составления расписания -- это одна из классических задач (как транспортная задача, задача коммивояжера и т.п., еще часто звучит понятие NP-полноты, но я в теории алгоритмов не очень ориентируюсь), и для нее давно разработана теория решения.
Вот некоторые ссылки, что мне понравились:
ЗАДАЧА СОСТАВЛЕНИЯ ШКОЛЬНОГО РАСПИСАНИЯ
http://www.mnogosmenka.ru/pilikov/school.htmтам в конце есть подборка уже существующего софта.
School timetable
http://en.wikipedia.org/wiki/School_timetableВ конце тоже много полезных ссылок, но все на английском.
GPL software для решения задачи расписания. Заявлена поддержка Linux и Windows
http://www.tablix.org/Т.е. похоже, что можно не изобретать велосипед, а использовать готовое решение (ну по крайней мере для начала).
---
Анализировать сейчас существующие наработки у меня просто нет времени, попробую этим заняться в субботу.
А вообще хочу подчеркнуть еще раз, что главное -- это не программа автоматического составления расписания, а автоматизированное рабочее место диспетчера, т.е. тщательность проработки интерфейса намного важнее, чем алгоритм автоматического составления расписания. Т.е. программа должна быть инструментом в руках диспетчера, а на диспетчер -- инструментом ввода данных для программы.