Симплексный алгоритм - Simplex algorithm
В математическая оптимизация, Данциг с симплексный алгоритм (или же симплексный метод) является популярным алгоритм за линейное программирование.[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]
Симплексная таблица
Линейную программу в стандартной форме можно представить в виде таблица формы
Первая строка определяет целевую функцию, а остальные строки определяют ограничения. Ноль в первом столбце представляет собой нулевой вектор той же размерности, что и вектор б. (Разные авторы используют разные соглашения относительно точного макета). Если столбцы A можно переставить так, чтобы он содержал единичная матрица порядка п (количество строк в A), то говорят, что таблица находится в каноническая форма.[18] Переменные, соответствующие столбцам единичной матрицы, называются основные переменные а остальные переменные называются неосновной или же свободные переменные. Если значения небазовых переменных установлены на 0, то значения основных переменных легко получить как записи в б и это решение является основным возможным решением. Алгебраическая интерпретация здесь заключается в том, что коэффициенты линейного уравнения, представленного каждой строкой, либо , , или какое-то другое число. В каждой строке будет столбец со значением , столбцы с коэффициентами , а остальные столбцы с некоторыми другими коэффициентами (эти другие переменные представляют наши неосновные переменные). Устанавливая значения неосновных переменных равными нулю, мы гарантируем, что в каждой строке значение переменной, представленной в его столбце равно значение в этой строке.
И наоборот, при наличии базового допустимого решения столбцы, соответствующие ненулевым переменным, могут быть расширены до невырожденной матрицы. Если соответствующая таблица умножается на инверсию этой матрицы, то результатом является таблица в канонической форме.[19]
Позволять
быть таблицей в канонической форме. Дополнительный преобразования с добавлением строк может применяться для удаления коэффициентов cТ
B от целевой функции. Этот процесс называется ценообразование и приводит к канонической таблице
куда zB - значение целевой функции в соответствующем базовом допустимом решении. Обновленные коэффициенты, также известные как коэффициенты относительной стоимости, - скорости изменения целевой функции по небазовым переменным.[14]
Сводные операции
Геометрическая операция перехода от базового допустимого решения к смежному базовому допустимому решению реализуется как поворотная операция. Во-первых, ненулевое поворотный элемент выбрано в неосновном столбце. Строка, содержащая этот элемент, умноженный на его обратную величину, чтобы изменить этот элемент на 1, а затем несколько строк добавляются к другим строкам, чтобы изменить другие записи в столбце на 0. В результате, если элемент поворота находится в строке р, то столбец становится р-й столбец единичной матрицы. Переменная для этого столбца теперь является базовой переменной, заменяя переменную, которая соответствовала р-й столбец единичной матрицы перед операцией. Фактически, переменная, соответствующая сводному столбцу, входит в набор основных переменных и называется ввод переменной, а заменяемая переменная выходит из набора базовых переменных и называется оставив переменную. Таблица по-прежнему в канонической форме, но с изменением набора основных переменных на один элемент.[13][14]
Алгоритм
Пусть линейная программа задана канонической таблицей. В симплексном алгоритме выполняются последовательные операции поворота, каждая из которых дает улучшенное базовое возможное решение; Выбор поворотного элемента на каждом этапе во многом определяется требованием, чтобы этот поворотный элемент улучшал решение.
Ввод выбора переменных
Поскольку входящая переменная, как правило, увеличивается от 0 до положительного числа, значение целевой функции будет уменьшаться, если производная целевой функции по этой переменной отрицательна. Эквивалентно значение целевой функции уменьшается, если сводный столбец выбран так, чтобы соответствующая запись в целевой строке таблицы была положительной.
Если имеется более одного столбца, так что запись в целевой строке является положительной, то выбор того, какой из них добавить к набору основных переменных, является несколько произвольным, и несколько ввод правил выбора переменных[20] Такие как Алгоритм Devex[21] были разработаны.
Если все записи в целевой строке меньше или равны 0, то выбор входящей переменной невозможен и решение фактически является оптимальным. Легко видеть, что он оптимален, так как теперь целевая строка соответствует уравнению вида
Изменяя правило выбора входящей переменной так, чтобы оно выбирало столбец, в котором запись в целевой строке является отрицательной, алгоритм изменяется так, что он находит максимум целевой функции, а не минимум.
Выход из выбора переменной
После выбора сводного столбца выбор сводной строки в значительной степени определяется требованием, чтобы полученное решение было выполнимым. Во-первых, учитываются только положительные записи в сводном столбце, поскольку это гарантирует, что значение входящей переменной будет неотрицательным. Если в сводном столбце нет положительных записей, входящая переменная может принимать любое неотрицательное значение, при этом решение остается возможным. В этом случае целевая функция снизу неограничена и минимума нет.
Затем необходимо выбрать сводную строку, чтобы все остальные базовые переменные оставались положительными. Расчет показывает, что это происходит, когда результирующее значение входящей переменной является минимальным. Другими словами, если сводный столбец c, затем сводная строка р выбирается так, чтобы
это минимум по всем р так что аrc > 0. Это называется тест на минимальное соотношение.[20] Если имеется более одной строки, для которой достигается минимум, то отбрасывание правила выбора переменной[22] можно использовать для определения.
Пример
Рассмотрим линейную программу
- Свести к минимуму
- При условии
С добавлением переменных Slack s и т, это представлено канонической таблицей
где столбцы 5 и 6 представляют основные переменные s и т и соответствующее базовое допустимое решение есть
Столбцы 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]
Пример
Рассмотрим линейную программу
- Свести к минимуму
- При условии
Это представлено (неканонической) таблицей
Ввести искусственные переменные ты и v и целевая функция W = ты + v, давая новую картину
Уравнение, определяющее исходную целевую функцию, сохраняется в ожидании Фазы II.
По конструкции, ты и v обе неосновные переменные, поскольку они являются частью исходной единичной матрицы. Однако целевая функция W в настоящее время предполагает, что ты и v оба 0. Чтобы настроить целевую функцию на правильное значение, где ты = 10 и v = 15, добавьте третью и четвертую строки к первой строке, получив
Выберите столбец 5 в качестве сводного столбца, поэтому сводная строка должна быть строкой 4, а обновленная таблица
Теперь выберите столбец 3 в качестве сводного столбца, для которого строка 3 должна быть сводной строкой, чтобы получить
Искусственные переменные теперь равны 0, и их можно отбросить, получив каноническую таблицу, эквивалентную исходной задаче:
К счастью, это уже оптимально, и оптимальное значение для исходной линейной программы составляет -130/7.
Дополнительные темы
Выполнение
Табличная форма, использованная выше для описания алгоритма, поддается немедленной реализации, в которой таблица сохраняется в виде прямоугольной (м + 1) -на- (м + п + 1) массив. Несложно избежать сохранения m явных столбцов единичной матрицы, которые появятся в таблице, в силу B являясь подмножеством столбцов [А, я]. Эта реализация называется "стандарт симплексный алгоритм ». Накладные расходы на хранение и вычисления таковы, что стандартный симплексный метод является чрезмерно дорогим подходом к решению больших задач линейного программирования.
На каждой симплексной итерации единственными необходимыми данными являются первая строка таблицы, (основной) столбец таблицы, соответствующий входящей переменной и правой стороне. Последняя может быть обновлена с помощью основного столбца, а первая строка таблицы может быть обновлена с помощью (основной) строки, соответствующей выходящей переменной. Как основной столбец, так и основная строка могут быть вычислены напрямую с использованием решений линейных систем уравнений, содержащих матрицу B и произведение матрица-вектор с использованием А. Эти наблюдения мотивируют "пересмотренный симплексный алгоритм ", реализации которого отличаются обратимым представлениемB.[25]
В больших задачах линейного программирования А обычно разреженная матрица и, когда в результате разреженность B используется при сохранении обратимого представления, пересмотренный симплексный алгоритм намного эффективнее стандартного симплексного метода. Коммерческие симплексные решатели основаны на переработанном симплексном алгоритме.[24][25][26][27][28]
Вырождение: срыв и езда на велосипеде
Если значения всех основных переменных строго положительны, то поворот должен привести к улучшению целевого значения. В этом случае набор базовых переменных не повторяется дважды, и симплексный алгоритм должен завершиться после конечного числа шагов. Основные возможные решения, в которых хотя бы одно из базовый переменные равны нулю называются выродиться и может привести к разворотам, объективное значение которых не улучшится. В этом случае не происходит фактического изменения решения, а только изменение набора основных переменных. Когда происходит несколько таких поворотов подряд, улучшения не происходит; в крупных промышленных приложениях часто встречается вырождение и тому подобное »торможение"примечательно. Хуже, чем задержка, является возможность того, что один и тот же набор базовых переменных встречается дважды, и в этом случае детерминированные правила поворота симплексного алгоритма создадут бесконечный цикл или" цикл ". В то время как вырождение является правилом на практике и сваливание является обычным явлением, езда на велосипеде на практике встречается редко. Пример практической езды на велосипеде обсуждается в Padberg.[24] Правило Блэнда предотвращает зацикливание и тем самым гарантирует, что симплексный алгоритм всегда завершается.[24][29][30] Другой алгоритм поворота, перекрестный алгоритм никогда не запускает линейные программы.[31]
Правила поворота на основе истории, такие как Правило Заде и Правило Каннингема также попытайтесь обойти проблему зависания и зацикливания, отслеживая, как часто используются определенные переменные, а затем отдавайте предпочтение тем переменным, которые использовались реже всего.
Эффективность
Симплексный метод чрезвычайно эффективен на практике и является значительным улучшением по сравнению с более ранними методами, такими как Исключение Фурье – Моцкина.. Однако в 1972 г. Клее и Минти[32] привел пример, Куб Клее – Минти, показывая, что сложность симплекс-метода в наихудшем случае, сформулированная Данцигом, равна экспоненциальное время. С тех пор почти для каждого варианта метода было показано, что существует семейство линейных программ, для которых он плохо работает. Вопрос о том, есть ли вариации с полиномиальное время, хотя известны правила субэкспоненциального поворота.[33]
В 2014 году было доказано, что частный вариант симплекс-метода НП-могучий, то есть его можно использовать для решения с полиномиальными накладными расходами любой проблемы в NP неявно во время выполнения алгоритма. Более того, решение о том, входит ли данная переменная в базис во время выполнения алгоритма на заданном входе, и определение количества итераций, необходимых для решения данной проблемы, являются NP-жесткий проблемы.[34] Примерно в то же время было показано, что существует искусственное правило поворота, для которого вычисление результата PSPACE-полный[35]. В 2015 году это было усилено, чтобы показать, что вычисление вывода правила поворота Данцига PSPACE-полный.[36]
Анализ и количественная оценка наблюдения, что симплексный алгоритм эффективен на практике, несмотря на его экспоненциальную сложность в худшем случае, привели к разработке других мер сложности. Симплексный алгоритм имеет полиномиальное время средняя сложность под различными распределения вероятностей, с точной производительностью симплексного алгоритма в среднем случае в зависимости от выбора распределения вероятностей для случайные матрицы.[37][38] Другой подход к учебе »типичные явления "использует Теория категорий Бэра из общая топология, и показать, что (топологически) "большинство" матриц может быть решено симплексным алгоритмом за полиномиальное количество шагов.[нужна цитата ] Другой метод анализа производительности симплексного алгоритма изучает поведение наихудших сценариев при небольшом возмущении - это сценарии наихудшего случая, устойчивые при небольшом изменении (в смысле структурная устойчивость ) или они становятся сговорчивыми? Эта область исследований называется сглаженный анализ, был введен специально для изучения симплекс-метода. Действительно, время работы симплекс-метода на входе с шумом полиномиально от числа переменных и величины возмущений.[39]
Другие алгоритмы
Другие алгоритмы решения задач линейного программирования описаны в линейное программирование статья. Другой алгоритм поворота базисного обмена - это перекрестный алгоритм.[40][41] Существуют алгоритмы полиномиального времени для линейного программирования, использующие методы внутренней точки: они включают Хачиян с эллипсоидальный алгоритм, Кармаркар с проективный алгоритм, и алгоритмы отслеживания пути.[15]
Линейно-дробное программирование
Линейно-дробное программирование (LFP) является обобщением линейное программирование (LP). В LP целевая функция - это линейная функция, а целевая функция дробно-линейной программы - это отношение двух линейных функций. Другими словами, линейная программа - это дробно-линейная программа, в которой знаменателем является постоянная функция, имеющая значение единица всюду. Дробно-линейная программа может быть решена с помощью варианта симплексного алгоритма.[42][43][44][45] или перекрестный алгоритм.[46]
Смотрите также
- Перекрестный алгоритм
- Режущий метод
- Алгоритм Devex
- Исключение Фурье – Моцкина.
- Алгоритм Кармаркара
- Симплициальная эвристика Нелдера – Мида
- Поворотное правило Блэнда, что позволяет избежать езды на велосипеде
Примечания
- ^ Мурти, Катта Г. Линейное программирование. John Wiley & Sons Inc.1, 2000 г.
- ^ Мурти (1983), Комментарий 2.2)
- ^ Мурти (1983), Примечание 3.9)
- ^ Стоун, Ричард Э .; Тови, Крейг А. (1991). «Симплексные и проективные алгоритмы масштабирования как методы наименьших квадратов с повторным взвешиванием». SIAM Обзор. 33 (2): 220–237. Дои:10.1137/1033049. JSTOR 2031142. МИСТЕР 1124362.
- ^ Стоун, Ричард Э .; Тови, Крейг А. (1991). «Ошибка: симплексные и проективные алгоритмы масштабирования как итеративно взвешенные методы наименьших квадратов». SIAM Обзор. 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 г.). «Воспоминания об истоках линейного программирования». Письма об исследованиях операций. 1 (2): 43–48. Дои:10.1016/0167-6377(82)90043-8.
- ^ Альберс и Рид (1986). «Интервью с Джорджем Б. Данцигом: отцом линейного программирования». Журнал математики колледжа. 17 (4): 292–314. Дои:10.1080/07468342.1986.11972971.
- ^ Данциг, Джордж (май 1987 г.). «Истоки симплексного метода». История научных вычислений (PDF). С. 141–151. Дои:10.1145/87252.88081. ISBN 978-0-201-50814-7 http://www.dtic.mil/dtic/tr/fulltext/u2/a182708.pdf. Отсутствует или пусто
| название =
(помощь) - ^ Мурти (1983), Теорема 3.3)
- ^ Мурти (1983), п. 143, раздел 3.13)
- ^ а б Мурти (1983), п. 137, раздел 3.8)
- ^ а б c Джордж Б. Данциг и Мукунд Н. Тапа. 1997 г. Линейное программирование 1: Введение. Springer-Verlag.
- ^ а б c d Эвар Д. Неринг и Альберт В. Такер, 1993, Линейные программы и связанные с ними задачи, Academic Press. (элементарно)
- ^ а б Роберт Дж. Вандербей, Линейное программирование: основы и расширения, 3-е изд., Международная серия исследований операций и управления, Vol. 114, Springer Verlag, 2008. ISBN 978-0-387-74387-5.
- ^ Мурти (1983), Раздел 2.2)
- ^ Мурти (1983), п. 173)
- ^ Мурти (1983), раздел 2.3.2)
- ^ Мурти (1983), раздел 3.12)
- ^ а б Мурти (1983), п. 66)
- ^ Харрис, Паула MJ. «Методы выбора опорных точек кода Devex LP». Математическое программирование 5.1 (1973): 1–28
- ^ Мурти (1983), п. 67)
- ^ Мурти (1983), п. 60)
- ^ а б c d М. Падберг, Линейная оптимизация и расширения, Второе издание, Springer-Verlag, 1999.
- ^ а б Джордж Б. Данциг и Мукунд Н. Тапа. 2003 г. Линейное программирование 2: теория и расширения. Springer-Verlag.
- ^ Дмитрис Алеврас и Манфред В. Падберг, Линейная оптимизация и расширения: проблемы и расширения, Universitext, Springer-Verlag, 2001. (Задачи Падберга с решениями).
- ^ Марош, Иштван; Митра, Гаутам (1996). «Симплексные алгоритмы». В Дж. Э. Бизли (ред.). Достижения в линейном и целочисленном программировании. Оксфордская наука. С. 1–46. МИСТЕР 1438309.
- ^ Марош, Иштван (2003). Вычислительная техника симплекс-метода. Международная серия исследований по операциям и менеджменту. 61. Бостон, Массачусетс: Kluwer Academic Publishers. С. xx + 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 г., посвященного памяти Теодора С. Моцкина). Нью-Йорк-Лондон: Academic Press. С. 159–175. МИСТЕР 0332165.
- ^ Хансен, Томас; Цвик, Ури (2015), «Улучшенная версия правила поворота случайных граней для симплексного алгоритма», Материалы сорок седьмого ежегодного симпозиума ACM по теории вычислений: 209–218, CiteSeerX 10.1.1.697.2526, Дои:10.1145/2746539.2746557, ISBN 9781450335362, S2CID 1980659
- ^ Диссер, Янн; Скутелла, Мартин (01.11.2018). "Симплексный алгоритм NP-мощный". ACM Trans. Алгоритмы. 15 (1): 5:1–5:19. arXiv:1311.5935. Дои:10.1145/3280847. ISSN 1549-6325. S2CID 54445546.
- ^ Адлер, Илан; Христос, Пападимитриу; Рубинштейн, Авиад (2014), «О правилах вращения симплексов и теории сложности», Международная конференция по целочисленному программированию и комбинаторной оптимизации, Конспект лекций по информатике, 17: 13–24, arXiv:1404.3320, Дои:10.1007/978-3-319-07557-0_2, ISBN 978-3-319-07556-3, S2CID 891022
- ^ Страшно, Джон; Савани, Рахул (2015), «Сложность симплекс-метода», Материалы сорок седьмого ежегодного симпозиума ACM по теории вычислений: 201–208, arXiv:1404.0605, Дои:10.1145/2746539.2746558, ISBN 9781450335362, S2CID 2116116
- ^ Александр Шрайвер, Теория линейного и целочисленного программирования. Джон Вили и сыновья, 1998 г., ISBN 0-471-98232-6 (математический)
- ^ Симплексный алгоритм занимает в среднем D ступеньки для куба. Боргвардт (1987): Боргвардт, Карл-Хайнц (1987). Симплексный метод: вероятностный анализ. Алгоритмы и комбинаторика (учебные и исследовательские тексты). 1. Берлин: Springer-Verlag. С. xii + 268. ISBN 978-3-540-17096-9. МИСТЕР 0868467.
- ^ Спилман, Дэниел; Тэн, Шан-Хуа (2001). «Сглаженный анализ алгоритмов: почему симплексный алгоритм обычно занимает полиномиальное время». Материалы тридцать третьего ежегодного симпозиума ACM по теории вычислений. ACM. С. 296–305. arXiv:cs / 0111050. Дои:10.1145/380752.380813. ISBN 978-1-58113-349-3. S2CID 1471.
- ^ Терлаки, Тамаш; Чжан, Шу Чжун (1993). «Правила поворота для линейного программирования: обзор последних теоретических разработок». Анналы исследований операций. 46–47 (1): 203–233. CiteSeerX 10.1.1.36.7658. Дои:10.1007 / BF02096264. ISSN 0254-5330. МИСТЕР 1260019. S2CID 6058077.
- ^ Фукуда, Комей; Терлаки, Тамаш (1997). Томас М. Либлинг; Доминик де Верра (ред.). «Перекрестные методы: свежий взгляд на алгоритмы разворота». Математическое программирование, серия B. 79 (1–3). Амстердам: Издательство Северной Голландии. С. 369–395. Дои:10.1007 / BF02614325. МИСТЕР 1464775.
- ^ Мурти (1983), Глава 3.20 (стр. 160–164) и стр. 168 и 179)
- ^ Глава пятая: Крейвен, Б. Д. (1988). Дробное программирование. Сигма-серия в прикладной математике. 4. Берлин: Heldermann Verlag. п. 145. ISBN 978-3-88538-404-5. МИСТЕР 0949209.
- ^ Крук, Серж; Волкович, Генри (1999). «Псевдолинейное программирование». SIAM Обзор. 41 (4): 795–805. Bibcode:1999SIAMR..41..795K. CiteSeerX 10.1.1.53.7355. Дои:10.1137 / S0036144598335259. JSTOR 2653207. МИСТЕР 1723002.
- ^ Матис, Фрэнк Х .; Матис, Ленора Джейн (1995). «Алгоритм нелинейного программирования для управления больницей». SIAM Обзор. 37 (2): 230–234. Дои:10.1137/1037046. JSTOR 2132826. МИСТЕР 1343214.
- ^ Иллеш, Тибор; Сирмаи, Акос; Терлаки, Тамаш (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. ISBN 978-0-02-398415-0.
внешняя ссылка
- Введение в линейное программирование и симплексный алгоритм Спироса Ревелиотиса из Технологического института Джорджии.
- Гринберг, Харви Дж., Многогранник Кли – Минти демонстрирует экспоненциальную временную сложность симплекс-метода Колорадский университет в Денвере (1997) Скачать PDF
- Симплексный метод Учебное пособие по симплексному методу с примерами (также двухфазным и М-методом).
- Mathstools Калькулятор Simplex от www.mathstools.com
- Пример симплексной процедуры для стандартной задачи линейного программирования Томас Макфарланд из Университета Висконсин-Уайтуотер.
- PHPSimplex: онлайн-инструмент для решения задач линейного программирования Даниэль Искьердо и Хуан Хосе Руис из Университета Малаги (UMA, Испания)
- симплекс-м Онлайн-симплексный решатель