Вестник Сыктывкарского университета. Сер Л. Вып. 10. 2009
УДК 519.717
МОДИФИКАЦИИ ЗАДАЧИ РАСКРОЯ ОТХОДОВ В.Л. Никитенков, А.Е. Подоров
Задача раскроя сырья различной длины с ограниченными запасами рассматривается как задача раскроя отходов. Предложены пять ее модификаций. В некоторых из них даются способы нахождения допустимой обратной матрицы. Обсуждаются результаты численных экспериментов.
1. Основная задача
Введем следующие обозначения: К — множество различных типов сырья, М — множество различных типов форматов, длины сырья задаются вектором Ь [К] = (Ь [1],..., Ь [А;]), количества соответствующих типов сырья задаются вектором 5 [К] = (5 [1],..., 5 [к]). 1[М] = (/ [1],...,/ [т]) - длины заготовок, а Ь[М] = (Ь [1],..., Ь [т]) — вектор требований.
Если заданного сырья достаточно для вырезания всех заготовок из вектора требований, то выполняется следующее условие:
Б[К]-Ь[К] >1[М]-Ъ[М]+Ь0,
где 1/0 — минимальный суммарный отход при вырезании всех заготовок. Пусть V г е К Аг [М, А^] — матрица всех возможных способов раскроя сырья длины Ь[г\. [А^] — интенсивности использования этих способов раскроя.
Тогда оптимальное решение следующей ЗЛР:
© Никитенков В.Л., Подоров А.Е., 2009.
f = ~L[K} ■ у[К] ->• min
( ^Аг[М,Х]-Хг[Щ =Ь[М]
I ieK
\ 1[Щ-Хг[Щ +y[i] = S\i], i€K
( у[К} > О [К], Х[Щ > 0[ЛГ<], г G К
соответствует минимально возможному отходу при нарезании всех заготовок по вектору требований из сырья заданных размеров L [К] в количестве S [К]. Покажем это.
Пусть X* = (X* [iVi], [iVjfe]) — оптимальное решение, тогда:
у И = S И - 1 [Щ ■ X * [iV,] Щ ■ уЩ = L[i] • S[i] — L [г] • 1[Щ ■ X* [7Уг] L[K]-y[K] = Y,L [г] • S [г] - £ L [г] • 1 [Щ • X* [Щ
ieK ieK
-L [К] • у [К] = -L [К] ■ S [К] + J] L [г] • 1 [Щ ■ X* [Щ
4-V-' ^^—
const гек
Отсюда следует, что min / = /* соответствует минимальным суммарным отходам. Линейную задачу без условия целочисленности можно решать в рамках МСМ с использованием механизма г - задачи [2] для генерации раскроя, вводимого в базис.
Для построения начального решения, добавим в ограничения на вырезаемые заготовки искусственные переменные z [М] и введем промежуточную целевую функцию
g = l[M]-z[M]-> min.
Тогда, выбирая в качестве базисных переменных z [М] и у [К], получим начальное решение с единичным базисом
X0 = (z[M],y[K]) = (b[M],S[K])
со значением целевой функции
9о = 1[М]-Ь[М]
и вектором двойственных переменных
v = (v[M],v [К]) = (1 [М], О [К])
Когда все искусственные переменные z [М] будут выведены из базиса, восстанавливается целевая функция / и продолжается поиск оптимального решения исходной задачи посредством МСМ.
Пример:
I = (789, 695, 594, 384, 550, 442) Ь = (1700, 1650, 1800, 1800, 2000, 1500) L = (7857, 3345, 4561, 6844) s = (310, 150, 320, 300)
[2] [4] [i] [i] [4]
0 5 0 5 0
0 0 7 0 0
149 1 0 +13 1 6 +98 3 2 +207 4 4 +35 8 0 +
5 0 0 0 3
0 0 1 0 1
(i) (1) (0) (3) (0)
[3] [4] [4] [i] [i]
" 0 " 4 0 0 4
3 0 0 0 1
+320 и 1 +149 1 0 +38 2 9 +3 0 9 8 +1 6 0 +
3 0 4 0
1 7 0 0 1
(0) (0) (0) (i) (0)
[1] W И
" 0 " 0 " 0 " " 1700 "
3 0 0 1650
5 +1 0 +1 0 1800
—
3 0 6 1800
3 10 1 2000
0 3 0 1500
(0) (18) (491)
Цифры в квадратных скобках - тип сырья, а в круглых - отход с одного раскроя.
Из примера видно, что вектор требований полностью вырезался из запасов сырья меньших, чем заданный вектор 5.
Далее во всех примерах будут рассматриваться вектора L, использованные в данном примере и S — (202, 150, 320, 111).
Рассмотрим модификации поставленной задачи, считая запасы сырья S [К] с длинами L [К] как накопленные отходы. Рассмотрим по порядку предложенные модификации задачи раскроя отходов.
2. Модификации
2.1. Раскрой имеющихся отходов с минимальными потерями
Первая задача сводится к следующей задаче линейного раскроя с дополнительными ограничениями:
/ = -x[M]'l [М} min
Г £ А{ [М, 7VZ] • Xi [7VZ] -х[М]= О [М]
I i£K
] 1 [Щ . Хг [Щ =5[г], гек
( х[М]^ 0[М], Xi [7VZ] ^ О Щ , г е К
Матрица системы ограничений задачи имеет вид:
А^М,^] A2[M,N21
1 ... 1 о ••• о о ... о 1 ••• 1
Ak [M,Nk]
0 0
0 0
0 0
-1 0 0
о ••• о о ••• о
о
В качестве начальной базисной матрицы можно выбрать следующую (с точностью до перестановки столбцов):
А =
-1
ri [1] гк [1]
— 1 Г\ [тп] 0 1
Г к [Щ
Здесь гI — раскрой из группы Ь [г] с наименьшим отходом. Эта матрица обладает тем свойством, что ее квадрат равен единичной матрице. Другими словами, обратная матрица к А совпадает с ней по форме. Тогда начальное базисное решение запишется в виде:
х0 = (г[м],5И= ад).
\гек гек /
Коэффициенты целевой функции:
С=(-1[М],0[К}). Вектор двойственных переменных:
ь = (ь[М],у [К]) = (I [1],I [ш], -п • I [М],..., -гк ■ I [М]). Начальное значение целевой функции:
/о = -I [1] • Е п [1] • 5 И - ... - I Н • £ [т] • 5 [г].
Это же решение будет и оптимальным, т.к. для любого раскроя из группы г Е К с номером ] Е А^ будет выполняться следующее неравенство:
[3] = Л [М,]\ • I [М] - гг ■ I [М] - 0 ^ О,
в силу того, что Гг имеет наименьший отход в группе г.
Комментарий: Оптимальное решение этой задачи не является единственным, т.к., если ,..., — раскрои из разных групп с такими же отходами, что и у т*х, тогда следующее решение:
х[М]=Ч [М, К] • 5 [К] Хг [Кг] = Б И , г Е К
также будет оптимально.
Пусть А{ [М, УУ0г] — матрица раскроев г - той группы сырья с минимальными отходами. Тогда любая комбинация из К раскроев (по одному из каждой группы) дает оптимальное решение (по критерию минимальности суммарного отхода). Т.о., количество оптимальных решений задачи равно
П 1^1-
1ек
Пример:
202
[1] 5 " [2] " 3 " [3] " 2 " [4] " 4 " " 2544
0 0 1 0 320
4 4 +150 1 1 +320 2 0 +111 1 0 = 1709 958
0 0 2 0 640
0 0 0 7 777
(0) (0) (0) (0)
Из примера видно, что оптимальное решение представляет собой линейную комбинацию раскроев с минимальным отходом из каждой группы сырья и соответствующих запасов сырья, представляющую собой наименее безотходный способ раскроя всего имеющегося сырья.
Данная задача может быть использована в качестве служебной, когда необходимо получить очень высокую эффективность решения, несмотря на вектор требований.
2.2. Раскрой наиболее равномерного вектора требований
Равномерность вектора требований рассматривается в смысле равенства всех его компонент, т.е. b [М] — равномерный, если b [1] = b [2] = ... — b [m].
Вторая задача сводится к следующей задаче линейного раскроя с дополнительными ограничениями:
/ = х[М] •1[М]+ у[М] • l[M] min
Е ММ, Ni] . Хг[7Уг] - х[М] + у[М] = Ь[М]
гек
1[АГг]-Хг[АГг] =S\i],ieK
х[М} ^ 0[М],у[М] ^ О[М], Хг[Щ ^ 0[Щ,г е К
ЪЩ =
S\K\L\K]
е m
i£M
+ 1,
где вектор Ь [М] введен искусственно, как «образец» равномерного вектора требований. Он выбран таким образом, чтобы суммарная длина вырезаемых заготовок была больше, чем суммарная длина имеющегося сырья. А целевая функция, минимизирующая суммарный люфт, обеспечивает покомпонентную близость выкраиваемого вектора требований к исходному равномерному Ь [М].
Для построения начального решения добавим в ограничения на расходование запасов искусственные переменные z [К] и введем промежуточную целевую функцию
g — 1 [К] • z [К] min.
Тогда, выбирая в качестве базисных переменных у [М] и z [К], получим начальное решение с единичным базисом
X0 = (y[M],z[K]) = (b[M},S[K}).
И значением целевой функции
g0 = l[K]-S[K}.
Вектор двойственных переменных
v = (v[M],v [К]) = (О [М], 1 [К])
дает для каждого способа раскроя из любой группы одинаковые оценки
el[j\ = v[M]-Al [M,j] + 1-0 = 1>0,
что позволяет вводить в базис любой раскрой (в частности, тот, который является решением г - задачи на минимум отхода). Когда все искусственные переменные z [К] будут выведены из базиса, восстанавливается целевая функция / и продолжается поиск оптимального решения исходной задачи посредством МСМ.
На самом деле в рассматриваемой задаче можно было и не вводить искусственные переменные. Данная задача в каком-то смысле очень похожа на предыдущую (вектор х[М] из задачи 2.1 разбивается на сумму из вектора требований и двух люфтовых векторов). Поэтому здесь тоже можно построить начальную базисную матрицу. Эта матрица весьма похожа на матрицу из первой задачи и имеет вид:
ei ri [1] rk [1]
em п [га] rk [га] О ••• 0 1
О ••• 0 1
Здесь
Ср
-1, М-^И >6И
1ек
1, ЕпИ-^ИОМ '
г^К
Если ер = 1, то вводим в базис у [р], если ер = — 1, то вводим в базис х[р]. п — раскрой сырья Ь [г] с наименьшим отходом (как в задаче 2.1).
Обратная матрица к данной выглядит следующим образом:
б1 _иШ Г* [11
0 • &ГП •• 0 Г1 [т] 6т 1 6т
В
О ••• О
Коэффициенты целевой функции:
С={1 [М],0[К]). Вектор двойственных переменных:
»= (в, • 41]..... в. • /К - £ М, ад^м
г<ЕМ
г<ЕМ
Начальное базисное решение:
Х0 = (х(у)[М], 5И) =
в!
ч гек / \ гек
г<[ш]-5[г] , Б [К]
Пример:
[4] [1] [1] [1] [1]
68
0 1 3 0 5
0 0 0 0 0
8 0 +134 2 7 +13 2 0 +29 3 2 +26 4 4
3 5 3 0 0
1 1 6 12 0
+
(0) (0) (0) (3) (0)
[3] [2] [3] [4]
+309
1 3 2 4 1256
4 0 1 0 1247
0 1 2 +43 1 1244
0 +150 1 +11 0 0 — 1250
1 0 2 0 1244
1 0 0 7 1238
(0) (0) (0) (0)
Из примера видно, что выкроенный вектор «почти» равномерный. Разность между максимальной и минимальной компонентой:
Хтах _ Хт;п — 1256 — 1238 — 18.
Среднее арифметическое компонент Хср_ = 1246, 5. Максимальное относительное отклонение от этой величины:
. 100» = '124^- 1256' . 100% « 0,76%.
хср. 1246, 5
2.3. Раскрой нежестко установленного вектора требований из заданного количества сырья
Пусть теперь задан «образец» вектора требований — Ь[М]. Требуется из заданных запасов 5 [К] вырезать вектор, наиболее близкий (в смысле коллинеарный) к Ь [М]. Получаем следующую задачу линейного программирования:
х[М] ■1[М}+ у[М} • 1[М] ->• шт Е ММ, Щ ■ Хг[Щ - х[М] + у[М] = Ъ[М]
гек
1[Щ-Хг[Щ =5[г],гек
х[М] ^ 0[М],у[М] ^ О[М], Хг[Щ ^ 0[Щ,г е К
ЬШ] = Щ ■ ™
+ 1,
где вектор Ь [М] введен искусственно для обеспечения коллинеарности с исходным вектором требований Ь [М] и для того, чтобы суммарная длина вырезаемых заготовок была чуть больше, чем суммарная длина имеющегося сырья.
Метод решения данной задачи полностью совпадает с методом решения предыдущей задачи, отличие только в векторе Ь [М]. Можно использовать искусственный базис или же сразу найти допустимую базисную матрицу.
Пример:
И [1] [1] [1] [1] [1]
240
0 4 0 0 0 4
3 1 1 3 0 1
0 1 +57 6 0 +20 0 2 +79 5 3 +12 1 12 +31 0 9
3 0 6 3 0 1
1 1 7 0 6 0
+
(0) (0) (0) (0) (3) (0)
[2] [3] [4] [1] [3]
+150
3 1 3 5 2 1231
0 0 1 0 1 1177
1 1 +79 2 1 +111 2 1 +3 4 4 +1 2 0 = 1293 1292
0 4 0 0 2 1426
0 0 5 0 0 1064
(0) (0) (0) (0) (0)
Можно заметить, что выкроенный вектор практически коллинеа-рен исходному вектору Ь [М]. Чтобы убедиться в этом, проверим условие
коллинеарности:
Ж — 1231 ^п 79 Ш. — Ш1 ~ П 71 Ж — 1293 ^ п 79 Х[1] ~ 1700 ~ U' Х[2] ~ 1650 ~ х[3] ~ 1800 ~
Ж — 1292 ^ п 79 Ш. — Ц26 ~ п 71 ж — Щ6 ~ П 70 Х[4] ~~ 1800 ~ U' 'Z Х[2] ~~ 2000 ~ U' ' 1 Х[6] ~~ 1500 ~ U'
Максимальное отклонение между коэффициентами равно 0,02. Выкроенный вектор коллинеарен вектору требований с некоторой погрешностью, так как если ее попытаться ликвидировать, полученное решение может иметь больший суммарный отход или оно станет менее вырожденным.
Так как в примере суммарная длина сырья меньше суммарной длины заготовок, то все компоненты выкроенного вектора меньше соответствующих компонент вектора требований, а в противном случае будут больше.
2.4. Раскрой жестко установленного вектора требований из нежестко заданного количества сырья
Суммарный отход в этом случае будет выражаться функцией:
R = L [К] ■ s [К] - I [М] ■ Ъ [М] + V L [г] • (х [г] - у [г]).
4-V-' —
const геК
Приходим к следующей задаче линейного программирования:
/ = х [К] ■ L [К] - у [К] ■ L [К] min
{ ¿2Аг[М,Щ-Хг[Щ =Ъ[М]
I гек
) 1 [Щ-хг[Щ -X[i] +y[i] = s[i\, i е к
( X [К] Z о [К], у [К] Z о [К], Хг [АГг] ;> О [Щ , г е К
Метод искусственного базиса в данной задаче аналогичен методу решения задачи 1 (основной задачи).
Оказывается, и в этой задаче можно построить блочную начальную базисную матрицу, которая является обратимой и для которой гарантируется оптимальность. Будем считать, что выполнено неравенство: \М\ ^ \К\, в противном случае дробим S[K] на части, получая при этом несколько групп отходов с одинаковой длиной сырья. Пусть теперь А — матрица, составленная из раскроев с минимальным отходом в каждой группе сырья.
Тогда матрица
А =
А
1
0
в!
о о • о о •
• о
• о
1
о ••• о о ••• о
1
соответствует оптимальному решению задачи. Воспользуемся формулой Фробениуса [3] обращения блочной матрицы:
Я := Я - СЯ"1!,
р-1 -^-^Я"1 Я"1
В нашем случае Ь - нулевая матрица Я = -О-1, Я = А, А~1 = Я, тогда:
" я ь ' -1 ■ Я"1 + Я"1ЯЯ"
.с я -Я^СЯ
" А О " -1 я О
. С я -я св я
Обратная матрица запишется в виде:
0
В
В
"в! "
вш • Вт
о ••• о
о
б!
о о ••• о о о ••• о
о ••• о
где Яг - строки матрицы Я, обратной к А.
Коэффициенты целевой функции:
Вектор двойственных переменных: (" Е Вг[ £ Вг[т]-Ь[т], Ь [1],Ь [т],
,еш+1 -Ь[т + 1], • Он обеспечивает оптимальность данного решения.
Пример:
[1] [1] [3] [1] [1]
5 " " 3 " " 2 " 2 " 3
0 0 1 5 0
4 4 +42 6 1 +373 2 0 +15 1 0 +229 2 0
0 2 2 0 3
0 1 0 5 6
(0) (0) (0) (0) (0)
[1] [1] [1] [3]
+239
0 4 2 0 1700
5 1 3 3 1650
1 7 +1 6 0 +1 0 0 +1 0 1 = 1800 1800
2 0 2 3 2000
0 1 7 1 1500
(0) (0) (0) (0)
Из примера видно, что вектор требований выкроился полностью, но из соображений минимальности суммарного отхода был использован только первый и третий тип сырья, причем больше, чем есть в наличии.
2.5. Раскрой нежестко заданного вектора требований из не более чем заданного количества сырья
Рассмотрим, наконец, случай нежестко заданных векторов Ь [М] и 5 [К]. То есть необходимо вырезать вектор, наиболее близкий к Ь [М] из запасов сырья, наиболее близких снизу к вектору 5 [К].
Получим следующую задачу линейного программирования:
/ = х[М] • 1[М] + у[М] • l[M] min
Е ММ, Ni] . Хг[7Уг] - х[М] + у[М] = Ь[М]
1[Щ.Х{[Щ +z[i\ = S[i\,ieK
х[М] > 0[М],у[М] > 0[M],z[K] > 0[К], Хг[7Уг] ^ 0[Nt],i е К
Ь[г\
u S[K]-L[K] иУЬ\ b[M]-l[M]
+ 1.
Данная задача очень похожа на 2.3 (отличие только в г\К\ являющемся вектором искусственных переменных в 2.3, а здесь это вектор люфта, т.к. сырье необязательно использовать полностью). Для решения можно использовать методы задачи 2.2.
Пример:
240
[3] [1] [1] [1] [1]
0 4 0 0 0
3 1 1 3 0
0 1 +57 6 0 +20 0 2 +79 5 3 +12 1 12
3 0 6 3 0
1 1 7 0 6
(0) (0) (0) (0) (3)
+31
+
[1] 4 " [2] " 3 " [3] " 1 " [4] " 3 " " 1211
1 0 0 1 1176
0 9 +149 1 1 +79 2 1 +111 2 1 = 1278 1279
1 0 4 0 1424
0 0 0 5 1064
(0) (0) (0) (0)
Можно заметить, что выкроенный вектор практически коллинеа-рен исходному вектору Ь [М]. Чтобы убедиться в этом, проверим условие коллинеарности:
Выкроенный вектор полностью коллинеарен вектору требований, а следовательно и наиболее близкий.
Так как в примере суммарная длина сырья меньше суммарной длины заготовок, то все компоненты выкроенного вектора меньше соответствующих компонент вектора требований, а в противном случае будут больше.
3. Применение основной задачи к раскрою гильз
На «Монди-СЛПК» при раскрое гильз [4] образуются отходы, последующий раскрой которых может повысить
эффективность использования сырья при изготовлении гильз. Данная задача сводится к задаче 1 (основной задаче).
Рассмотрим следующий пример:
Ь = (5200, 4680, 54, 2430, 1800, 520, 1740, 440, 1680, 500,
2600, 360, 2500, 2880, 830, 1740, 750, 3540, 100, 3280, 300, 2000, 5400)
5 = (1, 1, 1, 1, 1, 1, 1, 53, 1, 11, 1, 100, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 195)
I = (200, 240, 594, 600, 610, 620, 700, 840, 914, 930, 1060, 1700)
Ъ = (1, 3, 14, 141, 14, 430, 81, 81, 537, 9, 17, 7, 5)
Данный пример взят с производства. Решение следующее:
[23] [4] [9] [11] [14] [18]
0 0 0 0 0 0
1 0 0 0 0 0
2 0 0 0 0 0
0 2 0 2 0 0
1 1 0 0 1 0
1 1 1 0 1 0
0 +1 0 +1 0 +1 2 +1 0 +1 0
0 0 0 0 1 0
0 0 0 0 0 2
3 0 0 0 0 0
0 0 0 0 1 0
0 0 1 0 0 2
0 0 0 0 0 0
(0) (0) (0) (0) (0) (0)
[23] [23] [23] [2] [23]
1 0 0 0 0
0 0 0 0 0
4 0 0 0 0
1 0 2 0 0
1 0 0 5 0
0 0 0 0 1
1 +20 0 +62 0 +1 1 +5 2
0 4 0 0 0
0 3 5 0 2
1 0 0 0 0
0 0 0 1 0
0 0 0 0 0
0 0 0 0 1
(0) (0) (0) (0) (0)
[23] [23] [23] [1] [23]
0 0 0 0 0
0 0 0 1 0
0 0 0 5 0
0 0 2 0 0
0 0 0 0 0
0 0 0 0 6
5 +3 0 +6 6 +1 0 +70 0
0 0 0 0 0
1 2 0 0 2
0 0 0 0 0
0 4 0 1 0
1 0 0 1 0
0 0 0 0 0
(0) (0) (0) (0) (0)
[20] [22] [23] [5]
+ 1
0 0 0 0 1
0 0 0 0 3
0 1 0 0 14
0 0 0 0 141
4 0 0 0 14
0 0 0 0 430
0 +1 2 +1 4 +1 0 81
0 0 0 0 81
1 0 2 1 537
0 0 1 1 9
0 0 0 0 17
0 0 0 0 7
0 0 0 0 5
(0) (6) (6) (46)
В данном примере вектор запасов сырья фиксирован, кроме последней компоненты. Она была подобрана таким образом, чтобы данная задача имела допустимые решения.
Все компоненты вектора запасов сырья, кроме последней — отходы от производства, а последняя — сырье, из которого нарезаются гильзы.
Суммарная длина отходов, использованных в раскрое, равна 30090 мм. Это соответствует пяти длинам основного материала, который может быть сэкономлен. Или это 28, 6% всех отходов, накопленных на данном этапе производства.
Литература
1. Канторович Л.В., Залгаллер В.А. Рациональный раскрой промышленных материалов. Новосибирск.: Наука, 1971. 299 с.
2. Романовский И.В. Алгоритмы решения экстремальных задач. М.: Наука, 1977. 352 с.
3. Гантмахер Ф.Р. Теория матриц. М.: Наука, 1966. 576 с.
4. Байбородина О.В., Саковнич Д.Ю. Применение комбинированного алгоритма решения задачи форматного раскроя для повышения эффективности бизнес-процессов производства гильз. //Вестник Сыктывкарского ун-та, Сер Л: Мат.Мех.Инф. 2009. Вып. 9. С. 54 - 63.
Summary
Nikitenkov V.L., Podorov A.E. Modifications of waste cutting problem
The problem of cutting materials with various length and limited stores is considered as the waste cutting problem. Five it's modifications are offered. In some of them methods of a finding admissible inverse matrix are given. Results of numerical experiments are discussed.
Сыктывкарский университет
Поступила 30.03.09