Дискретные задачи размещения ballred.gif (861 bytes) Библиотека тестовых задач
line.jpg (1129 bytes)

Задачи раскроя
и упаковки

 

ballred.gif (861 bytes)  Главная страница библиотеки  

ballred.gif (861 bytes)  Тестовые примеры:


Задача упаковки кругов и прямоугольников в полосу

Версия для печати

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

 Математическая модель

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

W   ширина полосы

nc число кругов

nr – число прямоугольников

I = {1, 2, …, nc} – множество кругов

J = {1, 2, …, nr} – множество прямоугольников

ri, iÎI, – радиус i-го круга

lj и wj, jÎJ, – длина и ширина j-го прямоугольника

 

Переменные задачи:

Будем говорить, что j-й прямоугольник находится левее m-го прямоугольника, если можно провести вертикальную прямую так, что j-й прямоугольник будет слева от нее, а  m-й справа.

Будем говорить, что j-й прямоугольник находится ниже m-го прямоугольника, если можно провести горизонтальную прямую так, что j-й прямоугольник будет снизу от нее, а  m-й сверху.

xic и yic   координаты центра i-го круга

xjr и yjr  координаты левого нижнего угла j-го прямоугольника

zj = { 1, если j-й прямоугольник повернут на 90о
0, в противном случае
ajmL = { 1, если j-й прямоугольник находится левее m-го
0, в противном случае
ajmB = { 1, если j-й прямоугольник находится ниже m-го
0, в противном случае

L – длина занятой части полосы

С использованием введенных обозначений оптимизационная постановка задачи в терминах частично-целочисленного нелинейного программирования записывается следующим образом:

min L

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

 xicri ³ 0,                        iÎI,

yicri ³ 0,                        iÎI,

xic + ri £ L,                       iÎI,

yic + ri £ W,                      iÎI,

xjr ³ 0,                               jÎJ,

yjr ³ 0,                               jÎJ,

xjr + lj(1– zj) + wjzj £  L,    jÎJ,

yjr + wj(1– zj) + ljzj £  W,    jÎJ.

Следующее условие исключает пересечения кругов между собой:

(xicxkc)2 + (yicykc) 2 ³ (ri + rk )2 ,    i,kÎI.

Следующие три условия исключают пересечения прямоугольников друг с другом. В первом неравенстве используется достаточно большое число L*, всегда большее L:

xjr + lj(1 – zj) + wjzj £  xmr + (1– ajmL)L*,    j, m ÎJ,

yjr + wj(1 – zj) + ljzj £  ymr + (1– ajmB)W,     j, m ÎJ,

ajmL + amjL + ajmB + amjB = 1,    j, m ÎJ.

 Последняя группа условий необходима, чтобы исключить пересечения кругов и прямоугольников:

(xicxjr)2 + (yicyjr) 2 ³ ri2 ,                                                                 iÎI,  jÎJ,

(xic –( xjr + lj(1 – zj) + wjzj))2 +  (yicyjr) 2 ³ ri2,                                  iÎI,  jÎJ,

(xicxjr)2  + (yic – (yjr + wj(1– zj) + ljzj))2 ³ ri2,                                    iÎI,  jÎJ,

(xic –( xjr + lj(1 – zj) + wjzj))2 + (yic – (yjr + wj(1– zj) + ljzj))2 ³ ri2,      iÎI,  jÎJ,

xic + ri £ xjr + (1– bijL)L*,                                                                      iÎI,  jÎJ,

xjr + lj(1 – zj) + wjzj £ xicri + (1– bijR)L*,                                          iÎI,  jÎJ,

yic £ yjr + (1– bijB)W,                                                                            iÎI,  jÎJ,

yjr + wj(1– zj) + ljzj £ yic+ (1– bijA)W,                                                   iÎI,  jÎJ,

bijL + bijR + bijB + bijA = 1,                                                                   iÎI,  jÎJ,

xic £ xjr + (1– cijL)L*,                                                                            iÎI,  jÎJ,

xjr + lj(1 – zj) + wjzj £ xic + (1– cijR)L*,                                                iÎI,  jÎJ,

yic + ri £ yjr + (1– cijB)W,                                                                      iÎI,  jÎJ,

yjr + wj(1– zj) + ljzj £ yic ri + (1– cijA)W,                                            iÎI,  jÎJ,

cijL + cijR + cijB + cijA = 1,                                                                    iÎI,  jÎJ,

 

ЛИТЕРАТУРА 

1. Hifi M., M'Hallah R. A hybrid algorithm for the two-dimensional layout problem: the cases of regular and irregular shapes // Internat. Transaction in Oper. Res. – 2003. – Vol. 10. – P. 195–216.

2. Kallrath J., Kochetov Y., Rudnev A. Strip packing problem for circles and rectangles // 4th ESICUP Meeting. – Tokyo: University of Tokyo, 2007. – P. 20.


ballred.gif (861 bytes) Главная страница библиотеки ballred.gif (861 bytes)