Симплексный алгоритм
В математической оптимизации симплекс ( Данцига -алгоритм или симплекс-метод ) является популярным алгоритмом программирования линейного . [1]
Название алгоритма происходит от понятия симплекса и было предложено Т. С. Моцкиным . [2] Симплексы фактически не используются в этом методе, но одна из его интерпретаций заключается в том, что он работает с симплициальными конусами , и они становятся настоящими симплексами с дополнительным ограничением. [3] [4] [5] [6] Рассматриваемые симплициальные конусы — это углы (т. е. окрестности вершин) геометрического объекта, называемого многогранником . Форма этого многогранника определяется ограничениями , наложенными на целевую функцию.
История [ править ]
Джордж Данциг работал над методами планирования ВВС США во время Второй мировой войны, используя настольный калькулятор. В 1946 году его коллега предложил ему механизировать процесс планирования, чтобы отвлечь его от другой работы. Данциг сформулировал проблему как линейное неравенство, вдохновленную работой Василия Леонтьева , однако в то время он не включил цель в свою формулировку. Без цели может быть осуществимо огромное количество решений, и поэтому, чтобы найти «лучшее» осуществимое решение, необходимо использовать определенные военными «основные правила», которые описывают, как цели могут быть достигнуты, а не конкретизируют саму цель. Основная идея Данцига заключалась в том, чтобы понять, что большинство таких основных правил можно перевести в линейную целевую функцию, которую необходимо максимизировать. [7] Развитие симплекс-метода носило эволюционный характер и длилось около года. [8]
После того, как Данциг в середине 1947 года включил в свою формулировку целевую функцию, проблема стала математически более разрешимой. Данциг понял, что одна из нерешенных задач, которую он принял за домашнее задание на уроках профессора Ежи Неймана (и фактически решила позже), применима к поиску алгоритма для линейных программ. Эта проблема заключалась в обнаружении существования множителей Лагранжа для общих линейных программ над континуумом переменных, каждая из которых ограничена между нулем и единицей, и удовлетворяющих линейным ограничениям, выраженным в форме интегралов Лебега . Позже Данциг опубликовал свое «домашнее задание» в качестве диссертации, чтобы получить докторскую степень. Геометрия колонны, использованная в этой диссертации, дала Данцигу понимание, которое заставило его поверить в то, что симплексный метод будет очень эффективным. [9]
Обзор [ править ]


Симплексный алгоритм оперирует линейными программами в канонической форме.
- максимизировать
- при условии и
с коэффициенты целевой функции, — транспонирование матрицы , и являются переменными задачи, представляет собой матрицу p × n , и . Существует простой процесс преобразования любой линейной программы в программу стандартной формы, поэтому использование этой формы линейных программ не приводит к потере общности.
В геометрических терминах допустимая область , определяемая всеми значениями такой, что и — (возможно, неограниченный) выпуклый многогранник . Крайняя точка или вершина этого многогранника известна как основное допустимое решение (BFS).
Можно показать, что для линейной программы в стандартной форме, если целевая функция имеет максимальное значение в допустимой области, то она имеет это значение (по крайней мере) в одной из крайних точек. [10] Это само по себе сводит проблему к конечному вычислению, поскольку существует конечное число крайних точек, но число крайних точек неуправляемо велико для всех линейных программ, кроме самых маленьких. [11]
Можно также показать, что если крайняя точка не является точкой максимума целевой функции, то существует ребро, содержащее эту точку, так что значение целевой функции строго возрастает на ребре, удаляющемся от точки. [12] Если ребро конечно, то оно соединяется с другой крайней точкой, где целевая функция имеет большее значение, в противном случае целевая функция не ограничена сверху на ребре и линейная программа не имеет решения. Симплексный алгоритм применяет это понимание, проходя по ребрам многогранника к крайним точкам с все большими и большими целевыми значениями. Это продолжается до тех пор, пока не будет достигнуто максимальное значение или не будет достигнуто неограниченное ребро (что приведет к выводу, что проблема не имеет решения). Алгоритм всегда завершает работу, поскольку число вершин в многограннике конечно; более того, поскольку мы прыгаем между вершинами всегда в одном и том же направлении (направлении целевой функции), мы надеемся, что количество посещенных вершин будет небольшим. [12]
Решение линейной программы осуществляется в два этапа. На первом этапе, известном как Фаза I, находится начальная экстремальная точка. В зависимости от характера программы эта проблема может быть тривиальной, но в целом ее можно решить, применив симплексный алгоритм к модифицированной версии исходной программы. Возможные результаты этапа I заключаются либо в том, что базовое допустимое решение найдено, либо в том, что допустимая область пуста. В последнем случае линейная программа называется неосуществимой . На втором этапе, этапе II, применяется симплексный алгоритм, используя в качестве отправной точки базовое допустимое решение, найденное на этапе I. Возможными результатами этапа II являются либо оптимальное базовое допустимое решение, либо бесконечное ребро, на котором целевая функция не ограничена сверху. [13] [14] [15]
Стандартная форма [ править ]
Преобразование линейной программы в программу стандартной формы можно осуществить следующим образом. [16] Во-первых, для каждой переменной с нижней границей, отличной от 0, вводится новая переменная, представляющая разницу между переменной и границей. Исходную переменную затем можно исключить путем замены. Например, учитывая ограничение
новая переменная, , вводится с
Второе уравнение можно использовать для исключения из линейной программы. Таким образом, все ограничения нижней границы могут быть заменены ограничениями неотрицательности.
Во-вторых, для каждого оставшегося ограничения неравенства вводится новая переменная, называемая слабой переменной , чтобы изменить ограничение на ограничение равенства. Эта переменная представляет собой разницу между двумя частями неравенства и считается неотрицательной. Например, неравенства
заменяются на
С неравенствами в такой форме гораздо проще выполнять алгебраические манипуляции. В неравенствах, где встречается ≥, таких как второе, некоторые авторы называют введенную переменную избыточной переменной .
В-третьих, каждая неограниченная переменная исключается из линейной программы. Это можно сделать двумя способами: один — найти переменную в одном из уравнений, в которых она встречается, а затем исключить переменную путем замены. Другой — заменить переменную разницей двух ограниченных переменных. Например, если неограниченно, тогда напишите
Уравнение можно использовать для исключения из линейной программы.
Когда этот процесс завершится, допустимая область будет иметь вид
Также полезно предположить, что ранг это количество строк. Это не приводит к потере общности, поскольку в противном случае либо система имеет лишние уравнения, которые можно отбросить, или система несовместна и линейная программа не имеет решения. [17]
Симплексная таблица [ править ]
Линейную программу в стандартной форме можно представить в виде таблицы вида
Первая строка определяет целевую функцию, а остальные строки определяют ограничения. Ноль в первом столбце представляет собой нулевой вектор той же размерности, что и вектор b (разные авторы используют разные соглашения относительно точного расположения). Если столбцы таблицы A можно переставить так, чтобы она содержала единичную матрицу порядка p (количество строк в таблице A), то говорят, что таблица находится в канонической форме . [18] Переменные, соответствующие столбцам единичной матрицы, называются базовыми переменными , а остальные переменные называются небазисными или свободными переменными . Если значения неосновных переменных равны 0, то значения базовых переменных легко получить как записи в b , и это решение является базовым допустимым решением. Алгебраическая интерпретация здесь состоит в том, что коэффициенты линейного уравнения, представленные каждой строкой, либо , или какое-то другое число. В каждой строке будет столбец со значением , столбцы с коэффициентами , а остальные столбцы с некоторыми другими коэффициентами (эти переменные представляют наши неосновные переменные). Устанавливая значения неосновных переменных равными нулю, мы гарантируем, что в каждой строке значение переменной, представленной в своем столбце равно значение в этой строке.
И наоборот, при наличии базового допустимого решения столбцы, соответствующие ненулевым переменным, могут быть расширены до неособой матрицы. Если соответствующая таблица умножается на обратную эту матрицу, то результатом является таблица в канонической форме. [19]
Позволять
быть таблицей в канонической форме. Дополнительные преобразования сложения строк могут быть применены для удаления коэффициентов c T
B от целевой функции. Этот процесс называется ценообразованием и приводит к канонической таблице.
где z B — значение целевой функции при соответствующем базисном допустимом решении. Обновленные коэффициенты, также известные как коэффициенты относительной стоимости , представляют собой скорости изменения целевой функции по отношению к неосновным переменным. [14]
Операции поворота [ править ]
Геометрическая операция перехода от базового допустимого решения к соседнему базовому допустимому решению реализуется как операция поворота . Сначала ненулевой опорный элемент в небазовом столбце выбирается . Строка, содержащая этот элемент, умножается на обратную величину, чтобы изменить этот элемент на 1, а затем кратные строки добавляются к другим строкам, чтобы изменить другие записи в столбце на 0. В результате, если основной элемент в строке r , то столбец становится r -м столбцом единичной матрицы. Переменная для этого столбца теперь является базовой переменной, заменяя переменную, которая до операции соответствовала r -му столбцу единичной матрицы. По сути, переменная, соответствующая сводному столбцу, входит в набор базовых переменных и называется входной переменной , а заменяемая переменная покидает набор базовых переменных и называется выходной переменной . Таблица по-прежнему имеет каноническую форму, но набор основных переменных изменен на один элемент. [13] [14]
Алгоритм [ править ]
Пусть линейная программа задана канонической таблицей. Симплексный алгоритм выполняет последовательные операции поворота, каждая из которых дает улучшенное базовое допустимое решение; Выбор поворотного элемента на каждом шаге во многом определяется требованием, чтобы этот поворотный элемент улучшал решение.
Ввод выбора переменной [ править ]
Поскольку входящая переменная, как правило, увеличивается от 0 до положительного числа, значение целевой функции будет уменьшаться, если производная целевой функции по этой переменной будет отрицательной. Аналогичным образом, значение целевой функции увеличивается, если сводный столбец выбран так, что соответствующая запись в целевой строке таблицы является положительной.
Если столбцов более одного и запись в целевой строке положительна, то выбор того, какую из базовых переменных добавить в набор базовых переменных, несколько произволен и существует несколько правил выбора входящих переменных. [20] например алгоритм Devex [21] были разработаны.
Если все записи в целевой строке меньше или равны 0, то выбор входной переменной невозможен, и решение фактически является оптимальным. Легко видеть, что он оптимален, поскольку целевая строка теперь соответствует уравнению вида
Изменяя правило выбора входной переменной так, чтобы оно выбирало столбец, в котором запись в целевой строке является отрицательной, алгоритм изменяется так, что он находит минимум целевой функции, а не максимум.
Оставление выбора переменной [ править ]
После выбора сводного столбца выбор сводной строки во многом определяется требованием осуществимости полученного решения. Во-первых, учитываются только положительные записи в сводном столбце, поскольку это гарантирует, что значение входящей переменной будет неотрицательным. Если в сводном столбце нет положительных записей, то входная переменная может принимать любое неотрицательное значение, при этом решение остается выполнимым. В этом случае целевая функция неограничена снизу и не имеет минимума.
Далее необходимо выбрать сводную строку так, чтобы все остальные базовые переменные оставались положительными. Расчет показывает, что это происходит, когда результирующее значение входящей переменной минимально. Другими словами, если сводный столбец — c , то сводная строка r выбирается так, что
является минимальным по всем r, так что a rc > 0. Это называется тестом минимального отношения . [20] Если имеется более одной строки, для которой достигается минимум, то применяется правило выбора отбрасываемой переменной. [22] можно использовать для принятия решения.
Пример [ править ]
Рассмотрим линейную программу
- Свернуть
- С учетом
С добавлением слабых переменных s и t это представляется канонической таблицей
где столбцы 5 и 6 представляют базовые переменные s и t , а соответствующее базовое допустимое решение равно
Столбцы 2, 3 и 4 можно выбрать в качестве сводных столбцов, в этом примере выбран столбец 4. Значения z , полученные в результате выбора строк 2 и 3 в качестве опорных, составляют 10/1 = 10 и 15/3 = 5 соответственно. Из них минимум — 5, поэтому строка 3 должна быть основной. Выполнение поворота дает
Теперь столбцы 4 и 5 представляют базовые переменные z и s , а соответствующее базовое допустимое решение равно
Для следующего шага в целевой строке нет положительных записей и фактически
поэтому минимальное значение Z равно -20.
исходной канонической Нахождение таблицы
В общем, линейная программа не будет задана в канонической форме, и перед запуском симплексного алгоритма необходимо найти эквивалентную каноническую таблицу. Этого можно достичь путем введения искусственных переменных . Столбцы единичной матрицы добавляются как векторы-столбцы для этих переменных. Если значение b для уравнения ограничения отрицательное, уравнение инвертируется перед добавлением столбцов единичной матрицы. Это не меняет набор возможных решений или оптимальное решение и гарантирует, что слабые переменные будут составлять начальное допустимое решение. Новая таблица имеет каноническую форму, но не эквивалентна исходной задаче. Поэтому вводится новая целевая функция, равная сумме искусственных переменных, и применяется симплексный алгоритм для поиска минимума; модифицированная линейная программа называется фазы I. проблемой [23]
Симплексный алгоритм, примененный к проблеме Фазы I, должен завершиться с минимальным значением для новой целевой функции, поскольку, будучи суммой неотрицательных переменных, ее значение ограничено снизу 0. Если минимум равен 0, то искусственные переменные можно исключить из результирующая каноническая таблица создает каноническую таблицу, эквивалентную исходной задаче. Затем для поиска решения можно применить симплексный алгоритм; этот шаг называется Фазой II . Если минимум положителен, то не существует приемлемого решения для проблемы Фазы I, где все искусственные переменные равны нулю. Это означает, что допустимая область исходной задачи пуста, и поэтому исходная задача не имеет решения. [13] [14] [24]
Пример [ править ]
Рассмотрим линейную программу
- Свернуть
- С учетом
Это представлено (неканонической) таблицей
Введем искусственные переменные u и v и целевую функцию W = u + v , что даст новую таблицу.
Уравнение, определяющее исходную целевую функцию, сохраняется в ожидании Фазы II.
По построению, u и v являются базовыми переменными, поскольку они являются частью исходной единичной матрицы. Однако целевая функция W в настоящее время предполагает, что u и v равны 0. Чтобы настроить целевую функцию на правильное значение, где u = 10 и v = 15, добавьте третью и четвертую строки к первой строке, давая
Выберите столбец 5 в качестве сводного столбца, поэтому сводная строка должна быть строкой 4, а обновленная таблица будет иметь вид
Теперь выберите столбец 3 в качестве сводного столбца, для которого строка 3 должна быть сводной строкой, чтобы получить
Искусственные переменные теперь равны 0, и их можно отбросить, получив каноническую таблицу, эквивалентную исходной задаче:
Это, по счастливой случайности, уже оптимально, и оптимальное значение для исходной линейной программы составляет −130/7.
Продвинутые темы [ править ]
Реализация [ править ]
Табличная форма, использованная выше для описания алгоритма, пригодна для непосредственной реализации, в которой таблица поддерживается как прямоугольный массив ( m + 1) на ( m + n + 1). Легко избежать хранения m явных столбцов единичной матрицы, которые будут встречаться в таблице, поскольку B является подмножеством столбцов [ A , I ]. Эта реализация называется « стандартным симплексным алгоритмом». Накладные расходы на хранение и вычисления таковы, что стандартный симплексный метод является непомерно дорогим подходом к решению больших задач линейного программирования.
В каждой симплексной итерации единственные необходимые данные — это первая строка таблицы, (основной) столбец таблицы, соответствующий входной переменной, и правая часть. Последний можно обновить с помощью основного столбца, а первую строку таблицы можно обновить с помощью (основной) строки, соответствующей уходящей переменной. И основной столбец, и основная строка могут быть вычислены непосредственно с использованием решений линейных систем уравнений, включающих матрицу B и произведение матрицы на вектор с использованием A . Эти наблюдения мотивируют « пересмотренный симплексный алгоритм », реализации которого отличаются обратимым представлением B . [25]
В больших задачах линейного программирования A обычно представляет собой разреженную матрицу , и когда полученная разреженность B используется при сохранении ее обратимого представления, пересмотренный симплексный алгоритм оказывается намного более эффективным, чем стандартный симплексный метод. Коммерческие симплексные решатели основаны на пересмотренном симплексном алгоритме. [24] [25] [26] [27] [28]
Вырождение: остановка и циклическое движение [ править ]
Если значения всех основных переменных строго положительные, то разворот должен привести к улучшению целевого значения. Когда это всегда так, ни один набор базовых переменных не встречается дважды, и симплексный алгоритм должен завершиться после конечного числа шагов. Базовые возможные решения, в которых хотя бы одна из основных переменных равна нулю, называются вырожденными и могут привести к разворотам, для которых не происходит улучшения целевого значения. В этом случае фактического изменения решения не происходит, а меняется только набор основных переменных. Когда происходит несколько таких поворотов подряд, улучшения не происходит; в крупных промышленных приложениях вырождение является обычным явлением, и такое « остановление » заметно. Хуже, чем остановка, является возможность того, что один и тот же набор базовых переменных встречается дважды, и в этом случае детерминированные правила поворота симплексного алгоритма создадут бесконечный цикл или «цикл». Хотя вырождение является правилом на практике и срывы являются обычным явлением, езда на велосипеде на практике встречается редко. Обсуждение примера практической езды на велосипеде происходит в Падберг . [24] Правило Бланда предотвращает циклическое выполнение и, таким образом, гарантирует, что симплексный алгоритм всегда завершается. [24] [29] [30] Другой алгоритм поворота, алгоритм крест-накрест, никогда не циклически работает с линейными программами. [31]
Основанные на истории правила поворота, такие как правило Заде и правило Каннингема, также пытаются обойти проблему остановок и цикличности, отслеживая, как часто используются определенные переменные, а затем отдавая предпочтение тем переменным, которые использовались реже всего.
Эффективность в худшем случае [ править ]
Симплексный метод чрезвычайно эффективен на практике и представляет собой значительное улучшение по сравнению с более ранними методами, такими как метод исключения Фурье – Моцкина . Однако в 1972 году Клее и Минти [32] привел пример, куб Кли-Минти , показывающий, что сложность симплексного метода в наихудшем случае, сформулированная Данцигом, равна экспоненциальному времени . С тех пор почти для каждого варианта метода было показано, что существует семейство линейных программ, для которых он работает плохо. Вопрос о том, существует ли изменение с полиномиальным временем , остается открытым, хотя известны субэкспоненциальные правила поворота. [33]
В 2014 году было доказано [ нужна ссылка ] что конкретный вариант симплексного метода является NP-мощным , т. е. его можно использовать для решения с полиномиальными издержками любой проблемы в NP неявно во время выполнения алгоритма. Более того, решение о том, попадает ли когда-либо данная переменная в базис во время выполнения алгоритма на заданных входных данных, и определение количества итераций, необходимых для решения данной задачи, являются обеими NP-трудными задачами. [34] Примерно в то же время было показано, что существует искусственное сводное правило, для которого вычисление выходных данных является PSPACE-полным . [35] В 2015 году это было усилено, чтобы показать, что вычисление результата сводного правила Данцига является PSPACE-полным . [36]
Эффективность на практике [ править ]
Анализ и количественная оценка наблюдения о том, что симплексный алгоритм эффективен на практике, несмотря на его экспоненциальную сложность в худшем случае, привел к разработке других мер сложности. Симплексный алгоритм имеет полиномиальную сложность в среднем случае при различных распределениях вероятностей , при этом точная производительность симплексного алгоритма в среднем случае зависит от выбора распределения вероятностей для случайных матриц . [37] [38] Другой подход к изучению « типичных явлений » использует теорию категорий Бэра из общей топологии и показывает, что (топологически) «большинство» матриц можно решить с помощью симплексного алгоритма за полиномиальное число шагов. [ нужна ссылка ]
Другой метод анализа производительности симплексного алгоритма изучает поведение наихудших сценариев при небольших возмущениях: стабильны ли наихудшие сценарии при небольших изменениях (в смысле структурной устойчивости ) или они становятся управляемыми? Эта область исследований, называемая сглаженным анализом , была введена специально для изучения симплекс-метода. Действительно, время работы симплекс-метода на входных данных с шумом является полиномиальным по числу переменных и величине возмущений. [39] [40]
Другие алгоритмы [ править ]
Другие алгоритмы решения задач линейного программирования описаны в статье о линейном программировании . Другой алгоритм поворота базисного обмена — это алгоритм крест-накрест . [41] [42] Существуют алгоритмы линейного программирования с полиномиальным временем, использующие методы внутренних точек: к ним относятся , Хачияна эллипсоидальный алгоритм проективный и Кармаркара алгоритм алгоритмы следования по пути . [15] Метод Big-M — это альтернативная стратегия решения линейной программы с использованием однофазного симплекса.
Дробно-линейное программирование [ править ]
Дробно-линейное программирование (ДЛП) — это обобщение линейного программирования (ЛП). В ЛП целевая функция представляет собой линейную функцию , тогда как целевая функция дробно-линейной программы представляет собой отношение двух линейных функций. Другими словами, линейная программа — это дробно-линейная программа, в которой знаменателем является постоянная функция, имеющая везде значение единицы. Дробно-линейная программа может быть решена с помощью варианта симплексного алгоритма. [43] [44] [45] [46] или по алгоритму крест-накрест . [47]
См. также [ править ]
- Алгоритм крест-накрест
- Метод секущей плоскости
- Алгоритм Девекс
- Элиминация Фурье – Моцкина
- Градиентный спуск
- Алгоритм Кармаркара
- Симплициальная эвристика Нелдера – Мида
- Поворотное правило Бланда , позволяющее избежать езды на велосипеде.
Примечания [ править ]
- ^ Мурти, Катта Г. (2000). Линейное программирование . Джон Уайли и сыновья.
- ^ Мурти (1983 , комментарий 2.2)
- ^ Мурти (1983 , примечание 3.9)
- ^ Стоун, Ричард Э.; Тови, Крейг А. (1991). «Алгоритмы симплексного и проективного масштабирования как методы наименьших квадратов с итеративным перевзвешиванием». Обзор СИАМ . 33 (2): 220–237. дои : 10.1137/1033049 . JSTOR 2031142 . МР 1124362 .
- ^ Стоун, Ричард Э.; Тови, Крейг А. (1991). «Ошибка: алгоритмы симплексного и проективного масштабирования как методы наименьших квадратов с итеративным перевзвешиванием». Обзор СИАМ . 33 (3): 461. дои : 10.1137/1033100 . JSTOR 2031443 . МР 1124362 .
- ^ Стрэнг, Гилберт (1 июня 1987 г.). «Алгоритм Кармаркара и его место в прикладной математике». Математический интеллект . 9 (2): 4–10. дои : 10.1007/BF03025891 . ISSN 0343-6993 . МР 0883185 . S2CID 123541868 .
- ^ Данциг, Джордж Б. (апрель 1982 г.). «Воспоминания об истоках линейного программирования» (PDF) . Письма об исследованиях операций . 1 (2): 43–48. дои : 10.1016/0167-6377(82)90043-8 . Архивировано из оригинала 20 мая 2015 года.
- ^ Альберс и Рид (1986). «Интервью с Джорджем Б. Данцигом: отцом линейного программирования» . Математический журнал колледжа . 17 (4): 292–314. дои : 10.1080/07468342.1986.11972971 .
- ^ Данциг, Джордж (май 1987 г.). «Истоки симплексного метода» (PDF) . В Нэше, Стивен Г. (ред.). История научных вычислений . Ассоциация вычислительной техники. стр. 141–151. дои : 10.1145/87252.88081 . ISBN 978-0-201-50814-7 . Архивировано (PDF) из оригинала 29 мая 2015 г.
- ^ Мурти (1983 , Теорема 3.3)
- ^ Мурти (1983 , стр. 143, раздел 3.13)
- ^ Jump up to: Перейти обратно: а б Мурти (1983 , стр. 137, раздел 3.8)
- ^ Jump up to: Перейти обратно: а б с Джордж Б. Данциг и Мукунд Н. Тапа. 1997. Линейное программирование 1: Введение . Спрингер-Верлаг.
- ^ Jump up to: Перейти обратно: а б с д Эвар Д. Неринг и Альберт В. Такер , 1993, Линейные программы и связанные с ними проблемы , Academic Press. (элементарный)
- ^ Jump up to: Перейти обратно: а б Роберт Дж. Вандербей, Линейное программирование: основы и расширения , 3-е изд., Международная серия по исследованию операций и науке управления, Vol. 114, Springer Verlag, 2008. ISBN 978-0-387-74387-5 .
- ^ Мурти (1983 , раздел 2.2)
- ^ Мурти (1983 , стр. 173)
- ^ Мурти (1983 , раздел 2.3.2)
- ^ Мурти (1983 , раздел 3.12)
- ^ Jump up to: Перейти обратно: а б Мурти (1983 , стр. 66)
- ^ Харрис, Паула MJ. «Методы выбора поворотов кода Devex LP». Математическое программирование 5.1 (1973): 1–28.
- ^ Мурти (1983 , стр. 67)
- ^ Мурти (1983 , стр. 60)
- ^ Jump up to: Перейти обратно: а б с д Падберг, М. (1999). Линейная оптимизация и расширения (второе изд.). Издательство Спрингер. ISBN 3-540-65833-5 .
- ^ Jump up to: Перейти обратно: а б Данциг, Джордж Б .; Тапа, Мукунд Н. (2003). Линейное программирование 2: Теория и расширения . Спрингер-Верлаг.
- ^ Алеврас, Дмитрий; Падберг, Манфред В. (2001). Линейная оптимизация и расширения: проблемы и решения . Университетский текст. Издательство Спрингер. ISBN 3-540-41744-3 . (Задачи Падберга с решениями.)
- ^ Марош, Иштван; Митра, Гаутама (1996). «Симплексные алгоритмы». В Дж. Э. Бисли (ред.). Достижения в области линейного и целочисленного программирования . Оксфордская наука. стр. 1–46. МР 1438309 .
- ^ Марош, Иштван (2003). Вычислительные методы симплексного метода . Международная серия по исследованию операций и науке управления. Том. 61. Бостон, Массачусетс: Kluwer Academic Publishers. стр. хх+325. ISBN 978-1-4020-7332-8 . МР 1960274 .
- ^ Бланд, Роберт Г. (май 1977 г.). «Новые конечные правила поворота для симплексного метода». Математика исследования операций . 2 (2): 103–107. дои : 10.1287/moor.2.2.103 . JSTOR 3689647 . МР 0459599 . S2CID 18493293 .
- ^ Мурти (1983 , стр. 79)
- ^ Существуют абстрактные задачи оптимизации, называемые ориентированными матроидными программами, в которых правило Бланда циклически повторяется (неправильно), а алгоритм крест-накрест завершается правильно.
- ^ Клее, Виктор ; Минти, Джордж Дж. (1972). «Насколько хорош симплексный алгоритм?». В Шише, Овед (ред.). Неравенства III (Материалы третьего симпозиума по неравенствам, состоявшегося в Калифорнийском университете, Лос-Анджелес, Калифорния, 1–9 сентября 1969 г., посвященного памяти Теодора С. Моцкина) . Нью-Йорк-Лондон: Академическая пресса. стр. 159–175. МР 0332165 .
- ^ Хансен, Томас; Цвик, Ури (2015), «Улучшенная версия правила случайного поворота граней для симплексного алгоритма», Труды сорок седьмого ежегодного симпозиума ACM по теории вычислений , стр. 209–218, CiteSeerX 10.1.1.697.2526 , doi : 10.1145/2746539.2746557 , ISBN 9781450335362 , S2CID 1980659
- ^ Диссер, Янн; Скутелла, Мартин (01 ноября 2018 г.). «Симплексный алгоритм NP-могуч». АКМ Транс. Алгоритмы . 15 (1): 5:1–5:19. arXiv : 1311.5935 . дои : 10.1145/3280847 . ISSN 1549-6325 . S2CID 54445546 .
- ^ Адлер, Илан; Христос, Пападимитриу ; Рубинштейн, Авиад (2014), «О правилах симплексного поворота и теории сложности», Целочисленное программирование и комбинаторная оптимизация , Конспекты лекций по информатике, том. 17, стр. 13–24, arXiv : 1404.3320 , doi : 10.1007/978-3-319-07557-0_2 , ISBN 978-3-319-07556-3 , S2CID 891022
- ^ Со страхом, Джон; Савани, Рахул (2015), «Сложность симплексного метода», Труды сорок седьмого ежегодного симпозиума ACM по теории вычислений , стр. 201–208, arXiv : 1404.0605 , doi : 10.1145/2746539.2746558 , ISBN 9781450335362 , S2CID 2116116
- ^ Александр Шрийвер , Теория линейного и целочисленного программирования . Джон Уайли и сыновья, 1998 г. ISBN 0-471-98232-6 (математический)
- ^ Симплексный алгоритм требует в среднем D шагов для куба. Боргвардт (1987) : Боргвардт, Карл-Хайнц (1987). Симплексный метод: Вероятностный анализ . Алгоритмы и комбинаторика (Учебные и исследовательские тексты). Том. 1. Берлин: Шпрингер-Верлаг. стр. xii+268. ISBN 978-3-540-17096-9 . МР 0868467 .
- ^ Спилман, Дэниел; Тенг, Шан-Хуа (2001). «Сглаженный анализ алгоритмов: почему симплексный алгоритм обычно занимает полиномиальное время». Материалы тридцать третьего ежегодного симпозиума ACM по теории вычислений . АКМ. стр. 296–305. arXiv : cs/0111050 . дои : 10.1145/380752.380813 . ISBN 978-1-58113-349-3 . S2CID 1471 .
- ^ Дадуш, Дэниел; Хьюбертс, Софи (01 января 2020 г.). «Дружественный сглаженный анализ симплексного метода» . SIAM Journal по вычислительной технике . 49 (5): STOC18–449. arXiv : 1711.05667 . дои : 10.1137/18M1197205 . ISSN 0097-5397 . S2CID 226351624 .
- ^ Терлаки, Тамаш; Чжан, Шу Чжун (1993). «Опорные правила линейного программирования: обзор последних теоретических разработок». Анналы исследования операций . 46–47 (1): 203–233. CiteSeerX 10.1.1.36.7658 . дои : 10.1007/BF02096264 . ISSN 0254-5330 . МР 1260019 . S2CID 6058077 .
- ^ Фукуда, Комей ; Терлаки, Тамаш (1997). Томас М. Либлинг; Доминик де Верра (ред.). «Перекрестные методы: свежий взгляд на алгоритмы поворота» . Математическое программирование, серия Б. 79 (1–3). Амстердам: Издательство Северной Голландии: 369–395. дои : 10.1007/BF02614325 . МР 1464775 . S2CID 2794181 .
- ^ Мурти (1983 , глава 3.20 (стр. 160–164) и стр. 168 и 179)
- ^ Глава пятая: Крейвен, Б.Д. (1988). Дробное программирование . Серия Сигма в прикладной математике. Том. 4. Берлин: Хелдерманн Верлаг. п. 145. ИСБН 978-3-88538-404-5 . МР 0949209 .
- ^ Крук, Серж; Волкович, Генри (1999). «Псевдолинейное программирование». Обзор СИАМ . 41 (4): 795–805. Бибкод : 1999SIAMR..41..795K . CiteSeerX 10.1.1.53.7355 . дои : 10.1137/S0036144598335259 . JSTOR 2653207 . МР 1723002 .
- ^ Матис, Фрэнк Х.; Матис, Ленора Джейн (1995). «Алгоритм нелинейного программирования для управления больницей». Обзор СИАМ . 37 (2): 230–234. дои : 10.1137/1037046 . JSTOR 2132826 . МР 1343214 . S2CID 120626738 .
- ^ Иллес, Тибор; Сирмаи, Акос; Терлаки, Тамаш (1999). «Метод конечных перекрещиваний гиперболического программирования» . Европейский журнал операционных исследований . 114 (1): 198–214. CiteSeerX 10.1.1.36.7090 . дои : 10.1016/S0377-2217(98)00049-6 . ISSN 0377-2217 .
Ссылки [ править ]
- Мурти, Катта Г. (1983). Линейное программирование . Нью-Йорк: John Wiley & Sons, Inc., стр. xix+482. ISBN 978-0-471-09725-9 . МР 0720547 .
Дальнейшее чтение [ править ]
Эти введения написаны для студентов, изучающих информатику и исследование операций :
- Томас Х. Кормен , Чарльз Э. Лейзерсон , Рональд Л. Ривест и Клиффорд Стейн . Введение в алгоритмы , второе издание. MIT Press и McGraw-Hill, 2001. ISBN 0-262-03293-7 . Раздел 29.3: Симплексный алгоритм, стр. 790–804.
- Фредерик С. Хиллер и Джеральд Дж. Либерман: Введение в исследование операций , 8-е издание. МакГроу-Хилл. ISBN 0-07-123828-X
- Рардин, Рональд Л. (1997). Оптимизация в исследовании операций . Прентис Холл. п. 919. ИСБН 978-0-02-398415-0 .
Внешние ссылки [ править ]

- «Введение в линейное программирование и симплексный алгоритм» , Спирос Ревелиотис из Технологического института Джорджии.
- Гринберг, Харви Дж., Многогранник Кли-Минти показывает экспоненциальную временную сложность симплексного метода, Университет Колорадо в Денвере (1997) скачать PDF
- Симплексный метод Учебное пособие по симплексному методу с примерами (также двухфазный и М-метод).
- Mathstools с сайта www.mathstools.com Симплексный калькулятор
- Пример симплексной процедуры для стандартной задачи линейного программирования Томаса МакФарланда из Университета Висконсин-Уайтуотер.
- PHPSimplex: онлайн-инструмент для решения задач линейного программирования, автор: Даниэль Искьердо и Хуан Хосе Руис из Университета Малаги (UMA, Испания)
- simplex-m Онлайн-решатель симплексных уравнений