imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 20.10.2006, 18:57     # 1
iogun
Junior Member
 
Регистрация: 11.07.2004
Сообщения: 92

iogun Путь к славе только начался
Алгоритм для автоматического составления расписания занятий (пар, уроков) в институте

Подскажите кто нить занимался такой поблемой? Какие входные параметры должны быть у такого алгоритма и его хотябы примерную реализацию.
iogun вне форума  
Старый 20.10.2006, 20:06     # 2
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Цитата:
Какие входные параметры должны быть у такого алгоритма
Так именно от входных данных и зависит алгоритм. Конечно есть данные которые будут в любом из них: учителя, классы и кабинеты, но если только ими ограничиваться, то алгоритм будет на уровне десткого сада: рассаживаешь учителей по кабинетам и распределяешь классы по ним.
RaZEr вне форума  
Старый 20.10.2006, 22:59     # 3
Kvarx
Member
 
Регистрация: 26.09.2005
Адрес: Питер
Сообщения: 336

Kvarx Известность не заставит себя ждатьKvarx Известность не заставит себя ждать
Как нам сказали в универе, это достаточно сложно составить расписание идеально, потому что алгоритм не учитывает чисто человеческие факторы, поэтому у нас делают в ручную

Это задача линейного программирования.
Kvarx вне форума  
Старый 21.10.2006, 17:18     # 4
iogun
Junior Member
 
Регистрация: 11.07.2004
Сообщения: 92

iogun Путь к славе только начался
Kvarx а в каком универе тебе это сказали?
И что за человеческий фактор, когда первоначальный вариант расписания даже в ручную все равно формируется без его учета, а потом в процессе учебы он проявляется и тогда вносят коррективы в расписание. И вообще такая задача решается в лоб - простым перебором все возможных значений или есть более изящные способы?
iogun вне форума  
Старый 01.11.2006, 07:34     # 5
Decline
Newbie
 
Регистрация: 15.10.2006
Сообщения: 6

Decline Нуль без палочки
Задача элементарно решается на Прологе. Советую посмотреть этот язык.
Там нужно просто задать спецификацию на задачу(такая-то аудитория тогда-то занята, такой-то преподаватель тогда-то, такой-то преподователь хочет аудиторию обладающую следующим свойством и.т.д)
Decline вне форума  
Старый 01.11.2006, 13:02     # 6
BorLase
::VIP::
 
Аватар для BorLase
 
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150

BorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех Гуру
да не обязательно пролог тут нужен

сгодится любой язык - алгоритм рекурсивного перебора

1) ставим занятие в сетку
2) если поставить не получается, возвращаемся на шаг назад, сдвигаем занятие, идем на п. 1

ничего фантастического, тривиальная задача (не пугайте человека)
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people.
BorLase вне форума  
Старый 01.11.2006, 19:50     # 7
iogun
Junior Member
 
Регистрация: 11.07.2004
Сообщения: 92

iogun Путь к славе только начался
с прологом я знаком попробую, был когда то спецкурс.
iogun вне форума  
Старый 02.11.2006, 10:15     # 8
Drakosha
Full Member
 
Аватар для Drakosha
 
Регистрация: 16.10.2002
Адрес: ArchLinux, Internet
Сообщения: 557

Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)
По моему, "Это задача линейного программирования." - 100% правильно.
Drakosha вне форума  
Старый 02.11.2006, 12:04     # 9
helldomain
Administrator
 
Аватар для helldomain
 
Регистрация: 13.05.2002
Сообщения: 11 227

helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
Chto-to takoe nakidali za paru dnei kogda-to. Raspredelenie po auditoriyam (cel optimizacii: minimalnoe rasstoyanie odnogo zdaniya ot drugogo dlya prowedeniya lekcij chto-bi ne prihodilos begat). Rapsredelenie lekcij i.t.d. s uchetom prioritetow (prioriteti: obedennij chas po-wozmojnosti swoboden, lekcii doljni raspolagatsya s minimalno wozmojnim kol-wom probelow). Yazik goditsya liuboi, mi klepali kajetsya na jave. Samoi gimornoi chastju bilo dat sostawiteliu raspisaniya wruchnuju formirowat prioriteti. Wkliuchili dlya etogo wozmojnost napisaniya prawil na java script. Dlya interpretacii js wospolzowalis paketom ot netscape.
__________________
Осколки прошлого, как снег, закрутит ураган времён,
В ушедший день для нас навек, обрушив мост,
Оставив в наших душах след, тьма уплывёт за горизонт,
И в чистом небе вспыхнет свет, свет новых звёзд.
helldomain вне форума  
Старый 07.11.2006, 22:34     # 10
Decline
Newbie
 
Регистрация: 15.10.2006
Сообщения: 6

Decline Нуль без палочки
Цитата:
Сообщение от BorLase
да не обязательно пролог тут нужен

сгодится любой язык - алгоритм рекурсивного перебора

1) ставим занятие в сетку
2) если поставить не получается, возвращаемся на шаг назад, сдвигаем занятие, идем на п. 1

ничего фантастического, тривиальная задача (не пугайте человека)
Ну-ну а сложность такого алгоритма представляешь?
Сложность <n! где n-количество предметов в неделю.
А потом на Прологе задача будет решаться не более чем за строк 100 )
На C++ структуру данных дольше описывать будем.
Decline вне форума  
Старый 08.11.2006, 14:55     # 11
BorLase
::VIP::
 
Аватар для BorLase
 
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150

BorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех Гуру
Decline, что ты подразумеваешь под "сложностью"? Рекурсивный алгоритм будет не намного длиннее прологовского
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people.
BorLase вне форума  
Старый 08.11.2006, 22:17     # 12
Decline
Newbie
 
Регистрация: 15.10.2006
Сообщения: 6

Decline Нуль без палочки
Ты предлагаешь переборный алгоритм.
По сути всякое решение на Прологе имеет переборную природу, впрочем весьма эффективную для перебора.

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

Я сторонник использования Пролога в задачах перебороного характера и работе с текстом(хотя на счет 2-го можно поспорить) - проще получается для программиста.

Под сложностью подразумевал максимальное количество ветвей перебора.
Decline вне форума  
Старый 27.11.2006, 09:19     # 13
BigOldDream™
Guest
 
Сообщения: n/a

Расскидать преподователей по аудиториям. Только не забудьте, что у преподователя не должно быть перерыва больше одной пары, у студентов не должно быть разрывов в занятии вообще. Вот тогда это расписание будет идеальным. Как то работал я в школе, полгода бился над алгоритмом, но так до конца и не довел. Мой единственный бетатестер завуч с 20 летним стажем каждый раз рубил мою реализацию проблемы.
 
Старый 27.11.2006, 22:54     # 14
Mad Max
Newbie
 
Аватар для Mad Max
 
Регистрация: 12.09.2003
Адрес: Digital Astral
Сообщения: 37

Mad Max Путь к славе только начался
А можно ли конкретнее описать проблему? Какие данные ввода, параметры и т.д.?

Мы писали в рамках учебного проекта в универе, но перед нами стояла задача, чтобы сделать планировщик на основе имеющихся данных о лекциях профессора и т.д. Другими словами, ты задаешь, какие лекции хочешь посещать, наша прога брала нужные данные с сервера, спрашивала о твоих приоритетах (по возможности все пары вместе, позже, раньше т. д.). Это был промежуточный этап, далее все данные отдавались алгоритму и он, на основе преферируемых параматров высчитывал наилучший результат. Писалось на Java 1.4 и отлично работало(ет).

http://im-coma.de/vv/stundenplan.php?sem=hws06

Вот оно. Правда на немецком, но разобраться можно: внизу neues fach auswählen это выбрать предмет (и далле подкатегории), вверху HWS06 это семестр (оссенне-зимний) и т.д.

Поэкспериментируй.
__________________
DON'T PANIC

Последний раз редактировалось 13th Ghost; 27.11.2006 в 23:04.
Mad Max вне форума  
Старый 28.11.2006, 13:46     # 15
melk
Junior Member
 
Аватар для melk
 
Регистрация: 01.04.2003
Адрес: Новосибирск
Сообщения: 50

melk Известность не заставит себя ждатьmelk Известность не заставит себя ждать
Цитата:
Decline:
Я сторонник использования Пролога в задачах перебороного характера и работе с текстом(хотя на счет 2-го можно поспорить) - проще получается для программиста.
Бред.
Использовать надо то, с чем хорошо знаком при отсутствии других ограничений, а универсалов хорошо знающих несколько языков не так много, потому что пока работаешь на одном отстаешь от жизни в другом и просто забываешь его.
Да, я могу написать эту прогу на прологе, но на Java я её напишу в несколько раз быстрее.
Насчет скорости работы проги - вопрос спорный и в наше время не самый главный.
melk вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 03:28.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.