- •Глава 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-й обратной матрицы получим
.
Такое представление обратной матрицы называют мультипликативным.По сравнению с обычным симплекс-преобразованием оно уменьшает объем вычислений на каждой итерации и тем сильнее, чем меньше плотность матрицы условий.
