Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Наглядное представление простой линейной программы с двумя переменными и шестью неравенствами. Множество допустимых решений изображено желтым цветом и образует многоугольник , двумерный многогранник . Линейная функция стоимости представлена ​​красной линией и стрелкой: красная линия представляет собой набор уровней функции стоимости, а стрелка указывает направление, в котором мы оптимизируем.
Замкнутая допустимая область задачи с тремя переменными - это выпуклый многогранник . Поверхности, дающие фиксированное значение целевой функции, являются плоскостями (не показаны). Задача линейного программирования состоит в том, чтобы найти точку на многограннике, которая находится на плоскости с максимально возможным значением.

Линейное программирование ( LP , также называемое линейной оптимизацией ) - это метод достижения наилучшего результата (например, максимальной прибыли или минимальных затрат) в математической модели , требования которой представлены линейными отношениями . Линейное программирование - это частный случай математического программирования (также известного как математическая оптимизация ).

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

Линейные программы - это задачи, которые в канонической форме можно выразить как

где x представляет собой вектор переменных (подлежит определению), c и b - векторы (известных) коэффициентов, A - (известная) матрица коэффициентов и является транспонированной матрицей . Выражение, которое необходимо максимизировать или минимизировать, называется целевой функцией ( в данном случае c T x ). Неравенства A x  ≤  b и x0 - это ограничения, задающие выпуклый многогранникнад которым должна быть оптимизирована целевая функция. В этом контексте два вектора сопоставимы, если они имеют одинаковые размеры. Если каждая запись в первом меньше или равна соответствующей записи во втором, то можно сказать, что первый вектор меньше или равен второму вектору.

Линейное программирование может применяться в различных областях обучения. Он широко используется в математике и, в меньшей степени, в бизнесе, экономике и для некоторых инженерных задач. Отрасли, в которых используются модели линейного программирования, включают транспорт, энергетику, телекоммуникации и производство. Он оказался полезным при моделировании различных типов проблем при планировании , маршрутизации , составлении графиков , назначении и проектировании.

История [ править ]

Леонид Канторович
Джон фон Нейман

Проблема решения системы линейных неравенств восходит, по крайней мере, к Фурье , который в 1827 г. опубликовал метод их решения [1] и в честь которого назван метод исключения Фурье – Моцкина .

В 1939 г. постановка задачи линейного программирования, эквивалентная общей задаче линейного программирования, была дана советским математиком и экономистом Леонидом Канторовичем , который также предложил метод ее решения. [2] Это способ, который он разработал во время Второй мировой войны , чтобы планировать расходы и доходы, чтобы сократить расходы армии и увеличить потери, нанесенные противнику. [ цитировать ] Первоначально работа Канторовича в СССР игнорировалась . [3] Примерно в то же время, что и Канторович, голландско-американский экономист Т.К. Купманс.сформулировал классические экономические задачи в виде линейных программ. Позднее Канторович и Купманс разделили Нобелевскую премию по экономике 1975 года . [1] В 1941 году Фрэнк Лорен Хичкок также сформулировал транспортные задачи в виде линейных программ и дал решение, очень похожее на более поздний симплекс-метод . [2] Хичкок умер в 1957 году, и Нобелевская премия не присуждается посмертно.

В течение 1946–1947 годов Джордж Б. Данциг независимо разработал общую формулировку линейного программирования для использования в задачах планирования в ВВС США. [4] В 1947 году Данциг также изобрел симплексный метод, который впервые эффективно решал проблему линейного программирования в большинстве случаев. [4] Когда Данциг организовал встречу с Джоном фон Нейманом, чтобы обсудить свой симплекс-метод, Нойман сразу же высказал гипотезу о теории двойственности , осознав, что проблема, над которой он работал в теории игр, эквивалентна. [4] Данциг представил формальное доказательство в неопубликованном отчете «Теорема о линейных неравенствах» 5 января 1948 года.[3] Работа Данцига стала достоянием общественности в 1951 году. В послевоенные годы многие отрасли промышленности применяли ее в своем ежедневном планировании.

Оригинальный пример Данцига заключался в том, чтобы найти лучшее назначение из 70 человек на 70 рабочих мест. Вычислительная мощность, необходимая для тестирования всех перестановок для выбора наилучшего назначения, огромна; количество возможных конфигураций превышает количество частиц в наблюдаемой Вселенной . Однако требуется всего лишь мгновение, чтобы найти оптимальное решение, поставив задачу в виде линейной программы и применив симплексный алгоритм . Теория линейного программирования резко сокращает количество возможных решений, которые необходимо проверить.

Впервые проблема линейного программирования была решена за полиномиальное время Леонидом Хачияном в 1979 году [5], но более крупный теоретический и практический прорыв в этой области произошел в 1984 году, когда Нарендра Кармаркар представила новый метод внутренней точки для решения линейного программирования. проблемы. [6]

Использует [ редактировать ]

Линейное программирование - широко используемая область оптимизации по нескольким причинам. Многие практические задачи исследования операций можно выразить как задачи линейного программирования. [3] Некоторые частные случаи линейного программирования, такие как сеть поток проблемы и многопродуктовая потока проблемы , которые считаются важными достаточно породило много исследований на специализированных алгоритмах их решение. Ряд алгоритмов для других типов задач оптимизации работают, решая задачи LP как подзадачи. Исторически идеи линейного программирования вдохновляли многие из центральных концепций теории оптимизации, таких как двойственность, декомпозиция и важность выпуклости.и его обобщения. Аналогичным образом линейное программирование активно использовалось на раннем этапе становления микроэкономики, и в настоящее время оно используется в управлении компаниями, например, в планировании, производстве, транспортировке, технологиях и других вопросах. Хотя современные проблемы управления постоянно меняются, большинство компаний хотели бы максимизировать прибыль и минимизировать затраты с ограниченными ресурсами. Поэтому многие проблемы можно охарактеризовать как задачи линейного программирования.

Стандартная форма [ править ]

Стандартная форма - это обычная и наиболее интуитивно понятная форма описания задачи линейного программирования. Он состоит из следующих трех частей:

  • Линейная функция , чтобы максимизировать
например
  • Ограничения задачи следующего вида
например
  • Неотрицательные переменные
например

Проблема обычно выражается в матричной форме , а затем становится следующей:

Другие формы, такие как задачи минимизации, проблемы с ограничениями на альтернативные формы, а также проблемы с отрицательными переменными всегда можно переписать в эквивалентную задачу в стандартной форме.

Пример [ править ]

Предположим, что у фермера есть участок земли, скажем, 1 км 2 , который нужно засеять пшеницей или ячменем, либо их комбинацией. У фермера есть ограниченное количество удобрений, F килограммов, и пестицидов, P килограммов. Каждый квадратный километр пшеницы требует F 1 кг удобрений и Р 1 килограмм пестицида, в то время как каждый квадратный километр ячменя требует F 2 кг удобрений и P 2 кг пестицида. Пусть S 1 будет продажной ценой пшеницы за квадратный километр, а S 2.цена продажи ячменя. Если обозначить площадь земель, засеянных пшеницей и ячменем, как x 1 и x 2 соответственно, то прибыль можно максимизировать, выбрав оптимальные значения для x 1 и x 2 . Эта проблема может быть выражена следующей задачей линейного программирования в стандартной форме:

В матричной форме это становится:

максимизировать
при условии

Расширенная форма (резервная форма) [ править ]

Задачи линейного программирования могут быть преобразованы в расширенную форму для применения общей формы симплексного алгоритма . Эта форма вводит неотрицательные переменные запаса, чтобы заменить неравенства равенствами в ограничениях. Затем задачи можно записать в следующей блочно-матричной форме:

Максимизировать :

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

Пример [ править ]

Приведенный выше пример преобразуется в следующую расширенную форму:

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

В матричной форме это становится:

Максимизировать :

Двойственность [ править ]

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

Максимизировать c T x при условии A xb , x ≥ 0;
с соответствующей симметричной двойственной задачей,
Минимизировать b T y при условии, что A T yc , y ≥ 0.

Альтернативная первичная формулировка:

Максимизировать c T x при условии A xb ;
с соответствующей несимметричной двойственной задачей,
Минимизируйте b T y при условии, что A T y = c , y ≥ 0.

Есть две фундаментальные идеи теории двойственности. Во-первых, это тот факт, что (для симметричной дуальной) двойственной линейной программы является исходная прямая линейная программа. Кроме того, каждое допустимое решение линейной программы дает оценку оптимального значения целевой функции двойственной программы. Слабая двойственность теорема утверждает , что значение целевой функции в двойственном при любом допустимом решении всегда больше или равно значение целевой функции Первичного в любом возможном решении. Сильная двойственность теорема утверждает , что если первичные имеет оптимальное решение, х * , то сопряженные также имеет оптимальное решение, у * , а с Т х * =б Т у * .

Линейная программа также может быть неограниченной или невыполнимой. Теория двойственности говорит нам, что если прямое не ограничено, то двойственное невозможно по слабой теореме двойственности. Точно так же, если дуальное неограничено, тогда прямое должно быть недопустимым. Тем не менее, как двойственное, так и основное могут быть недопустимыми. Смотрите двойную линейную программу для деталей и еще несколько примеров.

Варианты [ править ]

Покрытие / упаковка дуальностей [ править ]

Покрытие LP представляет собой линейную программу в виде:

Минимизировать: b T y ,
при условии: A T yc , y ≥ 0 ,

такие, что матрица A и векторы b и c неотрицательны.

Двойник покрытия LP - это LP упаковки , линейная программа вида:

Максимизировать: c T x ,
при условии: A xb , x ≥ 0 ,

такие, что матрица A и векторы b и c неотрицательны.

Примеры [ править ]

Покрытие и упаковка LP обычно возникают как релаксация линейного программирования комбинаторной задачи и важны при изучении приближенных алгоритмов . [7] Например, LP релаксации задачи множества упаковки , в независимом множестве , и проблема согласований пакуют LPS. ЛВ релаксаций задачи набор крышки , в задаче вершина крышки , и доминирующий поставленной задачи также покрытие грампластинки.

Нахождение дробной окраски из в графе является еще одним примером сопроводительного LP. В этом случае есть одно ограничение для каждой вершины графа и одна переменная для каждого независимого набора графа.

Дополнительная расслабленность [ править ]

Можно получить оптимальное решение двойственной, когда известно только оптимальное решение прямой, используя дополнительную теорему о нерезкости. Теорема гласит:

Предположим, что x  = ( x 1x 2 , ...,  x n ) примитивно допустимо, а y  = ( y 1y 2 , ...,  y m ) двойственно допустимо. Пусть ( w 1w 2 , ...,  w m ) обозначает соответствующие прямые переменные резерва, а ( z 1z 2 , ...,  z n ) обозначают соответствующие двойные переменные резерва. Тогда x и y оптимальны для своих задач тогда и только тогда, когда

  • x j z j  = 0, для j  = 1, 2, ...,  n и
  • w i y i  = 0 для i  = 1, 2, ...,  m .

Таким образом, если i -я переменная резерва первичного элемента не равна нулю, то i -я переменная дуального элемента равна нулю. Точно так же, если j -я переменная резерва дуального элемента не равна нулю, то j -я переменная простого элемента равна нулю.

Это необходимое условие оптимальности выражает довольно простой экономический принцип. В стандартной форме (при максимизации), если есть резерв в ограниченном основном ресурсе (т. Е. Есть «остатки»), то дополнительные количества этого ресурса не должны иметь ценности. Точно так же, если есть слабое место в требовании двойного (теневого) ограничения неотрицательности цены, т. Е. Цена не равна нулю, то должны быть дефицитные запасы (без «остатков»).

Теория [ править ]

Наличие оптимальных решений [ править ]

Геометрически линейные ограничения определяют допустимую область , которая представляет собой выпуклый многогранник . Линейная функция является выпуклой функцией , которая подразумевает , что каждый локальный минимум является глобальным минимумом ; аналогично линейная функция является вогнутой функцией , что означает, что каждый локальный максимум является глобальным максимумом .

Оптимального решения не существует по двум причинам. Во-первых, если ограничения несовместимы, то допустимого решения не существует: например, ограничения x  ≥ 2 и x  ≤ 1 не могут быть удовлетворены совместно; в этом случае мы говорим, что ЛП недопустима . Во-вторых, когда многогранник неограничен в направлении градиента целевой функции (где градиент целевой функции является вектором коэффициентов целевой функции), то оптимальное значение не достигается, потому что всегда можно сделать лучше любого конечного значения целевой функции.

Оптимальные вершины (и лучи) многогранников [ править ]

В противном случае, если допустимое решение существует и если набор ограничений ограничен, то оптимальное значение всегда достигается на границе набора ограничений по принципу максимума для выпуклых функций (альтернативно, по принципу минимума для вогнутых функций), поскольку линейные функции одновременно выпуклые и вогнутые. Однако у некоторых проблем есть четкие оптимальные решения; например, проблема нахождения допустимого решения системы линейных неравенств - это задача линейного программирования, в которой целевая функция является нулевой функцией (то есть постоянной функцией, принимающей значение ноль всюду). Для этой проблемы выполнимости с нулевой функцией для ее целевой функции, если есть два различных решения, то каждая выпуклая комбинация решений является решением.

Вершины многогранника также называются базовыми допустимыми решениями . Причина такого выбора имени заключается в следующем. Обозначим через d количество переменных. Тогда из фундаментальной теоремы о линейных неравенствах следует (для возможных задач), что для каждой вершины x * допустимой области LP существует набор из d (или меньше) ограничений-неравенств из LP, таких что, когда мы рассматриваем эти d ограничений как равенств, единственное решение - x * . Таким образом, мы можем изучать эти вершины, рассматривая определенные подмножества множества всех ограничений (дискретный набор), а не континуум решений ЛП. Этот принцип лежит в основесимплексный алгоритм решения линейных программ.

Алгоритмы [ править ]

В задаче линейного программирования серия линейных ограничений создает выпуклую допустимую область возможных значений этих переменных. В случае двух переменных эта область имеет форму выпуклого простого многоугольника .

Базовые алгоритмы обмена [ править ]

Симплексный алгоритм Данцига [ править ]

Симплексный алгоритм , разработанный Джордж Данциг в 1947 году, решает Л.П. проблемы пути построения допустимого решения при вершине многогранника , а затем идет по пути по краям многогранника с вершинами с не не уменьшая значение целевой функции до тех пор , оптимум достигается точно. Во многих практических задачах происходит « срыв »: многие повороты выполняются без увеличения целевой функции. [8] [9] В редких практических задачах обычные версии симплексного алгоритма могут фактически «зацикливаться». [9] Чтобы избежать циклов, исследователи разработали новые правила поворота. [10] [11] [8] [9] [12] [13]

На практике симплексный алгоритм довольно эффективен и может гарантировать нахождение глобального оптимума, если будут приняты определенные меры предосторожности против цикличности . Было доказано, что симплексный алгоритм решает "случайные" задачи эффективно, т.е. за кубическое число шагов [14], что аналогично его поведению на практических задачах. [8] [15]

Однако симплексный алгоритм имеет плохое поведение в худшем случае: Кли и Минти построили семейство задач линейного программирования, для которых симплекс-метод выполняет ряд шагов, экспоненциально зависящих от размера задачи. [8] [11] [12] В самом деле, в течение некоторого времени не было известно , была ли задача линейного программирования разрешима в полиномиальное время , то есть класс сложности P .

Перекрестный алгоритм [ править ]

Подобно симплексному алгоритму Данцига, перекрестный алгоритм представляет собой алгоритм обмена базисами, который вращается между базами. Однако перекрестный алгоритм не обязательно должен поддерживать выполнимость, но может скорее перейти от допустимой основы к недопустимой. Алгоритм крест-накрест не имеет полиномиальной временной сложности для линейного программирования. Оба алгоритма обращаются ко всем двумерным углам (возмущенного) куба в измерении  D , куба Кли-Минти , в худшем случае . [13] [16]

Внутренняя точка [ править ]

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

Алгоритм эллипсоида по Хачияну [ править ]

Это первый алгоритм с полиномиальным временем наихудшего случая, когда- либо найденный для линейного программирования. Чтобы решить задачу, которая имеет n переменных и может быть закодирована в L входных битов, этот алгоритм выполняется во времени. [5] Леонид Хачиян решил эту давнюю проблему сложности в 1979 году, введя метод эллипсоидов . У анализа сходимости есть предшественники (действительные числа), в частности итерационные методы, разработанные Наумом З. Шором, и алгоритмы аппроксимации, разработанные Аркадием Немировским и Д. Юдиным.

Проективный алгоритм Кармаркара [ править ]

Алгоритм Хачияна имел важное значение для установления разрешимости линейных программ за полиномиальное время. Алгоритм не стал прорывом в вычислениях, поскольку симплекс-метод более эффективен для всех семейств линейных программ, кроме специально построенных.

Однако алгоритм Хачияна вдохновил на новые направления исследований в области линейного программирования. В 1984 г. Н. Кармаркар предложил проективный метод линейного программирования. Алгоритм Кармаркара [6] улучшил оценку полинома Хачияна [5] в наихудшем случае (дает ). Кармаркар утверждал, что его алгоритм был намного быстрее в практической LP, чем симплексный метод, и это заявление вызвало большой интерес к методам внутренней точки. [17] С момента открытия Кармаркара было предложено и проанализировано множество методов внутренней точки.

Алгоритм Вайдьи 87 [ править ]

В 1987 году Вайдья предложил алгоритм, работающий во времени. [18]

Алгоритм Вайдьи 89 [ править ]

В 1989 году Вайдья разработал алгоритм, работающий во времени. [19] Формально говоря, алгоритм выполняет арифметические операции в худшем случае, где - количество ограничений, - количество переменных и - количество битов.

Алгоритмы времени разреженности входных данных [ править ]

В 2015 году Ли и Сидфорд показали, что ее можно решить за время, [20] где представляет собой количество ненулевых элементов, и в худшем случае она остается принимаемой .

Алгоритм времени умножения текущей матрицы [ править ]

В 2019 году Коэн, Ли и Сонг улучшили время от времени выполнение, это показатель степени умножения матриц и двойной показатель степени умножения матриц . [21] (примерно) определяется как наибольшее число, такое, что можно умножить матрицу на матрицу во времени. В последующей работе Ли, Сон и Чжан они воспроизводят тот же результат с помощью другого метода. [22] Эти два алгоритма остаются, когда и . Результат благодаря Цзян, Сун, Вайнштейн и Чжан улучшился до . [23]

Сравнение методов внутренней точки и симплексных алгоритмов [ править ]

В настоящее время считается, что эффективность хороших реализаций симплекс-методов и методов внутренней точки одинакова для обычных приложений линейного программирования. Однако для определенных типов задач LP может оказаться, что один тип решателя лучше, чем другой (иногда намного лучше), и что структура решений, сгенерированных методами внутренней точки по сравнению с методами на основе симплексов, значительно отличается с поддержкой набор активных переменных для последнего обычно меньше. [24]

Открытые проблемы и недавние работы [ править ]

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

  • Допускает ли LP алгоритм с сильно полиномиальным временем?
  • Допускает ли LP алгоритм с сильно полиномиальным временем для поиска строго дополнительного решения?
  • Допускает ли LP алгоритм с полиномиальным временем в модели вычислений с действительным числом (удельной стоимостью)?

Этот тесно связанный набор проблем был назван Стивеном Смейлом как одна из 18 величайших нерешенных проблем 21 века. По словам Смейла, третья версия проблемы «является основной нерешенной проблемой теории линейного программирования». В то время как алгоритмы существуют для решения линейного программирования в слабо полиномиальное время, например, в эллипсоид методов и приемов внутренних точек , никакие алгоритмы пока не было обнаружено , что позволяет производительность сильно полиномиальное время в ряде ограничений и числа переменных. Разработка таких алгоритмов представляла бы большой теоретический интерес и, возможно, также позволила бы получить практическую пользу при решении больших LP.

Хотя гипотеза Хирша была недавно опровергнута для более высоких размерностей, она все еще оставляет открытыми следующие вопросы.

  • Существуют ли сводные правила, которые приводят к полиномиальным вариантам симплекса?
  • Все ли многогранники имеют полиномиально ограниченный диаметр?

Эти вопросы касаются анализа производительности и разработки симплекс-подобных методов. Огромная эффективность симплексного алгоритма на практике, несмотря на его теоретическую производительность в экспоненциальном времени, намекает на то, что могут быть вариации симплексного алгоритма, которые работают за полиномиальное или даже сильно полиномиальное время. Было бы иметь большое практическое и теоретическое значение, чтобы узнать, существуют ли какие-либо такие варианты, особенно в качестве подхода к решению, можно ли решить LP за строго полиномиальное время.

Симплексный алгоритм и его варианты относятся к семейству алгоритмов отслеживания ребер, названных так потому, что они решают задачи линейного программирования, перемещаясь от вершины к вершине вдоль ребер многогранника. Это означает, что их теоретическая производительность ограничена максимальным числом ребер между любыми двумя вершинами многогранника LP. В результате мы заинтересованы в знании максимального теоретико-графического диаметра многогранных графов.. Доказано, что все многогранники имеют субэкспоненциальный диаметр. Недавнее опровержение гипотезы Хирша - это первый шаг к доказательству того, имеет ли какой-либо многогранник суперполиномиальный диаметр. Если такие многогранники существуют, то никакой вариант следования ребрам не может выполняться за полиномиальное время. Вопросы о диаметре многогранника представляют самостоятельный математический интерес.

Симплексные методы поворота сохраняют первичную (или двойную) выполнимость. С другой стороны, методы перекрестного поворота не сохраняют (первичную или двойную) выполнимость - они могут посещать первичные допустимые, двойственно допустимые или первично-двойные недопустимые базы в любом порядке. Методы Pivot этого типа изучаются с 1970-х годов. [ необходимая цитата ] По сути, эти методы пытаются найти кратчайший путь поворота на многограннике расположения в задаче линейного программирования. В отличие от многогранных графов, графы многогранников расположения, как известно, имеют малый диаметр, что позволяет использовать алгоритм перекрестного поворота с сильно полиномиальным временем без решения вопросов о диаметре многогранников общего вида. [13]

Целочисленные неизвестные [ править ]

Если требуется, чтобы все неизвестные переменные были целыми числами, тогда проблема называется проблемой целочисленного программирования (IP) или целочисленного линейного программирования (ILP). В отличие от линейного программирования, которое может быть эффективно решено в худшем случае, задачи целочисленного программирования во многих практических ситуациях (с ограниченными переменными) являются NP-трудными . Целочисленное программирование 0–1 или двоичное целочисленное программирование (BIP) - это особый случай целочисленного программирования, когда переменные должны быть 0 или 1 (а не произвольные целые числа). Эта проблема также классифицируется как NP-трудная, и фактически версия решения была одной из 21 NP-полных задач Карпа .

Если требуется, чтобы только некоторые из неизвестных переменных были целыми числами, тогда проблема называется проблемой смешанного целочисленного программирования (MIP). Как правило, они также NP-трудны, потому что они даже более общие, чем программы ПДОДИ.

Однако есть некоторые важные подклассы задач IP и MIP, которые эффективно решаются, в первую очередь проблемы, в которых матрица ограничений полностью унимодулярна, а правые части ограничений являются целыми числами или, в более общем смысле, где система имеет полную двойную целостность (TDI) свойство.

Расширенные алгоритмы решения целочисленных линейных программ включают:

  • плоскостной метод
  • Ветвь и переплет
  • Разделить и разрезать
  • Филиал и цена
  • если проблема имеет некоторую дополнительную структуру, можно применить отложенное создание столбца .

Такие алгоритмы целочисленного программирования обсуждаются Падбергом и Бизли.

Интегральные линейные программы [ править ]

Линейная программа в вещественных переменных называется интегральной, если у нее есть хотя бы одно оптимальное решение, которое является целым. Точно так же многогранник называется целым, если для всех ограниченных допустимых целевых функций c линейная программа имеет оптимум с целыми координатами. Как наблюдали Эдмондс и Джайлз в 1977 году, можно эквивалентно сказать, что многогранник является целым, если для любой ограниченной допустимой интегральной целевой функции c оптимальное значение линейной программы является целым числом.

Интегральные линейные программы имеют центральное значение в многогранном аспекте комбинаторной оптимизации, поскольку они обеспечивают альтернативную характеристику проблемы. В частности, для любой задачи выпуклая оболочка решений представляет собой целочисленный многогранник; если этот многогранник имеет красивое / компактное описание, то мы можем эффективно найти оптимальное допустимое решение при любой линейной цели. И наоборот, если мы можем доказать, что релаксация линейного программирования является интегральной, то это желаемое описание выпуклой оболочки допустимых (интегральных) решений.

Терминология не единообразна во всей литературе, поэтому следует внимательно различать следующие два понятия:

  • в целочисленной линейной программе, описанной в предыдущем разделе, переменные принудительно ограничиваются целыми числами, и эта проблема в целом NP-трудна,
  • в интегральной линейной программе, описанной в этом разделе, переменные не ограничиваются целыми числами, а скорее каким-то образом доказано, что непрерывная задача всегда имеет целое оптимальное значение (при условии, что c является целым), и это оптимальное значение можно найти эффективно, поскольку все линейные программы полиномиального размера могут быть решены за полиномиальное время.

Один из распространенных способов доказательства целостности многогранника - это показать, что он полностью унимодулярен . Существуют и другие общие методы, включая свойство целочисленной декомпозиции и полную двойственную целостность . Другие конкретные хорошо известные интегральные LP включают совпадающий многогранник, решетчатые многогранники, субмодульные многогранники потока и пересечение двух обобщенных полиматроидов / g -полиматроидов - например, см. Schrijver 2003.

Решатели и языки сценариев (программирования) [ править ]

Разрешающие лицензии:

Копилефт (взаимные) лицензии:

MINTO (Mixed Integer Optimizer, решающая программа для целочисленного программирования , использующая алгоритм ветвлений и границ) имеет общедоступный исходный код [25], но не является открытым исходным кодом.

Собственные лицензии:

См. Также [ править ]

  • Выпуклое программирование
  • Динамическое программирование
  • Ожидаемый дефицит § Оптимизация ожидаемого дефицита
  • Модель ввода-вывода
  • Планирование работы магазина
  • Линейная производственная игра
  • Линейно-дробное программирование (LFP)
  • Задача типа LP
  • Математическое программирование
  • Нелинейное программирование
  • Ориентированный матроид
  • Квадратичное программирование , надмножество линейного программирования
  • Полуопределенное программирование
  • Цена тени
  • Симплексный алгоритм , используемый для решения задач LP

Примечания [ править ]

  1. ^ a b Джерард Сирксма; Йори Зволс (2015). Линейная и целочисленная оптимизация: теория и практика (3-е изд.). CRC Press. п. 1. ISBN 978-1498710169.
  2. ^ a b Александр Шрайвер (1998). Теория линейного и целочисленного программирования . Джон Вили и сыновья. С. 221–222. ISBN 978-0-471-98232-6.
  3. ^ a b c Джордж Б. Данциг (апрель 1982 г.). «Воспоминания об истоках линейного программирования» . Письма об исследовании операций . 1 (2): 43–48. DOI : 10.1016 / 0167-6377 (82) 90043-8 .
  4. ^ a b c Данциг, Джордж Б .; Тапа, Мукунд Нараин (1997). Линейное программирование . Нью-Йорк: Спрингер. п. xxvii. ISBN 0387948333. OCLC  35318475 .
  5. ^ a b c Леонид Хачиян (1979). «Полиномиальный алгоритм линейного программирования». Доклады Академии Наук СССР . 224 (5): 1093–1096.
  6. ^ а б Нарендра Кармаркар (1984). «Новый алгоритм полиномиального времени для линейного программирования». Combinatorica . 4 (4): 373–395. DOI : 10.1007 / BF02579150 . S2CID 7257867 . 
  7. ^ Вазирани (2001 , стр. 112)
  8. ^ a b c d Данциг и Тапа (2003)
  9. ^ a b c Падберг (1999)
  10. Блэнд (1977)
  11. ^ а б Мурти (1983)
  12. ^ a b Пападимитриу и Штайглиц
  13. ^ a b c Фукуда, Комей; Терлаки, Тамаш (1997). Томас М. Либлинг; Доминик де Верра (ред.). «Перекрестные методы: свежий взгляд на алгоритмы разворота». Математическое программирование, серия B . 79 (1–3): 369–395. CiteSeerX 10.1.1.36.9373 . DOI : 10.1007 / BF02614325 . Руководство по ремонту 1464775 . S2CID 2794181 .   
  14. Borgwardt (1987).
  15. ^ Тодд (2002)
  16. Перейти ↑ Roos, C. (1990). «Экспоненциальный пример правила поворота Терлаки для симплексного метода крест-накрест». Математическое программирование . Series A. 46 (1): 79–84. DOI : 10.1007 / BF01585729 . Руководство по ремонту 1045573 . S2CID 33463483 .  
  17. Перейти ↑ Strang, Gilbert (1 июня 1987). «Алгоритм Кармаркара и его место в прикладной математике». Математический интеллект . 9 (2): 4–10. DOI : 10.1007 / BF03025891 . ISSN 0343-6993 . Руководство по ремонту 0883185 . S2CID 123541868 .   
  18. ^ Вайдья, Pravin М. (1987). Алгоритм линейного программирования, требующий арифметических операций . 28-й ежегодный симпозиум IEEE по основам компьютерных наук. FOCS.
  19. ^ Вайдья, Pravin М. (1989). Ускоренное линейное программирование с помощью быстрого умножения матриц . 30-й ежегодный симпозиум по основам информатики. FOCS. DOI : 10.1109 / SFCS.1989.63499 .
  20. ^ Ли, Инь-Тат; Сидфорд, Аарон (2015). Эффективное обратное обслуживание и более быстрые алгоритмы линейного программирования . FOCS '15 Основы информатики. arXiv : 1503.01752 .
  21. ^ Коэн, Майкл Б .; Ли, Инь-Тат; Песня, Чжао (2018). Решение линейных программ во время умножения текущей матрицы . 51-й ежегодный симпозиум ACM по теории вычислений. STOC'19. arXiv : 1810.07896 .
  22. ^ Ли, Инь-Тат; Песня, Чжао; Чжан, Цюи (2019). Решение минимизации эмпирического риска при умножении текущей матрицы . Конференция по теории обучения. COLT'19. arXiv : 1905.04447 .
  23. ^ Цзян, Шуньхуа; Песня, Чжао; Вайнштейн, Омри; Чжан, Хэнцзе (2020). Более быстрая инверсия динамической матрицы для более быстрых пластинок . arXiv : 2004.07470 .
  24. ^ Иллеш, Тибор; Терлаки, Тамаш (2002). «Методы поворота и внутренней точки: за и против» . Европейский журнал операционных исследований . 140 (2): 170. CiteSeerX 10.1.1.646.3539 . DOI : 10.1016 / S0377-2217 (02) 00061-9 . 
  25. ^ "COR @ L - вычислительные исследования оптимизации в Лихай" . lehigh.edu .
  26. ^ «Линейное программирование C #» . centerpace.net .[ постоянная мертвая ссылка ]
  27. ^ http://www.in-ter-trans.eu/resources/Zesch_Hellingrath_2010_Integrated+Production-Distribution+Planning.pdf OptimJ, используемый в модели оптимизации для сборочных линий смешанных моделей, Университет Мюнстера
  28. ^ http://www.aaai.org/ocs/index.php/AAAI/AAAI10/paper/viewFile/1769/2076 OptimJ, использованный в методе приблизительного вычисления идеального равновесия для повторяющихся игр

Ссылки [ править ]

  • Канторович, Л. В. (1940). "Об одном эффективном методе решения некоторых классов экстремальных проблем" [Новый метод решения некоторых классов экстремальных задач]. Доклады АН СССР . 28 : 211–214.
  • Ф.Л. Хичкок: Распространение продукта из нескольких источников по многочисленным местам , Journal of Mathematics and Physics, 20, 1941, 224–230.
  • Г. Б. Данциг: Максимизация линейной функции переменных с учетом линейных неравенств , 1947. Опубликовано на стр. 339–347 в TC Koopmans (ed.): Activity Analysis of Production and Allocation , New York-London 1951 (Wiley & Chapman-Hall)
  • Дж. Э. Бизли, редактор. Успехи в линейном и целочисленном программировании . Oxford Science, 1996. (Сборник обзоров)
  • Блэнд, Роберт Г. (1977). «Новые правила конечного поворота для симплекс-метода». Математика исследования операций . 2 (2): 103–107. DOI : 10.1287 / moor.2.2.103 . JSTOR  3689647 .
  • Карл-Хайнц Боргвардт, Симплексный алгоритм: вероятностный анализ , алгоритмы и комбинаторика, том 1, Springer-Verlag, 1987. (Среднее поведение для случайных задач)
  • Ричард В. Коттл, изд. Базовый Джордж Б. Данциг . Stanford Business Books, Stanford University Press, Стэнфорд, Калифорния, 2003 г. (Избранные статьи Джорджа Б. Данцига )
  • Джордж Б. Данциг и Мукунд Н. Тапа. 1997. Линейное программирование 1: Введение . Springer-Verlag.
  • Джордж Б. Данциг и Мукунд Н. Тапа. 2003. Линейное программирование 2: теория и расширения . Springer-Verlag. (Комплексный, охватывающий, например, алгоритмы поворота и внутренней точки, крупномасштабные задачи, декомпозицию по Данцигу – Вулфу и Бендерсу , а также введение стохастического программирования .)
  • Эдмондс, Джек; Джайлз, Рик (1977). «Отношение минимум-максимум для субмодульных функций на графах». Исследования в области целочисленного программирования . Анналы дискретной математики. 1 . С. 185–204. DOI : 10.1016 / S0167-5060 (08) 70734-9 . ISBN 978-0-7204-0765-5.
  • Фукуда, Комей; Терлаки, Тамаш (1997). Томас М. Либлинг; Доминик де Верра (ред.). «Перекрестные методы: свежий взгляд на алгоритмы разворота». Математическое программирование, серия B . 79 (1–3): 369–395. CiteSeerX  10.1.1.36.9373 . DOI : 10.1007 / BF02614325 . Руководство по ремонту  1464775 . S2CID  2794181 .
  • Гондзио, Яцек; Терлаки, Тамаш (1996). «3 Вычислительный взгляд на методы внутренней точки» . В JE Бизли (ред.). Успехи в линейном и целочисленном программировании . Оксфордская серия лекций по математике и ее приложениям. 4 . Нью-Йорк: Издательство Оксфордского университета. С. 103–144. Руководство по ремонту  1438311 . Постскриптум на сайте Гондзио и на сайте Университета Макмастера в Терлаки .
  • Мурти, Катта Г. (1983). Линейное программирование . Нью-Йорк: John Wiley & Sons, Inc., стр. Xix + 482. ISBN 978-0-471-09725-9. Руководство по ремонту  0720547 . (исчерпывающая ссылка на классические подходы).
  • Эвар Д. Неринг и Альберт В. Такер , 1993, Линейные программы и связанные с ними проблемы , Academic Press. (элементарно)
  • М. Падберг, Линейная оптимизация и расширения , второе издание, Springer-Verlag, 1999. (тщательно написанный отчет о простых и двойственных симплексных алгоритмах и проективных алгоритмах, с введением в целочисленное линейное программирование - с описанием задачи коммивояжера для Одиссея ).
  • Христос Х. Пападимитриу и Кеннет Стейглиц, Комбинаторная оптимизация: алгоритмы и сложность , исправленное переиздание с новым предисловием, Dover. (Информатика)
  • Майкл Дж. Тодд (февраль 2002 г.). «Многогранность линейного программирования». Математическое программирование . 91 (3): 417–436. DOI : 10.1007 / s101070100261 . S2CID  6464735 . (Приглашенный опрос с Международного симпозиума по математическому программированию.)
  • Вандербей, Роберт Дж. (2001). Линейное программирование: основы и расширения . Springer Verlag.
  • Вазирани, Виджай В. (2001). Аппроксимационные алгоритмы . Springer-Verlag. ISBN 978-3-540-65367-7. (Информатика)

Дальнейшее чтение [ править ]

  • Дмитрис Алеврас и Манфред В. Падберг, Линейная оптимизация и расширения: проблемы и решения , Universitext, Springer-Verlag, 2001. (Проблемы Падберга с решениями).
  • Марк де Берг, Марк ван Кревельд, Марк Овермарс и Отфрид Шварцкопф (2000). Вычислительная геометрия (2-е изд., Перераб.). Springer-Verlag . ISBN 978-3-540-65620-3.CS1 maint: multiple names: authors list (link)Глава 4: Линейное программирование: стр. 63–94. Описывает алгоритм рандомизированного пересечения полуплоскостей для линейного программирования.
  • Майкл Р. Гэри и Дэвид С. Джонсон (1979). Компьютеры и непреодолимость: руководство по теории NP-полноты . WH Freeman. ISBN 978-0-7167-1045-5.A6: MP1: ЦЕЛОЕ ПРОГРАММИРОВАНИЕ, стр. 245. (информатика, теория сложности)
  • Гертнер, Бернд; Матушек, Иржи (2006). Понимание и использование линейного программирования . Берлин: Springer. ISBN 3-540-30697-8. (элементарное введение для математиков и информатиков)
  • Корнелис Роос, Тамаш Терлаки, Жан-Филипп Виаль, Методы внутренней точки для линейной оптимизации , второе издание, Springer-Verlag, 2006. (уровень выпускника)
  • Александр Шрайвер (2003). Комбинаторная оптимизация: многогранники и эффективность . Springer.
  • Александр Шрайвер, Теория линейного и целочисленного программирования . John Wiley & sons, 1998, ISBN 0-471-98232-6 (математический) 
  • Жерар Сирксма; Йори Зволс (2015). Линейная и целочисленная оптимизация: теория и практика . CRC Press. ISBN 978-1-498-71016-9.
  • Жерар Сирксма; Диптеш Гош (2010). Сети в действии; Текстовые и компьютерные упражнения по оптимизации сети . Springer. ISBN 978-1-4419-5512-8. (линейное оптимизационное моделирование)
  • HP Williams, Построение моделей в математическом программировании , пятое издание, 2013 г. (моделирование)
  • Стивен Дж. Райт, 1997, Методы первично-двойных внутренних точек , SIAM. (Выпускной уровень)
  • Yinyu Ye , 1997, Алгоритмы внутренних точек: теория и анализ , Wiley. (Продвинутый уровень выпускника)
  • Зиглер, Гюнтер М. , главы 1–3 и 6–7 в Лекциях по многогранникам , Springer-Verlag, New York, 1994. (Геометрия)

Внешние ссылки [ править ]

  • Руководство по формулированию задач LP
  • Глоссарий математического программирования
  • Часто задаваемые вопросы о линейном программировании
  • Тесты для программного обеспечения оптимизации