Симплексный алгоритм

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

В математической оптимизации, симплекс-алгоритм Данцига (или симплекс-метод ) - популярный алгоритм для линейного программирования.

Название алгоритма происходит от концепции симплекс и был предложен Т. С. Моцкин. Симплексы фактически не используются в методе, но одна его интерпретация состоит в том, что он работает с симплициальными конусами, и они становятся собственными симплексами с дополнительным ограничением. Рассматриваемые симплициальные конусы - это углы (т.е. окрестности вершин) геометрического объекта, называемого многогранником . Форма этого многогранника определяется ограничениями , примененными к целевой функции.

Содержание
  • 1 История
  • 2 Обзор
  • 3 Стандартная форма
  • 4 Симплексная таблица
  • 5 Операции сводки
  • 6 Алгоритм
    • 6.1 Ввод выбора переменной
    • 6.2 Выход из переменной selection
    • 6.3 Пример
  • 7 Поиск исходной канонической таблицы
    • 7.1 Пример
  • 8 Дополнительные темы
    • 8.1 Реализация
    • 8.2 Вырождение: остановка и цикличность
    • 8.3 Эффективность
  • 9 Другое алгоритмы
  • 10 Дробно-линейное программирование
  • 11 См. также
  • 12 Примечания
  • 13 Ссылки
  • 14 Дополнительная литература
  • 15 Внешние ссылки
История

Джордж Данциг работал о методах планирования для ВВС армии США во время Второй мировой войны с использованием настольного калькулятора. В 1946 году его коллега попросил его механизировать процесс планирования, чтобы отвлечь его от другой работы. Данциг сформулировал проблему как линейные неравенства, вдохновленные работами Василия Леонтьева, однако в то время он не включил цель в свою формулировку. Без цели может быть осуществимо огромное количество решений, и поэтому для поиска «наилучшего» возможного решения необходимо использовать определенные военными «базовые правила», которые описывают, как цели могут быть достигнуты, в отличие от определения самой цели. Основная идея Данцига заключалась в том, чтобы понять, что большинство таких основных правил можно перевести в линейную целевую функцию, которую необходимо максимизировать. Развитие симплекс-метода шло эволюционно и длилось около года.

После того, как Данциг включил целевую функцию в свою формулировку в середине 1947 года, проблема стала математически более решаемой. Данциг понял, что одна из нерешенных проблем, которую он принял за домашнее задание в классе своего профессора Ежи Неймана (и фактически позже решенная), была применима к поиску алгоритма для линейных программ.. Эта проблема заключалась в обнаружении существования множителей Лагранжа для общих линейных программ над континуумом переменных, каждая из которых ограничена между нулем и единицей и удовлетворяет линейным ограничениям, выраженным в форме интегралов Лебега. Позже Данциг опубликовал свою "домашнюю работу" как диссертацию, чтобы получить докторскую степень. Геометрия столбца, использованная в этой диссертации, дала Данцигу понимание, которое заставило его поверить в то, что симплекс-метод будет очень эффективным.

Обзор
A система линейных неравенств определяет многогранник как возможный регион. Симплексный алгоритм начинается в начальной вершине и движется по краям многогранника, пока не достигнет вершины оптимального решения. Многогранник симплексного алгоритма в 3D

Симплексный алгоритм работает по линейному программы в канонической форме

максимизируют c T x {\ textstyle \ mathbf {c ^ {T}} \ mathbf {x}}{\textstyle \mathbf {c^{T}} \mathbf {x} }
с учетом A x ≤ b {\ displaystyle A \ mathbf {x} \ leq \ mathbf {b}}{\displaystyle A\mathbf {x} \leq \mathbf {b} }и x ≥ 0 {\ displaystyle \ mathbf {x} \ geq 0}{\displaystyle \mathbf {x} \geq 0}

с c = ( c 1,…, cn) {\ displaystyle \ mathbf {c} = (c_ {1}, \, \ dots, \, c_ {n})}{\displaystyle \mathbf {c} =(c_{1},\,\dots,\,c_{n})}коэффициенты целевой функции, (⋅) T {\ displaystyle (\ cdot) ^ {\ mathrm {T}}}(\cdot)^{\mathrm {T} }- это транспонированная матрица, а x = (x 1,…, xn) {\ displaystyle \ mathbf {x} = (x_ {1}, \, \ dots, \, x_ {n})}{\displaystyle \mathbf {x} =(x_{1},\,\dots,\,x_{n})}- переменные проблемы, A {\ displaystyle A}A- матрица размером ap × n, а b = (b 1,…, bp) {\ displaystyle \ mathbf {b} = (b_ {1}, \, \ dots, \, b_ {p})}{\displaystyle \mathbf {b} =(b_{1},\,\dots,\,b_{p})}неотрицательны ive константы (∀ j, b j ≥ 0 {\ displaystyle \ forall j, b_ {j} \ geq 0 \}{\displaystyle \forall j,b_{j}\geq 0\ }). Существует простой процесс преобразования любой линейной программы в программу стандартной формы, поэтому использование этой формы линейных программ не приводит к потере общности.

В геометрических терминах допустимая область, определенная всеми значениями x {\ displaystyle \ mathbf {x}}\mathbf {x} такими, что A x ≤ б {\ textstyle A \ mathbf {x} \ leq \ mathbf {b}}{\textstyle A\mathbf {x} \leq \mathbf {b} }и ∀ i, xi ≥ 0 {\ displaystyle \ forall i, x_ {i} \ geq 0}{\displaystyle \forall i,x_{i}\geq 0}является (возможно, неограниченным) выпуклым многогранником. Крайняя точка или вершина этого многогранника известна как базовое допустимое решение (BFS).

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

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

Решение линейной программы выполняется в два этапа. На первом этапе, известном как Фаза I, находится начальная крайняя точка. В зависимости от характера программы это может быть тривиально, но в целом ее можно решить, применив симплексный алгоритм к модифицированной версии исходной программы. Возможные результаты Фазы I заключаются в том, что либо найдено базовое допустимое решение, либо допустимая область пуста. В последнем случае линейная программа называется невыполнимой. На втором этапе, фазе II, симплекс-алгоритм применяется с использованием основного допустимого решения, найденного на этапе I, в качестве отправной точки. Возможные результаты этапа II - это либо оптимальное базовое допустимое решение, либо бесконечный край, на котором целевая функция не ограничена выше.

Стандартная форма

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

x 1 ≥ 5 {\ displaystyle x_ {1} \ geq 5}x_{1}\geq 5

новой переменной y 1 {\ displaystyle y_ {1}}y_{1}, вводится с помощью

y 1 = x 1 - 5 x 1 = y 1 + 5 {\ displaystyle {\ begin {align} y_ {1} = x_ {1} -5 \\ x_ {1} = y_ { 1} +5 \ end {align}}}{\begin{aligned}y_{1}=x_{1}-5\\x_{1}=y_{1}+5\end{aligned}}

Второе уравнение может использоваться для исключения x 1 {\ displaystyle x_ {1}}x_{1}из линейной программы. Таким образом, все ограничения нижней границы могут быть изменены на ограничения неотрицательности.

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

x 2 + 2 x 3 ≤ 3 - x 4 + 3 x 5 ≥ 2 {\ displaystyle {\ begin {align} x_ {2} + 2x_ {3} \ leq 3 \\ - x_ {4} + 3x_ {5} \ geq 2 \ end {align}}}{\begin{aligned}x_{2}+2x_{3}\leq 3\\-x_{4}+3x_{5}\geq 2\end{aligned}}

заменяются на

x 2 + 2 x 3 + s 1 = 3 - x 4 + 3 x 5 - s 2 Знак равно 2 s 1, s 2 ≥ 0 {\ displaystyle {\ begin {align} x_ {2} + 2x_ {3} + s_ {1} = 3 \\ - x_ {4} + 3x_ {5} -s_ { 2} = 2 \\ s_ {1}, \, s_ {2} \ geq 0 \ end {align}}}{\begin{aligned}x_{2}+2x_{3}+s_{1}=3\\-x_{4}+3x_{5}-s_{2}=2\\s_{1},\,s_{2}\geq 0\end{aligned}}

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

В-третьих, каждая неограниченная переменная исключается из линейной программы. Это можно сделать двумя способами: первый - найти переменную в одном из уравнений, в которых она фигурирует, а затем исключить переменную путем подстановки. Другой - заменить переменную разницей двух ограниченных переменных. Например, если z 1 {\ displaystyle z_ {1}}z_{1}не ограничен, напишите

z 1 = z 1 + - z 1 - z 1 +, z 1 - ≥ 0 { \ displaystyle {\ begin {align} z_ {1} = z_ {1} ^ {+} - z_ {1} ^ {-} \\ z_ {1} ^ {+}, \, z_ {1} ^ {- } \ geq 0 \ end {align}}}{\begin{aligned}z_{1}=z_{1}^{+}-z_{1}^{-}\\z_{1}^{+},\,z_{1}^{-}\geq 0\end{aligned}}

Уравнение можно использовать для исключения z 1 {\ displaystyle z_ {1}}z_{1}из линейной программы.

По завершении этого процесса возможная область будет иметь вид

A x = b, ∀ ixi ≥ 0 {\ displaystyle \ mathbf {A} \ mathbf {x} = \ mathbf {b}, \, \ forall i \ x_ {i} \ geq 0}{\displaystyle \mathbf {A} \mathbf {x} =\mathbf {b},\,\forall i\ x_{i}\geq 0}

Также полезно предположить, что ранг A {\ displaystyle \ mathbf {A}}\mathbf {A} является числом рядов. Это не приводит к потере общности, поскольку в противном случае либо система A x = b {\ displaystyle \ mathbf {A} \ mathbf {x} = \ mathbf {b}}\mathbf {A} \mathbf {x} =\mathbf {b} имеет избыточные уравнения, которые могут быть отброшены, или система несовместима и линейная программа не имеет решения.

Симплексная таблица

Линейная программа в стандартной форме может быть представлена ​​в виде таблицы вида

[1 - c T 0 0 A b] {\ displaystyle {\ begin {bmatrix} 1 - \ mathbf {c} ^ {T} 0 \\ 0 \ mathbf {A} \ mathbf {b} \ end {bmatrix}}}{\begin{bmatri x}1-\mathbf {c} ^{T}0\\0\mathbf {A} \mathbf {b} \end{bmatrix}}

Первая строка определяет целевую функцию, а остальные строки определяют ограничения. Ноль в первом столбце представляет нулевой вектор того же измерения, что и вектор b. (Разные авторы используют разные соглашения относительно точного макета.) Если столбцы A можно переставить так, чтобы он содержал единичную матрицу порядка p (количество строк в A), то таблица называется канонической. Переменные, соответствующие столбцам единичной матрицы, называются базовыми переменными, а остальные переменные называются небазовыми или свободными переменными. Если значения небазовых переменных установлены на 0, тогда значения основных переменных легко получить как записи в b, и это решение является основным допустимым решением. Алгебраическая интерпретация здесь заключается в том, что коэффициенты линейного уравнения, представленные каждой строкой, равны либо 0 {\ displaystyle 0}{\displaystyle 0}, 1 {\ displaystyle 1}1, либо некоторому другому числу. В каждой строке будет столбец 1 {\ displaystyle 1}1со значением 1 {\ displaystyle 1}1, p - 1 {\ displaystyle p-1}p-1столбцы с коэффициентами 0 {\ displaystyle 0}{\displaystyle 0}, а остальные столбцы с некоторыми другими коэффициентами (эти другие переменные представляют наши неосновные переменные). Устанавливая значения неосновных переменных равными нулю, мы гарантируем в каждой строке, что значение переменной, представленной 1 {\ displaystyle 1}1в своем столбце, равно b {\ displaystyle b}bзначение в этой строке.

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

Пусть

[1 - c BT - c DT 0 0 ID b] {\ displaystyle {\ begin {bmatrix} 1 - \ mathbf {c} _ {B} ^ {T} - \ mathbf {c} _ {D} ^ {T} 0 \\ 0 I \ mathbf {D} \ mathbf {b} \ end {bmatrix}}}{\begin{bmatrix}1-\mathbf {c} _{B}^{T}-\mathbf {c} _{D}^{T}0\\0I\mathbf {D} \mathbf {b} \end{bmatrix}}

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

[1 0 - c ¯ DT z B 0 ID b] {\ displaystyle {\ begin {bmatrix} 1 0 - {\ bar {\ mathbf {c}}} _ {D} ^ {T} z_ {B} \\ 0 I \ mathbf {D} \ mathbf {b} \ end {bmatrix}}}{\begin{bmatrix}10-{\bar {\mathbf {c} }}_{D}^{T}z_{B}\\0I\mathbf {D} \mathbf {b} \end{bmatrix}}

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

Операции поворота

Геометрическая операция перехода от базового допустимого Решение соседнего базового допустимого решения реализуется как операция поворота. Сначала в неосновном столбце выбирается ненулевой опорный элемент. Строка, содержащая этот элемент, умножается на, чтобы изменить этот элемент на 1, а затем несколько строк добавляются к другим строкам, чтобы изменить другие записи в столбце на 0. В результате, если сводный элемент находится в строке r, то столбец становится r-м столбцом единичной матрицы. Переменная для этого столбца теперь является базовой переменной, заменяя переменную, которая соответствовала r-му столбцу единичной матрицы до операции. Фактически, переменная, соответствующая сводному столбцу, входит в набор основных переменных и называется входящей переменной, а заменяемая переменная покидает набор основных переменных и называется выходящей переменной. Таблица по-прежнему имеет каноническую форму, но с набором основных переменных, измененным одним элементом.

Алгоритм

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

Выбор входящей переменной

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

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

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

z (x) = z B + неотрицательные члены, соответствующие небазовым переменным {\ displaystyle z (\ mathbf {x}) = z_ { B} + {\ text {неотрицательные термины, соответствующие небазовым переменным}}}z(\mathbf {x})=z_{B}+{\text{nonnegative terms corresponding to nonbasic variables}}

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

Оставить выбор переменной

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

Затем необходимо выбрать сводную строку, чтобы все остальные базовые переменные оставались положительными. Расчет показывает, что это происходит, когда результирующее значение входящей переменной является минимальным. Другими словами, если сводный столбец - c, то сводная строка r выбирается так, чтобы

br / arc {\ displaystyle b_ {r} / a_ {rc} \,}b_{r}/a_{rc}\,

было минимумом по всем r так что rc>0. Это называется тестом с минимальным соотношением. Если существует более одной строки, для которой достигается минимум, то для определения может использоваться правило выбора отбрасываемой переменной.

Пример

Рассмотрим линейную программу

Minimize
Z = - 2 x - 3 y - 4 z {\ displaystyle Z = -2x-3y-4z \,}Z=-2x-3y-4z\,
С учетом
3 x + 2 y + z ≤ 10 2 x + 5 y + 3 z ≤ 15 x, y, z ≥ 0 {\ displaystyle {\ begin {align} 3x + 2y + z \ leq 10 \\ 2x + 5y + 3z \ leq 15 \\ x, \, y, \, z \ geq 0 \ end {align}}}{\begin{aligned}3x+2y+z\leq 10\\2x+5y+3z\leq 15\\x,\,y,\,z\geq 0\end{aligned}}

С добавлением резервных переменных s и t это представляется каноническим таблица

[1-2-3-4 0 0 0 0 3 2 1 1 0 10 0 2 5 3 0 1 15] {\ displaystyle {\ begin {bmatrix} 1 -2 -3 -4 0 0 0 \\ 0 3 2 1 1 0 10 \ \ 0 2 5 3 0 1 15 \ end {bmatrix}}}{\displaystyle {\begin{bmatrix}1-2-3-4000\\03211010\\02530115\end{bmatrix}}}

где столбцы 5 и 6 представляют базовые переменные s и t, а соответствующее базовое возможное решение

x = y = z = 0, s = 10, t = 15. {\ displaystyle x = y = z = 0, \, s = 10, \, t = 15.}x=y=z=0,\,s=10,\,t=15.

Столбцы 2, 3 и 4 могут быть выбраны в качестве сводных столбцов, в этом примере выбран столбец 4. Значения z в результате выбора строк 2 и 3 в качестве сводных строк равны 10/1 = 10 и 15/3 = 5 соответственно. Из них минимум 5, так что строка 3 должна быть стержнем строки. Выполнение поворота дает

[3 - 2 - 11 0 0 - 4 - 60 0 7 1 0 3 - 1 15 0 2 5 3 0 1 15] {\ displaystyle {\ begin {bmatrix} 3 -2 -11 0 0 - 4 -60 \\ 0 7 1 0 3 -1 15 \\ 0 2 5 3 0 1 15 \ end {bmatrix}}}{\displaystyle {\begin{bmatrix}3-2-1100-4- 60\\07103-115\\02530115\end{bmatrix}}}

Теперь столбцы 4 и 5 представляют основные переменные z и s, а соответствующее базовое возможное решение -

x = y = t = 0, z = 5, s = 5. {\ displaystyle x = y = t = 0, \, z = 5, \, s = 5.}x=y=t=0,\,z=5,\,s=5.

Для следующего шага нет положительных записей в целевой строке и на самом деле

Z = - 60 + 2 x + 11 y + 4 t 3 = - 20 + 2 x + 11 y + 4 t 3 {\ displaystyle Z = {\ tfrac {-60 + 2x + 11y + 4t } {3}} = - 20 + {\ tfrac {2x + 11y + 4t} {3}}}{\displaystyle Z={\tfrac {-60+2x+11y+4t}{3}}=-20+{\tfrac {2x+11y+4t}{3}}}

, поэтому минимальное значение Z равно −20.

Нахождение исходной канонической таблицы

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

Симплексный алгоритм, применяемый к проблеме Фазы I, должен завершаться с минимальным значением для новой целевой функции, поскольку, будучи суммой неотрицательных переменных, его значение ограничено ниже на 0. Если минимум равен 0, то искусственные переменные могут быть исключены из полученной канонической таблицы, создавая каноническую таблицу, эквивалентную исходной задаче. Затем для поиска решения можно применить симплексный алгоритм; этот шаг называется Фазой II. Если минимум положительный, то не существует допустимого решения для проблемы фазы I, где все искусственные переменные равны нулю. Это означает, что допустимая область для исходной задачи пуста, и поэтому исходная проблема не имеет решения.

Пример

Рассмотрим линейную программу

Свернуть
Z = - 2 x - 3 y - 4 z {\ displaystyle Z = -2x-3y-4z \,}Z=-2x-3y-4z\,
С учетом
3 x + 2 y + z = 10 2 x + 5 y + 3 z = 15 x, y, z ≥ 0 {\ displaystyle {\ begin {align} 3x + 2y + z = 10 \\ 2x + 5y + 3z = 15 \\ x, \, y, \, z \ geq 0 \ end {align}} }{\begin{aligned}3x+2y+z=10\\2x+5y+3z=15\\x,\,y,\,z\geq 0\end{aligned}}

Это представлено (неканонической) таблицей

[1 2 3 4 0 0 3 2 1 10 0 2 5 3 15] {\ displaystyle {\ begin {bmatrix} 1 2 3 4 0 \\ 0 3 2 1 10 \\ 0 2 5 3 15 \ end {bmatrix}}}{\begin{bmatrix}12340\\032110\\025315\end{bmatrix}}

Введите искусственные переменные u и v и целевую функцию W = u + v, что даст новую таблицу

[1 0 0 0 0 - 1 - 1 0 0 1 2 3 4 0 0 0 0 0 3 2 1 1 0 10 0 0 2 5 3 0 1 15] {\ Displaystyle {\ begin {bmatrix} 1 0 0 0 0 -1 -1 0 \\ 0 1 2 3 4 0 0 0 \\ 0 0 3 2 1 1 1 0 10 \\ 0 0 2 5 3 end} Уравнение, определяющее исходную целевую функцию, сохраняется в ожидании Фазы II.

По построению u и v не являются базовыми переменными, поскольку они являются частью исходной единичной матрицы. Однако целевая функция W в настоящее время предполагает, что u и v оба равны 0. Чтобы настроить целевую функцию так, чтобы она была правильным значением, где u = 10 и v = 15, добавьте третью и четвертую строки в первую строку, получив

[1 0 5 7 4 0 0 25 0 1 2 3 4 0 0 0 0 0 3 2 1 1 0 10 0 0 2 5 3 0 1 15] {\ displaystyle {\ begin {bmatrix} 1 0 5 7 4 0 0 25 \\ 0 1 2 3 4 0 0 0 \\ 0 0 3 2 1 1 0 10 \\ 0 0 2 5 3 0 1 15 \ end {bmatrix}}}{\begin{bmatrix}105740025\\01234000\\003211010\\002530115\end{bmatrix}}

Выберите столбец 5 в качестве сводного столбца, поэтому сводная строка должна быть строкой 4, а обновленная таблица -

[3 0 7 1 0 0 - 4 15 0 3 - 2 - 11 0 0 - 4 - 60 0 0 7 1 0 3 - 1 15 0 0 2 5 3 0 1 15] {\ displaystyle {\ begin {bmatrix} 3 0 7 1 0 0 -4 15 \\ 0 3 -2 -11 0 0 -4 -60 \\ 0 0 7 1 0 3 -1 15 \\ 0 0 2 5 3 0 1 15 \ end {bmatrix}}}{\displaystyle {\begin{bmatrix}307100-415\\03-2-1100-4-60\\007103-115\\002530115\end{bmatrix}}}

Теперь выберите столбец 3 как сводный столбец, для которого строка 3 должна быть сводной строкой, чтобы получить

[1 0 0 0 0 - 1 - 1 0 0 7 0 - 25 0 2 - 10 - 130 0 0 7 1 0 3 - 1 15 0 0 0 11 7 - 2 3 25] {\ displaystyle {\ begin {bmatrix} 1 0 0 0 0 0 -1 -1 0 \ \ 0 7 0 -25 0 2 -10 -130 \\ 0 0 7 1 0 3 -1 15 \\ 0 0 0 11 7 -2 3 25 \ end {bmatrix}}}{\displaystyle {\begin{bmatrix}10000-1-10\\070-2502-10-130\\007103-115\\000117-2325\end{bmatrix}}}

Искусственные переменные теперь равны 0, и их можно отбросить, получив каноническую таблицу, эквивалентную исходной задаче:

[7 0 - 25 0 - 130 0 7 1 0 15 0 0 11 7 25] {\ displaystyle {\ begin {bmatrix} 7 0 -25 0 -130 \\ 0 7 1 0 15 \\ 0 0 11 7 25 \ end {bmatrix}}}{\displaystyle {\begin{bmatrix}70-250-130\\071015\\0011725\end{bmatrix}}}

Это, к счастью, уже оптимальное и оптимальное значение для исходной линейной программы -130/7.

Дополнительные темы

Реализация

Табличная форма, использованная выше для описания алгоритма, поддается немедленной реализации, в которой таблица поддерживается в виде прямоугольника (m + 1) -by- (m + n + 1) массив. Несложно избежать сохранения m явных столбцов единичной матрицы, которые будут встречаться в таблице, поскольку B является подмножеством столбцов [A, I]. Эта реализация называется «стандартным симплексным алгоритмом». Накладные расходы на хранение и вычисления таковы, что стандартный симплексный метод является чрезмерно дорогим подходом к решению больших задач линейного программирования.

На каждой симплексной итерации единственными необходимыми данными являются первая строка таблицы, (основной) столбец таблицы, соответствующий входящей переменной, и правая часть. Последняя может быть обновлена ​​с помощью основного столбца, а первая строка таблицы может быть обновлена ​​с помощью (основной) строки, соответствующей выходящей переменной. Как основной столбец, так и основная строка могут быть вычислены непосредственно с использованием решений линейных систем уравнений, включающих матрицу B и произведение матрица-вектор с использованием A . Эти наблюдения мотивируют «пересмотренный симплекс-алгоритм », реализации которого отличаются своим обратимым представлением B.

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

Вырождение: остановка и цикличность

Если значения всех основных переменных строго положительны, то поворот должен привести к улучшению цели значение. В этом случае набор базовых переменных не повторяется дважды, и симплексный алгоритм должен завершиться после конечного числа шагов. Основные возможные решения, в которых хотя бы одна из основных переменных равна нулю, называются вырожденными и могут привести к поворотным точкам, для которых нет улучшения целевого значения. В этом случае не происходит фактического изменения решения, а только изменение набора основных переменных. Когда происходит несколько таких поворотов подряд, улучшения не происходит; в крупных промышленных приложениях вырождение является обычным явлением, и такое «торможение» заметно. Хуже, чем задержка, возможность того, что один и тот же набор основных переменных встречается дважды, и в этом случае детерминированные правила поворота симплексного алгоритма создадут бесконечный цикл, или «цикл». В то время как вырождение является правилом на практике, а остановка - обычным явлением, езда на велосипеде на практике встречается редко. Обсуждение примера практического цикла происходит в Padberg. Правило Бланда предотвращает циклический переход и, таким образом, гарантирует, что симплексный алгоритм всегда завершается. Другой алгоритм поворота, алгоритм перекрестного пересечения, никогда не циклически повторяется в линейных программах.

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

Эффективность

Симплексный метод очень эффективен на практике и является значительным улучшением по сравнению с более ранними методами, такими как исключение Фурье – Моцкина. Однако в 1972 году Кли и Минти привели пример, куб Кли-Минти, показывающий, что наихудшая сложность симплекс-метода, сформулированная Данцигом, составляет экспоненциальное время.. С тех пор почти для каждого варианта метода было показано, что существует семейство линейных программ, для которых он работает плохо. Это открытый вопрос, есть ли вариация с полиномиальным временем, хотя известны субэкспоненциальные правила поворота.

В 2018 году было доказано, что конкретный вариант симплекс-метода является, т.е. его можно использовать для решения с полиномиальными накладными расходами любой проблемы в NP неявно во время выполнения алгоритма. Более того, решение, входит ли данная переменная когда-либо в базис во время выполнения алгоритма на данном входе, и определение количества итераций, необходимых для решения данной проблемы, являются NP-трудными проблемами. Вычисление результатов некоторых других сводных правил было уже известно как PSPACE-complete.

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

Другие алгоритмы

Другие алгоритмы для решения задач линейного программирования: описано в статье linear-programming. Другой алгоритм поворота базисного обмена - это алгоритм перекрестного пересечения. Существуют алгоритмы полиномиального времени для линейного программирования, в которых используются методы внутренней точки: к ним относятся эллипсоидальный алгоритм Хачияна , проективный алгоритм Кармаркара и алгоритмы отслеживания пути.

Дробно-линейное программирование

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

См. Также
Примечания
Ссылки
  • (1983). Линейное программирование. Нью-Йорк: John Wiley Sons, Inc., стр. Xix + 482. ISBN 978-0-471-09725-9. MR 0720547.
Дополнительная литература

Эти введения написаны для студентов информатики и исследование операций :

  • Томас Х. Кормен, Чарльз Э. Лейзерсон, Рональд Л. Ривест и Клиффорд Стейн. Введение в алгоритмы, второе издание. MIT Press и McGraw-Hill, 2001. ISBN 0-262-03293-7. Раздел 29.3: Симплексный алгоритм, стр. 790–804.
  • Фредерик С. Хиллиер и Джеральд Дж. Либерман: Введение в исследование операций, 8-е издание. Макгроу-Хилл. ISBN 0-07-123828-X
  • Rardin, Ronald L. (1997). Оптимизация исследования операций. Прентис Холл. п. 919. ISBN 978-0-02-398415-0.
Внешние ссылки
В Wikibook Operations Research есть страница по теме: Симплексный метод
Последняя правка сделана 2021-06-08 02:06:24
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте