В математической оптимизации, симплекс-алгоритм Данцига (или симплекс-метод ) - популярный алгоритм для линейного программирования.
Название алгоритма происходит от концепции симплекс и был предложен Т. С. Моцкин. Симплексы фактически не используются в методе, но одна его интерпретация состоит в том, что он работает с симплициальными конусами, и они становятся собственными симплексами с дополнительным ограничением. Рассматриваемые симплициальные конусы - это углы (т.е. окрестности вершин) геометрического объекта, называемого многогранником . Форма этого многогранника определяется ограничениями , примененными к целевой функции.
Джордж Данциг работал о методах планирования для ВВС армии США во время Второй мировой войны с использованием настольного калькулятора. В 1946 году его коллега попросил его механизировать процесс планирования, чтобы отвлечь его от другой работы. Данциг сформулировал проблему как линейные неравенства, вдохновленные работами Василия Леонтьева, однако в то время он не включил цель в свою формулировку. Без цели может быть осуществимо огромное количество решений, и поэтому для поиска «наилучшего» возможного решения необходимо использовать определенные военными «базовые правила», которые описывают, как цели могут быть достигнуты, в отличие от определения самой цели. Основная идея Данцига заключалась в том, чтобы понять, что большинство таких основных правил можно перевести в линейную целевую функцию, которую необходимо максимизировать. Развитие симплекс-метода шло эволюционно и длилось около года.
После того, как Данциг включил целевую функцию в свою формулировку в середине 1947 года, проблема стала математически более решаемой. Данциг понял, что одна из нерешенных проблем, которую он принял за домашнее задание в классе своего профессора Ежи Неймана (и фактически позже решенная), была применима к поиску алгоритма для линейных программ.. Эта проблема заключалась в обнаружении существования множителей Лагранжа для общих линейных программ над континуумом переменных, каждая из которых ограничена между нулем и единицей и удовлетворяет линейным ограничениям, выраженным в форме интегралов Лебега. Позже Данциг опубликовал свою "домашнюю работу" как диссертацию, чтобы получить докторскую степень. Геометрия столбца, использованная в этой диссертации, дала Данцигу понимание, которое заставило его поверить в то, что симплекс-метод будет очень эффективным.
Симплексный алгоритм работает по линейному программы в канонической форме
с коэффициенты целевой функции, - это транспонированная матрица, а - переменные проблемы, - матрица размером ap × n, а неотрицательны ive константы (). Существует простой процесс преобразования любой линейной программы в программу стандартной формы, поэтому использование этой формы линейных программ не приводит к потере общности.
В геометрических терминах допустимая область, определенная всеми значениями такими, что и является (возможно, неограниченным) выпуклым многогранником. Крайняя точка или вершина этого многогранника известна как базовое допустимое решение (BFS).
Можно показать, что для линейной программы в стандартной форме, если целевая функция имеет максимальное значение в допустимой области, то она имеет это значение (по крайней мере) в одной из крайних точек. Это само по себе сводит проблему к конечным вычислениям, поскольку существует конечное число крайних точек, но количество крайних точек неуправляемо велико для всех линейных программ, кроме самых маленьких.
Также можно показать, что, если крайняя точка не является точкой максимума целевой функции, тогда существует ребро, содержащее точку, так что целевая функция строго возрастает на ребре, удаляющемся от точки. Если ребро конечно, то ребро соединяется с другой крайней точкой, где целевая функция имеет большее значение, в противном случае целевая функция не ограничена сверху на ребре, и линейная программа не имеет решения. Симплексный алгоритм применяет это понимание, идя по краям многогранника к крайним точкам с все большими и большими объективными значениями. Это продолжается до тех пор, пока не будет достигнуто максимальное значение или пока не будет достигнута неограниченная граница (вывод о том, что проблема не имеет решения). Алгоритм всегда завершается, потому что число вершин в многограннике конечно; более того, поскольку мы перескакиваем между вершинами всегда в одном и том же направлении (направлении целевой функции), мы надеемся, что количество посещаемых вершин будет небольшим.
Решение линейной программы выполняется в два этапа. На первом этапе, известном как Фаза I, находится начальная крайняя точка. В зависимости от характера программы это может быть тривиально, но в целом ее можно решить, применив симплексный алгоритм к модифицированной версии исходной программы. Возможные результаты Фазы I заключаются в том, что либо найдено базовое допустимое решение, либо допустимая область пуста. В последнем случае линейная программа называется невыполнимой. На втором этапе, фазе II, симплекс-алгоритм применяется с использованием основного допустимого решения, найденного на этапе I, в качестве отправной точки. Возможные результаты этапа II - это либо оптимальное базовое допустимое решение, либо бесконечный край, на котором целевая функция не ограничена выше.
Преобразование линейной программы в стандартную форма может быть выполнена следующим образом. Во-первых, для каждой переменной с нижней границей, отличной от 0, вводится новая переменная, представляющая разницу между переменной и границей. Затем исходную переменную можно удалить заменой. Например, с учетом ограничения
новой переменной , вводится с помощью
Второе уравнение может использоваться для исключения из линейной программы. Таким образом, все ограничения нижней границы могут быть изменены на ограничения неотрицательности.
Во-вторых, для каждого оставшегося ограничения неравенства вводится новая переменная, называемая переменной резервирования, чтобы изменить ограничение на ограничение равенства. Эта переменная представляет собой разницу между двумя сторонами неравенства и считается неотрицательной. Например, неравенства
заменяются на
В этой форме гораздо проще выполнять алгебраические манипуляции с неравенствами. В неравенствах, в которых фигурирует ≥, например, во втором неравенстве, некоторые авторы ссылаются на введенную переменную как на избыточную.
В-третьих, каждая неограниченная переменная исключается из линейной программы. Это можно сделать двумя способами: первый - найти переменную в одном из уравнений, в которых она фигурирует, а затем исключить переменную путем подстановки. Другой - заменить переменную разницей двух ограниченных переменных. Например, если не ограничен, напишите
Уравнение можно использовать для исключения из линейной программы.
По завершении этого процесса возможная область будет иметь вид
Также полезно предположить, что ранг является числом рядов. Это не приводит к потере общности, поскольку в противном случае либо система имеет избыточные уравнения, которые могут быть отброшены, или система несовместима и линейная программа не имеет решения.
Линейная программа в стандартной форме может быть представлена в виде таблицы вида
Первая строка определяет целевую функцию, а остальные строки определяют ограничения. Ноль в первом столбце представляет нулевой вектор того же измерения, что и вектор b. (Разные авторы используют разные соглашения относительно точного макета.) Если столбцы A можно переставить так, чтобы он содержал единичную матрицу порядка p (количество строк в A), то таблица называется канонической. Переменные, соответствующие столбцам единичной матрицы, называются базовыми переменными, а остальные переменные называются небазовыми или свободными переменными. Если значения небазовых переменных установлены на 0, тогда значения основных переменных легко получить как записи в b, и это решение является основным допустимым решением. Алгебраическая интерпретация здесь заключается в том, что коэффициенты линейного уравнения, представленные каждой строкой, равны либо , , либо некоторому другому числу. В каждой строке будет столбец со значением , столбцы с коэффициентами , а остальные столбцы с некоторыми другими коэффициентами (эти другие переменные представляют наши неосновные переменные). Устанавливая значения неосновных переменных равными нулю, мы гарантируем в каждой строке, что значение переменной, представленной в своем столбце, равно значение в этой строке.
И наоборот, при наличии базового допустимого решения столбцы, соответствующие ненулевым переменным, могут быть расширены до невырожденной матрицы. Если соответствующая таблица умножается на обратную матрицу, то результатом является таблица в канонической форме.
Пусть
- таблица в канонической форме. Дополнительные преобразования добавления строк могут применяться для удаления коэффициентов cT. B из целевой функции. Этот процесс называется ценообразованием и приводит к канонической таблице
где z B - значение целевая функция при соответствующем базовом допустимом решении. Обновленные коэффициенты, также известные как коэффициенты относительной стоимости, представляют собой скорости изменения целевой функции по отношению к небазовым переменным.
Геометрическая операция перехода от базового допустимого Решение соседнего базового допустимого решения реализуется как операция поворота. Сначала в неосновном столбце выбирается ненулевой опорный элемент. Строка, содержащая этот элемент, умножается на, чтобы изменить этот элемент на 1, а затем несколько строк добавляются к другим строкам, чтобы изменить другие записи в столбце на 0. В результате, если сводный элемент находится в строке r, то столбец становится r-м столбцом единичной матрицы. Переменная для этого столбца теперь является базовой переменной, заменяя переменную, которая соответствовала r-му столбцу единичной матрицы до операции. Фактически, переменная, соответствующая сводному столбцу, входит в набор основных переменных и называется входящей переменной, а заменяемая переменная покидает набор основных переменных и называется выходящей переменной. Таблица по-прежнему имеет каноническую форму, но с набором основных переменных, измененным одним элементом.
Пусть линейная программа задана канонической таблицей. В симплексном алгоритме выполняются последовательные операции поворота, каждая из которых дает улучшенное базовое возможное решение; Выбор поворотного элемента на каждом этапе во многом определяется требованием, чтобы этот поворотный элемент улучшал решение.
Поскольку входящая переменная, как правило, увеличивается от 0 до положительного числа, значение целевой функции будет уменьшаться, если производная целевой функции по эта переменная отрицательная. Эквивалентно значение целевой функции уменьшается, если сводный столбец выбран так, чтобы соответствующая запись в целевой строке таблицы была положительной.
Если имеется более одного столбца, так что запись в целевой строке является положительной, то выбор того, какой из них добавить к набору базовых переменных, является несколько произвольным, и несколько правил выбора входящей переменной, такие как Разработан алгоритм Devex.
Если все записи в целевой строке меньше или равны 0, то выбор входящей переменной невозможен и решение фактически является оптимальным. Легко видеть, что она оптимальна, поскольку теперь целевая строка соответствует уравнению вида
Изменяя правило выбора входящей переменной так, чтобы оно выбирало столбец, в котором запись в целевой строке отрицательная, алгоритм изменяется так, чтобы он находил максимум целевой функции, а не минимум.
После выбора сводного столбца выбор сводной строки в значительной степени определяется требованием, чтобы полученное решение было выполнимым. Во-первых, учитываются только положительные записи в сводном столбце, поскольку это гарантирует, что значение входящей переменной будет неотрицательным. Если в сводном столбце нет положительных записей, входящая переменная может принимать любое неотрицательное значение, при этом решение остается возможным. В этом случае целевая функция снизу неограничена и минимума нет.
Затем необходимо выбрать сводную строку, чтобы все остальные базовые переменные оставались положительными. Расчет показывает, что это происходит, когда результирующее значение входящей переменной является минимальным. Другими словами, если сводный столбец - c, то сводная строка r выбирается так, чтобы
было минимумом по всем r так что rc>0. Это называется тестом с минимальным соотношением. Если существует более одной строки, для которой достигается минимум, то для определения может использоваться правило выбора отбрасываемой переменной.
Рассмотрим линейную программу
С добавлением резервных переменных 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.
Симплексный алгоритм, применяемый к проблеме Фазы I, должен завершаться с минимальным значением для новой целевой функции, поскольку, будучи суммой неотрицательных переменных, его значение ограничено ниже на 0. Если минимум равен 0, то искусственные переменные могут быть исключены из полученной канонической таблицы, создавая каноническую таблицу, эквивалентную исходной задаче. Затем для поиска решения можно применить симплексный алгоритм; этот шаг называется Фазой II. Если минимум положительный, то не существует допустимого решения для проблемы фазы I, где все искусственные переменные равны нулю. Это означает, что допустимая область для исходной задачи пуста, и поэтому исходная проблема не имеет решения.
Рассмотрим линейную программу
Это представлено (неканонической) таблицей
Введите искусственные переменные u и v и целевую функцию W = u + v, что даст новую таблицу