- •Глава 4. Линейное программирование
- •4.1. Постановка задачи
- •В общем случае модель задачи лп имеет вид
- •4.2. Примеры задач линейного программирования
- •Задача составления рациона или как экономно питаться
- •4.2.2. Задача оптимального планирования
- •4.2.3. Сбалансированная транспортная задача
- •4.2.4. Общая распределительная задача
- •4.2.5. Задача планирования работы оборудования
- •4.2.6. Игра двух лиц с нулевой суммой как задача линейного программирования
- •4.2.7. Резюме
- •4.3. Формы записи задач линейного программирования и способы приведения к ним
- •4.3.1. Каноническая форма задач лп
- •4.3.2. Стандартная форма задачи лп
- •4.4. Упрощение модели
- •4.5. Основные понятия лп. Свойства задач лп
- •4.6. Геометрия задач лп
- •4.7. Выделение вершин допустимого множества
- •4.8. Методы решения задач лп
- •4.9. Симплекс-метод
- •4.9.1. Харатеристика метода
- •4.9.2. Переход от одного базисного решения к другому
- •4.9.3. Признак оптимальности. Основные этапы симплекс-метода
- •4.9.4. Построение начального базисного решения
- •4.9.5. Связь между параметрами последовательных итераций
- •4.9.6. Алгоритм симплекс-метода
- •4.9.7. Примеры
- •4.9.8. Учет двусторонних ограничений
- •4.10. Модифицированный алгоритм
- •4.11. Двойственность задач лп
- •4.11.1. Запись двойственной задачи в симметричном случае
- •4.11.2. Интерпретация двойственной задачи
- •4.11.3. Запись двойственной задачи в общем случае
- •4.11.4. Теоремы двойственности
- •4.11.5. Двойственный симплекс-метод
- •4.12. Параметрический анализ
- •4.12.1. Параметрирование вектора ограничениий
- •4.12.2. Параметрирование коэффициентов линейной формы
- •4.13. Задания для самостоятельной работы
4.9.8. Учет двусторонних ограничений
В общем случае на переменные могут накладываться двусторонние ограничения j xjj. Каждое такое ограничение порождает 2 равенства в канонической модели и, следовательно, увеличивает размер симплекс-таблицы на 2 строки. Если сместить начало отсчета наj, ограничение примет вид 0 xj dj, гдеdj=j - j, и таблица будет увеличиваться только на 1 строку. Однако, если такие ограничения накладываются на многие переменные, увеличение размеров симплекс-таблицы будет значительным.
Идея метода с двусторонними ограничениями состоит в учете ограничения сверху аналогично условию xj 0. Как было показано в разд. 4.9.2, выполнение этого условия обеспечивается выбором направляющей строки, т.е. значения вводимой переменной, равного 0. Чтобы переменные в новом базисном решении помимо неотрицательности были не больше dj, усложним выбор значения вводимой переменной. Предельное значение по условию неотрицательности, вычисляемое по формуле (4.9), обозначим, а предельное значение по ограничению сверху –. Из формулы (4.11) следует, что верхнего значения могут достигать только переменные с отрицательными коэффициентамиir. Приравнивая эти переменные значениям dj, получаем формулу для вычисления:
(4.24)
Новое базисное решение будет определяться по формуле (4.13), в которой 0 берется из соотношения
0=min(). (4.25)
Соответственно и направляющая строка выбирается по 0. В симплекс-таблице вместо одного столбца для удобнее иметь два: для ’ и ’’. Кроме того, добавляется одна строка (сверху), в которой записываются значения небазисных переменных: выводимая из базисного решения переменная xk равна нулю, если в (4.25) <, и равнаdk в противном случае.
Изменяется также признак оптимальности базисного решения. Условие Δj0 остается в силе только для нулевых небазисных переменных. К нему добавляется условие для небазисных переменных на верхнем уровне: Δj0. Поэтому в случае неоптимальности текущего решения направляющий столбец выбирается по max| Δj| из отрицательных дляxk=0 и положительных для xk=dk. Симплекс-преобразование (пересчет таблицы) не изменяется.
4.10. Модифицированный алгоритм
Этот алгоритм отличается от рассмотренного в разд. 4.9.6 тем, что основан на обратной матрице базиса. Для простоты расссмотрим случай с односторонними ограничениями на переменные. Тогда небазисные переменные равны нулю, а система условий задачи принимает вид
AbXb=B, (4.26)
где Ab – базисная матрица mxm,Xb – вектор базисных переменных. Так как определитель базисной матрицы не равен нулю, существует обратная матрица . Из (4.26) следует, что базисные переменные можно вычислять по формуле
(4.27)
Теперь покажем, что относительные оценки также можно определять по обратной матрице. Для этого выполним ряд преобразований:
(4.28)
Вектор найдем из разложения вектора условийAj по базису
(4.29)
Подставляя (4.29) в (4.28), получаем
Произведение не зависит от индексаj, поэтомуокончательно будем иметь
, (4.30)
где
(4.31)
Таким образом, для решения задачи модифицированным симплекс-методом достаточно вести не всю таблицу, а только обратную матрицу. При единичном начальном базисе обратную матрицу вычислять не надо – она также единичная. Имея обратную матрицу текущего решения, вычисляем сначала вектор по формуле (4.31), а затем оценки небазисных переменных по формуле (4.30). Если признак оптимальности не выполняется, находим минимальную оценку Коэффицинты разложенияir вектора Аr по текущему базису находятся по формуле (4.29):
где Ar – вектор условий вводимой переменнойxr, который берется из канонической модели. Столбецrдобавляем к обратной матрице в качестве направляющего. Далее действуем, как в стандартном методе, то есть для положительныхir вычисляем , находим направляющую строку инаправляющий элемент. Затем получаем новую обратную матрицу путем симплекс-преобразования теущей обратной матрицы. После выполнения признака оптимальности решение находится по формуле (4.27).
Очевидно, что преимущество этого метода перед стандартным тем выше, чем больше разница между общим числом переменных и числом базисных переменных канонической модели. Однако обнаружение неразрешимости задачи из-за неограниченности критерия может происходить на более поздних итерациях: только тогда, когда соответствующее условие имеет место в направляющем (добавляемом) столбце.
Новую обратную матрицу можно находить не только симплекс преобразованием старой, но и по формуле
,
где Ek – почти единичная матрица (толькоk-й столбец отличается от единичного). Если эту формулу применять на всех итерациях, то дляl-й обратной матрицы получим
.
Такое представление обратной матрицы называют мультипликативным.По сравнению с обычным симплекс-преобразованием оно уменьшает объем вычислений на каждой итерации и тем сильнее, чем меньше плотность матрицы условий.