Алгоритм решения задачи минимизации циклического времени при одновременной обработке не более двух деталей

МАТЕМАТИКА

Вестн. Ом. ун-та. 2013. № 4. С. 41-46. УДК 519.8

М.А. Межецкая, В.В. Сервах

АЛГОРИТМ РЕШЕНИЯ ЗАДАЧИ МИНИМИЗАЦИИ ЦИКЛИЧЕСКОГО ВРЕМЕНИ ПРИ ОДНОВРЕМЕННОЙ ОБРАБОТКЕ НЕ БОЛЕЕ ДВУХ ДЕТАЛЕЙ

Рассматривается задача минимизации циклического времени обработки партии однотипных деталей. Если число деталей, одновременно находящихся на производственной линии, ограничено константой, то задача является КР-трудной в сильном смысле. Предлагается алгоритм решения задачи в случае, когда число одновременно обрабатываемых деталей не превосходит двух. Выделен полиномиально разрешимый случай.

Ключевые слова: теория расписаний, циклические расписания.

Введение

На производстве часто приходится решать задачи оптимизации выпуска партии однотипных деталей. Большие партии деталей обычно обрабатываются на конвейерной линии. Задача построения расписаний для конвейера является достаточно простой. Однако в последнее время постоянно меняющаяся номенклатура изделий требует гибкой перенастройки производственной линии, что достигается за счет использования дорогостоящего универсального оборудования. Это приводит к тому, что на одних и тех же машинах выполняются различные операции и возникают задачи обработки деталей со сложным технологическим маршрутом.

При обработке однотипных деталей удобно использовать циклические расписания. С одной стороны, циклические расписания позволяют минимизировать издержки, связанные с простоем производственной линии, а с другой - получать готовые обработанные детали с определенной периодичностью, называемой длиной цикла. Сложность задач построения циклических расписаний изучалась в [1-3]. В [4] доказана МР-трудность в сильном смысле задачи минимизации циклического времени при ограниченном числе деталей на линии. Задача выпуска большого числа однотипных деталей исследовалась также в [5-13].

В настоящей работе в случае, когда одновременно в процессе обработки могут находиться не более двух деталей, построен алгоритм псевдополиномиальной трудоемкости. Доказана полиномиальная разрешимость задачи при условии, что к концу цикла нет незавершенных операций, предложен соответствующий алгоритм.

Постановка задачи

На производственной линии, состоящей из т различных машин М1,М2,...,Мт , необходимо обработать партию из N однотипных деталей. Обработка детали заключается в последовательном выполнении п операций 01,02,...,Оп . Операция выполняется на машине с номером

в течение р) единиц времени, _/ = 1,2...,п . Машины в технологическом маршруте могут повторяться. Прерывания операций запрещены. Одновременное выполнение двух и более операций на одной машине не допускается.

Обозначим через время начала выполнения операции О) детали к. Расписание } называется циклическим, если для любого

© М.А. Межецкая, В.В. Сервах, 2013

] = 1,2,...,п и для любого к = 1,2,...,N выполняется соотношение = Sj1 + (к - 1)С , где

С - длина цикла или циклическое время. Циклические расписания определяются величинами = SJ, ] = 1,2,...,п и играют

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

Задача построения расписания с минимальной длиной цикла полиномиально разрешима [14]. Минимальное время цикла С есть сумма времени выполнения операций на самой загруженной машине. Хотя циклическое расписание с минимальным временем цикла и обеспечивает наибольшую производительность линии, с точки зрения производства его применение не всегда рентабельно. Поскольку максимальная загрузка машин обеспечивается за счет того, что в обработке находится одновременно много деталей, как следствие, возникают простои между операциями. Это требует транспортировки и хранения незавершенных деталей, большего количества оборотных ресурсов.

Таким образом, решая задачу максимизации производительности линии при обработке партии однотипных деталей, приходится учитывать множество самых различных факторов. Наряду со временем цикла С, важной характеристикой является величина к - максимальное число одновременно обрабатываемых деталей. При этом считаем, что деталь находится в обработке, если выполнение ее операций уже началось, но последняя операция еще не завершена. Характеристика к становится важной, когда на производственной линии недостаточно позиций для хранения незавершенных деталей либо затраты на промежуточное хранение и транспортировку велики. Примером производственной линии с таким ограничением является производство самолетов, когда количество позиций для сборки ограничено. Другим примером может служить химическая обработка деталей. Деталь крепится на оснастку и последовательно опускается в различные резервуары. Количество одновременно обрабатываемых деталей ограничено числом оснасток, которое фиксировано. В [15] предлагается алгоритм решения задачи минимизации времени цикла при условии, что максимальное количество деталей, одновременно находящихся в обработке, не превосходит величины Н. Его трудоемкость составляет 0(Р2н-1) , где Р - суммарная длительность операций одной детали.

В данной работе исследуется случай, когда в обработке может находиться не более двух деталей. Рассматриваются две постановки. В первой из них требуется, чтобы к

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

Опишем подход к решению задачи при H = 2 , когда к концу цикла нет незавершенных операций. В каждом цикле обязательно должны выполняться все операции, возможно разных деталей. Так как H = 2 , то эти операции могут принадлежать только двум деталям. Если в одном цикле выполняются операции i и j одной детали, то в этом же цикле выполняются операции i +1, i + 2, ..., j -1 этой же детали. Но тогда последовательность операций разбивается на две цепи: в первой операции - 1,2,...,к , а во второй - к +1,...,п . И операции этих двух цепей необходимо выполнить за минимально возможное время, которое и будет определять длину цикла. Такая задача известна в литературе как Job-Shop и обозначается

= 2| Cmax . Для решения исходной задачи необходимо перебрать n возможных вариантов компоновки цепей, для каждой из них решить задачу Job-Shop и из полученных значений выбрать минимум.

Подход к решению

Разобьем последовательность операций на две цепи: 0l,01,...,Ок и Ок+иOk+1,...,Оп, и для решения полученной задачи Job-Shop воспользуемся геометрической интерпретацией, предложенной в [16; 17]. На координатной плоскости, начиная с нуля, вдоль оси абсцисс будем откладывать длительности операций первой последовательности, а на оси ординат - длительности операций второй последовательности. Начало координат отвечает состоянию, когда ни одна операция еще не начата, а точка с координатами (S1 Д) = (Pi + Р2 + ... + РК, PK+i + ... + Pn ) - состоянию, когда все операции обеих последовательностей завершены. Процесс выполнения операций отображается некоторой ломаной линией между точками (0,0) и (S1 ,S2) .

Прямолинейные участки ломаной могут иметь наклон к оси абсцисс под углом 0, 45 или 90 градусов. Горизонтальные участки соответствуют простою операций второй последовательности и выполнению операций первой. Вертикальные участки соответствуют выполнению операций второй последовательности и простою операций первой. И наконец, участки, проведенные под углом 45°, соответствуют одновременному выполнению операций обеих последовательностей. Длину наклонного участка меж-

ду точками (x,y) и (x +t, y +1) полагаем равной t. В силу непрерывности выполнения операций перегибы ломаной могут происходить только в момент завершения выполнения некоторой операции. При этом путь не должен проходить через недопустимые области, соответствующие одновременному выполнению двух операций на одной машине. На первой части рис. 1 недопустимые области заштрихованы. Необходимо найти кратчайший путь из точки (0,0) в

точку (S,S2) .

Для задачи Job-Shop с двумя деталями в [16; 18] предложены полиномиальные алгоритмы решения. Используем идею алгоритма из [16]. Если луч, выходящий из точки (0,0) под углом 45°, не пересекает недопустимых областей, то раннее расписание выполнения операций будет оптимальным. Если пересекает, то необходимо обойти недопустимую область. Возможны два варианта обхода. Один обход приводит к левому верхнему углу недопустимой области, а второй - к правому нижнему углу. Далее каждый из вариантов может тоже ветвиться. Таким образом, для решения задачи первоначально из точки с координатами (0,0), а в дальнейшем из некоторой точки (x, y) проводим прямую

под углом 45° к обеим осям до пересечения с недопустимой областью или границей параллелепипеда {(x, y)| 0 < x < Sj ,0 < y < S2}. Если пересечение произошло с недопустимой областью, то каждый раз ветвимся по указанному правилу.

Построим вспомогательный ориентированный граф. Точки в левом верхнем и правом нижнем углах каждой недопустимой области, а также точки (0,0) и (Sj, S2) предлагается взять в качестве узловых и lkz каждой из них сопоставить вершину ориентированного взвешенного графа. Дуги в графе из помеченной вершины необходимо провести до вершины (Sj, S2) , если луч, выходящий из соответствующей точки, не пересекает недопустимых областей, в противном случае проводим две дуги. Рассмотрим следующий пример: N123456789 10 Mj M1 M2 M3 M4 M3 M1 M3 M2 M4 M1 Pj 4232264334 и разбиение на цепи (M1, M2, M3, M4, M3, M1) и (M3, M2, M4, M1). На рис. 1 выделены недопустимые области, соответствующие одновременному выполнению операций на одной машине. Точки, через которые может пройти путь, пронумерованы. На рис. 2 изображен соответствующий граф.

Рис. 1. Графическая интерпретация задачи для фиксированного разреза

Решение вспомогательной задачи

Для построения графа возможных путей в [16] рассматривается следующая вспомогательная двумерная задача: в параллелепипеде {(х,у)\ 0 < х < 5,0 < у < 52} имеется Ь недопустимых областей (г,, ) , заданных

номерами операций цепей. Обозначим через

1-1 к+]-1

Яу, =Е Рь и 52,Л =Е Рь ранние времена

Н=1 Н=к+1

начала работ г и _/ первой и второй цепи соответственно. Тогда область (г,, ) является прямоугольником вида

{(х у) \ < х < +1 +1;^ < у < Я2,Л+1}.

Вне этих областей задано К узловых точек (хк, ук) . Необходимо для каждого к = 1,2,...,К определить номер ближайшей недопустимой области I(хк, ук) , с которым пересечется луч, проведенный из точки (хк, ук) под равными углами к обеим осям. При отсутствии пересечений луча с недопустимыми областями будем полагать

1 (хк, ук ) = 0 .

Пусть с, = ^ - Я2,л +1, = Я1, . +1 - Я2, л, I = 1,2,...,Ь , гк = хк - ук, к = 1,2,...,К . Для фиксированного к выполнение условий

С, < гк < ,

хк < 51, ,+l, ук < 52,л+1

означает, что луч, проведенный из точки (хк, ук) под равными углами к обеим осям,

пересекает недопустимую область с номером 1. Таких областей может быть несколько. Необходимо выбрать ту из них, для которой пара (г1, Л) лексикографически минимальна.

Перенумеруем области в порядке лексикографического возрастания пар (г1, Л) , пусть ¡0 = ¡0(хк,ук) - минимальный номер области, удовлетворяющий условиям

хк < ^ я+1 и Ук < В 2, Л +1 . Введем булевую функцию в(1) , I = 1,2,...,Ь . Полагаем в(1) = 1, если недопустимая область с номером I удовлетворяет условию (2), и в(1) = 0 - в противном случае. Требуется найти мини-

7* 7* 7

мальное значение I , для которого I < 10 и в(1) = 1. Это можно сделать за

0 (1о^2 Ь) шагов, если предварительно известны суммарные значения функции в для пар индексов, четверок, восьмерок и т. д. Построим полное бинарное дерево высоты

Н = |~1о§2 Ь"| + 1 . Оно содержит 2н -1 вершин. Перенумеруем 2Н -1 листьев этого дерева слева направо и листу I = 1,2,...,Ь поставим в соответствие значение в(1) . При

1 = Ь +1,Ь + 2,...,2Ндоопределим в(1) = 0 . Для остальных вершин дерева полагаем

в(1) = в(1') + в(1") , где I' и V - сыновья вершины I.

*

Поиск оптимума I начинаем с листа 10 . При в(1) = 1 имеем I* = 10. Пусть в(1) = 0 . Последовательность вершин дерева 10,11,..., ¡п,..., 1п0+1 определим индуктивно. Если ¡п-1 левый сын, то ¡п - непосредственный предок вершины ¡п-1. Если ¡п-1 правый сын, то ¡п - правый сосед вершины ¡п-1. Значение П0 найдем из двух условий:

1) в(^) = в(А) = ... = в(п) = 0 ;

2) в(\щ+,) > 0 или ¡П0+1 не определена. Вершина ¡п0+1 не определена, если

в(}) = 0 для всех ¡ е {¡0,¡0 +1,...,Ь}, т. е. соответствующий луч ни одной области не пересекает. Полагаем ¡(хк, ук ) = 0 .

Пусть в(}+() > 0 . Тогда дерево с корнем ¡П0+( содержит листья с ненулевой характеристической функцией. Необходимо найти самый левый из них. На очередном шаге перейдем в корень левого поддерева вершины ¡п0, если в нем функция в имеет

ненулевое значение. В противном случае переходим в корень правого поддерева. Из вновь определенной вершины переход на следующий уровень осуществляем анало-

гично. Процедура завершает работу при достижении уровня H. Тем самым будет определено значение l , для которого 9(l0) = в(10 +1) =... = 9(l * -1) = 0 и 9(l *) = 1 .

Тогда l(xk, xk ) = l*.

Теперь опишем алгоритм построения графа возможных путей. Первоначально для всех вершин 3 дерева полагаем 9(3) = 0 . Найдем перестановку (l1, l2,..., lL) такую, что (ih, j) ^ (il2, j) ^... ^ (iL, J'iL ) . Числа {Zi,z2,...,zK, Ci,c2,...,Cl, dl,d2,...,dL} будем рассматривать в порядке неубывания. Возможны следующие случаи:

1. Очередным числом является с1 . Тогда для листа 3 такого, что l3 = l, полагаем 9(3) = 1, а для всех его предков значение функции 9 увеличиваем на единицу.

2. Очередным числом является dl . В этом случае для листа 3 такого, что l3= l, полагаем 9(3) = 0 , а для всех его предков значение функции 9 уменьшаем на единицу.

3. Очередным числом является zk . Методом дихотомии находим наименьшее 3 такое, что для области с номером l = l3 выполнено xk < SUl +1 , yk < S2Jl +1, и применяем описанную выше процедуру поиска l (xk, yk ) по построенному дереву. Если 3 не определено, то l (xk, yk ) = 0 .

Трудоемкость однократного обращения к каждому из пунктов 1-3 не превосходит O(log2 L) операций, а общее число обращений равно K + 2L . Предварительное упорядочивание требует Klog2 K + 3L log2 L операций. Таким образом, трудоемкость решения вспомогательной задачи для K узловых точек и L недопустимых областей составляет O(K log2 K + L log2 L + K log2 L).

Алгоритм решения задачи

При формирования графа в качестве узловых рассмотрим 2L + 2 точки (0,0),

(S1, S2) и по две точки (S\+1, Sl) и (S1, S)l+1) каждой недопустимой области l = 1,2,...,L . Установим соответствие между этими точками и 2 L + 2 вершинами графа: (0,0) 1,

S+1,S2) -2l, $,Sjj-2l+1, (S1,S2)-2L+2.

Пусть (xk, yk) - координаты узловой точки с номером k . Для каждого k = 1,2,...,2L +1 находим l(xk, yk ) . Список дуг сетевого графа формируем следующим образом: если l(xк'Ук) = 0, то вводим дугу (k,2L + 2). При l(xk,yk) = l > 0 вводим дуги (k, 2l) и (k, 2l +1).

Вес дуги, которая отвечает участку пути от точки (x' , у') до точки (x",y") , полагаем равным max{x " - x', у" - у'} .

Теперь вернемся к алгоритму решения задачи в случае, когда к концу цикла нет незавершенных операций. В качестве узловых, как было сказано выше, рассматриваются точки (0,0) и (S1,S2) , левый верхний и правый нижний угол каждой недопустимой области. Тогда K = 2L + 2 и общая трудоемкость алгоритма построения вспомогательного графа для задачи с двумя последовательностями операций составит O (L log2 L) . Трудоемкость

алгоритма поиска кратчайшего пути в данном графе линейно зависит от числа дуг.

Данный алгоритм необходимо реализовать для каждого из n -1 разрезов между операциями. Для вычисления трудоемкости оценим количество недопустимых областей на каждой итерации. Если на некоторой машине i выполняется ri операций, то максимальное число недопустимых областей, отвечающих этой машине, не превысит

Г /4 , а общее число недопустимых областей

m

L Г-2/4. В итоге верхняя оценка трудо-

i=1

емкости решения задачи составит

m

O(n^Г2 log2 r) . Таким образом, в данном

i=1

случае задача является полиномиально разрешимой.

Теорема 1. Задача минимизации времени цикла при одновременной обработке не более двух деталей при условии, что к концу цикла нет незавершенных операций, полиномиально разрешима за время

m

O(n^r2 log2 r) , где r - число операций,, вы-

i=1

полняемъх на машине Mi.

Алгоритм для общего случая

Теперь рассмотрим общий случай задачи, когда к концу цикла могут быть незавершенные операции. Тогда разрез на две цепи может пройти по операции. При этом в силу того что каждая операция выполняется непрерывно, момент окончания первой части операции должен совпадать с моментом окончания цикла, а вторая часть операции должна начинаться в момент начала цикла. Появляется дополнительное ограничение в задаче Job-Shop, которое необходимо учесть в алгоритме.

Вариантов разреза на две цепи становится бесконечно много. В [15] показано, что для поиска оптимального решения достаточно рассмотреть разрезы только целочисленных либо полуцелочисленных точек отрезка [0,Р]. Для описанного выше приме-

45

ра рассмотрим случай, когда разрез проходит по операции 6. На рис. 3 заштрихованы области, которые соответствуют, как и прежде, одновременному выполнению двух операций на одной машине. Еще один тип недопустимых областей заштрихован на рис. 4. Они возникают только в случае, когда разрез проходит по операции. Эта операция разбивается на две части: О' и 0"к с длительностями р'к и р"к, соответственно. Часть 0'к обязательно должна начинать цикл, а О' - заканчивать его.

S2 Рта

ее в 1*

ps 1

р8 1

Рт § 5 5 nnt • n Si Щ ЖШ

р; в SHit м Ml —»-

«и«***«_____р.

Pi Pi Рз Pi Ps Р'б S,

Рис. 3. Недопустимые области первого типа

Р, Р2 Рз Р4 Р5 Р'б S,

Рис. 4. Недопустимые области второго типа

Алгоритм поиска кратчайшего пути корректируется незначительно. Во-первых, необходимо запретить узловые точки, попадающие в недопустимые зоны второго типа, а во-вторых, пересчитать веса дуг, если участок пути огибает эти области. В остальном реализация аналогична. Иллюстрация для заданного разреза приведена на рис. 5. Узловые точки с номерами 2, 14 и 16 становятся недопустимыми. Изменения также коснулись дуг, выходящих из вершин 10, 12, 13 и 15.

Данный алгоритм необходимо просчитать для 2Р—1 возможных разрезов и выбрать минимальное значение длины цикла. Тем самым трудоемкость предложенного

т

алгоритма составит О(Р^ г21og2 г ) . Это

г=1

существенно улучшает оценку трудоемкости О(Р3) , полученную в [15].

Рис. 5. Пример графа возможных путей при разрезе между операциями

Теорема 2. Задача минимизации времени цикла при одновременной обработке не более двух деталей разрешима за псевдопо-

m

линомиальное время O(P^ r2log2 r), где r -

i= 1

число операций, выполняемых на машине Mt. В частности, если r ограничены константой, то трудоемкость предложенного алгоритма составит O(P) операций.

В завершение работы отметим, что NP-трудность задачи при одновременной обработке не более двух деталей не доказана. Поэтому вопрос о полиномиальной разрешимости общего случая задачи при H = 2 остается открытым.

ЛИТЕРАТУРА

[1] Kamoun H., Sriskandarajan C. The complexity of scheduling jobs in repetitive manufacturing systems // European Journal of Operation Research. 1993. V. 70. P. 350-364.

[2] McCormick S. T, Pinedo M. L, Shenker S., WolfB. Sequencing in an assembly line with

blocking to minimize cycle time // Operation Research. 1989. V. 37. P. 925-935.

[3] Roundy R. Cyclic sdiedules for job shops with identical jobs // Mathematics of Operation Research. 1992. V. 17. № 4. P. 842-865.

[4] Hanen C. Study of NP-hard cyclic scheduling problem: The recurrent job-shop // European Journal of Operation Research. 1994. V. 72. P. 82-101.

[5] Межецкая М. А. Полиномиально разрешимый случай обработки партии однотипных деталей // Под знаком Сигма : тез. докл. IV Всерос. науч. молодеж. конф. Омск, 2007. С. 33-34.

[6] Межецкая М. А. О задаче обработки большой партии однотипных деталей // Проблемы оптимизации и экономические приложения : матер. III Всерос. конф. Омск, 2006. С. 107.

[7] Межецкая М. А. Исследование алгоритмов составления расписаний для задачи с идентичными деталями // Студент и научно-технический прогресс: Математика : матер. XLII Междунар. науч. конф. Новосибирск, 2004. С. 188.

[8] Межецкая М. А. О задаче обработки большой партии однотипных деталей // Студент и научно-технический прогресс: Математика : матер. XLIII Междунар. науч. конф. Новосибирск, 2005. С. 206.

[9] Межецкая М. А., Сервах В. В. О задаче обработки партии однотипных деталей со сложным технологическим маршрутом // Танаевские чтения : докл. III Междунар. науч. конф. Минск, 2007. С. 119-121.

[10] Межецкая М. А., Сервах В. В. О задаче минимизации общего времени выпуска партии однотипных деталей // Методы оптимизации и их приложения : матер. XIV Байкальской междунар. школы-семинара. Иркутск, 2008. С. 468-474.

[11] Межецкая М.А. Задачи выпуска партии однотипных деталей с ограничением на число одновременно обрабатываемых деталей. Препринт. Омск, 2008. 40 с.

[12] Mezhetskaya M., Romanova A. Approximate solution for makespan minimization job shop problem with identical jobs // Operations Research in the Service Industry : abstracts of International Annual Scientific Conference. Saarbrucken : Saarland University, 2007. P. 171.

[13] Boudoukh T., Penn M., Weiss G. Scheduling jobshops with some identical or similar jobs // Journal of Scheduling. 2001. V. 4. P. 177-199.

[14] Brucker P., Kampmeyer T. Tabu search algorithms for cyclic machine scheduling problems. Preprint. Osnabrueck, 2002. 24 p.

[15] Романова А. А., Сервах В. В. Оптимизация выпуска однотипных деталей на основе циклических расписаний // Дискретный анализ и исследование операций. 2008. T. 15. № 5. С. 47-60.

[16] Сервах В. В. О задаче Акерса-Фридмана // Управляемые системы. Новосибирск : ИМСОАН СССР, 1983. Вып. 23. С. 70-81.

[17] Akers S. E. A graphical approach to production scheduling problems // Operation Research, 1956. V. 4. № 2. P. 244-245.

[18] Глебов Н. И. Алгоритм составления расписания для двух работ // Управляемые системы. Новосибирск : ИМСОАН СССР, 1968. Вып. 1. С. 14-20.