2014-10-14 8 views
0

Я пытаюсь очистить бизнес-систему предприятия, которая в настоящее время использует приоритетный алгоритм планирования FIFO (так что отчет о приоритете 4 со вторника будет выполнен до приоритетных 4 отчетов с четверга и отчетов с приоритетом 3 с понедельника). Дополнительная информация:Является ли это разумным вариантом использования optaPlanner?

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

Я думаю, что я мог бы запустить optaPlanner для этого сценария, с жесткими правилами вокруг приоритета и некоторыми мягкими правилами относительно среднего времени в очереди. Я новичок в планировании оптимизации, поэтому, я думаю, мой вопрос заключается в том, что я должен искать в этой ситуации, чтобы решить, поможет ли optaPlanner мне или нет?

ответ

2

Проблема выглядит как форма бин упаковки (и, возможно, работы планирования магазина), которые являются NP-полной, так OptaPlanner будет лучше, чем алгоритм FIFO.

Но действительно ли это NP-complete? Если все эти условия выполнены, это не может быть:

  • Все 40 серверов идентичны. Поэтому запуск отчета о приоритете на сервере A вместо сервера B не будет доставлять отчет быстрее.
  • Все 40 серверов идентичны. Таким образом, общая длительность (для определенного набора входных данных) является постоянной.
  • Всего мастей не имеет значения. Таким образом, учитывая 20 небольших заданий на 1 час и 1 большую работу по 20 часов и 2 машины, отлично, что все небольшие рабочие задания выполняются через 10 часов до начала большой работы с учетом общей продолжительности 30 часов. Нет желания сокращать макияж до 20 часов.
  • «среднее время в очереди» является спорным: вам небезразлично, как долго задания находятся в очереди до их запуска или, пока они не закончатся? Если общая длительность является постоянной, это может быть сделано просто FIFO'ыми небольшими заданиями сначала или последним (при этом, тем не менее, соблюдая приоритет).
  • Зависимости между заданиями отсутствуют.

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

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

+1

Эй! Спасибо за это. Из этих утверждений, makepan один кажется самым ложным, в этом случае 20 часов было бы лучше, и я думаю, что сокращение его значимо сократило бы среднее время в очереди (которое мы измеряем как время, пока их не заберут на работу , не закончен.) – Chris