Jump to content

Задача о квадратичном рюкзаке

Квадратичная задача о рюкзаке (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 с предсказуемым и постоянным уровнем сложности.

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ К., Вицгалл (1975). «Математические методы выбора места для систем электронных сообщений (EMS)» . Внутренний отчет НБС . 76 : 18321. Бибкод : 1975STIN...7618321W . дои : 10.6028/nbs.ir.75-737 .
  2. ^ Галло, Г.; Хаммер, Польша; Симеоне, Б. (1980). «Задачи о квадратном рюкзаке». Комбинаторная оптимизация I . Исследования по математическому программированию. Том. 12. Спрингер. стр. 132–149. дои : 10.1007/bfb0120892 . ISBN  978-3-642-00801-6 .
  3. ^ Рис, JMW (1970). «Проблема выбора общих постоянных затрат и сетевых потоков». Наука управления . 17 (3): 200–207. дои : 10.1287/mnsc.17.3.200 .
  4. ^ Хельмберг, К.; Рендл, Ф.; Вейсмантель, Р. (1996). «Квадратичная релаксация ранца с использованием секущих плоскостей и полуопределенного программирования». Целочисленное программирование и комбинаторная оптимизация . Конспекты лекций по информатике. Том. 1084. Спрингер. стр. 175–189. дои : 10.1007/3-540-61310-2_14 . ISBN  978-3-540-61310-7 .
  5. ^ Дейхуизен, Г.; Фэйгл, У. (1993). «Подход секущей плоскости к задаче о максимальной клике, взвешенной по ребрам» . Европейский журнал операционных исследований . 69 (1): 121–130. дои : 10.1016/0377-2217(93)90097-7 .
  6. ^ Пак, Кёнчул; Ли, Кёнсик; Пак, Сонсу (1996). «Расширенный подход к формулировке задачи о максимальной клике, взвешенной по ребрам». Европейский журнал операционных исследований . 95 (3): 671–682. дои : 10.1016/0377-2217(95)00299-5 .
  7. ^ Феррейра, CE; Мартин, А.; Соуза, CCDe; Вейсмантель, Р.; Уолси, Луизиана (1996). «Формулы и допустимые неравенства для задачи разделения графа с емкостью узлов». Математическое программирование . 74 (3): 247–266. дои : 10.1007/bf02592198 . S2CID   37819561 .
  8. ^ Джонсон, Эллис Л.; Мехротра, Анудж; Немхаузер, Джордж Л. (1993). «Минимальная кластеризация». Математическое программирование . 62 (1–3): 133–151. дои : 10.1007/bf01585164 . S2CID   39694326 .
  9. ^ Гэри, Майкл Р.; Джонсон, Дэвид С. (1979). Компьютеры и неразрешимость: Руководство по теории NP-полноты . Нью-Йорк: Фриман и компания.
  10. ^ Адамс, Уоррен П.; Шерали, Ханиф Д. (1986). «Точная линеаризация и алгоритм решения задач квадратичного программирования ноль-единица». Наука управления . 32 (10): 1274–1290. дои : 10.1287/mnsc.32.10.1274 .
  11. ^ Адамс, Уоррен П.; Форрестер, Ричард Дж.; Гловер, Фред В. (2004). «Стратегии сравнения и улучшения линеаризации смешанных квадратичных программ 0–1» . Дискретная оптимизация . 1 (2): 99–120. дои : 10.1016/j.disopt.2004.03.006 .
  12. ^ Адамс, Уоррен П.; Форрестер, Ричард Дж. (2005). «Простой рецепт краткой смешанной линеаризации 0-1». Письма об исследованиях операций . 33 (1): 55–61. дои : 10.1016/j.orl.2004.05.001 .
  13. ^ Адамс, Уоррен П.; Форрестер, Ричард Дж. (2007). «Линейные формы нелинейных выражений: новый взгляд на старые идеи». Письма об исследованиях операций . 35 (4): 510–518. дои : 10.1016/j.orl.2006.08.008 .
  14. ^ Гловер, Фред; Вулси, Юджин (1974). «Техническое примечание — преобразование задачи полиномиального программирования 0–1 в линейную программу 0–1» . Исследование операций . 22 (1): 180–182. дои : 10.1287/опре.22.1.180 .
  15. ^ Гловер, Фред (1975). «Улучшенная формулировка нелинейных целочисленных задач линейного целочисленного программирования». Наука управления . 22 (4): 455–460. дои : 10.1287/mnsc.22.4.455 . S2CID   17004334 .
  16. ^ Гловер, Фред; Вулси, Юджин (1973). «Дальнейшее сведение задач полиномиального программирования с нулевой единицей к задачам линейного программирования с нулевой единицей». Исследование операций . 21 (1): 156–161. дои : 10.1287/опре.21.1.156 .
  17. ^ Блик, Кристиан; Бонами, Пьер; Лоди, Андреа (2014). «Решение задач смешанно-целочисленного квадратичного программирования с помощью IBM-CPLEX: отчет о ходе работы» (PDF) . Материалы двадцать шестого симпозиума RAMP, Университет Хосэй, Токио, 16–17 октября 2014 г.
  18. ^ Данциг, Джордж Б. (1957). «Экстремальные задачи с дискретной переменной» . Исследование операций . 5 (2): 266–288. дои : 10.1016/j.disopt.2004.03.006 .
  19. ^ Капрара, Альберто; Пизингер, Дэвид; Тот, Паоло (1999). «Точное решение квадратичной задачи о рюкзаке». ИНФОРМС Журнал по вычислительной технике . 11 (2): 125–137. CiteSeerX   10.1.1.22.2818 . дои : 10.1287/ijoc.11.2.125 .
  20. ^ «Кваднап» . Проверено 3 декабря 2016 г.
  21. ^ Фомени, Франклин Джему; Летчфорд, Адам Н. (2014). «Эвристика динамического программирования для квадратичной задачи о рюкзаке». ИНФОРМС Журнал по вычислительной технике . 26 (1): 173–182. дои : 10.1287/ijoc.2013.0555 . S2CID   15570245 .
  22. ^ Форрестер, Ричард Дж.; Адамс, Уоррен П.; Хадавас, Пол Т. (2009). «Краткие формы RLT бинарных программ: вычислительное исследование квадратичной задачи о рюкзаке». Логистика военно-морских исследований . 57 : 1–12. дои : 10.1002/nav.20364 . S2CID   121015443 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: aeb7eccc050aeaffc61047d6d9ee1c46__1720513980
URL1:https://arc.ask3.ru/arc/aa/ae/46/aeb7eccc050aeaffc61047d6d9ee1c46.html
Заголовок, (Title) документа по адресу, URL1:
Quadratic knapsack problem - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)