Научная статья на тему 'БЫСТРЫЙ АЛГОРИТМ РЕШЕНИЯ КВАДРАТИЧНОЙ ЗАДАЧИ О РАНЦЕ'

БЫСТРЫЙ АЛГОРИТМ РЕШЕНИЯ КВАДРАТИЧНОЙ ЗАДАЧИ О РАНЦЕ Текст научной статьи по специальности «Математика»

CC BY
33
6
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
КВАДРАТИЧНОЕ ПРОГРАММИРОВАНИЕ / ЗАДАЧА О РАНЦЕ / БЫСТРЫЕ АЛГОРИТМЫ

Аннотация научной статьи по математике, автор научной работы — Плоткин Артем Владимирович

В работе рассматривается задача квадратичного программирования со строго выпуклой сепарабельной целевой функцией, единственным линейным ограничением и двусторонними ограничениями на переменные. В англоязычной литературе эта задача называется Convex Knapsack Separable Quadratic Problem, или сокращенно - CKSQP. Нас интересует алгоритм решения задачи CKSQP с линейной сложностью. Посвященные этой теме работы содержат неточности в описании алгоритмов и неэффективные реализации. В данной работе удалось преодолеть имеющиеся трудности.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

FAST ALGORITHM FOR QUADRATIC KNAPSACK PROBLEM

The paper considers a quadratic programming problem with a strictly convex separable objective function, a single linear constraint, and two-sided constraints on variables. This problem is commonly called the Convex Knapsack Separable Quadratic Problem, or CKSQP for short. We are interested in an algorithm for solving CKSQP with a linear time complexity. The papers devoted to this topic contain inaccuracies in the description of algorithms and ineffective implementations. In this work, the existing difficulties were overcome.

Текст научной работы на тему «БЫСТРЫЙ АЛГОРИТМ РЕШЕНИЯ КВАДРАТИЧНОЙ ЗАДАЧИ О РАНЦЕ»

УДК 519.85 Вестник СПбГУ. Математика. Механика. Астрономия. 2022. Т. 9 (67). Вып. 1

MSC 90C20

Быстрый алгоритм решения квадратичной задачи о ранце

А. В. Плоткин

Санкт-Петербургский государственный университет,

Российская Федерация, 199034, Санкт-Петербург, Университетская наб., 7—9

Для цитирования: Плоткин А. В. Быстрый алгоритм решения квадратичной задачи о ранце // Вестник Санкт-Петербургского университета. Математика. Механика. Астрономия. 2022. Т. 9(67). Вып. 1. С. 76-84. https://doi.org/10.21638/spbu01.2022.108

В работе рассматривается задача квадратичного программирования со строго выпуклой сепарабельной целевой функцией, единственным линейным ограничением и двусторонними ограничениями на переменные. В англоязычной литературе эта задача называется Convex Knapsack Separable Quadratic Problem, или сокращенно — CKSQP. Нас интересует алгоритм решения задачи CKSQP с линейной сложностью. Посвященные этой теме работы содержат неточности в описании алгоритмов и неэффективные реализации. В данной работе удалось преодолеть имеющиеся трудности.

Ключевые слова: квадратичное программирование, задача о ранце, быстрые алгоритмы.

1. Постановка задачи. Рассмотрим следующую задачу квадратичного программирования :

7j{Hx,x) — (с,х) —> min,

n

aiXi = b, (1)

i=i

li ^ xi ^ ri, i G 1 : n.

Здесь b, cj, ai — вещественные параметры, li G R U {-то}, ri G R U {+то}, и H — диагональная матрица порядка n с положительными диагональными элементами hi,h,2,... ,hn. Целевая функция задачи (1) является строго выпуклой и сепарабельной. Через О обозначим множество планов, то есть векторов x = (xi, X2,..., xn), удовлетворяющих ограничениям задачи (1).

Данная задача рассматривалась, например, в диссертации [1], где имеется обширная библиография. В работе [2] приводится критический анализ существующих алгоритмов решения задачи (1).

В тексте статьи мы будем предполагать, что li, ri G R. Это позволит упростить изложение. При этом разработанное программное обеспечение будет учитывать случаи li = —то и ri = +то.

Во многих приложениях задача (1) встречается с единичной матрицей H, что соответствует проектированию точки c на множество О [3, 4]. Из других приложений можно выделить квадратичную задачу распределений ресурсов [5] и вычисление матрицы обновления в квазиньютоновском методе при наличии ограничений на якобиан [6].

© Санкт-Петербургский государственный университет, 2022

2. Упрощение постановки. Не умаляя общности, можно считать, что в задаче (1) выполнены условия li < ri и ai = 0 при всех i от 1 до п. Если ai = 0, то оптимальное значение xi находится путем решения тривиальной задачи:

^hixf — CiXi —> min, Ii < xi < ri.

Воспользовавшись предположением о том, что коэффициенты ai в определении множества Q отличны от нуля, выполним замену переменных:

Xi = Xi/ai + Ci/hi, i G 1: n. (2)

Получим задачу следующего вида:

Tj(Hx, х) —> min,

n

i=l

где

Xi = b, (3)

1i < Xi < ri, i G 1 : n,

2 и l„2-

H = diag(hi/a\,..., hn/an)

f , v"^ aici hi

i=1

li =

ai(li — ci/hi), если ai > 0, ai(ri — c-i/hi), если ai < 0,

{ai(ri — ci/hi), если ai > 0, ai(li — ci/hi), если ai < 0.

Задача (3) является частным случаем задачи (1). Преобразование (2) имеет линейную сложность и значительно упрощает дальнейшие вычисления. В связи с этим далее будем считать, что решаемая задача имеет следующий вид:

Q(x) := ^(Нх, х) —> min,

n

= b (4)

i= 1

li ^ Xi ^ ri, i G 1 : n.

3. Условия Куна — Таккера. Целевая функция задачи (4) непрерывна и строго выпукла, а значит критерием существования решения является непустота множества планов Q. В данном случае условие непустоты множества планов записывается следующим образом:

li < b п. (5)

li < b < у r

i= i i=i

Будем считать, что условие (5) выполнено, а значит множество планов О непусто.

Заметим, что множество П является выпуклым. Вместе со строгой выпуклостью целевой функции ф(ж) это гарантирует единственность решения задачи (4). Для его нахождения воспользуемся условиями Куна — Таккера:

= Л + Щ - V»,

«¿(ж» - /¿)=0, - Ж»)=0 ,

> г £ 1 : п, (6)

Щ > 0, V» > 0,

П

= 6. (7)

¿=1

4. Характеристика оптимального плана. Разберемся с условиями (6). Для этого нам потребуется вспомогательная лемма.

Лемма. Пусть выполнены соотношения

Лт = Л + и — V, (8)

и(т - /) = 0, V(г - т)=0, (9)

и > 0, V > 0, (10)

/ ^ т ^ г,

где Л, /, г — вещественные константы, причем с > 0 и / < г. Тогда необходимо, чтобы

{/, если Л/Л ^ /,

Л/Л, если / < Л/Л < г, (11)

г, если Л/Л ^ г.

Доказательство. Проведем анализ полного набора альтернатив для переменной т.

(а1) т = /. Согласно (9), V = 0. В силу (8) и (10) имеем Лт = Л + и ^ Л, так что

Л < Л/. (12)

(а2) / < т < г. Согласно (9), и = V = 0, так что в силу (8) имеем Л = Лт. В частности,

Л £ (Л/, Лг). (13)

(а3) т = г. Согласно (9), и = 0. В силу (8) и (10) имеем Лт = Л - V ^ Л, так что

Л > Лг. (14)

Отметим, что условия (12)-(14) представляют собой полный набор альтернатив для переменной Л £ К.

Переходим к доказательству формулы (11).

Если Л/Л ^ /, то Л £ (Л/, Лг) и Л ^ Л/ < Лг, поэтому альтернативы (а2) и (а3) исключаются. Остается одна возможность — т = /.

Если / < Л/Л < г, то Л > Л/ и Л < Лг, поэтому альтернативы (а1) и (а3) исключаются. Остается одна возможность — / < т < г. Согласно (а2), т = Л/Л.

Наконец, если А/к ^ г, то А 0 (к1,кг) и А ^ кг > к1, поэтому альтернативы (а1) и (а2) исключаются. Остается одна возможность — и = г.

Лемма доказана. □

Формула (11) определяет переменную и как функцию от А: и = и (А). На рис. 1 изображен график функции и (А).

П)' Ы

0 кг X

Рис. 1. График функции (Л). Функция и (А) допускает аналитическое представление (см., например, [7])

т(Х)=1 + ^Х-Ы)+-^Х-кг)+, (15)

где (щ)+ = тах{0,щ}.

5. Сведение к скалярному уравнению. Вернемся к условиям Куна — Таккера (6), (7).

Воспользуемся доказанной леммой при каждом 2 от 1 до п. Положив и = хг, к = кг, I = ¡г, г = гг, и = щ, V = V, получим представление хг как функций от А:

ж* (Л) = к + £7(А - Мг)+ - - г € 1 : п.

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

Таким образом, условию (6) удовлетворяет множество

X = {(хх(А),...,хп(А)) | А е К} .

Добавив необходимость выполнения условия (7) на этом множестве, получим следующее уравнение:

(А) = Ь, А е К.

(16)

Свойства функций хг (А) вместе с условием (5) гарантируют существование решения данного уравнения. Подведем итоги.

Теорема. Пусть А* — решение уравнения (16), тогда х* = (х*, ...,хП), где х* = хх (А*),..., хП = хп (А*), является единственным решением задачи (4).

Далее нас будет интересовать быстрый алгоритм решения уравнения (16). Вестник СПбГУ. Математика. Механика. Астрономия. 2022. Т. 9(67). Вып. 1 79

6. Подготовка к построению алгоритма. Введем следующие обозначения:

= Ь

ai+n = ~TTi' Ai Zi,

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Ai+n hiri?

> i £ 1 : n,

^i(A) = ai(A - Ai)+, i £ 1 : 2n,

2n

F (A) = £ &(A),

i=i

C = b li.

i=i

Тогда уравнение (16) можно переписать в следующем виде:

F (A) = C. (17)

При этом функция F(A) является неубывающей ломаной с узлами Ai,..., A2n.

Во избежание двусмысленности дадим определение медиане, которого будем придерживаться в дальнейшем.

Определение. Пусть задано конечное множество вещественных чисел A = {ai}"=1. Обозначим через b1, b2,..., bm последовательность, полученную в результате упорядочивания элементов множества A в порядке неубывания. Тогда элемент bj-m+i-j называется медианой множества А.

Напомним, что медиану множества A можно найти за линейное время [8, с. 250253].

Перейдем к построению алгоритма.

Условие существования решения гарантирует нам выполнение неравенства F( min Ai) < C < F( max Ai).

iei:2n iei:2n

Наш алгоритм будет вычислять значения функции F исключительно в узлах Ai, а в качестве результата будет возвращать узел A = max{Ai | F(Ai) ^ C}. Имея такой узел, несложно найти ближайший к нему узел справа (если такой имеется), вычислить значение функции в обоих узлах и выполнить обратную интерполяцию для нахождения A*. Такие дополнительные действия требуют линейного времени работы и не окажут влияния на итоговую вычислительную сложность алгоритма.

Для упрощения понимания сначала мы представим описание алгоритма, работающего за время O(n log n), а затем покажем, как добиться линейного времени работы.

7. Упрощенная версия — алгоритм 1. Опишем упрощенную версию алгоритма.

Начальный шаг. Положим /0 = {1, 2,..., 2n}.

Инвариант. Искомый узел Л содержится во множестве Лк, где Лк = {Ai}ie1fc.

Шаг алгоритма. Пусть имеется множество /k. Если множество /k содержит единственный элемент, то этот элемент является индексом искомого узла Л. Иначе, найдем медиану множества Ak и обозначим этот узел через Amed, где med — индекс в /к. Вычислим значение функции: Fmed = F(Amed). Если Fmed ^ C, то значение Л точно не меньше Amed. Если же Fmed > C, то Л точно меньше Amed.

Таким образом, положим

i{med} U {i £ 4 | Ai > Amed}, если Fmed < C, [{i £ /к | Ai < Amed}, если Fmed > C.

Полученное множество /k+i является подмножеством /k и имеет размер, не

- Г|iklо

превышающий Ч^1 .

Оценка сложности. Алгоритм делает O(log n) итераций. На каждой итерации алгоритма выполняется вычисление функции F за O(n) операций. Затраты на вычисление медианы суммарно составляют 0(2n) + 0(п) + О(^) + O(j) + ... + 0( 1) = O(n). Таким образом, итоговая сложность алгоритма равна O(n log n).

8. Быстрый алгоритм — алгоритм 2. Для достижения линейной сложности необходимо научиться вычислять значение целевой функции как можно быстрее. Добъемся того, чтобы вычисление функции F на k-й итерации требовало O(|/k|) операций.

Сделаем следующее наблюдение. Возьмем произвольный индекс io. Пусть в какой-то момент этот индекс вышел из последовательности множеств /: io £ /к, io £ /k+i. Тогда Ai0 ^ minAk+i или Ai0 ^ тахЛк+i по построению. Так как все дальнейшие вычисления функции F будут происходить только в узлах /к+1, то уже на этапе исключения индекса io можно однозначно описать вклад функции ^i0 (A) в F(A). Если Ai0 ^ minA,^, то ^i0 (A) = ai0 A — ai0 Ai0 для всех A £ /k+i. Если Ai0 > maxAk+i, то фг0 (A) = 0 для всех A £ /k+i.

Введем и будем поддерживать линейную функцию AkA + Bk, в которой будут «аккумулироваться» линейные функции узлов, вышедших из рассмотрения.

Начальный шаг. Положим /0 = {1, 2,..., 2n}, A0 =0, B0 = 0.

Инвариант 1. Искомый узел A содержится во множестве Ak, где Ak = {Ai}ie1fc.

Инвариант 2. Для всех узлов A из /k значение функции F может быть вычислено по формуле F(A) = У]^^ Фг(Л) + Ak A + Bk.

Шаг алгоритма. Пусть имеется множество /k. Если множество /k содержит единственный элемент, то этот элемент является индексом искомого узла Л. Иначе, найдем медиану множества Ak и обозначим этот узел через Amed, где med — индекс в /k. Вычислим значение функции: Fmed = ]Cie/fc ^i(Amed) + Ak Amed + Bk. Если Fmed ^ C, то значение A не меньше Amed. Если же Fmed > C, то Л точно меньше

Amed.

В случае Fmed ^ C положим

/k+i = {med} U {i £ /k | Ai > Amed},

Ak+i = Ak + ^ ai, ieifc\ifc+i

Bk+i = Bk — ^^ «iAi. ieifc\ifc+i

В случае Fmed > C положим

Ik+1 = {i G Ik | Aj < Amed},

Ak+1 = Ak, Bk+1 = Bk.

Оценка сложности. Теперь затраты на вычисление функций, пересчет коэффициентов и работу со множествами составляют 0(2n) + O(n) + ) + О(^) + • • • + O(1) = O(n). Таким образом, итоговая сложность алгоритма равна O(n).

9. Численные эксперименты. Проведем серию численных экспериментов.

Будем решать задачи вида (4) для разных n: 104,105,106,107. Коэффициенты h будем выбирать случайно из отрезка [0.1,1], коэффициенты I и r — из отрезка [-1,1]. Параметр b выберем случайно из отрезка [^П=12Г=1 r®] .

В нашем алгоритме для поиска медианы мы будем использовать алгоритм Qick-select [8, с. 245-249], осуществляющий поиск за O(n) в среднем, но показывающий хорошие результаты на практике.

Для каждого из рассматриваемых n были сгенерированы 100 тестовых задач. Вычисления производились на машине с процессором AMD Ryzen 5 3500U и 16 Гб ОЗУ. В табл. 1 приводится среднее время работы обеих версий алгоритма.

Таблица 1. Среднее время работы алгоритмов (мс) для решения задачи вида (4)

га Алгоритм 1: O(ralogra) Алгоритм 2: О(га)

104 2 1

10Б 16 11

106 105 71

107 1175 720

Далее было решено провести сравнение скорости работы полученной реализации со специализированной библиотекой алгоритмов CQKnPClass Project [9]. Один из представленных в библиотеке алгоритмов под названием DualCQKnP ориентирован на решение задач вида (1).

Сравнительный анализ производился с помощью тестовой процедуры MainRnd, использовавшейся авторами статьи [9].

Для n, равного 104, 105, 106, 107, были созданы 100 тестовых задач. Некоторые из них могли иметь пустое множество планов. В табл. 2 приводится среднее время работы сравниваемых алгоритмов.

Таблица 2. Среднее время работы алгоритмов (мс) для решения задачи вида (1)

га DualCQKnP Алгоритм 1: О (га 1с g га) Алгоритм 2: О (га)

104 1 1 1

10Б 20 11 4

106 303 144 43

107 4552 1588 486

Стоит отметить, что алгоритм DualCQKnP имеет вычислительную сложность O(n log n), и авторы ставили под сомнение возможность эффективной реализации алгоритма с линейным временем работы.

Реализация полученных алгоритмов и тестовые процедуры доступны в репози-тории [10].

Литература

1. Jeong J. Indefinite Knapsack Separable Quadratic Programming: Methods and Applications. Dr. Sci. thesis (2014).

2. Kiwiel K. Breakpoint searching algorithms for the continuous quadratic knapsack problem. Mathematical Programming 112, 473-491 (2008). https://doi.org/10.1007/s10107-006-0050-z

3. Dai Y. H., Fletcher R. New algorithms for singly linearly constrained quadratic programs subject to lower and upper bounds. Mathematical Programming 106, 403-421 (2006). https://doi.org/10.1007/s10107-005-0595-2

4. Nielsen S., Zenios S. Massively parallel algorithms for singly-constrained convex programs. ORSA J. Comput. 4, 166-181 (1992). https://doi.org/10.1287/ijoc.4.2.166

5. Patriksson M. A survey on the continuous nonlinear resource allocation problem. European J. Operational Research 185, 1-46 (2008). https://doi.org/10.1016/j.ejor.2006.12.006

6. Calamai P., More J. Quasi-Newton updates with bounds. SIAM J. Numer. Anal. 24, 1434-1441 (1987).

7. Малозёмов В. Н., Тамасян Г. Ш. Представления непрерывных кусочно-аффинных функций. В: Семинар «CNSA & NDO». Избранные доклады. 10 сентября 2019 г. (2019).

8. Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы. Построение и анализ, пер. с англ. 3-е изд. Вильямс (2013).

9. Frangioni A., Gorgone E. A library for continuous convex separable quadratic knapsack problems. European J. Operational Research 229, 37-40 (2013). https://doi.org/10.1016/j.ejor.2013.02.038

10. GitHub. Доступно на: https://github.com/WhatElseIsThere/CKSQP (дата обращения: 30.11.2021).

Статья поступила в редакцию 10 июня 2021 г.;

доработана 16 июня 2021 г.; рекомендована к печати 2 сентября 2021 г.

Контактная информация:

Плоткин Артем Владимирович — аспирант; avplotkin@gmail.com

Fast algorithm for quadratic knapsack problem

A. V. Plotkin

St Petersburg State University, 7—9, Universitetskaya nab., St Petersburg, 199034, Russian Federation

For citation: Plotkin A. V. Fast algorithm for quadratic knapsack problem. Vestnik of Saint Petersburg University. Mathematics. Mechanics. Astronomy, 2022, vol. 9 (67), issue 1, pp. 76-84. https://doi.org/10.21638/spbu01.2022.108 (In Russian)

The paper considers a quadratic programming problem with a strictly convex separable objective function, a single linear constraint, and two-sided constraints on variables. This problem is commonly called the Convex Knapsack Separable Quadratic Problem, or CKSQP for short. We are interested in an algorithm for solving CKSQP with a linear time complexity. The papers devoted to this topic contain inaccuracies in the description of algorithms and ineffective implementations. In this work, the existing difficulties were overcome. Keywords: quadratic programming, knapsack problem, fast algorithms.

References

1. Jeong J. Indefinite Knapsack Separable Quadratic Programming: Methods and Applications. Dr. Sci. thesis (2014).

2. Kiwiel K. Breakpoint searching algorithms for the continuous quadratic knapsack problem. Mathematical Programming 112, 473-491 (2008). https://doi.org/10.1007/s10107-006-0050-z

3. Dai Y. H., Fletcher R. New algorithms for singly linearly constrained quadratic programs subject to lower and upper bounds. Mathematical Programming 106, 403-421 (2006). https://doi.org/10.1007/s10107-005-0595-2

4. Nielsen S., Zenios S. Massively parallel algorithms for singly-constrained convex programs. ORSA J. Comput. 4, 166-181 (1992). https://doi.org/10.1287/ijoc.4.2.166

5. Patriksson M. A survey on the continuous nonlinear resource allocation problem. European J. Operational Research 185, 1-46 (2008). https://doi.org/10.1016/j.ejor.2006.12.006

6. Calamai P., More J. Quasi-Newton updates with bounds. SIAM J. Numer. Anal. 24, 1434-1441 (1987).

7. Malozemov V. N., Tamasyan G.S. Representations of continuous piecewise affine functions. In: Seminar "CNSA & NDO". Selected reports. Sept. 10, 2019 (2019). (In Russian)

8. Cormen T. H., Leiserson C.E., Rivest R. L., Stein C. Introduction to Algorithms. 3rd ed. The MIT Press (2009). [Rus. ed.: Cormen T.H., Leiserson C.E., Rivest R. L., Stein C. Algoritmy. Postroenie i analiz. Williams Publ. (2013)].

9. Frangioni A., Gorgone E. A library for continuous convex separable quadratic knapsack problems. European J. Operational Research 229, 37-40 (2013). https://doi.org/10.1016/j.ejor.2013.02.038

10. GitHub. Available at: https://github.com/WhatElseIsThere/CKSQP (accessed: November 30, 2021).

Received: June 10, 2021 Revised: June 16, 2021 Accepted: September 2, 2021

Author's information:

Artyom V. Plotkin — avplotkin@gmail.com

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.