
- •Глава 4. Задачи линейного программирования
- •4.1. Основные понятия о задачах линейного программирования
- •Алгоритм графического решения задачи лп
- •Изменение значений констант в правой части неравенств ограничений
- •1. Все ограничения (включая ограничения не отрицательности переменных) преобразуются в равенства с не отрицательной правой частью.
- •2. Все переменные являются неотрицательными.
- •3. Целевую функцию следует или максимизировать, или минимизировать.
- •Определение базисных решений
- •Свободные переменные и базисные решения
- •Упражнения
1. Все ограничения (включая ограничения не отрицательности переменных) преобразуются в равенства с не отрицательной правой частью.
2. Все переменные являются неотрицательными.
3. Целевую функцию следует или максимизировать, или минимизировать.
1. Преобразование неравенств в равенства. Неравенства любого типа (со знаками неравенств или ) можно преобразовать в равенства путем добавления в левую часть неравенств дополнительных переменных – остаточных или избыточных. Отметим, что в русской математической литературе для этих типов переменных не используются какие-либо специальные названия – они известны просто как дополнительные переменные (хотя иногда их также называют балансными). В неравенствах эти переменные различаются тем, что перед остаточной переменной всегда стоит знак "плюс", а перед избыточной – "минус".
Остаточная переменная. Неравенства типа "" обычно можно интерпретировать как ограничения на использование некоторых ресурсов (представленных в левой части неравенств переменными модели). В такой интерпретации остаточная переменная показывает количество неиспользованных ресурсов. В предыдущем примере неравенство 6 1 + 4 2 24 связано с использованием первого ресурса. Это неравенство эквивалентно равенству 6 1 + 4 2 + s1 = 24, где s1 0. Здесь остаточная переменная s1 (=24 – 6 1 – 4 2) равна неиспользуемому количеству первого ресурса.
Избыточная
переменная.
Неравенство
типа ""
показывает, что "что-то"
должно
быть
не меньше определенной величины.
Избыточная
переменная
определяет превышение значения левой
части неравенства над этой величиной.
Например, в задаче "о пищевом рационе"
неравенство
показывает,
что количество белков в суточном пищевом
рационе
не
должно
быть меньше b1
единиц.
Математически
это
неравенство эквивалентно равенству
,
где S1
0. Положительное значение избыточной
переменной
S1
показывает
превышение количество белков в суточном
пищевом рационе над минимальным значением
в b1
единиц.
Введем также понятие свободной переменной, которая может принимать как положительные, так и отрицательные значения (и, конечно, значение 0). В приведенных выше примерах условие не отрицательности переменных является естественным. Но, конечно, возможны ситуации, когда переменные могут принимать любые действительные значения.
Такая ситуация показана в следующем примере.
Ресторан быстрого обслуживания Макдоналдс торгует порционными мясными пирогами и гамбургерами. На порцию мясного пирога идет четверть фунта мяса, а на гамбургер – только 0,2 фунта. В начале рабочего дня в ресторане имеется 200 фунтов мяса, можно еще прикупить мясо в течение дня, но уже с наценкой в 25 центов. Мясо, оставшееся в конце рабочего дня, жертвуется благотворительной организации "Горячий суп". Ресторан имеет доход 20 центов от одной порции мясного пирога и 15 центов – от одного гамбургера. Как и многие другие, этот ресторан не может продать в день более 900 бутербродов. Какова должна быть доля каждого из бутербродов (т.е. сколько порций мясного пирога и сколько гамбургеров) в ежедневном производстве ресторана, чтобы максимизировать его доход?
Сначала рассмотрим ограничения. Обозначим через 1 и 2, соответственно количество порций мясного пирога и гамбургеров, производимых рестораном. Для их производства ресторан может ограничиться 200 фунтами мяса или может прикупить еще. В первом случае получаем ограничение в виде неравенства 0,25 1 + 0,2 2 200, а во втором: 0,25 1 + 0,2 2 200. Естественно, выбор одного из этих неравенств будет существенно влиять на возможное оптимальное решение. Так как мы не знаем, какое из них необходимо, логично заменить их одним равенством 0,25 1 + 0,2 2 + 3 = 200, где 3 – свободная переменная. Фактически свободная переменная 3 в данной ситуации одновременно играет роли как остаточной, так и избыточной переменных.
Далее построим целевую функцию. Ресторан хочет максимизировать свой доход. Очевидно, что для максимизации дохода желательно как можно больше продавать своей продукции, но для этого необходимы дополнительные закупки мяса. В этом случае переменная 3 должна быть отрицательной, т.е. должна играть роль избыточной переменной.
Для того чтобы раскрыть "двойственную" природу переменной 3, используем стандартный математический прием, а именно представим ее в следующем виде:
3 = +3 – –3, где +3 , –3 0.
Если +3 > 0 и –3 = 0, тогда переменная 3 играет роль остаточной переменной. Если, напротив, –3 > 0 и +3 = 0, тогда переменная 3 выступает в роли избыточной переменной. Итак, теперь ограничение можно записать в виде равенства 0,25 1 + 0,2 2 + +3 – –3 = 200.
Целевая функция получает следующее выражение:
максимизировать W() = 0,20 1 + 0,15 2 – 0,25 –3.
Встречаются ситуации, когда оптимальное решение задачи линейного программирования достигается при положительных значениях как +3, так и –3.
Пример неравенства типа "": Неравенство 1 + 2 2 3 эквивалентно равенству 1 + 2 2 + s1 = 3, где s1 – остаточная переменная и s1 0.
Пример неравенства типа "": Неравенство 3 1 + 2 5 эквивалентно равенству 3 1 + 2 – S1 = 5, где S1 – избыточная переменная и S1 0.
Правую часть равенства всегда можно сделать неотрицательной путем умножения всего равенства на –1. Кроме того, заметим, что неравенство типа "" также преобразуется в неравенство типа "" посредством умножения обеих частей неравенства на –1. Например, неравенство 2 < 4 после умножения на –1 становится неравенством –2 > –4.
2. Преобразование свободных переменных в не отрицательные переменные. Свободную переменную j (т.е. переменную, которая может принимать как отрицательные, так и положительные значения) можно представить как разность двух неотрицательных переменных следующим образом: j = +j – –j, где +j, –j 0.
Например, для j = –5 положим +j = 0 и –j = 5 . Если же j = +5, тогда +j = 5 и –j = 0. В обоих случаях переменные +j и –j неотрицательны.
Такое преобразование свободных переменных следует выполнить во всех неравенствах и в целевой функции.
После решения задачи с переменными +j и –j значения исходных переменных восстанавливаются с помощью обратной подстановки.
3. Преобразование задачи максимизации в задачу минимизации. Задача максимизации функции W( 1, 2, …, n) эквивалентна задаче минимизации функции – W( 1, 2, …, n), поскольку при решении обеих задач предоставляется один и тот же набор значений переменных 1, 2, …, n.
Пример: Преобразуем следующую задачу ЛП в стандартную форму.
Максимизировать W() =2 1+ З 2 + 5 3 при выполнении условий
1+ 2 – 3 – 5,
– 6 1+7 2 – 9 3 4,
1 + 2 + 4 3 = 10,
1, 2 0, 3 – свободная переменная.
Для преобразования задачи в стандартную форму выполним следующие действия:
Вычтем из левой части первого неравенства дополнительную (избыточную) переменную S1 = 4 и затем умножим все неравенство на –1, для того чтобы правая часть неравенства стала положительной. (Другой путь преобразования неравенства: сначала умножим его на –1 (неравенство вместо вида "" примет вид ""); далее к левой части неравенства прибавим дополнительную (остаточную) переменную s1=4).
Добавим дополнительную (остаточную) переменную s2=5 к левой части второго неравенства.
Так как третье ограничение изначально записано в виде равенства, поэтому оставляем его без изменения.
Выполняем замену 3 = +3 – –3, где +3 , –3 0, во всех ограничениях и целевой функции.
Получаем следующую стандартную задачу линейного программирования:
Максимизировать W() =2 1+ З 2 + 5 +3 –5 –3 при выполнении условий
– 1 – 2 + +3 – –3 + 4 =5,
– 6 1+7 2 – 9 +3 – 9 –3 + 5 = 4,
1 + 2 + 4 +3 – 4 –3 = 10,
1, 2, +3, –3, 4, 5>0.