Тетрис-элиминатор и алгоритм последовательного уточнения люфта в векторе требований

Вестник Сыктывкарского университета. Сер.1. Вып.12.2010

УДК 519.717

ТЕТРИС-ЭЛИМИНАТОР И АЛГОРИТМ ПОСЛЕДОВАТЕЛЬНОГО УТОЧНЕНИЯ ЛЮФТА В ВЕКТОРЕ ТРЕБОВАНИЙ

В.Л.Никитенков, А.В.Тюфяков

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

1. Введение

Целочисленная задача линейного раскроя^ возникает, например, в несерийном производстве, когда количество изделий, на которые идут заготовки задано^. Существуют эффективные алгоритмы решения этой задачи и процедуры их реализации, основанные на методе дихотомии^3-5]. При решении задач линейного раскроя (обычных и целочисленных) было замечено, что оптимальные значения целевых функций в линейной и целочисленной задачах отличаются менее чем на единицу. Если это верно, то целочисленная задача оказывается ппо-чтиплинейной, и к ней можно применить комбинацию модифицированного симплекс-метода^2,6] (на первом этапе) и процедуры^ (для решения очень небольшой по объему задачи). В связи с решением задачи форматного раскроя возникла задача минимизации числа перенастроек продольно-резательных станков (ПРС), которая сводится к поиску наиболее вырожденного решения ЦЗЛР. Для последней задачи был предложен алгоритм, основанный на переборе векторов-”кандидатов”в оптимальный базис^. Ниже предлагается алгоритм последовательного изменения вектора требований на заготовки с целью его минимальной корректировки для получения оптимального решения ЦЗЛР, являющегося, как правило, вырожденным.

© Никитенков В.Л., Тюфяков А.В., 2010.

2. Целочисленная задача линейного раскроя

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

/[М] = (/ь...,/ш),|М|=т Вектор требований на заготовки имеет вид

Ъ[М] =

Требуется минимизировать число использованных штук сырья при условии выполнения требований на заготовки каждого типа. Будем называть способом раскроя целочисленный вектор Требуется минимизировать число использованных штук сырья при условии выполнения требований на заготовки каждого типа. Будем называть способом раскроя целочисленный вектор Я[М] , т. что

1[М] -Д[М] < Ь

Из всех возможных способов раскроя составим неотрицательную целочисленную матрицу А[М,Щ(|7У| — п - число всех возможных способов раскроя) в которой каждый столбец удовлетворяет условию (2.1). Пусть теперь х[Щ- вектор интенсивностей использования способов раскроя А[М^] (способ раскроя используется Xj раз, или по указанному способу раскраивается штук сырья). Тогда приходим к следующей задаче ЛП:

{/(х) = 1[ЛГ] • х[Щ —> тгп

А[М,Щ-х[Щ = Ъ[М]

х[Щ > 0[ТУ]

в которой столбцы матрицы системы ограничений удовлетворяют условию (2.1) . Эта задача ЛП называется задачей линейного раскроя. Задача (2.2) с дополнительным условием:

х[7У]-целочисленный вектор носит название целочисленной задачи линейного раскроя (ЦЗЛР).

Задача линейного раскроя решается модифицированным алгоритмом симплекс-метода, причем матрица А[М, ТУ] не хранится (с ростом числа типов заготовок тп и кратностей - числа заготовок в способах

раскроя, число её столбцов растёт весьма быстро (см. рис. 1)), а необ-

ходимый для ввода в базис способ раскроя генерируется путем решения задачи о наилучшем раскрое^, которая представляет собой целочисленную задачу о ранце с двойственными переменными в качестве коэффициентов целевой функции и ограничениями (2.1):

Г у[М\ • ЩМ] —у тах \ 1[М]  ЩМ] <Ь

Рис. 1

3. Комбинированный алгоритм решения ЦЗЛР

Пусть теперь x[N] - оптимальное решение линейной задачи раскроя,

/(х) = l[iV] -x[N] = К

А[М, N]  x[N] = Ъ[М]

x[N] > 0[iV]

(если К - нецелое, можно сделать одно отсечение по целевой функции) Выделим целую [£[iV]] и дробную {5[iV]} части вектора x[N] и, подставляя в (3.4), имеем

1 [N] • [i[iV]] + 1[N]  {i[iV]} = К А[М, N}  [ЭД + А[М, N}  {i[iV]} = Ъ[М]

[5[iV]] > 0[N}- целочисленный 1[N] > {£[iV]} > О[N]

Или отдельно для дробной части решения

1 [N]  {i[iV]} = К -1[N]- [£[iV]] = k

А[М, N} • {ЗД} = Ь[М] - А[М, N} • [ЗД = Ь[М\

1[N] > {ЗД} > 0[N]

k — целое

Целочисленный вектор Ь[М] будем называть остатком вектора требований. Формулы (3.6)2,3 означают, что данный остаток является конической комбинацией способов раскроя. С учетом (3.6)i , умножая (3.6)2 на /[М], получим

1[М] • Ь[М] < kL

Разбивая (одним из комбинаторных алгоритмов, напримерW) полученный остаток вектора требований Ь[М] на наименьшее число раскроев, получим

П=1 А[М, Jk\ • x[Jk\ = Ь[М], JkeN С N YH=i%[Jk\ = к- целое

Тогда целочисленный вектор x*[7V] = [x[iV]] + (x[N], 0[iV\iV]) будет оптимальным решением ЦЗЛР.

4. Проблема вырожденности оптимального решения ЦЗЛР

При форматном раскрое бумажного полотна на рулоны имеет место проблема уменьшения числа перенастроек продольно резательных станков (ПРС). Это приводит к требованию поиска такого оптимального решения ЦЗЛР, которое содержало бы в оптимальном базисе как

можно меньше способов раскроя с положительными целочисленными интенсивностями, т.е. было бы максимально вырожденным. Идея поиска такого решения среди базисных решений ЦЗЛР с дополнительным ограничением на значение целевой функции привела к созданию алгоритма замены пкандидатовпв оптимальный базис - векторов, имеющих в оптимальном решении нулевую оценку^. Однако, при достаточно большом числе форматов, перебор всех возможных пкандидатов”для ввода в базис становится затруднительным, и приходится ограничиваться некоторым приближением (в плане вырожденности) к оптимальному решению. Попытки использовать для этих целей отклонения в векторе требований (люфт) приводят опять же к переборным алгоритмам.

5. Алгоритм последовательного изменения люфта

Пусть Хо[Л^] - оптимальное решение линейной задачи раскроя

А-хо = Ь0, /(х0) = 1[.№] • х0[Щ = /то*п

&о - первоначальный вектор требований,

А - оптимальная базисная матрица.

Найдем решение х* , близкое к х0 ? которое дает целочисленное решение с минимально возможным люфтом в исходном векторе требований, следуя алгоритму:

1. к = 0, Ък = 60

2. Ахк — Ьк

3. ак = Ь0 - А  [хк]

4- Ьк+1 = Ьк + ак

5. к = к + 1, доко 1

Попробуем упростить приведенную схему. Заметим, что из (*) следует

ак = Ь0-

Далее, используя (**) рекуррентно, получим

Ьк+1 — &о + + а1 +

Очевидно, что

а0 = А • {ж0}

«1 = Ь0 - (&1 - А • {за}) =

= Ьо — (&о + — А • }) = А • } — А • {^о}

«2 = Ь\ — (&2 — А • {^2}) =

= Ь0 - (Ь0 + «о + «1 - А • {ж2}) = А  {х2} - А - {хг}

ак = А - {хк} - А  {^-1} и для суммы находим

+ а1 + ' ' ' + ак = А • {^Л;—1}

Тогда алгоритм может быть записан в виде

А  хк = Ь0 + А  {хк}, к = 0,1,2 ...

Покажем теперь, что

{хк} = {{к + 1)х0}

Для к = 1 имеем

= %о {•£()}

{Ж1> = {[ж0] + {ж0} + {ж0}}

Предположим, что формула (5.9) верна для произвольного фиксированного к = п. Докажем её справедливость для к = п + 1.

Хп+1 = Хо + {хп} = Хо + {(п + 1){жо}}

{хп+г} = {[ж0] + {ж0} + (п + 1){ж0} - [(п + 1){ж0}]} =

= {{жо} + (п + 1){жо}} =

= {{(п + 2){ж0}}

Утверждение доказано. Далее, подставляя (5.9) в (5.8) и умножая последнее равенство на В, запишем алгоритм в окончательном виде

А • х0 = Ь0 /

хп = {п{а;о}}, п = 1,2,...

Графическая иллюстрация работы алгоритма показана на Рис. 2.

Непосредственно из (5.10) следует:

1. Последовательность решений зацикливается через ТУ шагов, где

ТУ - наименьшее общее кратное знаменателей дробной части оптимального нецелочисленного решения Хо;

2. В этой последовательности есть решения как с суммарным люфтом вверх, так и вниз;

3. Среди них можно выбрать решение с наименьшим люфтом:

А  [хр] = Ь0 +

Имеет место также утверждение о том, что оптимальная базисная матрица не изменяется по ходу алгоритма. Последняя не зависит от вектора требований и будет давать оптимальное решение при условие его допустимости. В силу неотрицательности дробной части, непосредственно из (5.8) и (5.10) следует, что

хп>х0>0 и А  хп = Ь0 + А  {хп-г}

т.е. решение хп допустимо для вектора требований Ьо + А • {хп_\\ Продемонстрируем работу алгоритма на примере, соответствующем Рис. 2.:

Ь = 40, / =

(Остаток вектора требований А  {^о} = (6,16) делится на два раскроя: (2,16)- безотходный и (4, 0) - отход 24. Суммарный отход - 24).

Далее последовательно получаем:

х1=хо + {ж0} =

х3 = х0 + {Зх0} =

х4 = х0 + {4ж0} =

= хо + {5жо} = (3-6, 4.8) = Хо - зацикливание

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

1 = 12, 1 =

= (5, f, 15, |), {^0} = (0, |, 0, |), ЛГ = 3, /тш = 40

Оптимальная базисная матрица А = сИад

Применяя алгоритм, находим цепочку из трех решени

= (5, у, 15, у), [ж0] = (5,13,15, 6), люфт (0, -1, 0, -4), /тЫ = 39 41 22

XI = (5, у, 15, у), [ж0] = (5,13,15, 7), люфт (0, -1,0, 2), /т*п = 40 х2 = (5,14,15, 8), [ж0] = (5,14,15, 8), люфт (0, 2, 0, 2), /тЫ = 41

Однако, при /ш^п = 40 имеется оптимальное целочисленное вырожденное решение без люфта

т '0' '10'

1 1 40

+ 30 —

0 2 60

1 1 _40_

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

6. "Жадный"алгоритм решения ЦЗЛР

Представим себе некий аналог известной компьютерной игры птет-риспс несколько видоизмененными правилами. Пусть коробка заполнена столбцами различной высоты, как показано на рис.З.

10 40 60 40

і

0 12 1

1Ы

10 10 0 10

\ I

0 0 0 0

110 1

Рис. 3

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

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

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

1. Исходная базисная матрица А [М, ЛГ']:

4. г - задача

А [М, ^о] исключаем из дальнейшего рассмотрения

5. Текущее базисное решение х [ЛГ;] = В [ЛГ;, М] • Ь [М\.

х [г] = [Ь/1 ИГ1 • Ъ [г], г е 1 : т

6. Текущий вектор направления улучшения решения г [А^']:

г [ЛГ'] = Б[А^',М] • г [М] г [г] = [Ь/1 [г]]"1 • г [г] > 0, г е 1 : т

7. Значение новой базисной переменной

0 = пип

гЫ

ъы

Если х [jo] = 0, то формат го исключаем из рассмотрения и переходим к шагу 4.

8. h [М\ = b [М\ — х [j0] • А [М, j0], b [М\ := bx [М] if &1 [М] • I [М] < L then END else GOTO 4

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

Рассмотрим пример

L = 13, / =

А =

Г 1 2 3 4 5 6 7 8 9 10 11 12 13

1 111000000000 1000221110000 0210102104321

1 03603158147 10

Задача имеет оптимальное базисное целочисленное решение

1 1 0 29

25 1 +4 0 +3 2 = 31

0 2 1 11

32 раскладки, отход = 25.

Возможные значения отхода:

1, Ь - 1 = 12, 21/ — 1 = 25, ЗЬ - 1 = 38 и т. д. V =

Кандидаты для ввода в базис: отх.

(1,1,0)|1-1,5 (1,0,2)|0-1,5 (0,2,1)|0-1,25

I. Начнем с отхода, Ь [т + 1] = 1

Берём (1,1, 011) , 0 = тт {у, 1} = 1 отх.

' 1' ' 1' ' 29 ' ' 1 ' ' 28 '

1 = 1 , Ьг = 31 — 1 = 30

0 0 11 0 11

Остальные раскрои должны быть безотходными.

1 ' 5 ' 28 ' 5 ' 23

5 0 = 0 , &1 30 — 0 = 30

2 10 . _ 11 _ . 10 1

' 0 “ ' 0 ' ' 23 ' ' 0 ' “ 23 '

1 2 = 2  Ьг = 30 — 2 = 28

1 1 1 1 0

Возможно использование только отходных раскроев Решения нет.

II. Ъ [тп + 1] = Ь — 1 = 12

' 1 ' ' 12 ' ' 29 ' ' 12 ' ' 17 '

1 = 12 , ьг = 31 — 12 = 19

0 0 11 0 11

Остальные раскрои должны быть безотходными

1 ' 5 ' 17 ' 5 ' 12

5 0 = 0 , Ьг = 19 — 0 = 19

2 10 . _ 11 _ . 10 1

' 0 “ ' 0 ' ' 12 ' ' 0 ' “ 12 '

1 2 = 2 , Ьг = 19 — 2 = 17

1 1 1 1 0

Решения нет.

III. Ь [тп + 1] = 25

' 1 ' ' 25 ' ' 29 ' ' 25 ' 4

25 1 = 25 , Ь\ = 31 — 25 = 6

0 0 11 0 11

4 0 0 II 6 — 0 = 6 = 3 2

2 _ 8 _ _ 11 _ _ 8 _ 1 со I 1

Найдено оптимальное целочисленное решение

Следует заметить, что тетрис-элиминатор не всегда дает самое вырожденное решение, что подтверждается следующим примером:

Ь = 35,1 =

Матрица А будет иметь следующий вид:

1 2 3 4 5 6 7 8 9 10 її 12 13 14 15 16 17 18 19 20

3 3 2 2 2 2 1 1 1 1 1 1 0 0 0 0 0 0 0 0

1 0 3 2 1 0 5 4 3 2 1 0 7 6 5 4 3 2 1 0

1 2 0 2 4 5 0 2 3 5 7 8 0 1 3 5 6 8 10 11

0 2 2 і 0 2 і 0 2 і 0 2 0 2 і 0 2 і 0 2

Ь [М]  I [М] = 49 • Ь + 5

минимально возможный отход = 30.

Задача имеет оптимальное целочисленное решение

20

3 1 2 0 101

1 +17 4 +12 1 + 1 = 101

1 2 4 0 102

50 съемов, 4 раскладки, отход = 30.

Кандидаты в оптимальный базис: г; =

(3.1.1) - 285/231 (2,1,4) - 271/231 (1,1,7) - 257/231

(1.4.2) - 251/231 (0,1,10) - 243/231 (0,4,5) - 235/231

3 99

1) 33 1 = 33 , ь

_ 1 _ . 33

' 2 ' " 2 '

2) 1 1 = 1

4 4

101 99 2

101 — 33 = 68

102 33 69

2 ' 2 ' 0

68 — 1 = 67

69 4 65

3) 13

' 0  0 0 0 0

4 = 52 , ьг = 67 — 52 = 15

5 65 65 65 0

' 0 ' 0 N 0 ' 0 "

4) 2 7 = 14 , &1 15 — 14 = 1

0 0 0 0 0

3 2 0 0 0 11)1

Решение: 33 1 + 1 1 + 13 4 + 2 7 + 1 101

1 4 5 0 0 102

50 съемов, 5 раскладок, отход = 30

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

а). Пусть Б таково,что

Ь[М]  1[М] = Б-Ь

б). Построим "образ"требуемого раскроя по правилу:

г [г] = [&Й/5' + 0.5]

в). Уточнение "образа"

Если г[М] • 1[М] = Ь — Ь < Ь, то дополняем г[М] до наиболее безотходного раскроя, "забивая"!/ , в первую очередь, заготовками из числа ненулевых компонент г в порядке убывания величины отношения 6[г]/г[г]

Если г[М] • 1[М] = Ь + Ь > Ь, то уменьшаем его до раскроя, отбрасывая заготовки из числа ненулевых компонент г в порядке возрастания

ЪЩ/гЩ-

В итоге получаем раскрой г[М] для элиминации текущего вектора требований. Далее выполняются шаги 7,8 и алгоритм либо завершается, либо переходит к выбору очередного побразап.

Пример

12 3 4 2 111

5 6 7 8 9 10 11 0 0 0 0 0 0 0 О

А= 010032110 О О

002000204 2 О

010302140 3 6

(приведены только безотходные раскрои).

1. а). Ь[М\ -1[М] = 480 = 40-Ь 5 = 40 б). "Образ" г[М] =

= ([10/40 + 0.5], [40/40 + 0.5], [60/40 + 0.5], [40/40 + 0.5]) = = (0,1, 2,1) = Г\ - безотходный раскрой № 7

7 Интенсивность использования x^ = 30 [§] Ьг[М] =

2. а). Ь\[М] • 1[М] = 120 = 10-1/ 5=10

б). "0браз"г[М] = (1,1, 0,1) = Г2 - безотходный раскрой № 2 | 71 Интенсивность использования Х2 = 10 [~8~| Ь2[М] = О[М] (конец).

Получено оптимальное решение:

10

1

1

0

1

+ 30

0

1

2

1

10

40

60

40

имеющее степень вырожденности 2.

Элиминатор без модификации здесь получает оптимальное решение

2 0 0 0 0 10

0 3 0 0 1 40

+ 13 + 15 + 6 +1 —

0 0 4 0 0 60

0 0 0 6 4 40

которое не только не вырождено, но и не является базисным.

В то же время изложенная модификация для первого примера приводит к неоптимальному решению

25

1 0 0 0 29

1 +2 0 +1 2 +1 0 = 31

0 4 1 2 11

, (33 раскладки с от-

ходом 38).

Однако, выбрав в качестве базисных три первых (наиболее безотходных) раскроя и введя в базис безотходный раскрой (1,0,2) с оценкой є = 1/8 , находим оптимальное решение полученное выше элиминатором без модификации

1 1 0 29

25 1 +4 0 +3 2 = 31

0 2 1 11

32 раскладки, отход = 25

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

♦Начальное приближение находим тетрис-элиминатором

♦На его основе формируем начальную базисную матрицу и применяем МСМ

♦Если решение нецелочисленное используем алгоритм последовательного изменения люфта.

7. Выводы и результаты численных экспериментов

В соответствии с изложенными алгоритмами был проведен ряд численных экспериментов: Алгоритм последовательного изменения люфта (АПИЛ) сравнивался с Модифицированным симплекс-методом с перебором (МСМ+П) на предмет вырожденности и эффективности (отношение суммарной длины всех заготовок требуемых форматов к суммарной длине использованных тамбуров) получаемого решения.

Ниже на рисунках представлены результаты численных экспериментов

Эффективность, %

АЛИЯ

мсм+п

5 10 15 20 25 Форматы

Литература

1. Канторович Л.В., Залгаллер В.А. Рациональный раскрой промышленных материалов. М.:Наука, 1971. // М.:Наука, 1971.

2. Грибов А.Б., Романовский И.В. Программирование симплекс-метода и его вариантов на АЛГОЛЕ // Оптимальное планирование, 1963. вып. 12. С. 5-27

3. Романовский И.В. Наилучшее разбиение множества на заданное число подмножеств // АЛГОЛ-процедуры. Изд. ЛГУ, 1970. вып. 6.

4. Кацев С.Б., Романовский И.В. Две задачи целочисленного программирования // АЛГОЛ-процедуры. Изд. ЛГУ, 1975. вып. 13.

5. Кацев С.Б. Решение одной обобщенной задачи о разбиении множеств. // Кибернетика, 1977. № 5. С. 115-120.

6. Саковнич Д.Ю. Вырожденность в задаче форматного раскроя.

// Вестник Сыктывкарского университета. Сер.1: Мат. Мех. Инф. 2008. Вып. 8. С. 75-90.

7. Никитенков В.Л. О целочисленном решении задачи линейного раскроя // Вестник Сыктывкарского университета. Сер.1: Мат. Мех. Инф. 2006. Вып. 6. С. 165-178.

8. Романовский И.В. Алгоритмы решения экстремальных задач.

// М.:Наука, 1977. 352 с.

Summary

Nikitenkov V.L., Tyufyakov A.V. Tetris-eliminator and the algorithm of successive refinement of backlash in the vector requirements

To solve the integer problem of linear cutting proposed algorithms to obtain optimal solution either for the initial vector requirements, or if there is tighter tolerances. Discussed in the Ask the degeneracy of the obtained solutions and numerical results.

Сыктывкарский университет

Поступила 15.10.2010