Основы планирования задач - не планирование потоков! - PullRequest
5 голосов
/ 09 сентября 2010

Я работаю над Java-приложением, которое должно позволить пользователям оптимизировать свое ежедневное расписание.Для этого мне нужна структура, которая помогает рассчитывать оптимальное время для «задач», принимая во внимание следующее:

  1. Необходимые ресурсы и ограничения на использование ресурсов
  2. Зависимости между задачами (можно делать только с F-> Отношения S)
  3. Самое раннее и последнее время начала и окончания, время простоя
  4. Базовое и фактическое время - позволяет сообщать фактическое время начала и окончания, соответственно обновляя остальные задачи

Некоторые пояснения: я не ищу ни основы для рисования этих задач, ни структуры, которая имеет дело с одной конкретной проблемной областью (такой как классные комнаты), и определенно не рамки, которая имеет дело с потокомпланирование.

Спасибо!

Ответы [ 3 ]

5 голосов
/ 15 сентября 2010

Я не думаю, что есть рамки, которые будут соответствовать вашим потребностям из коробки. Я знаю, что вы сказали, что не ищете планировщика заданий / потоков, но я думаю, что вам лучше всего развернуть свой собственный код оптимизации / расстановки приоритетов вокруг "тупой" среды планирования заданий / потоков, такой как Quartz (или что у вас на месте). Если вы используете Quartz, API, вероятно, может предоставить вам некоторую информацию, полезную для пунктов 3 и 4 ваших критериев оптимизации. Кроме того, Quartz имеет концепцию «приоритет» задания, поэтому после расчета оптимизированного приоритета следует упростить планирование выполнения.

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

0 голосов
/ 18 сентября 2010

Может быть, вам нужен что-то вроде эволюционного / генетического алгоритма для генерации оптимизированного графика?

Если да, вы можете взглянуть на этот механизм часовщика: http://watchmaker.uncommons.org/

С эволюционным/ генетический алгоритм, он случайным образом генерирует пул расписания.В центре вашего внимания будет определение критериев оценки для оценки каждого сгенерированного расписания.Затем дайте ему (сгенерированным графикам) развиваться из поколения в поколение, пока он не станет для вас оптимальным.

0 голосов
/ 15 сентября 2010

Вы можете проверить программное обеспечение для управления проектами .Кажется, вам нужно, чтобы он был написан на Java с возможностью изменения кода.Это действительно сужает список, но я сделал быстрое сканирование и вижу по крайней мере 2 из них, которые могут помочь (Endeavor и Project.net).

...