Основы планирования задач - не планирование потоков!
Я работаю над приложением Java, которое должно позволить пользователям оптимизировать свое ежедневное расписание. Для этого мне нужна структура, которая помогает рассчитать оптимальное время для "задач", принимая во внимание:
- Требуемые ресурсы и лимиты использования ресурсов
- Зависимости между задачами (может быть только с отношениями F->S)
- Самые ранние и последние времена начала и конца, слабые времена
- Базовое и фактическое время - позволяет сообщать фактическое время начала и окончания, соответственно обновляя остальные задачи
Некоторые пояснения: я не ищу ни основы для рисования этих задач, ни структуры, которая имеет дело с одной конкретной проблемной областью (такой как классные комнаты), и определенно не рамки, которая занимается планированием потоков.
Спасибо!
3 ответа
Я не думаю, что есть рамки, которые будут соответствовать вашим потребностям из коробки. Я знаю, что вы сказали, что не ищете планировщика заданий / потоков, но я думаю, что вам лучше всего развернуть свой собственный код оптимизации / расстановки приоритетов вокруг "тупой" среды планирования заданий / потоков, такой как Quartz (или чего-то еще, что у вас есть в место). Если вы используете Quartz, API, вероятно, может предоставить вам некоторую информацию, полезную для пунктов 3 и 4 ваших критериев оптимизации. Кроме того, Quartz имеет концепцию "приоритет" задания, поэтому после вычисления оптимизированного приоритета следует упростить планирование выполнения.
Если вы найдете фреймворк, который делает то, что вы просите, пожалуйста, напишите сюда - я уверен, что есть другие, которые могут использовать что-то подобное.
Вы можете проверить наличие программного обеспечения для управления проектами. Кажется, вам нужно, чтобы он был написан на Java с возможностью изменения кода. Это действительно сужает список, но я сделал быстрое сканирование, и я вижу по крайней мере 2 из них, которые могли бы помочь (Endeavor и Project.net).
Возможно, вам нужно что-то вроде эволюционного / генетического алгоритма для генерации оптимизированного графика?
Если да, вы можете взглянуть на этот часовой механизм: http://watchmaker.uncommons.org/
С помощью эволюционного / генетического алгоритма он случайным образом генерирует пул расписания. Основное внимание будет уделено определению критериев оценки для оценки каждого сгенерированного расписания. Затем позвольте ему (сгенерированным графикам) развиваться из поколения в поколение, пока оно не станет для вас оптимальным.