Я работаю над простым приложением, которое будет генерировать таблицу времени (ежедневный план) для школ. Я прочитал основы алгоритмов, но смущенно о том, с чего начать.
Какой алгоритм используется для создания таблицы времени для школ
Проблема:
Выделяют учителей к классам с учетом много ограничений, как:
1) Предмет
2) Экспертиза учителя
3) Не более 2-х классов постоянно .. и т.д.
Само собой разумеется, что не должно быть перекрытия. В основном мне нужно назначать N учителей на M-классы с фиксированным количеством рабочих часов каждый день (8).
Входы:
1) Общее количество учителей классов
2) вместе с их предметной экспертизой
3) Предметы/Курсы для каждого класса
4) Количество лекций в класс в день
5) Другие гибкие ограничения, как минимум/максимум рабочего времени для учителя в день, всего рабочих часов на одного учителя в неделю и т.д.
Мои вопросы:
1) Является ли это правильно рассматривать его как проблему назначения с несколькими ограничениями?
2) Какой алгоритм я должен использовать? (Венгерский алгоритм?)
3) Должен ли я начать с получения всего набора ограничений за один раз, а затем сгенерировать таблицу или сделать это на промежуточных шагах?
Я начинаю изучать/внедрять алгоритмы, поэтому любая помощь может указывать на меня в правильном направлении! Благодарю.
Я нашел файл PostScript, рассказывающий об алгоритме ** Tabu Search ** (http://en.wikipedia.org/wiki/Tabu_search) для назначения учителей классам (http://www.uv.es/sestio /TechRep/tr01-01.ps). Это в основном математическая эвристика. Надеюсь, это даст вам какое-то направление. –
Это дубликат. Я ответил на этот вопрос пару недель назад: http://stackoverflow.com/questions/2177836/algorithm-for-creating-a-school-timetable –
@Stefano, бесценная ссылка! благодаря – Checksum