- •Введение
- •Часть 1. Линейное программирование
- •1.1. Построение линейных экономико-математических моделей
- •Примеры задач
- •1.2. Формы записи задач линейного программирования
- •1.3. Свойства решений задач линейного программирования
- •1.4. Геометрический смысл и графический метод решения задач линейного программирования
- •1.5. Симплексный метод решения задач линейного программирования
- •1.6. Симплексный метод с искусственым базисом
- •1.7. Элементы теории двойственности
- •А. Симметричная двойственная пара
- •В. Несимметричная двойственная пара
- •1.8. Основные теоремы двойственности
- •1.9. Транспортная задача
- •Алгоритм метода потенциалов
- •1.10. Задача об оптимальных назначениях
- •Часть 2. Нелинейное программирование
- •2.1. Дробно-линейное программирование
- •2.1.1. Постановка задачи
- •Общую задачу дробно-линейного программирования (в дальнейшем длп) обычно записывают в виде:
- •2.1.2. Графическое решение задач длп
- •2.1.3. Симплекс-метод в длп
- •2.2. Общая задача нелинейного программирования. Классификация вычислительных методов
- •Условия (1) и (2), а также
- •По постановке задачи.
- •2. По характерным чертам алгоритмов.
- •2.3. Эффективные методы одномерной минимизации
- •2.4. Графический метод решения задач нелинейного программирования
- •2.5. Методы минимизации для задач без ограничений, использующие производные
- •2.6. Методы минимизации, не использующие производные
- •2.7. Методы решения задач нелинейного программирования с ограничениями
- •2.7.1. Методы линейной аппроксимации
- •2.7.2. Понятие о методах штрафных функций
- •Список использованной литературы:
- •Содержание
- •Часть 1. Линейное программирование 3
- •Часть 2. Нелинейное программирование 47
В. Несимметричная двойственная пара
Строится, если не выполнено хотя бы одно из условий построения симметричной пары. В этом случае сводим все ограничения задачи к равенствам, применяя дополнительные переменные.
Тогда двойственная задача будет иметь вид:
F = y1b1 + y2 b2 + …. + ymbm → mах;
Замечания. 1. Условия неотрицательности на уi не накладываются!
2. Если в прямой задаче Z → max, то F → min, а знаки у всех неравенств будут ≥.
Пример 1.7.2. Прямая задача:
Z = 2x1 – x2 + x3 + 5х4 → max;
3x1 – 4x2 + 2x3 – x4 ≤ 5;
–2x1 + x2 – x3 + 2x4 = 6;
2x1 – x2 + x3 – 2x4 ≥ 1;
x1 ≥ 0, x2 ≥ 0; x3 ≤ 0; x4 – ?
Приводим задачу к каноническому виду (целевую функцию можно оставить на max), вводя дополнительные переменные: х3* = –х3; х4 = х4* – х4**;
Z = 2x1 – x2 – x3* + 5х4* – 5х4** → max;
3x1 – 4x2 – 2x3* – x4* + х4** + х5 = 5;
–2x1 + x2 + x3* + 2x4* – 2х4** = 6;
2x1 – x2 – x3* – 2x4* + 2х4** – х6 = 1;
x1 ≥ 0, x2 ≥ 0; x3* ≥ 0; x4* ≥ 0; х4**≥ 0; х5 ≥ 0; х6 ≥ 0.
Строим несимметричную двойственную задачу:
F = 5y1 + 6y2 + y3 → min;
3y1 – 2y2 + 2y3 ≥ 2;
–4y1 + y2 – y3 ≥ –1;
–2y1 + y2 – y3 ≥ 1;
–y1 + 2y2 – 2y3 ≥ 5;
y1 – 2y2 + 2y3 ≥ –5;
y1 ≥ 0;
–y3 ≥ 0 ==> y3 ≤ 0.
Заметим, что 4-е и 5-е ограничения в сумме эквивалентны одному ограничению-равенству: –y1 + 2y2 – 2y3 = 5.
1.8. Основные теоремы двойственности
Достаточно часто можно находить решение двойственной задачи, пользуясь известным решением прямой задачи. Обоснование соответствующих методов дают теоремы двойственности, доказательство которых можно найти в [1]. Сначала сформулируем основную ЛЕММУ в предположении, что в прямой задаче Z → min , а в двойственной F → max.
Значение целевой функции прямой задачи Z(X) при любом допустимом Х не меньше, чем значение целевой функции двойственной задачи F(Y) при любом допустимом Y, т. е. Z(X) ≥ F(Y). Если же для каких-нибудь векторов Х* и Y* значения целевых функций совпадают, т. е. Z(Х*) = F(Y*), то эти векторы являются оптимальными решениями соответствующих задач.
На основании данной леммы доказывается 1-я основная теорема двойственности. Она включает в себя три утверждения:
-
Если одна из пары двойственных задач обладает оптимальным решением Xопт , то и другая задача обладает оптимальным решением Yопт , причем Z(Xопт) = F(Yопт).
-
Если у одной из пары двойственных задач целевая функция не ограничена, то вторая задача не имеет допустимых решений.
-
Если одна из пары двойственных задач не имеет допустимых решений, то вторая задача либо также не имеет допустимых решений, либо имеет неограниченную целевую функцию.
При доказательстве данной теоремы в [1] выводится формула, дающая возможность найти оптимальное решение двойственной задачи, при условии, что прямая задача решена симплекс-методом:
Yопт = СбТ Аб–1. (1.8.1)
На практике это означает, что из последней симплекс-таблицы (в которой достигнуто условие оптимальности) надо взять вектор-строку СбТ и умножить его на матрицу Аб–1. Эта матрица находится опять-таки в последней симплекс-таблице в столбцах, соответствующих первоначальному базису.
Пример 1.8.1. Рассмотрим применение этого метода на примере задачи, решенной графическим и симплекс-методом (см. п.п. 1.4 и 1.5).
Исходная задача (1.4.2):
После серии преобразований Жордана-Гаусса она была приведена к виду, на основании которого была построена начальная симплекс-таблица:
Z = 3x1 – 2x3 + x4 – 2x5 – x6 → min;
–х1 + х2 + х3 = 1,
х1 + х2 + х4 = 3,
х1 – 2х2 + х5 = 2,
–3х1 + х2 + х6 = 0,
хj ≥ 0, j = 1, … 6.
Именно по отношению к этой задаче строим несимметричную двойственную по описанным выше правилам. Получаем:
F = y1 + 3y2 + 2y3 → max;
–y1 + y2 + y3 – 3у4 ≤ 3,
y1 + y2 – 2y3 + y4 ≤ 0,
y1 ≤ –2, (1.8.2)
y2 ≤ 1,
y3 ≤ –2,
y4 ≤ –1.
Найдем оптимальное решение этой задачи по формуле (1.8.1). Из последней симплекс-таблицы примера 1.5.1 (п. 1.5.) получаем:
СбТ= (3; –1; –2; 0); Аб–1 = . Тогда умножая вектор-строку на матрицу, получим:
Yопт = (–5/2; –1/2; –2; –1).
Нетрудно проверить, что компоненты Yопт удовлетворяют всем ограничениям задачи (1.8.2). Кроме того, F(Yопт) = –5/2 – 3/2 – 4 = –8 = Z(Xопт), что соответствует 1-ой основной теореме двойственности.
Важную роль в получении и исследовании решений пары двойственных задач играет 2-ая основная теорема двойственности:
Для того, чтобы два допустимых решения двойственной пары Х*(х1*, х2*, … хn*) и Y* (y1*, y2*, … ym*) были оптимальны, необходимо и достаточно, чтобы они удовлетворяли так называемым «условиям дополняющей нежесткости»:
т.е. чтобы произведение значения любой переменной из оптимального решения одной задачи на невязку соответствующего ограничения двойственной задачи равнялось нулю.
Приведем примеры практического применения данной теоремы.
Пример 1.8.2. Проверить, является ли вектор Х* = (12; 4; 0; 0) оптимальным решением следующей задачи линейного программирования:
Z = 8x1 + 2x2 – 6x3 – 5х4 → max;
x1 – x2 – x3 + x4 ≤ 10;
4x1 – 7x2 – 6x3 + 3x4 ≤ 20 ;
x1 + x2 + 4x3 – x4 ≤ 16;
xj ≥ 0, j = 1, … 4.
Решение данной задачи состоит из ряда действий.
-
Проверяем Х* на допустимость, подставляя компоненты в систему ограничений:
12 – 4 – 0 + 0 = 8 < 10;
48 – 28 – 0 + 0 = 20;
12 + 4 + 0 – 0 = 16; x1, 2, 3, 4 ≥ 0 – решение допустимо.
2. Находим Z(X*) = 8*12 + 2*4 = 96 + 8 = 104.
3. Строим двойственную задачу:
F = 10y1 + 20y2 + 16y3 → min;
y1 + 4y2 + y3 ≥ 8;
–y1 – 7y2 + y3 ≥ 2;
–y1 – 6y2 + 4y3 ≥ –6;
y1 + 3y2 – y3 ≥ –5;
y1,2,3,4 ≥ 0.
4. Исходя из 2-ой основной теоремы двойственности, заключаем:
– так как первое ограничение исходной задачи для Х* строгое неравенство, то в Y* должно быть у1* = 0;
– так как х1* и х2* строго положительны, то 1-е и 2-е ограничения двойственной задачи должны быть равенствами, т. е. верна следующая система алгебраических уравнений:
у1* = 0;
у1* + 4у2* + у3* = 8;
–у1* – 7у2* + у3* = 2.
Решая эту систему, находим Y* = (0; 6/11; 64/11).
5. Проверяем Y* на допустимость, подставляя эти компоненты в 3-е и 4-е ограничения двойственной задачи (очевидно, условия неотрицательности выполнены):
–36/11 + 256/11 > – 6;
18/11 – 64/11 > – 5, значит решение допустимо.
6. Находим F(Y*) = 0 + 120/11 + 1024/11 = 1144/11 = 104.
7. Так как F(Y*) = Z(X*), то из 1-ой основной теоремы двойственности следует, что Х* и Y* являются оптимальными решениями соответствующих задач. Условие примера выполнено.
Замечания
1) Отрицательный ответ при выполнении любого из действий 1, 5 или 7 дает отрицательный ответ и на вопрос исходной задачи.
2) Данный алгоритм наряду с проверкой на оптимальность решения прямой задачи дает (в случае положительного ответа) оптимальное решение двойственной задачи.
Пример 1.8.3. Найти решение задачи линейного программирования путем графического решения соответствующей двойственной задачи:
Z = –x1 + 2x2 – 4x3 + х4 → min;
4x1 – x2 + x3 – 2x4 = 2;
–x1 + 2x2 + 3x3 + 4x4 = 3;
xj ≥ 0, j = 1, … 4.
Строим несимметричную двойственную задачу:
F = 2y1 + 3y2 → max;
4y1 – y2 ≤ –1;
–y1 + 2y2 ≤ 2
y1 + 3y2 ≤ –4;
–2y1 + 4y2 ≤ 1.
Так как эта задача имеет только две переменные, ее удобно решить графическим методом.
Очевидно, max F(Y) достигается в точке А, координаты которой находятся из системы уравнений
y1 + 3y2 = –4;
4y1 – y2 = –1,
т. е. Y* = (–7/13; –15/13), F(Y*) = –14/13 – 45/13 = –59/13.
При подстановке компонент Y* в систему ограничений двойственной задачи мы видим, что 1-е и 3-е ограничения выполняются как равенства, а 2-е и 4-е – как строгие неравенства. Это значит (в соответствии со 2-ой основной теоремой двойственности), что переменные х2* и х4 * в оптимальном решении прямой задачи должны равняться нулю. Тогда ограничения прямой задачи превращаются в систему двух уравнений с двумя неизвестными:
4x1* + x3* = 2;
–x1* + 3x3* = 3,
решая которую, получаем x1* = 3/13; x3* = 14/13. Окончательно,
Х* = (3/13; 0; 14/13; 0), Z(X*) = 3/13 + 56/13 = 59/13. Так как Z(X*) = F(Y*), то по
1-ой основной теореме двойственности X* и Y* являются оптимальными решениями пары двойственных задач.
Рассмотрим, наконец, 3-ю основную теорему двойственности, которая служит для исследования вопроса об устойчивости решений задач линейного программирования:
Значения переменных yi* в оптимальном решении двойственной задачи представляют собой оценки влияния свободных членов ограничений исходной задачи на экстремальное значение ее целевой функции, именно:
.
Практическая сторона данного вопроса раскрывается в следующем важном следствии:
При малых изменениях Δbi ─ правых частей исходной задачи приращение оптимального значения целевой функции
. (1.8.3)
При более значительных изменениях Δbi имеет место неравенство:
, (1.8.4)
где – решение двойственной задачи после изменения правых частей исходной.
Пример 1.8.4. Рассмотрим применение 3-ей основной теоремы двойственности к задаче, рассмотренной в примере 1.8.3. Изменим правую часть первого ограничения, добавив единицу к b1:
Z = –x1 + 2x2 – 4x3 + х4 → min;
4x1 – x2 + x3 – 2x4 = 3;
–x1 + 2x2 + 3x3 + 4x4 = 3;
xj ≥ 0, j = 1, … 4.
Тогда в двойственной задаче изменится только градиент целевой функции: grad F`= (3; 3), однако, как видно из рис.1.8.1, max F(Y) также будет находиться в точке А (–7/13; –15/13). Решая прямую задачу по 2-ой основной теореме двойственности, для переменных х1* и х3* получим несколько измененную систему уравнений:
4x1* + x3* = 3;
–x1* + 3x3* = 3,
откуда x1* = 6/13, x3* = 15/13. Окончательно, получаем измененное решение прямой задачи: Х** = (6/13; 0; 15/13; 0). Ему соответствует новое минимальное значение целевой функции: Z(X**) = –6/13 – 60/13 = –66/13. Тогда ΔZ = –66/13 – (–59/13) = –7/13. Проверяем равенство (1.8.3):
о тсюда следует, что данные изменения правых частей исходной задачи можно оценить как малые.
Теперь сделаем другие изменения правых частей задачи примера 1.8.3:
Δb = (–2; 0), тогда ограничения приобретут вид:
4x1 – x2 + x3 – 2x4 = 0;
–x1 + 2x2 + 3x3 + 4x4 = 3;
xj ≥ 0, j = 1, … 4.
В результате двойственная целевая функция примет вид: F(Y) = 3у2 → max.
Следовательно, градиентом целевой функции двойственной задачи будет вектор grad F = (0; 3), и теперь точка максимума изменится (см. рис. 1.8.1):
max F(Y) = F(B). Координаты точки В находим из системы:
y1 + 3y2 = –4;
–2y1 + 4y2 = 1,
решая которую, получаем: у1* = –19/10; у2* = –7/10; F(Y*) = –21/10. Теперь для прямой задачи имеем: x1** = 0, x2** = 0, а для x3** и x4** получаем систему:
x3** – 2x4** = 0;
3x3** + 4x4** = 3.
Решение системы: x3** = 6/10; x4** = 3/10. Тогда Х** = (0; 0; 6/10; 3/10). Z(X**) = –4*(6/10) + 3/10 = –21/10 = F(Y*). Находим ΔZ = –21/10 – (–59/13) = = 317/130 ≈ 2,44. Проверяем формулы (1.8.3) – (1.8.4):
= –2*(–19/10) = 3,8 ≠ ΔZ, однако = (–7/13)*(–2) ≈ 1,08,
то есть 1,08 ≤ ΔZ ≤ 3,8.
Вывод. Изменения правых частей исходной задачи оказались не малыми (так как в результате этих изменений поменялось решение двойственной задачи).