Вестник Сыктывкарского университета. Сер Л. Вып. 8. 2008
УДК 519.717
БАЗИСНОСТЬ ОПТИМАЛЬНОГО РЕШЕНИЯ ЦЕЛОЧИСЛЕННОЙ ЗАДАЧИ ЛИНЕЙНОГО РАСКРОЯ
В. Л. Никитенков
Показано, что оптимальное решение целочисленной задачи линейного раскроя будет находиться среди оптимальных решений соответствующей линейной задачи раскроя с одним дополнительным ограничением, соответствующим введению дополнительной заготовки единичной длины. Установлена базисность этого решения.
В [1] при решении целочисленной задачи линейного раскроя применялся следующий комбинированный двухэтапный алгоритм: в оптимальном решении линейной задачи, полученном модифицированным симплекс алгоритмом, выделяются целые части и строится целочисленный вектор остатков требований, который затем комбинаторным способом разбивается на минимальное число способов раскроя. При этом иногда получается план раскроя, который содержит больше способов раскроя, чем размер базиса. Хотелось бы выяснить, как нужно модифицировать исходную задачу путем введения дополнительных ограничений, чтобы оптимальное решение целочисленной задачи было базисным для неё. Сначала рассмотрим небольшой пример:
Имеется сырьё длины Ь — 16 и два типа заготовок с вектором длин 1[М] = (6,4). Требования на заготовки задаются вектором Ь[М] = (5,13). Решение линейной задачи имеет вид
+
21
5
13
Выделяя остаток вектора требований, и разбивая его на два раскроя, получим оптимальное решение целочисленной задачи
2 1
(0)
2 +
О
4
(0)
2 +
1 2
(2)
1 +
0
1
(12)
1 =
5
13
(14)
© Никитенков В.Л., 2008.
содержащее 4 способа раскроя, с минимальным суммарным отходом 14 (отход указан в скобках под каждым способом раскроя и в векторе требований).
В то же время, исходя из базисного решения линейной задачи
"2" £ + "0" 13 _ "5"
0 2 + 4 4 13
можно получить оптимальное целочисленное решение, содержащее три способа раскроя
2 0 1 1 = 5
2 + 3 +
0 4 1 13
(4) (0) (е) (14)
Итак, рассмотрим задачу линейного раскроя (ЗЛР):
/ = 1[Щ-х[Щ —> тт
А[М,Щ -х[Щ = Ъ[М] х[Щ > О [ТУ]
Здесь
М множество типов заготовок;
1[М] вектор длин заготовок;
Ь[М] вектор требований на заготовки;
А[М, ТУ] матрица всех возможных способов раскроя (матрица раскроев);
ТУ множество номеров способов раскроя.
(раскрой А[М^] (^ Е ТУ) неотрицательный целочисленный вектор: А[М,з]-1[М\<Ь)
Величину Ь[М] • 1[М] = рЬ + д (0 < д < Ь) будем называть полезной вырезаемой длиной.
Пусть теперь х*[ТУ] оптимальное решение ЗЛР. /* = /(х*) = 1[УУ] • х*[УУ] > р (/* нецелое). Тогда существует оптимальное решение целочисленной задачи линейного раскроя (ЦЗЛР) со значением целевой функции [/*] +1 и 0 < 1 — {/*} < 1 есть превышение минимального значения целевой функции целочисленной ЗЛР над минимальным значением целевой функции ЗЛР [1].
Введём вектор остатков способов раскроя А[гп + 1, ТУ] : А[гп + 1, = Ь — 1[М] • А[тп,э\ - остаток ^'-го способа раскроя.
Расширим множество способов раскроя введением «пустого» раскроя А[М,п + 1] = О[М], с остатком Ь. (А[т + 1,п + 1] = Ь). Теперь
= ТУ и {п + 1}, Мх = М и {га + 1}.
Тогда a;*[iVi] = (x*[iV], 1 — {/*}) будет оптимальным решением 3JIP.
д = l[jVi] -x[iVi] —> min
А[МЪ iVi] • x[Nx] = b[Mx] (b[m + 1] = A[m + 1, M] • x^]) ar[iVi] > x*[iVi] При x[Ni] = a:*[iVi] имеем
g* = l[iV] .X*[N] + 1- {/*} = [/*] + {f} + 1 - {/*} = LT] + 1 (*) { \ A[M, N] ■ + 0[M] • (1 - {/*}) = b[M] A[m + 1,N] ■ x*[N] + L( 1 - {/*}) = b[m + 1]
Так, как значение целевой функции известно, а все используемые раскрои безотходные, можно подсчитать полезную вырезанную длину b[Mi] • /[Ml] = b[M] • l[M} + b[m + 1] • 1 = pL + q + b[m + 1] = ([/*] + 1 )L
4-V-'
Отсюда находим
b[m + 1] = ([/*] + 1 -p)L-q = ([/*] + 1) • L - b[M} ■ l[M],
и устанавливаем, что новая компонента вектора требований равна суммарному отходу
L - q < Ь[М + 1] < kL - q
Проверим выполнение последнего ограничения
Ef=i(b - l[M] . A[M,j]) • x*[j] + L( 1 - (П) =
= L ■ l[iV] • x*[iV] + L{ 1 - {/*}) - l[M] ■ A[M, N] ■ x*[iV] =
= L([f*} + {/*} + 1 - {/*}) - l[M] ■ b[M} = L([f] + 1 )-pL-q =
= L{[f*] + l-p)-q = b[m + l}.
С другой стороны решение o;*[iVi] не является допустимым для ЦЗ-ЛР, так как x*[n + 1] = 1 - {/*} < 1.
Покажем, что в оптимальном решении ЦЗЛР линейного раскроя ¡r[iVi] последняя компонента должна быть равна нулю, т. е. ж[п + 1] = Ö.
Предположим противное. Пусть ж[п+1] = z > 0, z - целое. Перенесем в (*) последний столбец в правую часть.
A[MuN]-x[N] = 6[Mi] - г
'О [М] L
. Умножим слева на 1[М\
1[Мг] • А[МЪЩ ■ х[Щ = 1[Мг] ■ ^Мг] - г • Ь. Ь ■ 1[7У] = ([/*] + 1 )Ь-г-Ь=>7= ([/*] + 1)-г< [/*] + 1!!!
Получаем значение целевой функции ЦЗЛР меньшее, чем в линейной задаче.
Если базисное решение, то оно содержит (т + 1) «непустых»
раскроев.
Но всегда ли оно будет базисным?
Пусть Nf базис, соответствующий оптимальному решению ЗЛП х*[Щ. Заменим в (*) целевую функцию на следующую:
к(х) = х[п + 1] —^ тт,
и построим в качестве начальной симплекс-таблицу, отвечающую базисному решению (х*[ЛГ], х[п + 1]) с базисом N[ = {ТУ, п + 1}. Начнём с базисной матрицы.
А[МЪМ[} =
Обратная матрица к базисной
В[М[,М1} =
Здесь необходимо определить только компоненты последней строки В[п + 1,Л
Перемножая скалярно последнюю строку базисной матрицы на столбцы обратной, получим А[тп + 1, ЛГ{] • В[Щ^} = (Ь ■ 1[ЛГ'] - 1[М] • А[М, Л/"']) • В[М',Я + Ь-В[п + 1,Я=0 Ь-и[з\~т+Ь-В[п + 1,;] = 0 откуда находим
В[п +М = -!/[;] + ¥
А[М, №] 0 [М]
Ь ■ 1[М'} - 1[М] • А[М, АГЛ Ь
Б[ЛГ',М] 0[ЛГ']
В п + 1,М] 1/Ь
Проверка:
B[n + 1, М] ■ A[M,j] + i(L- l[M] ■ A[M,j]) = (-v[M] + A[M,j] = = -(v[M]-A[MJ]-l) = -e\j] = 0
Вектор двойственных переменных
л/i] = C[jv;]-B[JV;,Mi] = (o[JV],I)- B[JV;, = (в\п + I, м], I/LJ =
Значения базисных переменных
xm = [х*т,(1-{г})]
Пусть j Е Aii, подсчитаем оценку раскроя A[M\,j\
e1\j] = v[M1].A[M1J]-0 = = (-z,[М] + И) • A[M,j] + l[M] • A[M,j]) =
= —v[M] • + + 1 - =
= -(i/[M]-A[M,j]-l) > O4 x
4-V-'
e\j]< 0
Решение не является оптимальным, и будет оставаться таковым, если вводить в базис вектора с нулевой оценкой («кандидаты» в оптимальный базис), до тех пор, пока фиктивный раскрой (0[М], L) не будет выведен из базиса.
Покажем, что оптимальное целочисленное решение ЦЗЛР (*) является базисным, т. е. содержит не более (га + 1) базисных раскроев. Согласно [1], «образ» каждой целой точки на К • L-гиперплоскости (.К — [/*] + 1) принадлежит некоторому симплексу с вершинами в целых точках на L-гиперплоскости и выражается через выпуклую линейную комбинацию его вершин с коэффициентами, пропорциональными i (К = [/*] + 1)
*£! = (!-£) льм + U - ЩМ1} + f; | ад,
^ ' i=2
где q, qi (i е 2 : га) целые, q < К, Yh=2 Ч < Ч-Умножая на К, получим
(тп \ m
q-^qi \ ЩМ^ + ^ЯгЩМг].
1 = 2 / i = 2
Здесь г е 0 : га целочисленные неотрицательные точки с
L-гиперплоскости (т. е. (т + 1) способов раскроя). (.К — ç), q — ^iLQi (i £ 2 : m) целые неотрицательные
коэффициенты.
(К - ç) + q - <1г + E™ 2 % = К.
Полагая
m
ад = ? - X)®' =
г=2
zfô+i] = ft, i?i[Mi] = A[MiJi+i], г G 2 : m,
получим целочисленное базисное оптимальное решение ЦЗЛР, содержащее не более (m + 1) способов раскроя.
Таким образом, оптимальное решение целочисленной задачи линейного раскроя следует искать среди базисных решений задачи (*) - 3JIP с дополнительным ограничением на остатки сырья (что равносильно введению дополнительной заготовки с единичной длиной).
Литература
1. Никитенков В.Л. О целочисленном решении задачи линейного раскроя// Вестник Сыктывкарского университета. Сер.1: Мат. Мех. Инф. 2006 Вып. 6. С. 165-178
Summary
Nikitenkov V.L. Basic property of the optimal integer-valued solving of the linear cutting problem
It was proved that basic solution of the some modification linear cutting problem is optimal integer-valued solving of the integer cutting problem.
Сыктывкарский университет
Поступила 28.02.2008