Методы условной оптимизации. Программа курса «Исследование операций в экономике». Теория двойственности в линейном программирова-нии. Двойственный симплекс-метод.
Найти оптимальное решение двойственным симплекс-методом. Решаем задачу двойственным симплекс-методом.
Симплекс- метод — алгоритм решения оптимизационной задачи линейного программирования путём перебора вершин выпуклого многогранника в многомерном пространстве. Сущность метода: построение базисных решений, на которых монотонно убывает линейный функционал, до ситуации, когда выполняются необходимые условия локальной оптимальности.
В работе Л. Канторовича «Математические методы организации и планирования производства» (1. В то время эта группа занималась исследованием возможности использования математических и смежных с ними методов для военных задач и проблем планирования.
В дальнейшем для развития этих идей в ВВС была организована исследовательская группа под названием Project SCOOP. Первое успешное решение задачи линейного программирования на ЭВМ SEAC было проведено в январе 1. В результате все неравенства ограничивают некоторый многогранник (возможно, бесконечный), называемый также полиэдральным комплексом.
Уравнение W(x) = c, где W(x) — максимизируемый (или минимизируемый) линейный функционал, порождает гиперплоскость. L(c). Зависимость от c порождает семейство параллельных гиперплоскостей. Тогда экстремальная задача приобретает следующую формулировку — требуется найти такое наибольшее c, что гиперплоскость L(c) пересекает многогранник хотя бы в одной точке. Заметим, что пересечение оптимальной гиперплоскости и многогранника будет содержать хотя бы одну вершину, причём, их будет более одной, если пересечение содержит ребро или k- мерную грань. Поэтому максимум функционала можно искать в вершинах многогранника.
Принцип симплекс- метода состоит в том, что выбирается одна из вершин многогранника, после чего начинается движение по его рёбрам от вершины к вершине в сторону увеличения значения функционала. Когда переход по ребру из текущей вершины в другую вершину с более высоким значением функционала невозможен, считается, что оптимальное значение c найдено. Последовательность вычислений симплекс- методом можно разделить на две основные фазы: нахождение исходной вершины множества допустимых решений,последовательный переход от одной вершины к другой, ведущий к оптимизации значения целевой функции.
При этом в некоторых случаях исходное решение очевидно или его определение не требует сложных вычислений, например, когда все ограничения представлены неравенствами вида «меньше или равно» (тогда нулевой вектор совершенно точно является допустимым решением, хотя и, скорее всего, далеко не самым оптимальным). В таких задачах первую фазу симплекс- метода можно вообще не проводить. Симплекс- метод, соответственно, делится на однофазный и двухфазный. Рассмотрим следующую задачу линейного программирования: c. Tx. Необходимо максимизировать Z, где.
Разница между числом переменных и уравнений даёт нам число степеней свободы. Проще говоря, если мы рассматриваем вершину многогранника, то это число рёбер, по которым мы можем продолжать движение. Тогда мы можем присвоить этому числу переменных значение 0 и назвать их «непростыми». Остальные переменные при этом будут вычисляться однозначно и называться «простыми». Полученная точка будет вершиной в пересечении соответствующих непростым переменным гиперплоскостей. Для того, чтобы найти т.
При этом начальное допустимое решение вычисляется однозначно : xsi=bi. На каждом шаге мы будем менять множества простых и непростых векторов (двигаться по рёбрам), и матрица будет иметь следующий вид.
Матрицу, образованную оставшимися столбцами обозначим D. Почему матрица будет иметь такой вид поясним в описании шагов алгоритма. Первый шаг. Выбираем начальное допустимое значение, как указано выше. Заметим, что из выражения Ax+xs=b. Таким образом мы выразили простые переменные через непростые, и в выражении B.
Поэтому, если прибавить к равенству Z. Поскольку мы хотим максимизировать Z, то необходимо выбрать переменную, которая будет более всех уменьшать выражение(c. BTB. Если таких переменных нет, то есть все коэффициенты этого выражения неотрицательны, то мы пришли в искомую вершину и нашли оптимальное решение.
В противном случае начнём увеличивать эту непростую переменную, то есть перемещаться по соответствующему ей ребру. Эту переменную назовём входящей. Третий шаг. Теперь необходимо понять, какая простая переменная первой обратится в ноль по мере увеличения входящей переменной. Для этого достаточно рассмотреть систему. Эту переменную назовем выходящей. Это будет означать, что мы натолкнулись на новую вершину. Теперь входящую и выходящую переменную поменяем местами — входящая «войдёт» в простую, а выходящая из них «выйдет» в непростые.
Теперь перепишем матрицу B и вектор c. B в соответствии с новыми наборами простых и непростых переменных, после чего вернёмся ко второму шагу. Найденная вершина будет являться оптимальным решением. Если в условии задачи линейного программирования не все ограничения представлены неравенствами типа «.
Однако каждая итерация симплекс- метода является переходом от одной вершины к другой, и если неизвестно ни одной вершины, алгоритм вообще не может быть начат. Процесс нахождения исходной вершины не сильно отличается от однофазного симплекс- метода, однако может в итоге оказаться сложнее, чем дальнейшая оптимизация. Все ограничения задачи модифицируются согласно следующим правилам: ограничения типа «. Эта модификация проводится и в однофазном симплекс- методе, дополнительные переменные в дальнейшем используются как исходный базис. Поскольку такая переменная из- за отрицательного коэффициента не может быть использована в исходном базисе, необходимо создать ещё одну, вспомогательную, переменную. Вспомогательные переменные всегда создаются с коэффициентом «+1». Соответственно, будет создано некоторое количество дополнительных и вспомогательных переменных.
В исходный базис выбираются дополнительные переменные с коэффициентом «+1» и все вспомогательные. Осторожно: решение, которому соответствует этот базис, не является допустимым. Презентация На Тему Мерчандайзинг на этой странице.
Различия между дополнительными и вспомогательными переменными. Значение дополнительной переменной, равное нулю, соответствует равенству значений правых и левых частей ограничения.
Если значение вспомогательной переменной больше нуля, то данное решение не выполняет определённое ограничение, а значит не является допустимым. То есть ненулевое значение дополнительной переменной может (но не должно) сигнализировать о неоптимальности решения. Ненулевое значение вспомогательной переменной сигнализирует о недопустимости решения. После того, как было модифицировано условие, создаётся вспомогательная целевая функция. Если вспомогательные переменные были обозначены, как yi. Поскольку все вспомогательные переменные увеличивают значение z.
Можно проводить дальнейшую оптимизацию с учётом исходной целевой функции, при этом уже не обращая внимания на вспомогательные переменные. Это и является второй фазой решения.
В модифицированном методе матрица. В остальном алгоритм похож на вышеописанный. Вычисляем двойственные переменные d=c. BTB. Проверка оптимальности. Столбец со значением < 0 можно вводить в базис. Часто выбирают минимальное значение, но для этого нужно перебрать все столбцы. Чаще выбирают значение, меньшее некоторого заданного значения .
Определение выводимого. Пусть AJ. В противном случае один из элементов выйдет на нулевое значение. Выводим соответствующий столбец из базиса. Пересчет опорного(базисного) плана.
Вычисляем новый опорный план по уже приведенной формуле x=p+. Пересчитываем обратную к базисной B.
Во избежание получения больших ошибок время от времени матрица пересчитывается полностью. Этот процесс называется . При переходе от задачи на минимум целевая функция примет вид: g=. Если из пары двойственных задач одна обладает оптимальным планом, то и другая имеет решение, причем экстремальные значения линейных функций этих задач равны. Если линейная функция одной из задач не ограничена, то другая не имеет решения. Симплекс- метод удивительно эффективен на практике, но в 1.