УПРАВЛЕНИЕ, ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА И ИНФОРМАТИКА • МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ...
УДК 519.87
Э. И. ХАСАНОВА, Р. С. ВАЛЕЕВ
МАТРИЧНЫЙ СПОСОБ ДЕКОМПОЗИЦИИ МНОГОСВЯЗНОГО ПОЛИГОНА НА МНОЖЕСТВО ПРЯМОУГОЛЬНЫХ ОБЛАСТЕЙ МИНИМАЛЬНОЙ МОЩНОСТИ
Рассматривается задача декомпозиции многосвязных ортогональных полигонов на множество прямоугольных областей минимальной мощности, к которой сводятся многие задачи оптимального размещения и покрытия в областях сложной структуры. В данной постановке размеры сторон боксов произвольные и их перекрытие запрещено. Задача является ОТ-трудной и для конструирования декомпозиции предлагается эвристический метод, основанный на матричном способе разделения полигона на прямоугольные области. Оптимальное решение предлагается искать на базе эволюционного алгоритма. Дискретная оптимизация; декомпозиция; полигон; размещение прямоугольников; покрытие многоугольника; эволюционные метаэвристики
ВВЕДЕНИЕ
Объектом исследования является многосвязный ортогональный полигон (МОП). Под многосвязным понимается полигон, в котором содержатся односвязные многоугольники. МОП можно интерпретировать как полигон с уже размещенными в нем предметами многоугольной формы или здания, технические объекты и устройства. Требуется расположить прямоугольные предметы в незанятой части полигона. Необходимо покрыть ортогональный многосвязный многоугольник наименьшим числом произвольных прямоугольников. Размеры прямоугольников определяются алгоритмически, исходя из условия непересечения прямоугольника с МОП. При этом прямоугольники не могут перекрываться. Задачу можно интерпретировать как разделение полигона на прямоугольные области, предназначенные для размещения в них предметов, определения последовательности заполнения прямоугольных областей, путей подходов к ним и т. д. Данная статья посвящена решению задачи разделения исходного МОП на области прямоугольной формы.
На практике с такой проблемой зачастую сталкиваются при проектировании складских помещений, размещении грузов в транспортных средствах. Так, при проектировании складского помещения необходимо спроектировать адресную систему склада, т. е. систему адреса-
ции хранения и расположения складских зон приема, хранения, комплектации и отгрузки. Существует две системы адресации: динамического хранения и статистического. При использовании динамической системы хранения за конкретным товаром не закрепляется определенная область склада, и товар располагается на любом свободном пронумерованном месте хранения. При статистическом хранении за каждой товарной группой закрепляется определенная область склада. Возможно также одновременное использование обеих систем адресации. При этом пространство, выделенное под склад, как правило, имеет различные конструкции, перегородки или колонны, которые в общем случае можно рассматривать как препятствия. Для упрощения задачи предполагается, что все они являются ортогональными многоугольниками. Необходимо разделить складское помещение на прямоугольные области, не содержащие препятствий, которые в дальнейшем могут быть использованы для хранения различных предметов. С целью обеспечения удобства доступа и разгрузки предполагается, что границы должны быть сквозными.
Аналогичная постановка рассматривалась в [3, 4], в статье оригинальный алгоритм, он основан на использовании матриц. Исходная область разбивается на ячейки, которым соответствуют элементы матрицы. Пустые ячейки объединяются в прямоугольные области. В алгоритме используются идеи мультиметодной [1] и уровневой технологии [2].
Контактная информация: (347) 273-77-35
1. ПОСТАНОВКА ЗАДАЧИ
Изначально имеется многосвязный ортогональный полигон, пример такого полигона представлен на рис. 1, а. Опишем вокруг МОП прямоугольник. Многоугольные области, не вошедшие в полигон, но являющиеся частью описанного прямоугольника, представим как препятствия. Далее разделим многоугольные препятствия сквозными линиями таким образом, чтобы они разбились на прямоугольники (рис. 1, б). Это можно сделать несколькими способами, но поскольку по условию задачи препятствия являются односвязными (т. е. внутри них не могут размещаться другие предметы), то линии внутри них фиктивные, и как именно будет проводиться разбиение внутри препятствий, не имеет значения. В результате математическая постановка задачи может быть записана следующим образом.
а б
Рис. 1. Пример многосвязного ортогонального
полигона: а - в исходном виде; б - в виде прямоугольника с препятствиями
Дана прямоугольная область заданной ширины Ж и длины Ь, а также набор прямоугольных препятствий заданных размеров, , і = 1, т , где Ц - количество препятствий, юу, Х - длина и ширина у-го препятствия. Введем прямоугольную систему координат: оси Ох и Оу совпадают соответственно с нижней и боковой сторонами области. Положение каждого препятствия Бу задается координатами (%у, п) его левого нижнего угла. Размещение препятствий в области является допустимым, т. е. выполняются следующие условия:
а° Ребра препятствий параллельны ребрам области:
(РС =1п)А (РЛ =®п), п= 1, т,
и и
где рС, рЛ - проекции препятствия V на оси координат Ох и Оу.
Р° Взаимное непересечение препятствий: "П*к: V, к = 1,...т,
((С ^Ск+Лк) V(%к +ЛпЖ
V((Л ^Лк+“к)V(Лк +«п)).
Y° Непересечение препятствий с гранями области: Vv = 1, , m,
(Xv > 0) a (hv > 0) a (hv+Wv £ W) a (Cv+lv £ L)•
Требуется найти множество P = {Pi, P2, ..., Pm) минимальной мощности, состоящее из прямоугольников P¡ = <xu yi ,wi, li>, где (xi, yi) - координаты нижнего левого угла прямоугольника, wi - его ширина, а li - длина, удовлетворяющих следующим условиям:
1° Ребра прямоугольников параллельны ребрам области:
(РХ = h) А (РУ = wi X i =1m,
где рХ, py - проекции прямоугольника i на оси
координат Ox и Oy.
2° Взаимное неперекрытие прямоугольников: Vi Ф j: i, j = 1, _ m ,
((xi >xj +lj) v(xj >x +1г ))ú
v((y > yj + Wj ) v(yj > Уг + Wj)).
3° Неперкрытие прямоугольников с гранями области: Vi=1,_,m,
(xi > 0) А (y > 0) А (Уу + W £ W) А (xi + li £ L) •
4° Непересечение пряугольников с препятствиями:
Vi,v :i = 1,_m;v = 1,...|i,
((xi >Cv+1v ) v (Cv > xi + lr)) v
v ((yf >hv+Wv ) v (hv > Уг + Wi ))•
5° Условие гильотинности:
для любого прямоугольника P с размерами (w, l), w Ф wi v l Ф li, i = 1, m , выполняется условие разделения на два прямоугольника P'(w', Г) и P” (w'', l") таких, что
((W = W = w) a (Г+Г=l)) v ((w + W = w) a (Г=í=l)) и V i = 1, m ,
если Pi e P', то Pi ¿P" ,
и если Pi e P'', то Pi <£ P'.
6° Прямоугольники должны полностью покрывать МОП:
m m
Z w1l1 = W • L - 2 w v l v
i = 1 v = 1
Задача сквозного разбиения прямоугольной области с препятствиями на прямоугольные области является частным случаем задачи покрытия прямоугольниками МОП. Эта задача получила название Irreducible Covering Problem (ICP). Впервые W. J. Masek доказал, что задача является NP-полной [3]. Позднее J. C. Culberson и R. A. Reckhow свели эту задачу к задаче о выполнимости (3-SAT), чтобы доказать, что
она остается NP-полной даже в случае, если покрываемый полигон является простым (без отверстий) [4]. P. Berman и B. Dasgupta доказали, что если полигон имеет отверстия, задача является NP-трудной [5]. Задача разбиения прямоугольной области с препятствиями на боксы является более сложной, поскольку на прямоугольники дополнительно накладывается условие неперекрытия. Следовательно, она также является NP-трудной. Этим уже оправдана разработка эвристических алгоритмов.
2. МЕТОД ПРЕДСТАВЛЕНИЯ ПРЯМОУГОЛЬНЫХ ОБЛАСТЕЙ БЕЗ ПРЕПЯТСТВИЙ
Представление области с препятствиями в матричном виде.
Через все грани препятствий проведем сквозные линии. Обозначим точки пересечения вертикальных линий с осью Ох: z1,z2,...,z2u, а горизонтальных с осью Oy: и1, u2,..., u2u
(рис. 2). Добавим к множеству z значение 0, к множеству и значения 0 и W, запишем
z = (0, ^ z2,' * *, Z2u ), U = (0, u1, U2,., U2u,W).
Удалим из множеств z и и одинаковые элементы и упорядочим оставшиеся элементы множеств по возрастанию. Полученные таким образом множества обозначим %' (получено из z) и п' (получено из и).
— W
h8 — и 6
h7 - u4(u5_
/ h6 — и 3
h 5 — u 8
h4 — u 2
h3 — и 7
h2 — и 1
— 0
Z z~
Z4 Z5 (z7} Z6 Z 8
^ ^ ^ ^ ^ ^ ^ ^
////// /
V 'У 'У 'У у 'У у у
Л 1 Л2 А 3 А 4 А5 Аб А1 А 8
Рис. 2. Представление области с препятствиями в матричном виде
В результате область с препятствиями оказывается покрытой сетью, каждая ячейка которой либо не содержит препятствий (пустая),
либо является препятствием или частью препятствия (т. е. нет ячеек, в которых одновременно было бы и препятствие, и пустое место).
Обозначим т - количество элементов в множестве %', 0 - количество элементов в множестве п', тогда количество ячеек по горизонтали будет (т - 1), а по вертикали - (0 - 1).
Обозначим каждую ячейку ауо, где g = 1, t-1, с = 1,0-1. Пусть:
ауа = 0, если прямоугольник с параметрами Х = Хп У = Па; l = Xy+1 - ХУ; W = Па+1 - Па является пустым пространством; aYa = 1, если является препятствием.
Область с препятствиями в результате может быть записана в виде матрицы, элементами которой будут нули и единицы.
A=w=
a.
t—1,0-1 у
Для примера на рис. 2 матрица А будет выглядеть следующим образом:
A =
' 0 0 0 0 0 0 0"
0 1 0 0 0 0 0
0 1 0 0 0 1 1
0 0 0 0 0 1 1
0 0 0 0 0 0 0
0 0 0 1 0 0 0
0 0 0 0 0 1 0
V 0 0 0 0 0 0 0 у
Для того чтобы выделить прямоугольные области без препятствий из исходной области, будем объединять пустые смежные ячейки. При этом под «смежной» понимается ячейка, имеющая значение индекса на 1 больше, чем у исходной.
Выбор исходной ячейки. Прежде всего необходимо выбрать исходную ячейку. Начнем рассмотрение с левой нижней ячейки исходной области (т. е. у = 1, а = 1). Если ауа = 0, то она принимается за исходную ячейку, в противном случае увеличиваем значение у на единицу и продолжаем поиск. Если ни одна из ячеек столбца а не была выбрана в качестве исходной, то переходим к соседнему столбцу (т. е. принимаем а = а + 1, у = 1) и продолжаем поиск.
Пусть в качестве исходной ячейки была выбрана аУф. Теперь необходимо определиться с направлением объединения.
a
a
11
a
a
a
2.0—1
a
a
t—1.1
t—1.2
Z
3
Выбор направления объединения. Можно выделить 3 направления объединения: вертикальное, горизонтальное, диагональное.
азі а32 азз а34
а21 а22 а23 а24
аіі аі2 аіз аі4
азі аз2 азз аз4
а2і а22 а2з а24
аіі аі2 аіз аі4
а б
азі аз2 азз аз4
а2і а22 а2з а24
аіі аі2 аіз аі4
в
Рис. 3. Способы объединения ячеек: а - вертикальное, б - горизонтальное, в - диагональное
При вертикальном способе в качестве яче-ек-кандидатов на объединение рассматриваются только смежные ячейки из того же столбца, что и исходная ячейка (рис. 3, а). При горизонтальном - только смежные ячейки из той же строки (рис. 3, б). При диагональном способе объединение идет как по строкам, так и по столбцам (рис. 3, в).
В зависимости от параметров препятствий и их расположения описанные способы могут давать различные результаты. Можно использовать разнообразные критерии выбора направления объединения, в частности здесь применима мультиметодная технология [1].
Объединение пустых ячеек. Очевидно, что горизонтальный и вертикальный способы объединения являются частными случаями диагонального, поэтому далее в статье будем рассматривать общий случай - диагональный способ. Будем характеризовать выделяемую область в матричном виде индексами угловых ячеек ф, у, Ф, ¥, как это показано на рис. 4.
Y
V
Рис. 4. Индексы угловых ячеек выделяемой области в матричном виде
До начала объединения в качестве прямоугольной области без препятствий принимается исходная ячейка, т. е. у = у = ¥, о = ф = Ф. Бу-
а¥ф а¥Ф
ауф ауФ
Ф Ф
дем по очереди присоединять к исходной ячейке смежные сверху и справа.
Объединение вправо:
если ау,Ф+1 = 0 для всех g = y, Y, то присоединяем ячейки ауФ+1 (g = y, Y) к пустой области, т. е. Ф = Ф + 1;
если ау,Ф+1 = 1 для любого из g = y, Y, то объединение вправо прекращается, значение Ф больше не меняется.
Объединение вверх:
если а¥+1о = 0 для всех а = j, Ф , то присоединяем ячейки а¥+1о (а = ф, Ф) к пустой области, т. е. Y = Y + 1;
если aY+1o = 1 для любого из a = j, Ф, то объединение вправо прекращается, значение Y больше не меняется.
Диагональное построение области прекращается, если оба вида объединения становятся невозможны.
Если объединение невозможно из-за препятствия, но верхняя граница еще не достигнута, ищем следующую исходную ячейку ауо, g = Y +1,t-1,a = j. После того как найдена очередная исходная ячейка, снова ищутся смежные и происходит объединение.
Описанный процесс продолжается до тех пор, пока не будет достигнута верхняя граница области с препятствиями.
«Уровневое» выделение пустых прямоугольных областей. Пусть в ходе предыдущих шагов было выделено несколько прямоугольных областей без препятствий и достигнута верхняя граница области с препятствиями (области 1 и 2 на рис. 5, а). Через правую границу области наибольшей длины проведем условный сквозной рез и продолжим выделение областей без препятствий из области справа от реза. Тогда, по аналогии с уровневой технологией, предложенной Martello и Vigo [2], исходная область с препятствиями окажется разделенной на прямоугольные уровни (рис. 5, а).
При выделении прямоугольников без препятствий в уровнях остаются «боковые пустоты», которые целесообразно использовать [6]. Будем называть их остатками. По сути, они являются областями, аналогичными заданной изначально области с препятствиями. Поэтому для остатков рекурсивно применяется метод матричного выделения областей без препятствий.
5 7 ...
2
4
... 1 3
а
3 _L 1
5 7
1
1
4
б
Рис. 5. Результат уровневого выделения областей без препятствий: а - области без препятствий; б - остатки
Работа алгоритма продолжается до тех пор, пока не останется пустых ячеек, не задействованных ни в одной области без препятствий. Приведенный алгоритм программно реализован и проведены тестовые расчеты. Эффективность алгоритма зависит от направления объединения ячеек матрицы. Что касается оптимизации, то она может быть реализована с помощью метаэвристики, в которой приведенный матричный алгоритм используется как декодер.
ЗАКЛЮЧЕНИЕ
В статье рассмотрен алгоритм сквозного выделения прямоугольных боксов из многосвязного ортогонального полигона. Метод основан на представлении исходной области в виде матрицы и использует идеи мультиме-тодной и уровневой технологий. Выделение прямоугольных областей - лишь один из этапов при решении многоэтапных задач размещения. Например, следующий этап - размещение прямоугольных объектов внутри прямоугольной области - был приведен ранее в статье [6].
В статье не рассматривается задача определения наилучшей последовательности заполнения прямоугольных областей и обеспечения доступа к ним. Дальнейшее развитие методики предполагает включение и этих подзадач.
Приведенный алгоритм программно реализован и проведены тестовые расчеты. Эффективность алгоритма зависит от направления объединения ячеек матрицы. Что касается оптимизации, то она может быть реализована с помощью метаэвристики, в которой приведенный матричный алгоритм используется как декодер. Наиболее подходящей является эволюционная метаэвристика: генетический алгоритм, алгоритм имитации отжига. Результаты исследования этих алгоритмов будут приведены в следующей статье.
СПИСОК ЛИТЕРАТУРЫ
1. Норенков И. П. Эвристики и их комбинации в генетических методах дискретной оптимизации // Информационные технологии. 1999. № 1. С. 2-7.
2. Lodi A., Martello S., Vigo D. Recent advances on two-dimensional bin packing problems // Discrete Applied Mathematics. 2002. 123. P. 379-396
3. Masek W. J. Some NP-Complete Set Covering Problems: Manuscript. MIT, 1979.
4. Culberson J. C., Reckhow R. A. Covering Polygons is Hard // Journal of Algorithms. 1994. 17. P. 2-44.
5. Berman P., Dasgupta B. Approximating Rectilinear Polygon Cover Problems // Algorithmica. 1997. 17(4). P. 331-356.
6. Мухачева Э. А., Хасанова Э. И. Гильотинное размещение контейнеров в полосе: комбинирование эвристических технологий // Информационные технологии. 2009. № 11. С. 8-14
ОБ АВТОРАХ
Хасанова Элина Ильдаровна,
аспирант каф. математики. Ди-пл. эконом.-математик (УГАТУ, 2007). Иссл. в обл. задач раскроя, упаковки и размещения.
Валеев Руслан Сагитович, аспирант той же каф. Дипл. ма-тем.-программист (УГАТУ,
2008). Иссл. в обл. задач раскроя, упаковки и размещения.