Какой алгоритм оптимизации больше подходит для изменения расписания? - PullRequest
0 голосов
/ 22 ноября 2018

Я работаю над проектом, в котором университетский курс представлен в виде списка дел, где:

  • Владелец курса (преподаватель курса) может добавлять задачи (содержащиеНеобходимо изучить URL-адрес ресурса и два поля даты и времени - когда начинать и когда выполнять задачу)

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

Если студент помечает задачу как выполненную - его учетная запись + помеченный элемент отображаются на вкладке курса для учителя, где он может:

  • инициировать беседув чате на основе JavaScript с ним
  • оцените результат разговора

Какой алгоритм оптимизации вы можете порекомендовать мне для перепланирования расписания (изменение полей даты и времени для элемента to-do, еслистудент медлит) здесь?

На самом деле, мы можем использовать активность студента на ресурсе + тот факт, что он пометил задачу как выполненную +, если он щелкнул или нет по URL-адресу, помещенному в элемент списка дел, ведущий к внешнему учебному материалу (дляпример Google Book).

Например, подходят ли генетические алгоритмы для этой модели и какие у них есть подводные камни: https://medium.com/@vijinimallawaarachchi/time-table-scheduling-2207ca593b4d?

1 Ответ

0 голосов
/ 30 ноября 2018

Я не уверен, что полностью понимаю вашу проблему, но, похоже, у вас есть разумное расписание для начала, и вам просто нужно его улучшить.

Если так, то генетические алгоритмы будут работать очень хорошо, но я думаю, что представлять все как двоичные «хромосомы», как в ссылке, может быть нецелесообразно.Существует много других способов представления расписания, например, в двумерном массиве или присвоения событию номера слота.Вы можете посмотреть на алгоритмы, такие как поиск по Табу, имитация отжига и Великий Потоп и восхождение на горуВсе они основаны на схожих идеях, но некоторые работают лучше с некоторыми проблемами, чем другие.Например, если у вас очень грубое пространство поиска, имитация отжига не будет лучшей, и Hill Climbing обычно находит только локальный оптимум.

Общая архитектура алгоритмов, упомянутых выше, и многих других генетических алгоритмов и метаэвристики: выберите соседнее решение, используя оператор перемещения (например, поменяйте местами одно или два или три события или поменяйте местами помещения двух событий и т. д.), убедитесь, что движение не нарушает каких-либо жестких ограничений, используйте такую ​​стратегию принятия, каккак, имитированный отжиг или Великий Потоп, чтобы определить, принято ли движение.Если это так, оставьте решение и повторяйте шаги до тех пор, пока не будет достигнут критерий завершения.Это может быть максимальное время, число выполненных итераций или улучшение не было найдено за x итераций.Пока это работает, ведите журнал «лучшего» решения, поэтому, когда алгоритм будет остановлен, у вас будет найдено лучшее решение.Вы можете определить, что считается «лучшим», исходя из того, сколько мягких ограничений нарушает расписание

Надеюсь, это поможет!

...