Job-shop scheduling , job-shop problem ( JSP ) или job-shop scheduling problem ( JSSP ) — это задача оптимизации в информатике и исследовании операций . Это вариант оптимального планирования заданий . В общей задаче планирования заданий нам даны n заданий J 1 , J 2 , ..., J n с различным временем обработки, которые необходимо запланировать на m машинах с различной вычислительной мощностью, при этом пытаясь минимизировать makespan — общую длину расписания (то есть время, когда все задания закончат обработку). В конкретном варианте, известном как job-shop scheduling , каждое задание состоит из набора операций O 1 , O 2 , ..., O n , которые необходимо обработать в определенном порядке (известном как ограничения очередности ). Каждая операция имеет определенную машину , на которой ее необходимо обработать, и только одна операция в задании может быть обработана в заданное время. Распространенным послаблением является гибкий цех, где каждая операция может быть выполнена на любом станке из заданного набора (станки в каждом наборе идентичны).
Название изначально произошло от планирования работ в магазине , но эта тема имеет широкое применение за пределами этого типа экземпляра. Эта задача является одной из самых известных задач комбинаторной оптимизации и первой задачей, для которой был представлен конкурентный анализ , Грэмом в 1966 году. [1] Лучшие примеры задач для базовой модели с целью makespan принадлежат Тайяру. [2]
В стандартной трехполевой нотации для задач оптимального планирования заданий вариант job-shop обозначается J в первом поле. Например, задача, обозначенная " ", представляет собой задачу job-shop с тремя станками и единичным временем обработки, где целью является минимизация максимального времени завершения.
Существует множество вариаций этой проблемы, включая следующие:
Поскольку задача коммивояжера является NP-трудной , задача «Магазин-работа» с последовательно-зависимой настройкой, очевидно, также является NP-трудной, поскольку TSP является частным случаем JSP с одной задачей (города — это машины, а продавец — работа). [ необходима цитата ]
Дизъюнктивный граф [5] является одной из популярных моделей, используемых для описания примеров задач планирования работ в цехе. [6]
Математическая постановка задачи может быть сделана следующим образом:
Пусть и будут двумя конечными множествами . Ввиду промышленного происхождения проблемы называются машинами , а называются рабочими местами .
Пусть обозначает множество всех последовательных назначений работ машинам, так что каждая работа выполняется каждой машиной ровно один раз; элементы могут быть записаны в виде матриц, в столбце которых перечислены работы, которые машина будет выполнять, по порядку. Например, матрица
означает, что машина выполнит три работы в указанном порядке , в то время как машина выполнит работы в указанном порядке .
Предположим также, что есть некоторая функция стоимости . Функция стоимости может быть интерпретирована как «общее время обработки» и может иметь некоторое выражение в терминах времени , стоимости/времени, затрачиваемого машиной на выполнение работы .
Задача «магазина работ» состоит в том, чтобы найти такое распределение работ , при котором является минимумом, то есть не существует такого, что .
Эффективность планирования можно определить через отношение общего времени простоя машины к общему времени обработки, как показано ниже:
Здесь — время простоя машины i , C — время выполнения, а m — количество машин. Обратите внимание, что при указанном выше определении эффективность планирования — это просто время выполнения, нормализованное по количеству машин и общему времени обработки. Это позволяет сравнивать использование ресурсов между экземплярами JSP разного размера. [7]
Одной из первых проблем, с которой необходимо разобраться в JSP, является то, что многие предлагаемые решения имеют бесконечную стоимость: т. е. существует такое, что . На самом деле, довольно просто придумать примеры таких решений , обеспечив тупиковую ситуацию для двух машин , так что каждая из них будет ждать вывода следующего шага другой.
Грэхем уже представил алгоритм планирования List в 1966 году, который является (2 − 1/ m ) -конкурентным, где m — количество машин. [1] Также было доказано, что планирование List является оптимальным онлайн-алгоритмом для 2 и 3 машин. Алгоритм Коффмана–Грэхема (1972) для заданий одинаковой длины также является оптимальным для двух машин и является (2 − 2/ m ) -конкурентным. [8] [9] В 1992 году Бартал, Фиат, Карлофф и Вохра представили алгоритм, который является 1,986-конкурентным. [10] Алгоритм, который является 1,945-конкурентным, был представлен Каргером, Филлипсом и Торнгом в 1994 году. [11] В 1992 году Альберс представил другой алгоритм, который является 1,923-конкурентным. [12] В настоящее время наиболее известным результатом является алгоритм, предложенный Флейшером и Валем, который достигает конкурентного коэффициента 1,9201. [13]
Нижняя граница 1,852 была представлена Альберсом. [14] Примеры Тайяра играют важную роль в разработке планирования работ в цехе с целью makespan.
В 1976 году Гэри предоставил доказательство [15] , что эта задача является NP-полной для m>2, то есть оптимальное решение не может быть вычислено за детерминированное полиномиальное время для трех или более машин (если только P=NP ).
В 2011 году Синь Чен и др. представили оптимальные алгоритмы для онлайн-планирования на двух связанных машинах [16], улучшив предыдущие результаты. [17]
Простейшая форма проблемы минимизации офлайн makespan имеет дело с атомарными заданиями, то есть заданиями, которые не подразделяются на несколько операций. Это эквивалентно упаковке ряда элементов различных размеров в фиксированное количество контейнеров, так что максимальный необходимый размер контейнера будет как можно меньше. (Если вместо этого число контейнеров должно быть минимизировано, а размер контейнера фиксирован, проблема становится другой проблемой, известной как задача упаковки контейнеров .)
Дорит С. Хохбаум и Дэвид Шмойс представили в 1987 году схему аппроксимации с полиномиальным временем , которая находит приближенное решение задачи минимизации времени выполнения в автономном режиме с атомарными заданиями с любой желаемой степенью точности. [18]
Основная форма задачи планирования заданий с несколькими (M) операциями, на M машинах, так что все первые операции должны быть выполнены на первой машине, все вторые операции на второй и т. д., и одна работа не может быть выполнена параллельно, известна как задача планирования flow-shop . Существуют различные алгоритмы, включая генетические алгоритмы . [19]
Эвристический алгоритм SM Johnson может быть использован для решения задачи с двумя машинами N, когда все работы должны быть обработаны в одном и том же порядке. [20] Шаги алгоритма следующие:
Работа P i состоит из двух операций длительностью P i1 , P i2 , которые должны быть выполнены на станке M1, M2 в указанной последовательности.
Если минимум принадлежит P k1 ,
Удалить K из списка A; Добавить K в конец списка L1.
Если минимум принадлежит P k2 ,
Удалить K из списка A; Добавить K в начало списка L2.
Метод Джонсона работает оптимально только для двух машин. Однако, поскольку он оптимален и прост в вычислении, некоторые исследователи пытались адаптировать его для M машин ( M > 2.)
Идея заключается в следующем: представьте, что каждая работа требует m операций в последовательности на M1, M2 … Mm. Мы объединяем первые m /2 станков в (воображаемый) обрабатывающий центр MC1, а оставшиеся станки в обрабатывающий центр MC2. Тогда общее время обработки для работы P на MC1 = сумма (времена операций на первых m /2 станках), а время обработки для работы P на MC2 = сумма (времена операций на последних m /2 станках).
Сделав это, мы свели задачу m-Machine к задаче планирования двух обрабатывающих центров. Мы можем решить ее с помощью метода Джонсона.
Машинное обучение недавно использовалось для прогнозирования оптимального периода выполнения экземпляра JSP без фактического создания оптимального расписания. [7] Предварительные результаты показывают точность около 80%, когда контролируемые методы машинного обучения применялись для классификации небольших случайно сгенерированных экземпляров JSP на основе их оптимальной эффективности планирования по сравнению со средним значением.
Вот пример задачи планирования работ по цеху, сформулированной в AMPL как задача программирования со смешанным целым числом и ограничениями по индикаторам:
параметр N_JOBS ; параметр N_MACHINES ; установить упорядоченные ЗАДАНИЯ = 1 .. N_ЗАДАНИЙ ; установить упорядоченные МАШИНЫ = 1 .. N_МАШИН ; параметр ProcessingTime { ЗАДАНИЯ , МАШИНЫ } > 0 ; параметр CumulativeTime { i в JOBS , j в MACHINES } = sum { jj в MACHINES : ord ( jj ) <= ord ( j )} ProcessingTime [ i , jj ]; параметр TimeOffset { i1 в JOBS , i2 в JOBS : i1 <> i2 } = max { j в MACHINES } ( CumulativeTime [ i1 , j ] - CumulativeTime [ i2 , j ] + ProcessingTime [ i2 , j ]); вар конец >= 0 ; вар старт { РАБОТЫ } >= 0 ; var предшествует { i1 в JOBS , i2 в JOBS : ord ( i1 ) < ord ( i2 )} двоичный ; минимизировать makespan : конец ; subj для makespan_def { i в JOBS }: end >= start [ i ] + sum { j в MACHINES } ProcessingTime [ i , j ]; subj к no12_conflict { i1 в JOBS , i2 в JOBS : ord ( i1 ) < ord ( i2 )}: предшествует [ i1 , i2 ] ==> start [ i2 ] >= start [ i1 ] + TimeOffset [ i1 , i2 ]; subj к no21_conflict { i1 в JOBS , i2 в JOBS : ord ( i1 ) < ord ( i2 )}: ! предшествует [ i1 , i2 ] ==> start [ i1 ] >= start [ i2 ] + TimeOffset [ i2 , i1 ]; данные ;параметр N_JOBS : = 4 ; параметр N_MACHINES : = 4 ; параметр ProcessingTime : 1 2 3 4 : = 1 5 4 2 1 2 8 3 6 2 3 9 7 2 3 4 3 1 5 8 ;