УДК 519.854.3
НикитЕНков владимир Леонидович, доктор технических наук, профессор, заведующий кафедрой прикладной математики Сыктывкарского государственного университета, заслуженный работник высшей школы РФ. Автор более 80 научных публикаций, в т. ч. 5 учебных пособий и монографий
САковНич Дмитрий Юрьевич, аспирант кафедры прикладной математики Сыктывкарского государственного университет. Автор 6 научных публикаций
ПоДоров Александр Евгеньевич, аспирант кафедры прикладной математики Сыктывкарского государственного университета. Автор 4 научных публикаций
методы решения задачи генерации столбцов с учетом производственных ограничений
Рассмотрены два метода решения задачи о ранце в рамках решения задачи форматного раскроя с учетом производственных ограничений. Приведены результаты численных экспериментов. Выделены сильные и слабые стороны обоих методов.
Линейный раскрой, задача о ранце, метод ветвей и границ, метод динамического программирования
Введение. В данной работе рассматриваются различные модификации алгоритмов генерации столбцов, учитывающие особенности раскроя бумажного полотна в целлюлозно-бумажной промышленности [1] (постановку задачи в целом и основные понятия можно найти в [2, 3]).
Рассмотрим задачу генерации столбцов, возникающую в ходе проведения симплекс-метода [4]. Если вектор V - это вектор двойственных переменных на итерации симплекс-метода, то задача генерации столбца примет следующий вид:
© Никитенко В.Л., Саковнич Д.Ю., Подоров А.Е., 2011
у[М] • г\М\ —» тах 1[М]-г[М]<Ь ■ г[М] > 0[М] г[М] - целочисленный,
где Ь - длина тамбура, 1[М] - длины заготовок.
В данной постановке, эта задача является классической задачей о ранце, для решения которой существуют эффективные алгоритмы, основанные на методе ветвей и границ и методе динамического программирования [5].
На практике же на решение исходной задачи накладываются дополнительные производственные ограничения. Здесь мы рассмотрим следующие:
1) С каждого края тамбура необходимо срезать обязательную кромку, которая варьируется в некотором диапазоне. Это связано с тем, что край бумажного полотна после выхода с БДМ неровный;
2) Ножи ПРС имеют некоторые физические размеры, вследствие чего их невозможно поставить бесконечно близко друг к другу. На практике это означает, что существует минимальный формат рулона, который вообще возможно получить. Размер минимального рулона также может регулироваться административно, исходя из соображений удобства работы с ним;
3) Количество ножей на ПРС ограничено. Это необходимо учитывать при формировании решения;
4) Вследствие технических нарушений в работе БДМ на бумажном полотне может возникать область постоянного брака. Это означает, что ее необходимо «накрыть» попутчиком*, расположенным в определенной области тамбура и разбивающим его на две части. В случае если зона меньше минимально допустимого формата рулона (минимального попутчика), то положение вводимого попутчика может меняться, при условии, что зона брака заключена внутри него. Таким образом, размеры небракованной области тамбура зависят друг от друга (рис. 1). В общем случае зон постоянного брака может быть более одной.
Рис. 1. Плавающая область брака
Метод ветвей и границ. В основе метода ветвей и границ лежит идея последовательного разбиения множества допустимых решений на подмножества (стратегия «разделяй и вла-
ствуй»). На каждом шаге метода элементы разбиения подвергаются проверке для выяснения, содержит данное подмножество оптимальное решение или нет.
Существенное влияние на классический алгоритм оказывает ограничение на число ножей и возникающие области постоянного брака.
Первое достаточно легко учитывается: для этого каждый раз, совершая шаг вперед, мы, помимо сравнения текущего найденного решения с рекордом, также должны проверить его на допустимость (сравнить потраченное число ножей с максимальным). Для более эффективной реализации число ножей можно учитывать при построении решения и тем самым отбросить заведомо недопустимые решения.
Второе ограничение в данном методе учесть значительно сложнее. Это связано с тем, что область брака разбивает тамбур на две взаимозависимые зоны, решать задачу, на которых нужно совместно.
Пусть у нас 5 областей брака [1...5], которые разбивают тамбур на 5 + 1 областей. Обозначим их Ь0,Ьг,...,Ь. Будем заполнять эти области последовательно. Пусть также і - это номер текущей заполняемой области.
Алгоритм (рис. 2):
1) і ^ 0;
2) Максимально расширяем текущую область за счет плавающих пограничных областей брака;
3) Заполняем ее, начиная с формата с наибольшей удельной стоимостью, далее переходим к меньшей, и так далее до тех пор, пока это возможно;
4) Сдвигаем (і + 1)-ю бракованную область максимально влево и переходим к следующей
і + 1;
5) Если і < 5, то переходим на шаг 2;
6) Делаем шаг назад: убираем последний положенный формат и заменяем его на еще нерассмотренный в текущей области формат с меньшей удельной стоимостью. Если это невозможно, то убираем еще один. И так далее.
Іт, і
" Здесь под попутчиком понимается рулон с заключенной внутри бракованной областью, которой идет в отход.
Ь\ К-1 Ь2
Рис. 2. Фиксированная область брака
Введем дополнительные обозначения: с - текущая стоимость уложенных форматов, Ї. - свободная область в рабочей области Ь . при условии, что она максимально уменьшена за счет правой области брака (правую область сдвигаем максимально влево),
Ї - размер необработанных областей с учетом уменьшения Ь
І - текущий формат в рабочей области, в8ї - оценка.
При осуществлении шага вперед оценка максимума остатка тамбура вычисляется следующим образом:
Є5Ґ = с + — ■ с[ /1 -I—-— • с[0]
•
Нетрудно заметить, что предложенный алгоритм подходит также и для фиксированных областей постоянного брака. В этом случае при переходе между областями Ь не требуется сдвигов бракованных областей. Все остальное остается без изменений. Если алгоритм модифицировать аналогично тому, как мы учитывали число ножей, то он будет охватывать все рассмотренные нами ограничения.
Так как при переходе от одной зоны к другой размещение форматов начинается заново, что отчасти эквивалентно началу решения новой задачи, то можно ожидать, что с ростом числа бракованных зон при одном векторе требований время работы алгоритма будет тоже расти (рис. 3).
Метод динамического программирования. Рассмотрим классическое решение г-задачи методом динамического программирования без учета производственных ограничений. Будем считать длину тамбура Ь и длины форматов 1[М] целыми числами (это позволит в дальнейшем ограничиться конечным множеством текущих длин тамбура). Кроме того, добавим в М формат длины 1 с нулевым доходом,
Рис. 3. Иллюстрация работы алгоритма для случая двух бракованных зон
обозначающий отход. Введем множества Е с М следующим образом:
Е, = У е М\ 1[Д < г},
другими словами, это то множество форматов, которое можно отрезать от текущей длины тамбура г. Рассмотрим далее граф G(V Е) со множеством вершин V = [0; Ь] и множеством дуг Е. Каждой вершине г £ V соответствуют дуги, ведущие из г в г - /[/] и приносящие доход £Е Заметим, что из каждой вершины г можно перейти в (г - 1)-ю с нулевым отходом. Исходная г-задача эквивалентна задаче о нахождении пути наибольшей стоимости из вершины Ь в 0 в построенном графе [6].
Рассмотрим теперь как можно модифицировать изложенный метод решения г-задачи для учета производственных ограничений и подробно опишем эти изменения. Сначала предложим метод решения задачи без учета максимального числа ножей.
Будем рассматривать г-ю область брака как отрезок Я. = [Ъ; е.] с [0; Ь] = V, г = 1..^, где Ъ. - начало и е, - конец области. Введем, кроме того, величину w. = е - Ъ - ширину области брака и I- размер минимального попутчика. Разобьем множество вершин [е,; Ъ . ] (пространство между соседними областями брака) на три непересекающихся множества:
Е[ = [ег,Ь, +тах{^.;/}]
Е'2 =
Ъ{ + тах{м>.; 1} +1; еі + тіп 1[М] -1
уєМ
Е\
еі + тт1[М];Ьы
|_ )чМ
Раскроем по порядку смысл этих множеств (рис. 4).
1) Из вершины Ц £ Е[ вЦ - тах {wг;1} выходит дуга с доходом 0. При этом очевидно, что е . - тах^.; I} > 0 и Ъ + тах^.; I} < Ь (если эти условия не выполняются, то необходимо сузить Е[ до допустимых размеров). Таким образом, дуги из Ц полностью покрывают собой бракованную область Я.. Очевидно, что |е;| = тах^.; I}- w .. +1 - это то количество дуг с длинами тах^.; I}, которое необходимо для покрытия Я .. При этом, если бракованная
К
= 1,
иначе
К
> 1.
зона фиксированная, то
Смысл дуг из Е[ состоит в «перешагивании» области брака дугами большими либо равными размеру минимального попутчика.
2) Из вершины Ц £ Е'2 в Ъ. выходит дуга с доходом 0. Это множество введено из-за того, что, не имея возможности опустить дугу с длиной, большей либо равной чем минимальный требуемый формат, не попав при этом на бракованную область, мы должны получить в точках данного множества стоимости максимального пути, как и в вершине Ъ .
3) Рассмотрим множество Е'3. Введем множества Ег. (смысл которых схож с раннее рассмотренными Е.) следующим образом:
Щ = {/ е м|г - 1Ц] > е}.
Каждой вершине Ц £ Ег3 соответствуют дуги, ведущие изЦ в Ц- /[к] и приносящие доход у[к], "к £ Е'. Причем они не пересекают бракованную область Я.. Кроме того, мы долж-
ны иметь возможность проверять стоимость максимального пути до вершины Ъ , поэтому опустим из вершины Ц £ Е3 дугу в Ъ приносящую доход 0.
4) У вершин Я. \ {Ъ е.} (внутренние точки области брака) нет инцидентных дуг, т.к. нож не должен попадать в данную область, другими словами, мы обязаны вырезать область брака целиком.
5) Нерассмотренным остались только множества [е^; Ь] и [0;Ъ1]. В первом случае положим Ъ+1 = Ь, в другом случае - Е10 = 0, Е° = 0, е0 = 0, из этого следует, что у вершин [0;Ъ1 ] \ Е30 нет исходящих дуг. Тогда все положения выше остаются верными в этих случаях.
Теперь обобщим вышесказанное. Обозначим за Е множество всех дуг, выходящих из г-й вершины и пусть "Ц £ Ег, / Ц] - длина этой дуги, а ~ Ц] - ее стоимость. Тогда, если Ц £ М (то есть дуга представляет вырезаемый формат), то ~ |Ц] = /Ц] и ~ Ц] = гЦ], в противном случае дуга соответствует обрезанной области брака, тогда / Ц] - длина этой дуги (ее можно определить, следуя положениям пунктов 1-5) и ~ |[/] = 0.
Таким образом, если мы построим граф О^, Е), следуя пунктам 1-5, то сведем поставленную задачу к поиску пути наибольшей стоимости из вершины Ь в 0 в полученном графе (классическая задача поиска максимального пути на графе).
Рассмотрим теперь метод решения задачи уже с учетом максимального числа ножей.
Пусть число ножей ПРС ограничено числом К. Так как построенный граф О^, Е) -ориентированный и ациклический, то все пути
Рис. 4. Граф О
в нем элементарные, следовательно, в каждом из них число вершин на единицу больше числа дуг. Если интерпретировать вершины как ножи, установленные в определенных позициях тамбура, а дуги ввести согласно положениям выше (пункты 1-5), тогда задача сводится к поиску пути наибольшей стоимости, состоящего не более чем из К - 1 дуг, в полученном графе. Заметим также, что не все его дуги соответствуют какому-либо формату, т.к. некоторое их число включает в себя бракованные области (это дуги нулевой стоимости).
Рассмотрим далее метод поиска максимального пути в графе, состоящего не более чем из К дуг. Построим матрицу и^01’ ’Ь]x[0,1,...,К], элемент и к которой есть стоимость максимального пути из вершины в 0, состоящего не более чем из к дуг. Путь, содержащий 0 дуг, существует только до вершины 0. Таким образом, при г = 0, и. 0 = 0, иначе и. 0 = - да . Теперь рассмотрим пути максимальной стоимости из г в 0, содержащие ровно к дуг. Каждый такой путь есть путь из к - 1 дуг, к которому добавлена последняя дуга, при этом стоимость полученного пути максимальна. Таким образом, элементы матрицы и могут быть вычислены последовательно по формуле:
иик = тах{£/._Г[у] ^ + у[/],7 е Д.},
I = 0 : Ь,к = 1: К.
Кроме того, необходимо ввести матрицу р[0,1,...,Ь]х[0,1,...,к], элемент Р.к которой содержит предыдущую дугу до вершины г в одном из путей наибольшей стоимости, полученных в матрице и. Таким образом:
Рик = атёшах{и._Шк1+ууи е Д},
1 = 0:Ь,к = \:К.
Последовательно получая элементы матриц и и Р, задача будет решена.
Таким образом, мы получили решение поставленной задачи, построив и и Р. Осталось только восстановить способ раскроя из матрицы Р. Для этого воспользуемся следующим алгоритмом:
r[M] - искомый способ раскроя, r[M]^0 [M],
c ^ к (число дуг в пути наибольшей стоимости),
i — argmaxUjc (заметим также, что при
jeV
введении в задачу рассмотренных ограничений, i, вообще говоря, не равно L),
пока (е.ф 0), если тогда
конец
i <-i-l \Pic\
c ^ c - 1 конец
Численные эксперименты. Для проведения численного эксперимента тесты генерировались следующим образом:
L = 8000,
l[i], v[i] - равномерно распределены на отрезке [500, 2100], m е {10,20},
K - равномерно распределены на отрезке [2,90],
* е{0,1,...,8},
I - равномерно распределен на отрезке [250,500].
Для проведения численного эксперимента был использован компьютер с процессором Intel Core 2 Duo E4500 (2.2 GHz) и оперативной памятью DDR2 объемом 2 Гб. Для каждой комбинации исходных данных (s,m) было сгенерировано 1000 тестов. В табл. 1 приведено среднее время их выполнения в миллисекундах (ВиГ - метод ветвей и границ, ДП - метод динамического программирования).
Из табл. 1 видно, что с ростом числа бракованных зон производительность метода ветвей и границ падает, а динамического программирования наоборот растет.
Также нетрудно заметить, что метод ветвей и границ статистически существенно эффективнее динамического программирования. Однако существует класс исходных данных, где
Таблица 1
РЕЗУЛЬТАТЫ ЧИСЛЕННОГО ЭКСПЕРИМЕНТА
Номер теста Число бракованных областей ^) ВиГ, т=10 ДП, т=10 ВиГ, т=20 ДП, т=20
1 0 0,001 1,587 0,0015 3,284
2 1 0,0011 1,406 0,0022 2,684
3 2 0,0015 1,225 0,0025 2,217
4 3 0,0017 1,098 0,0038 1,892
5 4 0,0023 0,927 0,0056 1,511
6 5 0,0028 0,786 0,0116 1,293
7 6 0,0044 0,66 0,024 0,96
8 7 0,0089 0,638 0,057 0,831
9 8 0,0152 0,603 0,136 0,716
наблюдается обратная ситуация. Рассмотрим следующий пример:
Ь = 7998; /[г] = 240 + г • 20, у[г] = /[г], г = 0..т - 1; 5 = 0; К = +¥.
В табл. 2 приведены результаты одного теста для каждого т.
Таблица 2
ОСОБЫЙ КЛАСС ВХОДНЫХ ДАИИЫХ
т ВиГ ДП
10 552,4533 4,2119
15 32248,7907 4,7986
ном), а также стремительно падает с ростом т. С другой стороны, метод динамического программирования показал аналогичные результаты. Для сравнения в табл. 3 представлены результаты того же теста при условии, что у[і] равномерно распределены на отрезке [240,240 + 20 • (т - 1)].
Таблица 3
РЕЗУЛЬТАТЫ ТЕСТОВ ПРИ ЦЩ +
т ВиГ ДП
10 0,2728 5,4985
15 0,3247 7,7483
Эти входные данные характеризуются тем, что вектор /[М] пропорционален вектору у[М]. Поэтому в методе ветвей и границ оценки максимума совпадают во всех узлах дерева вариантов, т.е. все поддеревья равноэффективны. Это приводит к полному перебору всех узлов дерева (всех способов раскроя), что требует значительных вычислительных затрат. Сложность же метода динамического программирования практически не зависит от v[M], а только от Ь и т. Результаты тестов (табл. 1, 2) подтверждают эти выводы: производительность метода ветвей и границ стала существенно ниже при /[М] = у[М] (или пропорциональ-
Заключение. В данной работе были рассмотрены два классических метода решения задачи о ранце и предложены их модификации для решения г-задачи, учитывающие производственные ограничения.
Численные эксперименты показали значительное преимущество метода ветвей и границ над динамическим программированием в подавляющем большинстве тестов, однако было показано, что существует класс исходных данных, который в корне меняет эту картину. Несмотря на то, что вероятность встретить такие исходные данные на практике мала, не учитывать их мы не можем, т.к. даже один подобный вход г-задачи может на порядок увеличить
время решения задачи форматного раскроя в целом.
Таким образом, главное преимущество метода динамического программирования в его стабильной работе. Преимущество метода ветвей и границ в его статистической эффек-
тивности. К слабым сторонам динамического программирования относится относительно большое время решения задачи, по сравнению с методом ветвей и границ. Недостатком метода ветвей и границ является существование класса «плохих» входных данных.
Список литературы
1. Воронин А.В., Кузнецов В.А. Математические модели и методы в планировании и управлении предприятием ЦБП. Петрозаводск, 2000.
2. Никитенков В.Л. О целочисленном решении задачи линейного раскроя // Вестн. Сыктывкар. ун-та. Сер. 1: Математика. Механика. Информатика. 2006. Вып. 6. С. 165-178
3. Никитенков В.Л., Саковнич Д.Ю. Реализация комбинированного алгоритма решения целочисленной задачи линейного раскроя // Там же. С. 199-208.
4. Романовский И.В. Алгоритмы решения экстремальных задач. М., 1977.
5. Martello S., Toth P. Knapsack Problems: Algorithms and Computer Implementations. Chichester, 1990.
6. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. М., 1999.
Nikitenkov vladimir, Sakovnich Dmitry, Podorov Alexandr
KNAPSACK PROBLEM SOLVING ALGORITHMS WITH ADDITIONAL LIMITATIONS
Cutting stock problem with additional limitations and two algorithms of solving its subproblem (knapsack problem) are considered. Results of numerical experiments are adduced. Strengths and weaknesses of both algorithms are determined.
Контактная информация: Никитенков Владимир Леонидович e-majl: [email protected] Саковнич Дмитрий Юрьевич e-majl: [email protected] Подоров Александр Евгеньевич e-majl: [email protected]
Рецензент - Попов В.Н., доктор физико-математических наук, доцент, заведующий кафедрой математики Северного (Арктического) федерального университета имени М.В. Ломоносова