Научная статья на тему 'Двухмерная упаковка со связями. 2 часть'

Двухмерная упаковка со связями. 2 часть Текст научной статьи по специальности «Математика»

CC BY
117
28
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Двухмерная упаковка со связями. 2 часть»

5. Hsieh T.M., Leong H.W., Liu C.L., "Two-Dimensional Layout Compaction by Simulated Annealing", in Proc. IEEE International Symposium on Circuits and Systems, June 1988, Espoo, Finland, vol.3, pp. 2439-2443

6. Liao Y.-Z., Wong C.K., "An Algorithm to compaction a VLSI symbolic layout with mixed constraint", IEEE Trans. On CAD of Integrated Circuits and Systems, 1983, vol.CAD-2, no.2, pp.62-69.

УДК 658.512

A.B. Бондалетов ДВУХМЕРНАЯ УПАКОВКА СО СВЯЗЯМИ. 2 ЧАСТЬ

Введение

Целью упаковки со связями является нахождение такого реального размещения, площадь ограничивающего прямоугольника которого будет минимальна [1].

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

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

Наиболее известным и простым методом сжатия уже существующего реального размещения (решения) является последовательное сжатие по каждой оси в отдельности [3], т.е. х-сжатие, а затем у-сжатие или у-сжатие, а затем х-сжатие. Основные недостатки метода в том, что ему нужно дать реальное размещение и метод не меняет структуру размещения, т.е. решение не обязательно будет лучшим.

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

Алгоритм начинает работу с размещения, в котором удовлетворены лишь соединения [1], т.е. не используются ограничения на минимальные дистанции между элементами. Затем, если произошло неразрешенное перекрытие блоков, то алгоритм пытается их «раздвинуть», т.е. поместить один блок над/под/слева/справа от другого.

Для нахождения размещения алгоритм использует граф ограничений [3], который состоит из двух несвязных подграфов: подграф х-ограничений и подграф у-ограничений.

Сделана программа по данному алгоритму на языке Borland C++ Builder 3.0 под операционной системой MS Windows 95, которая имеет удобный интерфейс и наглядное графическое изображение процесса работы алгоритма.

1. Краткая постановка задачи

Исходными данными являются:

5. Конечное множество блоков BLOCKS.

6. Конечное множество соединительных линий (связей) WIRES.

7. Список соединений между связями и блоками CONNECTS.

8. Минимальные расстояния между каждой парой объектов DISTS.

Цель задачи: Найти такое размещение Р, чтобы его площадь size(P) была минимальной;

Более подробная постановка задачи приведена в I части работы [1].

2. Алгоритм нахождения оптимального размещения.

Пусть Е множество ограничений, тогда OptSol(E) будет определять оптимальное размещение (т.е. размещение с минимальной площадью), которое удовлетворяет всем ограничениям в Е.

Очевидно, что Е должно включать все ограничения из BASE (т.к. они все должны быть выполнены) и часть ограничений из DIST (т.к. они все не могут быть одновременно выполнены).

Тогда проектом будем называть множество ограничений Е таких, что BASEcEc^BASEi^DIST.

Е - неразрешимый проект, если Е содержит неразрешимые ограничения (например, х+2^Х и Х+2^х), иначе это разрешимый проект.

Разрешимый проект - реальный проект, если размещение Р = OptSol(E) - реальное.

В данной работе функция OptSol(E) реализована с помощью двух взвешенных ориентированных графов ограничений Gx и Gy, для х-ограничений (Сх) и у-ограничений (Су) соответственно.

Рассмотрим, например граф Gx. Gx = (Vx, Ex), где Vx = xUX., a Ex = {ej | cj e Сх}, где ej ребро из вершины zlj к z2j с весом dj, если Cj = (zlj, z2j, dj).

Тогда V(z) - значение, присваиваемое z e xuX, будет равно весу самой длинной цепи из вершины z. Если в графе обнаруживается цикл с положительным весом, то это говорит о том, что проект Е содержит неразрешимые ограничения.

Приведем процедуру нахождения всех реальных размещений.

AllLegalPlacement(npoeKT Е)

{

Р = OptSol(E)

if (Е - неразрешимый проект) return

else if (Р - реальное)

if(size(P)<size(bestP)) bestP = Р Output(bestP) return

endif

else

(i, j) = элементы, которые перекрываются for k = 1 to |S(i j)|

E = Eo{cky}

call AllLegalPlacement(E)

E = E-{cky}

endfor

endif

endif

Print(bestP)

}

В этой процедуре будут перебраны все реальные размещения и выбрано лучшее bestP.

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

Выполнение данной процедуры можно смоделировать в виде дерева. Корень дерева будет соответствовать размещению OptSol(BASE).

Если размещение OptSol(E) соответствующее вершине нереальное, (т.е. есть элементы i, j, которые перекрываются), то будет рассмотрено 4 поддерева этой вершины, корни которых будут соответствовать

OptSol(E^jclij) (элемент i ставим слева от элемента]),

OptSol(E'^Jc2y) (элемент i ставим справа от элемента j),

OptSol(Euc3|j) (элемент i ставим снизу от элемента]),

OptSoI(Eoc4jj) (элемент i ставим снизу от элемента]).

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

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

Можно значительно уменьшить область поиска алгоритма, используя следующее утверждение:

size(OpsSol(E)) < size(OpsSol(L)), где EeL.

Т.е. если мы нашли разрешимое нереальное размещение Р1, и добавлением дополнительных ограничений мы получим реальное размещение Р2, то площадь Р2 не будет меньше площади нереального Р1. Следовательно при нахождении нереального размещения Р, такого что size(P) >= size(bestP) дальнейшее добавление ограничений (поддеревьев) бессмысленно и нужно переходить к другой вершине дерева.

OptLegalPlacement(npoeKT Е)

{

Р = OptSol(E)

if (Е - неразрешимый проект)

return

else

if(size(P)>=size(bestP))

return

endif

if (P - реальное) beslP = P Output(bestP) return

else

(i, j) = элементы, которые перекрываются for k = 1 to |S(i j)|

E = Ev_j{ckjj}

call OptLegalPlacemen t(E)

E - E-{ckjj}

endfor

endif

endif

Print(bestP)

}

Сложность алгоритма в худшем случае экспоненциальная. Однако отпадает просмотр огромного количества не нужных поддеревьев графа.

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

Ниже показан ход работы алгоритма. В качестве примера выбран пример из 1 части работы [1]. На каждом шаге показано лучшее найденное решение, список ограничений ЕсОІБТ, размер и время в сек. нахождения этого размещения на компьютере Ретіит с процессором Сугіх РЛ200 16МВ.

Шаг 1. Е = (2Х,Зх,2) (ЗХ,4х,2) (ЗХ,5х,2) (ЗУ,7у,1) (4Х,5х,2) (ЮУ,4у,1) (5Х,6х,2) 24X10=240 Тіте=1.37.

Шаг 2. Е = (2Х,Зх,2) (ЗХ,4х,2) (ЗХ,5х,2) (ЗУ,7у, 1) (4Х,5х,2) (10У,4у, 1) (6У,5у,2) 19.5X10=195 Тіте=І .65.

Шаг 3. Е = (2Х,Зх,2) (4Х,Зх,2) (ЗУ,8у, I) (4Х,5х,2) (ЗУ,5у,2) (5Х,6х,2) (8У,5у,1)

20X9=180 Тіте=15.05.

Шаг 4. Е = (2Х,Зх,2) (4У,Зу,2) (1Х,Зх,2) (ЗХ,5х,2) (ЗХ,1 їх, 1) (12У,Зу,1) (ЗУ,14у, 1)

16X11 = 176 Тіте=18.95.

Шаг 5. Е = (2Х,Зх,2) (4У,Зу,2) (1Х,Зх,2) (ЗХ,5х,2) (11х,3х,1) (ЗУ,14у, 1)

15.5X10.5=162.75 Тіте=19.39.

Шаг 6. Лучшее решение. Е = (ЗУ,2у,2) (2Х,1х,2) (6У,5у,2) (7Х,Пх,1)

16X10=160 Тіте=28.84.

Вывод: Как видно из примера, для нахождения лучшего решения, ДОСТЭТОЧНО было найти всего 4 ограничения из множества DIST:

Е = (3Y,2y,2) (2X,lx,2) (6Y,5y,2) (7Х,11х, 1), которые говорят о следующих отношениях между элементами:

(2 выше 3 на 2ед.), (1 правее 2 на 2ед.), (5 выше 6 на 2ед.), (11 правее 7 на 1ед.).

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

N*(N-1)

-----------, где N - количество элементов.

2

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Причем каждое взаимное расположение может быть выбрано из 4-х вариантов (левее, правее, ниже, выше). Следовательно, полное количество вариантов решения задачи будет равно:

N*(N-1)

4~ 2 =2n*(n~v

Для данного примера (Ы = 14) максимальное количество взаиморасположений равно

14 *(14-1) П1

------------= у 1. Тогда количество вариантов будет равно 6.13Е+54.

Заметим, что если поставить 1 ООО ООО ООО компьютеров, и каждый из них будет оценивать 1 ООО ООО ООО решений в секунду, то для решения нашего примера потребуется около 2Е+33 веков.

Предложенный алгоритм методом "отбрасывания" не нужных решений нашел лучшее решение за 29 секунд.

3. Оптимизация струстуры и алгоритма.

3.1 Уменьшение графа ограничений.

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

Попытаемся записать все ограничения не используя в них координат zeXuY, а пользуясь по возможности только zexi^y. Это можно сделать заменив каждое Xj = x,+w, и Yj = Уі+hj. Исключения составят связи, т.к. для горизонтальной связи і неопределено Wj, а для вертикальной -hj. Тогда после решения графа останутся неопределенными некоторые zeX^Y их легко вычислить используя выше приведенные выражения.

Рассмотрим преобразование на примере х-ограничений для блока В*

Xi + Wi £ Xj (х j, Xi, Wj), Xj <, Xj + W; <=> (Xj, Xj, -Wj),

Оптимизированные ограничения будут следующими:

Xj + Wj <, Xj + Wj C=> (Xj, X„ 0), Xj + Wj <, Xj + Wj <=> (Xj, Xj, 0),

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

Теперь рассмотрим преобразование на примере соединения:

Случай 1. Связь Wj соединена с правым ребром блока Bj.

Xj ^ Xj <=>(Xj, Xj, 0), Xj£Xj<=>(Xj, Xj, 0), Xj ^ Xj

<=>(Xj, Xj, 0),

Уі + rljj ^yj <=>(yj, yj, rljj), Yj + r2jj S Yj <=>(Yj, Yj, г2у).

Необходимо отметить, что Wj - горизонтальная связь и следовательно неизвестно Wj. Тогда оптимизированные ограничения будут следующими:

Xj £ Xj + Wj <=> (Xj, Xj, -Wj), Xj + Wj <, Xj <=> (Xj, Xj, Wj), X, ^ Xj

<=>(Xj, Xj, 0),

Уі + rljj £yj <=>(Уі, yj, rljj), yj + hj + г2ц ^Уі + hj <=>(yj, y-u r2jj + hj - hj).

Теперь рассмотрим базовое множество оптимизированных ограничений:

Для блока Bj высотой (height) hj и шириной (width) Wj нет ограничений.

Для вертикальной связи Wj с шириной Wj: yi£Yj<*(yit Yj, 0).

Для горизонтальной связи Wj с высотой hj:

Xj ^Xj <=>(Xj, Xj, 0).

Случай 1. Связь Wj соединена с правым ребром блока Bj.

Xj^Xj + Wj<=>(Xj, Xj, -Wj), Xj + Wj ^ Xj <=> (Xj, Xj, Wj), x, £ Xj

<=>(Xi, Xj, 0),

Уі + r 1 jj yj <=>(Уі, yj, rl ij), yj + hj + r2jj ^ y, + hj <=>(yj, yif г2,} + hj - hj).

Случай 2. Связь Wj соединена с левым ребром блока Bj.

Xi £Xj + Wj <=>(х„ Xj, -Wj), Xj < Xj + Wj <=>(Xj, Xj, -Wj), Xj £ X,

<=>(Xj, Xj, 0),

y, + rlij =£yj <=>(Уі, yj, rl.j), y, + hj + r2ij <Уі + hi <=>(yj; y„ r20 + hj - hj).

Случай 3. Связь Wj соединена с верхним ребром блока Bj.

Уі ^ Уі + hj <=> (yj, у;, -hj), Уі + hi ^ Yj <=>(yi, Yj, hj), y( < yj

<=>(Уі,Ур 0),

Xi + rlij <Xj <=>(Xj, Xj, rljj), Xj + Wj + r2ij SXj + Wi <=>(Xj, Xi, r2ij + w, - Wj).

Случай 4. Связь Hj соединена с нижним ребром блока В;.

Уі ^Уі + hj <=>(Уі, yj, -hj), Yj ^yi + hj <=> (yj, Уі, -hj), yj £ y,

<=>(yj, Ум 0),

Xj + rlij <Xj <=>(Xi, xj, rljj), Xj + Wj + r2y <Xi + Wj <=>(Xj, x„ r2jj + Wj - Wj).

Две связи могут пересекаться, только если они перпендикулярны друг другу. Пусть Wj -горизонтальная, a Wj - вертикальная связь. Тогда:

Xj < Xj <=> (Xj, Xj, 0), Xj + Wi < Xj <=> (Xi, Xj, Wi),

Уі <; ^ <=> (y„ yjt 0), yj + hj < Yj <=> (yj, Yi, hj).

Аналогично изменится и множество DIST.

Например ограничения для лучшего решения Е = (3Y,2y,2) (2X,lx,2) (6Y,5y,2) (7Х,11х,1), будут следующими (Зу,2у,5) (2х,1х,6) (6у,5у,7) (7Х,11х,1)

Запишем базовое множество оптимизированных ограничений BASE для нашего примера. Отметим, что |BASE| = 69 и графы ограничений имеют следующие параметры: |Ех|+|Еу| = |BASE| = 69, |Vx|+|Vy| = 19 + 17 = 36.

Если взять множество неоптимизированных ограничений, го |BASE| 109, а графы ограничений имели следующие параметры:

|Ех|+|Еу| = |BASE| =109, |Vx|+|Vy| = 28 + 28 = 56.

Т.е. мы получили выигрыш на 20 вершин и на 40 ребер, что значительно ускорит время выполнения OptSol(BASE).

3.2 Уменьшение DIST и увеличение BASE. (Prun).

Возьмем два соединенных элемента блок В; и СВЯЗЬ Wj. Допустим связь выходит из правого ребра блока. Тогда можно утверждать, что любой элемент Ек соединенный с Wj, Ek^B„ должен находиться справа от блока Ві, другое расположение будет вызывать неразрешимый проект. Поэтому из DIST нужно убрать S(i, k) (S(i, к) = {cljk, c2ik, сЗік, c4ik}), и добавить в BASE сіл,. Эта процедура резко уменьшает область поиска для алгоритма и генерацию неразрешимых проектов, т.к. область поиска зависит от |DIST|.

Назовем эту процедуру Prun.

В данном примере до выполнения Prun было:

|BASE| = 69, |DIST| = 76*4 = 304, а после:

|BASE| = 77, |DIST| = 68*4 = 272.

3.3 Определение возможной видимости.

Назовем элементы і и j невидимыми, если эти элементы никогда не будут пересекаться, т.е. их взаимное расположение не важно, оно будет определяться другими элементами.

Тогда можно уменьшить |DIST|, если не добавлять в него S(i, j), такие что элементы i, j невидимы.

В данном примере можно сказать, что блок 2 и блок 5, блок 2 и блок 6 и т.д. невидимы.

В общем случае задача определения возможной видимости очень сложна и в данном алгоритме не реализована.

Заключение

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

Скорость решения задач на компьютере Pentium с процессором Cyrix PR200 16МВ для 10-20 элементов колеблется в пределах от 1 мин. до 6 мин.

ЛИТЕРАТУРА.

1. Бондалетов А.В., Двухмерная упаковка со связями. I часть.", Известия ТРТУ, г.Таганрог 1999, в печати.

2. Boyer D.G., "Symbolic Layout Compaction Review", 25 lh ACM/IEEE Design Automation Conference (1988), Paper 26.1, pp. 383-389.

3. Goodman D.E., Tetelbaum A.Y. and Kureichik V.M., "A Genetic Algorithm Approach to Compaction, Bin Packing and Nesting Problems", Technical Report #940702, Case Center For Computer-Aided Engineering And Manufacturing Michigan State University, 1994, p. 71.

4. Dai W., Eschermann B„ Kuh E.S., Pedram М., "Hierarchical Placement and Floorplanning in BEAR", IEEE Transaction on Computer-Aided Design, Vol. 8, No. 12, 1989, pp. 1335-1348.

5. Hsieh Г.М., Leong H.W., Liu C.L., "Two-Dimensional Layout Compaction by Simulated Annealing", in Proc. IEEE International Symposium on Circuits and Systems, June 1988, Espoo,- Finland, vol.3, pp. 2439-2443

6. Liao Y.-Z., Wong C.K., "An Algorithm to compaction a VLSI symbolic layout with mixed constraint", IEEE Trans. On CAD of Integrated Circuits and Systems, 1983, vol.CAD-2, no.2, pp.62-69.

7. Schlag M, Liao Y.-Z. and Wong C.K., "An Algotithm for optimal two-dimensional compaction of VLSI layouts", North-Holland INTEGRATION, the VLSI journal 1 (1983) pp. 179-209.

УДК 658.512

В.А. Камаев, Д.В. Сахнов ПРОГРАММНАЯ СИСТЕМА ГЕНЕРАЦИИ НОВЫХ СОСТАВОВ ЭЛАСТОМЕРНЫХ МАТЕРИАЛОВ

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

В базах данных (БД) разрабатываемой системы отражаются следующие объекты предметной области: 1) вещества, химические соединения (для компактного представления которых дополнительно используется иерархия классов веществ); 2) показатели качества материала и соответствующие шкалы измерения; 3) существующие составы материалов; 4) способы модификации свойств (СМС) материалов; 5) типичная функциональная структура материала, иерархия функций материалов исследуемой предметной области, функции веществ

i Надоели баннеры? Вы всегда можете отключить рекламу.