Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > ищу алгоритм составления расписания


Автор: _hunter 15.2.2005, 17:56
Добрый день.

Помогите с сабжем кто чем может.

Заранее благодарю за ответ.

Автор: Akina 15.2.2005, 17:58
А какие проблемы-то?

Автор: _hunter 15.2.2005, 18:00
проблемы с хорошей ( и электронной литературой ) smile

Автор: Akina 15.2.2005, 18:06
тьфу...
http://www.google.ru/search?hl=ru&q=%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC+%D1%81%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F+%D1%80%D0%B0%D1%81%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=

Автор: _hunter 15.2.2005, 18:16
а толку? на первых трех страницах кроме общих рассуждений и рекламы готовых продуктов ничего нет smile

Автор: Akina 15.2.2005, 18:25
а тех страниц - полторы сотни, кстати... лень копать все - уточняй запрос.

Автор: _hunter 15.2.2005, 18:29
уточнил, поставив кавычки -- результат -- две страницы ( мимо )

Автор: mvdr 17.2.2005, 01:15
расписания чего?

Автор: _hunter 17.2.2005, 15:16
занятий

Автор: Marriage 17.2.2005, 15:35
Гы, а что сложного, не пойму ....
Выбираешь начальное время, выбираешь интервал о добавляешь время, причем должен быть предусмотрен параметр перерыв(перемена) и параметр (занятия).
Двумерный массив структур:

Структура состоит из 2-х параметров
Времени и свойст времени.
Например:
(8.30, лекция),(9.15, перемена),(9.20 лекция),(10.05,премена)
Или я чего-то не понял ???



Автор: _hunter 17.2.2005, 15:37
скорее второе
лекция по какому предмету в какой аудитории?

Автор: maxim1000 17.2.2005, 15:41
я вижу три возможных вида помощи в данной ситуации:
1. помочь поискать в Интернете - это, насколько я понял, уже проделано
2. поделиться чем-то готовым - уже прошло некоторое время, а никто не предложил, так что врядли
3. помочь решить задачу

из трех вариантов, как мне кажется, остался только один, но он, к сожадению отсекается из-за отсутствия формулировки задачи...

Автор: Marriage 17.2.2005, 16:06
ТЕбе что, базу данных сделать надо ???

Автор: Akina 17.2.2005, 16:12
Я такую программу писАл еще аж в 94 или 95 году (точно не помню) на Tbasic... обычная заливка с приоритетами... сотня аудиторий, полторы сотни групп, совмещения-разделения и пр. обрабатывалась минут сорок на 286-12... но т.к. это раз в 3 месяца делается, то пофиг.

Автор: _hunter 17.2.2005, 16:12
нет. мне нужно программу составления расписания сделать.
т.е. ( примерно )
есть набор пар, предметов и аудиторий; нужно забить аудитории предметами так, чтобы они ( аудитории ) не были заняты во время одной и той же пары разными предеметами + нужно учитывать разные пожелания ( типа после такого-то предмета такой-то ставить не желательно )

Автор: rusbuy 17.2.2005, 19:17
Если хочешь, чтобы в программе было всё так, как тебе надо - делай сам smile
Или человеку всё очень подробно объясняй. Чтобы он понял и сделал её.

Автор: Marriage 17.2.2005, 20:21
Данные в файле хранить ????

Автор: _hunter 17.2.2005, 20:23
а какая разница?
( пусть, для удобства, в базе )

Автор: maxim1000 17.2.2005, 20:32
тогда не помешало бы разделить требования на две части:
1. обязательные
2. желательные
(1) - при невыполнении хотя бы одного расписание считается невыполнимым
(2) - используются для выбора среди нескольких выполнимых расписаний

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

Автор: Marriage 17.2.2005, 21:01
Предлагаю так
таблица или файл

Время Дата ЧемЗанято СвободноВремя
8,30 17,02,2005 (перемена,лекция) Да/Нет

Составляешь сначала просто расписание для аудитории С датой и временем,
потом если СвободноВремя = да, то делаешь вставку чем занято, если нет, то не вставляешь ...

Автор: mvdr 18.2.2005, 08:17
насколько я знаю, расписание - ручное дело, и составлять его автоматически - дело не хорошее (надо учитывать человеческий фактор преподавателей ).

Но если надо и хочется, то предлагаю свой вариант:

Есть аудитории, в которых может проходить только практика, только лабораторные работы и лекционные. - т.е. создается база аудиторий с указанием их типов (Л, П, ЛАБ). Будет примерно так:
1-01-Л
1-02-П
1-03-ЛАБ...

Вторая база - ВРЕМЯ ЗАНЯТИЙ - имеет начало и конец ( например, 8:30-10:00 ), если время жестко фиксировано по парам, то можно использовать номера пар (1,2,3...).

Третья база - ПРЕДМЕТЫ, у их названия надо ставить их тип ( Л,П, ЛАБ).

Приоритетность ставить в виде условий.
Сачала распихивает лекции по лекционным аудиториям, потом - лабораторные занятия, потом практики. т.е. ставим условия: если ПРЕДМЕТ1_ТИП = Л то запихиваем его в аудиторию с типом Л. ( все аудитории можно раставить в убывающем порядке по значимости - всяко какая то лучше, какая то хуже )
Аналогично все остальные предметы - смотрим на тип предмета, сортируем для него аудитории по его типу, выбираем номер пары (время занятий).
Надо еще проверять условия: (например)
1) не ставить 2 лекции подряд
2) не ставить после предмета1 педмет2
и т.д.

Вроде так, но это на скорую руку. Если что - меня всегда можно найти. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)