Задача о квадратичном рюкзаке
Квадратичная задача о рюкзаке (QKP) , впервые представленная в 19 веке. [1] представляет собой расширение задачи о рюкзаке , которое допускает квадратичные члены в целевой функции: дан набор предметов, каждый из которых имеет вес, ценность и дополнительную прибыль, которую можно получить, если выбраны два предмета, определить количество предметов, которые нужно включать в коллекцию, не превышая вместимости рюкзака , чтобы максимизировать общую прибыль. Обычно задачи о квадратичном рюкзаке имеют ограничение на количество копий каждого вида предметов: 0 или 1. Этот особый тип QKP образует задачу о квадратичном рюкзаке 0–1, которая впервые обсуждалась Галло и др. [2] Квадратичная задача о рюкзаке 0-1 представляет собой разновидность задачи о рюкзаке, сочетающую в себе черты задачи о неограниченном рюкзаке, задачи о рюкзаке 0-1 и квадратичной задачи о рюкзаке.
Определение
[ редактировать ]В частности, квадратичная задача о рюкзаке 0–1 имеет следующий вид:
Здесь двоичная переменная xi показывает , включен ли предмет i в рюкзак, - прибыль, полученная при выборе пункта i и - это прибыль, полученная, если оба пункта i и j добавить .
Неформально, задача состоит в том, чтобы максимизировать сумму ценностей предметов в рюкзаке так, чтобы сумма весов была меньше или равна вместимости рюкзака.
Приложение
[ редактировать ]Как и следовало ожидать, QKP имеет широкий спектр приложений, включая телекоммуникации , транспортные сети , информатику и экономику . Фактически, Витцгалл впервые обсудил QKP при выборе мест для спутниковых станций, чтобы максимизировать глобальный трафик с учетом бюджетных ограничений. Аналогичная модель применима и к таким задачам, как определение местоположения аэропортов, железнодорожных станций или грузовых терминалов. [3] Приложения QKP в области информатики стали более распространены после первых дней: компиляторов , проблемы проектирования [4] проблема с щелчком , [5] [6] проект очень крупномасштабной интеграции (СБИС). [7] Кроме того, проблемы ценообразования, по-видимому, являются применением QKP, как описано Johnson et al. [8]
Вычислительная сложность
[ редактировать ]В общем случае вариант решения задачи о рюкзаке (Можно ли достичь значения не ниже V при ограничении определенной емкости W?) является NP-полным . [9] Таким образом, данное решение может быть проверено за полиномиальное время, в то время как ни один алгоритм не может эффективно определить решение.
Задача оптимизации рюкзака является NP-трудной , и не существует известного алгоритма, который мог бы решить эту проблему за полиномиальное время.
Как частный вариант задачи о рюкзаке, квадратичная задача о рюкзаке 0–1 также является NP-трудной.
Хотя в литературе не существует эффективного алгоритма, существует псевдополиномиальное время, основанное на динамическом программировании и других эвристических алгоритмах, которые всегда могут генерировать «хорошие» решения.
Решение
[ редактировать ]Хотя задача о рюкзаке является одной из наиболее часто решаемых задач исследования операций (ИЛИ), существует ограниченное количество эффективных алгоритмов, которые могут решать квадратичные задачи о рюкзаке 0–1. Доступные алгоритмы включают, помимо прочего, грубую силу , линеаризацию , [10] и выпуклая переформулировка. Как и в случае с другими NP-сложными задачами, обычно этого достаточно, чтобы найти работоспособное решение, даже если оно не обязательно является оптимальным. Эвристические алгоритмы, основанные на жадном алгоритме и динамическом программировании, могут эффективно дать относительно «хорошее» решение задачи QKP 0–1.
Грубая сила
[ редактировать ]Алгоритм грубой силы для решения этой проблемы состоит в том, чтобы идентифицировать все возможные подмножества элементов, не превышая емкость, и выбрать тот, который имеет оптимальное значение. Псевдокод предоставляется следующим образом:
// Input:// Profits (stored in array p)// Quadratic profits (stored in matrix P)// Weights (stored in array w)// Number of items (n)// Knapsack capacity (W)int max = 0for all subset S do int value, weight = 0 for i from 0 to S.size-1 do: value = value + p[i] weight = weight + w[i] for j from i+1 to S.size-1 do: value = value + P[i][j] if weight <= W then: if value > max then: max = value
Учитывая n предметов, их будет не более подмножеств, и для каждого набора законных кандидатов время вычисления заработанных значений равно . Таким образом, класс эффективности алгоритма перебора равен , будучи экспоненциальным.
Линеаризация
[ редактировать ]Задачи такой формы трудно решить напрямую с помощью стандартных решателей, и поэтому люди пытаются переформулировать ее как линейную программу, используя вспомогательные переменные и ограничения, чтобы проблему можно было легко решить с помощью коммерческих пакетов. Двумя хорошо известными подходами к линеаризации для QKP 0-1 являются стандартная линеаризация и линеаризация Гловера. [11] [12] [13]
Стандартная линеаризация
[ редактировать ]Первый — это стандартная стратегия линеаризации, как показано ниже:
- LP1: максимизировать
- при условии
- для всех
- для всех
- для всех
- для всех
- двоичный
В формулировке LP1 мы заменили член x i x j непрерывной переменной z ij . Это переформулирует QKP в задачу о рюкзаке, которую мы затем можем оптимально решить, используя стандартные решатели.
Линеаризация Гловера
[ редактировать ]Вторая переформулировка, более краткая, называется линеаризацией Гловера. [14] [15] [16] Гловера показана ниже, где Li i и U Формулировка — нижняя и верхняя границы , соответственно:
- LP2: максимизировать
- при условии
- для
- для
- двоичный
В формулировке LP2 мы заменили выражение с непрерывной переменной z i . Точно так же мы можем использовать стандартные решатели для решения линеаризованной задачи. Обратите внимание, что линеаризация Гловера включает только вспомогательные переменные с ограничения, в то время как стандартная линеаризация требует вспомогательные переменные и ограничения для достижения линейности.
Выпуклая квадратичная переформулировка
[ редактировать ]Обратите внимание, что нелинейные программы сложно решить из-за возможности застрять на локальном максимуме . Однако когда программа выпуклая , любой локальный максимум является глобальным максимумом . Выпуклая программа предназначена для максимизации вогнутой функции или минимизации выпуклой функции на выпуклом множестве . Множество S выпукло, если , где . То есть любая точка между двумя точками множества также должна быть элементом множества. Функция f является вогнутой, если . Функция f является выпуклой, если . Неформально функция является вогнутой, если отрезок, соединяющий две точки на графике, лежит выше или на графике, а функция является выпуклой, если ниже или на графике. Таким образом, переписав целевую функцию в эквивалентную выпуклую функцию, мы можем переформулировать программу, сделав ее выпуклой, что можно решить с помощью пакетов оптимизации.
Целевую функцию можно записать как используя обозначения линейной алгебры. Нам нужно сделать P положительной полуопределенной матрицей , чтобы переформулировать выпуклую функцию. В этом случае мы модифицируем целевую функцию так, чтобы она была применяя результаты линейной алгебры, где P - диагонально-доминантная матрица и, следовательно, положительно полуопределенная. Эту переформулировку можно решить, используя стандартный коммерческий квадратичный пакет смешанных целых чисел. [17]
Жадный эвристический алгоритм
[ редактировать ]Джордж Данциг [18] предложил жадный алгоритм аппроксимации задачи о неограниченном рюкзаке, который также можно использовать для решения QKP 0-1. Алгоритм состоит из двух фраз: определить исходное решение и улучшить его.
Сначала вычислите для каждого элемента общий целевой вклад, который можно реализовать, выбрав его: , и отсортируйте предметы в порядке убывания потенциальной ценности на единицу веса, . Затем отбирайте в рюкзак предметы с максимальным соотношением стоимости и веса до тех пор, пока не останется места для большего, что и образует исходное решение. Начиная с исходного решения, улучшение проводится путем попарного обмена. Для каждого элемента в наборе решений определите элементы, не входящие в набор, замена которых приводит к улучшению цели. Выберите пару с максимальным улучшением и поменяйте местами. Также существует вероятность того, что удаление одного из набора или добавление одного в набор принесет наибольший вклад. Повторяйте до тех пор, пока не перестанет улучшаться замена. Класс сложности этого алгоритма: поскольку в худшем случае будут идентифицированы все возможные комбинации элементов.
Кваднап
[ редактировать ]Quadknap — это точный алгоритм ветвей и границ, предложенный Капрара и др. [19] где верхние границы вычисляются с учетом релаксации Лагранжа , которая аппроксимирует сложную проблему более простой задачей и наказывает за нарушение ограничений с использованием множителя Лагранжа для наложения стоимости нарушений. Quadknap освобождает от целочисленного требования при вычислении верхних границ. Субоптимальные множители Лагранжа получены в результате субградиентной оптимизации и обеспечивают удобную переформулировку проблемы. Этот алгоритм весьма эффективен, поскольку множители Лагранжа стабильны и используются подходящие структуры данных для вычисления точной верхней границы линейного ожидаемого времени для числа переменных. Сообщалось, что этот алгоритм генерирует точные решения случаев, содержащих до 400 двоичных переменных , т. е. значительно больше, чем те, которые можно решить другими подходами. Код написан на C и доступен в Интернете. [20]
Эвристика динамического программирования
[ редактировать ]Хотя динамическое программирование может генерировать оптимальные решения задач о рюкзаке, подходы динамического программирования для QKP [21] может дать только решение относительно хорошего качества, которое может служить нижней границей оптимальных целей. Хотя он работает за псевдополиномиальное время, ему требуется большая память.
Алгоритм динамического программирования
[ редактировать ]Для простоты предположим, что все веса неотрицательны. Цель состоит в том, чтобы максимизировать общую ценность с учетом ограничения: общий вес меньше или W. равен Тогда для каждого , определять — стоимость наиболее выгодной упаковки первых m найденных предметов общим весом w . То есть пусть
Затем, это решение проблемы. Обратите внимание, что при динамическом программировании решение проблемы возникает из решения ее более мелких подзадач. В данном конкретном случае начните с первого предмета и постарайтесь найти лучшую упаковку, рассмотрев возможность добавления предметов с ожидаемым весом 𝑤. Если вес добавляемого предмета превышает 𝑤 , то то же самое с . Учитывая, что предмет имеет меньший вес по сравнению с желаемым весом, либо то же самое, что если сложение не дает никакого вклада, или то же самое, что и решение для рюкзака меньшей вместимости, в частности, для рюкзака с вместимостью, уменьшенной на вес выбранного предмета плюс стоимость одного правильного предмета, т.е. . В заключение мы имеем, что
Примечание о классе эффективности: очевидно, что время работы этого алгоритма , основанный на вложенном цикле и вычислении прибыли от новой упаковки. Это не противоречит тому факту, что QKP является NP-трудной, поскольку W не является полиномиальным по длине входных данных.
Пересмотренный алгоритм динамического программирования
[ редактировать ]Обратите внимание, что предыдущий алгоритм требует место для хранения текущей упаковки предметов для всех m,w , что может оказаться невозможным для решения крупногабаритных задач. Фактически, это можно легко улучшить, убрав индекс m из поскольку все вычисления зависят только от результатов предыдущего этапа.
Переопределить быть текущим значением наиболее выгодной упаковки, найденной с помощью эвристики. То есть,
Соответственно, с помощью динамического программирования мы имеем, что
Обратите внимание, что этот пересмотренный алгоритм все еще работает пока только занимаюсь память по сравнению с предыдущим .
Сопутствующие темы исследований
[ редактировать ]Исследователи десятилетиями изучали квадратичные задачи о рюкзаке 0–1. Одна из задач — найти эффективные алгоритмы или эффективные эвристики, особенно те, которые обладают выдающейся производительностью и решают реальные проблемы. Взаимосвязь между версией решения и версией оптимизации QKP 0-1 не следует игнорировать при работе с любой из них. С одной стороны, если проблему принятия решения можно решить за полиномиальное время, то можно найти оптимальное решение, применяя этот алгоритм итеративно. С другой стороны, если существует алгоритм, который может эффективно решить задачу оптимизации , то его можно использовать для решения проблемы принятия решения путем сравнения входных данных с оптимальным значением.
Еще одна тема литературы — выявление «сложных» проблем. Исследователи, изучающие QKP 0-1, часто проводят вычислительные исследования. [22] чтобы показать превосходство своей стратегии. Подобные исследования также могут проводиться для оценки эффективности различных методов решения. Для QKP 0-1 эти вычислительные исследования часто полагаются на случайно сгенерированные данные, представленные Gallo et al. По сути, каждое вычислительное исследование QKP 0-1 использует данные, которые генерируются случайным образом следующим образом. Веса представляют собой целые числа, взятые из равномерного распределения в интервале [1, 50], а ограничения емкости — это целое число, взятое из равномерного распределения между 50 и суммой весов элементов. Объективные коэффициенты, то есть значения, выбираются случайным образом из [1100]. Было замечено, что создание экземпляров этой формы приводит к проблемам с очень изменчивой и непредсказуемой сложностью. Поэтому вычислительные исследования, представленные в литературе, могут оказаться необоснованными. Таким образом, некоторые исследования направлены на разработку методологии создания примеров QKP 0–1 с предсказуемым и постоянным уровнем сложности.
См. также
[ редактировать ]Примечания
[ редактировать ]- ^ К., Вицгалл (1975). «Математические методы выбора места для систем электронных сообщений (EMS)» . Внутренний отчет НБС . 76 : 18321. Бибкод : 1975STIN...7618321W . дои : 10.6028/nbs.ir.75-737 .
- ^ Галло, Г.; Хаммер, Польша; Симеоне, Б. (1980). «Задачи о квадратном рюкзаке». Комбинаторная оптимизация I . Исследования по математическому программированию. Том. 12. Спрингер. стр. 132–149. дои : 10.1007/bfb0120892 . ISBN 978-3-642-00801-6 .
- ^ Рис, JMW (1970). «Проблема выбора общих постоянных затрат и сетевых потоков». Наука управления . 17 (3): 200–207. дои : 10.1287/mnsc.17.3.200 .
- ^ Хельмберг, К.; Рендл, Ф.; Вейсмантель, Р. (1996). «Квадратичная релаксация ранца с использованием секущих плоскостей и полуопределенного программирования». Целочисленное программирование и комбинаторная оптимизация . Конспекты лекций по информатике. Том. 1084. Спрингер. стр. 175–189. дои : 10.1007/3-540-61310-2_14 . ISBN 978-3-540-61310-7 .
- ^ Дейхуизен, Г.; Фэйгл, У. (1993). «Подход секущей плоскости к задаче о максимальной клике, взвешенной по ребрам» . Европейский журнал операционных исследований . 69 (1): 121–130. дои : 10.1016/0377-2217(93)90097-7 .
- ^ Пак, Кёнчул; Ли, Кёнсик; Пак, Сонсу (1996). «Расширенный подход к формулировке задачи о максимальной клике, взвешенной по ребрам». Европейский журнал операционных исследований . 95 (3): 671–682. дои : 10.1016/0377-2217(95)00299-5 .
- ^ Феррейра, CE; Мартин, А.; Соуза, CCDe; Вейсмантель, Р.; Уолси, Луизиана (1996). «Формулы и допустимые неравенства для задачи разделения графа с емкостью узлов». Математическое программирование . 74 (3): 247–266. дои : 10.1007/bf02592198 . S2CID 37819561 .
- ^ Джонсон, Эллис Л.; Мехротра, Анудж; Немхаузер, Джордж Л. (1993). «Минимальная кластеризация». Математическое программирование . 62 (1–3): 133–151. дои : 10.1007/bf01585164 . S2CID 39694326 .
- ^ Гэри, Майкл Р.; Джонсон, Дэвид С. (1979). Компьютеры и неразрешимость: Руководство по теории NP-полноты . Нью-Йорк: Фриман и компания.
- ^ Адамс, Уоррен П.; Шерали, Ханиф Д. (1986). «Точная линеаризация и алгоритм решения задач квадратичного программирования ноль-единица». Наука управления . 32 (10): 1274–1290. дои : 10.1287/mnsc.32.10.1274 .
- ^ Адамс, Уоррен П.; Форрестер, Ричард Дж.; Гловер, Фред В. (2004). «Стратегии сравнения и улучшения линеаризации смешанных квадратичных программ 0–1» . Дискретная оптимизация . 1 (2): 99–120. дои : 10.1016/j.disopt.2004.03.006 .
- ^ Адамс, Уоррен П.; Форрестер, Ричард Дж. (2005). «Простой рецепт краткой смешанной линеаризации 0-1». Письма об исследованиях операций . 33 (1): 55–61. дои : 10.1016/j.orl.2004.05.001 .
- ^ Адамс, Уоррен П.; Форрестер, Ричард Дж. (2007). «Линейные формы нелинейных выражений: новый взгляд на старые идеи». Письма об исследованиях операций . 35 (4): 510–518. дои : 10.1016/j.orl.2006.08.008 .
- ^ Гловер, Фред; Вулси, Юджин (1974). «Техническое примечание — преобразование задачи полиномиального программирования 0–1 в линейную программу 0–1» . Исследование операций . 22 (1): 180–182. дои : 10.1287/опре.22.1.180 .
- ^ Гловер, Фред (1975). «Улучшенная формулировка нелинейных целочисленных задач линейного целочисленного программирования». Наука управления . 22 (4): 455–460. дои : 10.1287/mnsc.22.4.455 . S2CID 17004334 .
- ^ Гловер, Фред; Вулси, Юджин (1973). «Дальнейшее сведение задач полиномиального программирования с нулевой единицей к задачам линейного программирования с нулевой единицей». Исследование операций . 21 (1): 156–161. дои : 10.1287/опре.21.1.156 .
- ^ Блик, Кристиан; Бонами, Пьер; Лоди, Андреа (2014). «Решение задач смешанно-целочисленного квадратичного программирования с помощью IBM-CPLEX: отчет о ходе работы» (PDF) . Материалы двадцать шестого симпозиума RAMP, Университет Хосэй, Токио, 16–17 октября 2014 г.
- ^ Данциг, Джордж Б. (1957). «Экстремальные задачи с дискретной переменной» . Исследование операций . 5 (2): 266–288. дои : 10.1016/j.disopt.2004.03.006 .
- ^ Капрара, Альберто; Пизингер, Дэвид; Тот, Паоло (1999). «Точное решение квадратичной задачи о рюкзаке». ИНФОРМС Журнал по вычислительной технике . 11 (2): 125–137. CiteSeerX 10.1.1.22.2818 . дои : 10.1287/ijoc.11.2.125 .
- ^ «Кваднап» . Проверено 3 декабря 2016 г.
- ^ Фомени, Франклин Джему; Летчфорд, Адам Н. (2014). «Эвристика динамического программирования для квадратичной задачи о рюкзаке». ИНФОРМС Журнал по вычислительной технике . 26 (1): 173–182. дои : 10.1287/ijoc.2013.0555 . S2CID 15570245 .
- ^ Форрестер, Ричард Дж.; Адамс, Уоррен П.; Хадавас, Пол Т. (2009). «Краткие формы RLT бинарных программ: вычислительное исследование квадратичной задачи о рюкзаке». Логистика военно-морских исследований . 57 : 1–12. дои : 10.1002/nav.20364 . S2CID 121015443 .