
- •Тема 4. Линейное программирование (лп)
- •1) Постановка задачи линейного программирования. Формы записи задачи лп.
- •2) Графический метод решения задачи лп.
- •3.1 Стандартная форма задачи лп
- •3.2) Симплекс-метод
- •4) Двойственность в линейном программировании
- •Геометрическая интерпретация двойственных задач
3.2) Симплекс-метод
Графический метод, показанный в примере 1.2, удобен для двухмерных задач, но его невозможно применить к задачам с размерностью, большей трех. Однако во всех задачах оптимальное решение определяется допустимым базисным решением. Симплекс-метод, разработанный Г. Данцигом, является вычислительной процедурой, основанной на этом положении, однако представленной в алгебраической форме. Он непосредственно применяется к общей задаче линейного программирования в стандартной форме:
причем
предполагается, что имеется базисное
допустимое решение, удовлетворяющее
всем ограничениям.
Базисное решение,
удовлетворяющее ограничениям, можно
получить, если найти m
столбцов
матрицы A
, образующих
несингулярную матрицу B
m × n
. Если эти
столбцы соответствуют переменным
,
то ограничения могут быть преобразованы
так, чтобы выразить
через b
и остальные
x ,
что можно записать в виде
(Невырожденная матрица (иначе несингулярная матрица) ― квадратная матрица, определитель которой отличен от нуля. В противном случае матрица называется вырожденной
Если умножить
ограничения системы (2.4) на
и вычесть
из z ,
то
исключатся из z
и мы получим
Разумеется,
уравнения (2.4) и (2.3) выражают одинаковые
ограничения, а уравнения (2.5) и (2.1)
представляют одну и ту же целевую
функцию, хотя и в разных алгебраических
формах. Уравнения (2.4) и (2.5) являются
канонической формой для базиса
.
Если положить
равными 0, то соотношения
задают базисное
решение.
Если все
,
это решение допустимо. Среди таких
решений надо найти оптимальное.
Симплекс-метод обеспечивает систематическую
процедуру для такой замены одной
допустимой канонической формы на другую,
при которой значение целевой функции
оптимизируется.
Иногда базисное допустимое решение очевидно, как в выбранном для иллюстрации симплекс-метода примере 1.1, который уже решен графически.
Пример 1.3
Минимизировать
функцию
при ограничениях
В стандартной
форме с неотрицательными дополнительными
переменными
ограничения и целевая функция принимают
вид
(2.11)
Поскольку в этом
случае коэффициенты b
положительны,
а новые переменные имеют коэффициент
+1, ясно, что набор
образует
базисное фундаментальное решение, а
уравнения (2.11) имеют соответствующий
вид.
Функция z , имеющая нулевое значение, выражена через небазисные переменные, которые также имеют нулевое значение. Как в таком случае можно уменьшить значение функции z ? Поскольку x1 и x2 должны быть неотрицательны, любое изменение их значений является увеличением этих значений. Поскольку коэффициенты при x1 и x2 в канонической форме функции z отрицательны, любое такое изменение приведет к убыванию функции z . Вместо того чтобы увеличить их значения одновременно, для простоты выберем одну из переменных. Так как коэффициент при x2 больше по модулю, выбираем x2 .
Однако при увеличении x2 значения x3 и x4 будут изменяться, поскольку должны выполняться уравнения (2.11). Все переменные при этом должны оставаться неотрицательными. Таким образом, должен существовать предел увеличения x2.
Поскольку
,
x3
обращается
в 0 при x2
= 1700/4 = 425.
Поскольку
,
x4
обращается
в 0 при x2
= 1600/5 = 320.
Таким образом, мы не можем увеличивать x2 более чем до 320 (минимального из этих значений), не нарушая условие неотрицательности.
Второе ограничение может быть записано в виде
Если вычесть это уравнение, умноженное на 4, из уравнения первого ограничения (2.11) (4 - коэффициент при x2 в этом уравнении), а затем вычесть это же уравнение, умноженное на - 4, из выражения для целевой функции (- 4 - коэффициент при x2 в целевой функции), то переменная x2 будет исключена отовсюду, кроме второго ограничения, куда она входит с коэффициентом 1.
Ограничения и целевая функция принимают вид
что является канонической формой для базиса x2 , x3 , представляющего базисное допустимое решение.
Небазисными переменными стали переменные x1 и x4 . В данный момент они равны 0.
Теперь можно уменьшить значение функции z , увеличив только x1 . Но на сколько можно увеличить x1 , чтобы x2 и x3 оставались неотрицательными?
Для уравнения
Таким образом, нельзя увеличивать x1 , более чем до 300 (минимального из этих значений). После деления на 7/5 (коэффициент при x1 ) первое ограничение принимает вид
Исключим x1 из другого ограничения и выражения для целевой функции, вычтя последнее соотношение, умноженное на 2/5 и -2/5, из ограничения и целевой функции. Получим каноническую форму задачи в базисе x1, x2, тоже являющимся допустимым. Она имеет следующий вид:
Заметим, что увеличение любой из небазисных переменных x3 , x4 (эти переменные входят в выражение для целевой функции z с положительными коэффициентами) приведет к возрастанию функции z . Таким образом, дальнейшее убывание функции z невозможно и достигнуто минимальное значение функции z , равное -1400 при допустимом базисном решении x1 = 300, x2 = 200, x3 = x4 = 0. Если вернуться к геометрической интерпретации на рис.. 1.1, то можно убедиться, что последовательность канонических форм привела из точки 0 в точку A и из точки A в точку B - точку минимума. При выборе в уравнениях (2.11) увеличения x1 та же процедура привела бы из точки 0 в точку B через точку C .
Этот итерационный процесс удобно проиллюстрировать в так называемых симплекс-таблицах. Они состоят из уравнений (2.11) - (2.13) для ограничений и целевой функции, записанных в виде
Табличный симплекс-метод
Ниже приведены обобщенные результаты, сведенные в таблицы.
На итерации 0 звездочкой отмечено значение 5 - коэффициент при переменной, которую мы собираемся обратить в базисную в предельном ограничении. На итерации 1 отмечено число 7/5. Заметим также, что мы ставим точки вместо переменных, обязанных иметь нулевые значения, чтобы отличить их от переменных, обращающихся в 0 случайно.
Результаты, полученные в рассмотренном примере, можно обобщить. Предположим, что начальная каноническая форма задана, и что на k -й итерации получена каноническая форма, заданная уравнениями (2.4) и (2.5), запись которых приведена ниже в таблице.
Итерационный процесс состоит из трех шагов.
1. Найти переменную для включения в базис.
2. Найти переменную для исключения из базиса.
3. Построить новую каноническую форму.