Методы оптимальных решений. Практикум
.pdfБазисное решение x2 = (3, 2, 0, 0, 4, 2), f(x2) = 17. Поскольку в нулевой строке полученной симплексной таблицы нет отрицательных элементов (a0j >, j =),0 то текущее базисное решение КЗЛП оптимально. Для исходной задачи ЛП оптимальное решение имеет вид x = (3, 2), f = 17.
Примечание. Как видно из рис. 1.2, симплекс-метод начинает работу с вершины A. Базисные решения, полученные в ходе решения задачи, соответствуют вершинам B и C. Последняя является оптимальной.
Задача 5. Решить каноническую задачу ЛП:
f(x) = 2x1 + 3x2 − 4x3 − x4 + 2x5 → max x1 + x2 − 4x3 + x4 − 3x5 = 3,
x1 − 4x3 + 2x4 − 5x5 = 6, x1, x2, x3, x4, x5 ≥ 0.
Решение. Данная задача не является приведенной, т. е. система линейных уравнений не обладает базисом, применим двухэтапный метод. На первом этапе (метод искусственного базиса) построим вспомогательную задачу ЛП. Для этого добавим в каждое уравнение по искусственной переменной t1, t2. Целевая функция h(x, t) равна сумме искусственных переменных, взятой с минусом. Таким образом, вспомогательная задача ЛП имеет вид:
h(x, t) = −(t1 + t2) → max |
|
|
x1 + x2 − 4x3 + x4 − 3x5 + t1 |
= 3, |
|
x1 |
− 4x3 + 2x4 − 5x5 + t2 |
= 6, |
x1, x2, x3, x4, x5, t1, t2 ≥ 0.
Чтобы данная задача стала приведенной, выразим целевую функцию h(x, t) через небазисные переменные x1, x2, x3, x4, x5. Из ограничений задачи имеем
t1 = 3 − x1 − x2 + 4x3 − x4 + 3x5,
t2 = 6 − x1 + 4x3 − 2x4 + 5x5,
поэтому h(x, t) = −9 + 2x1 + x2 − 8x3 + 3x4 − 8x5. Получили следующую приведенную задачу ЛП:
h(x, t) = −9 − (−2x1 − x2 + 8x3 − 3x4 + 8x5) → max t1 = 3 − (x1 + x2 − 4x3 + x4 − 3x5),
t2 = 6 − (x1 − 4x3 + 2x4 − 5x5), x1, x2, x3, x4, x5, t1, t2 ≥ 0.
11
Решим данную задачу симплекс-методом. Начальная симплексная таблица имеет вид:
|
|
|
|
|
|
↓ |
|
|
B |
1 |
−x1 −x2 −x3 −x4 −x5 |
||||
→ |
h |
−9 |
−2 |
−1 |
8 |
−3 |
8 |
t1 |
3 |
1 |
1 |
−4 |
1 |
−3 |
|
|
t2 |
6 |
1 |
0 |
−4 |
2 |
−5 |
После пересчета симплексной таблицы с ведущим элементом a14 = 1 получаем таблицу:
B |
1 |
−x1 −x2 −x3 −t1 −x5 |
||||
h |
0 |
1 |
2 |
−4 |
3 |
−1 |
x4 |
3 |
1 |
1 |
−4 |
1 |
−3 |
t2 |
0 |
−1 |
−2 |
4 |
−2 |
1 |
Очевидно, что условие оптимальности не выполнено. Выполним вторую итерацию симплекс-метода с ведущим элементом a25 = 1. Следующая симплексная таблица является оптимальной:
B |
1 |
−x1 −x2 −x3 −t1 −t2 |
||||
h |
0 |
0 |
0 |
0 |
1 |
1 |
|
|
|
|
|
|
|
x4 |
3 |
−2 |
−5 |
8 |
−5 |
3 |
x5 |
0 |
−1 |
−2 |
4 |
−2 |
1 |
Вней базисными являются только переменные исходной задачи (x4
иx5). Теперь вычеркиваем из таблицы столбцы, соответствующие искусственным переменным. Выразим f (x) через небазисные переменные x1, x2, x3. Строкам симплексной таблицы соответствуют равенства
x4 = 3 + 2x1 + 5x2 − 8x3, |
|
|
|||
x5 = |
|
x1 + 2x2 − 4x3. |
|
|
|
Подставим |
их |
в |
целевую |
функцию, |
получим |
f (x) = −3 + 2x1 + 2x2 − 4x3. Заменяем в строке целевой функции h(x, t) на f (x). Таким образом мы получаем симплексную таблицу, соответству-
ющую исходной задаче ЛП в приведенной форме:
B |
1 |
−x1 −x2 −x3 |
||
f |
−3 |
−2 |
−2 |
4 |
x4 |
3 |
−2 |
−5 |
8 |
x5 |
0 |
−1 |
−2 |
4 |
12
На втором этапе для поиска оптимального решения полученной задачи применяем алгоритм симплекс-метода.
В данном случае симплексная таблица содержит столбец, состоящий полностью из отрицательных элементов (первый или второй столбец). В соответствии с шагом 2 симплекс-метода (см. [6], п. 1.3.2) целевая функция не ограничена сверху на допустимом множестве, и следовательно, исходная задача неразрешима (не имеет оптимального решения).
Задача 6. Построить задачу, двойственную к следующей задаче ЛП:
f (x) = 5x1 − x2 → max 2x1 − x2 ≤ 3,
3x1 + 2x2 ≥ −1,
−x1 + x2 = −2, x1 ≥ 0.
Решение. Преобразуем задачу ЛП к одному из видов, указанных в п. 1.4 в [6], например, к виду (I). Это задача на максимум, в которой ограничения-неравенства имеют только знак ≤. Поэтому второе неравенство требуется умножить на (–1). Двойственная к ней будет задачей типа (II) (на минимум и ограничения-неравенства имеют только знак ≥). Теперь каждому неравенству исходной задачи сопоставим неотрицательную переменную двойственной задачи, а равенству переменную произвольного знака.
Получили пару двойственных задач ЛП:
(I) |
(II) |
f (x) = 5x1 − x2→max |
g(y) = 3y1 + y2 − 2y3→min |
2x1 − x2 ≤ 3, |
←→ y1 ≥ 0, |
−3x1 − 2x2 ≤ 1, |
←→ y2 ≥ 0, |
−x1 + x2 = −2, |
y3 R, |
x1 ≥ 0, |
←→ 2y1 − 3y2 − y3 ≥ 5, |
x2 R. |
−y1 − 2y2 + y3 = −1. |
Стрелками отмечены пары сопряженных неравенств.
Задача 7. Решить на основе теорем двойственности задачу, двойственную к задаче оптимального планирования призводства (см. Задачу 1).
Решение. Выпишем пару двойственных задач.
13
(I) (II)
f (x)=3x1 +4x2→max g(y)=15y1 +18y2 +16y3 +3y4→min
3x1 + 3x2 ≤ 15, |
←→ y1 ≥ 0, |
2x1 + 6x2 ≤ 18, |
←→ y2 ≥ 0, |
4x1 ≤ 16, |
←→ y3 ≥ 0, |
x1 − x2 ≤ 3, |
←→ y4 ≥ 0, |
x1 ≥ 0, |
←→ 3y1 + 2y2 + 4y3 + y4 ≥ 3, |
x2 ≥ 0. |
←→ 3y1 + 6y2 − y4 ≥ 4. |
Поскольку задача (I) разрешима (см. Задачи 1 или 2), то по первой теореме двойственности задача (II) также разрешима, причем g(y ) = f (x ) = 17. Для определения y = (y1, y2, y3, y4) оптимального решения задачи (II) – выпишем УДН для данной пары задач:
(3x1 + 3x2 − 15)y1 = 0, (2x1 + 6x2 − 18)y2 = 0,
(4x1 |
− 16)y3 = 0, |
(x1 − x2 − 3)y4 = 0, x1(3y1 + 2y2 + 4y3 + y4 − 3) = 0,
x2(3y1 + 6y2 |
− y4 − 4) = 0. |
Подставив координаты векторов x = (3, 2) и y в данную систему уравнений, получим:
(3 · 3 + 3 · 2 − 15)y1 = 0, (2 · 3 + 6 · 2 − 18)y2 = 0, (4 · 3 − 16)y3 = 0, (1 · 3 − 1 · 2 − 3)y4 = 0,
3 |
· |
(3y |
+ 2y |
+ 4y + y |
− |
3) = 0, |
|
|
1 |
2 |
3 |
4 |
|
||
2 |
· |
(3y + 6y |
− |
y |
− |
4) = 0. |
|
|
1 |
2 |
4 |
|
|||
Поскольку в третьем уравнении выражение в скобках не равно нулю (4·3−16 = −4), то в силу УДН неравенство y3 ≥ 0 должно выполняться как равенство, т. е. y3 = 0. Аналогично получаем y4 = 0. Далее, посколь-
ку x1 = 3, x2 = 2, то в силу УДН имеем 3y1 + 2y2 + 4y3 + y4 − 3 = 0,
3y1 + 6y2 − y4 − 4 = 0.
Получаем систему линейных уравнений:
14
|
|
y3 = 0, |
|
y3 = 0, |
|
|
− |
|
|
||
|
|
y4 = 0, |
|
y4 = 0, |
−→ |
|
3y1 + 2y2 + 4y3 + y4 3 = 0, |
−→ |
3y1 + 2y2 = 3, |
||
|
|
− y4 − 4 = 0, |
|
|
|
3y1 + 6y2 |
3y1 + 6y2 = 4, |
|
|||
|
y3 = 0, |
y4 = 0, |
|
y1 = 5/6, |
|
|
|
y2 = 1/4.
Решения x = (3, 2) DI и y = (5/6, 1/4, 0, 0) DII удовлетворяют УДН и, следовательно, в силу второй теоремы двойственности, являются оптимальными в задачах (I) и (II) соответственно.
Для проверки вычислим значение
g(y ) = 15 · 5/6 + 18 · 1/4 = 17.
Задача 8. Решить двойственным симплекс-методом задачу ЛП
f (x) = −x1 |
− 2x2 |
→ max |
|
−x1 |
+ |
x2 |
≤ 2, |
2x1 |
+ |
x2 |
≥ 3, |
|
|
2x2 |
≥ 3, |
xj ≥ 0, j = 1, 2.
Решение. Приведем задачу к каноническому виду. Для этого второе и третье ограничение умножим на (−1) и введем дополнительные неотрицательные переменные x3, x4, x5.
f (x) = −x1 |
− 2x2 |
→ max |
|
||
−x1 |
+ |
x2 |
+ x3 |
= 2, |
|
−2x1 |
− |
x2 |
+ |
+ x4 |
= −3, |
|
− 2x2 |
+ |
|
+ x5 = −3, |
|
xj ≥ 0, j = 1, ..., 5.
Очевидно, что полученная каноническая задача ЛП является приведенной, но не обладает базисным решением, так как базисное решение системы линейных уравнений (0, 0, 2, −3, −3) имеет отрицательные компоненты.
15
Представим задачу в следующей эквивалентной форме:
f (x) = |
0 |
− ( x1 |
+ 2x2) → max |
||
x3 |
= |
2 |
− ( −x1 + |
x2), |
|
x4 |
= |
−3 |
− (−2x1 − |
x2), |
|
x5 |
= |
−3 |
− ( |
− 2x2), |
|
xj ≥ 0, j = 1, ..., 5.
Выпишем начальную симплексную таблицу в сокращенной форме:
|
|
|
↓ |
|
|
B |
1 |
−x1 |
−x2 |
|
f |
0 |
1 |
2 |
|
|
|
|
|
→ |
x3 |
2 |
−1 |
1 |
x4 |
−3 |
−2 |
−1 |
|
|
x5 |
−3 |
0 |
−2 |
Ей соответствует базисное решение системы линейных уравнений x0 = (0, 0, 2, −3, −3) и f (x0) = 0. Заметим, что таблица не является прямо допустимой, но является двойственно допустимой.
Шаг 1. В нулевом столбце таблицы есть отрицательные элементы, поэтому вектор x0, соответствующий симплексной таблице, не является оптимальным.
Шаг 2. В строках с номерами 2 и 3 (например, a21 = −2, a32 = −2) имеются отрицательные элементы, т.е. признак неразрешимости не выполняется. Переходим к шагу 3.
Шаг 3. В качестве ведущей можно выбрать строку с номером 2 или 3. Положим p = 2.
Шаг 4. Найдем
max |
a01 |
, |
a02 |
|
= max |
1 |
, |
|
2 |
|
= − |
1 |
, |
a21 |
a22 |
−2 |
−1 |
2 |
|||||||||
который достигается при q = 1. Столбец с номером 1 становится ведущим. Таким образом, ведущий элемент будет равен –2 (в таблице он помечен звездочкой).
Шаг 5. Ведущая строка соответствует базисной переменной x4, а ведущий столбец - небазисной переменной x1.
В новой симплексной таблице переменные x1 и x4 меняются местами. На месте ведущего элемента записывается его обратная величина −12 .
16
Элементы ведущей строки делятся на –2. Элементы ведущего столбца делятся на −(−2) = 2.
Остальные элементы симплексной таблицы пересчитываются по правилу прямоугольника. После пересчета симплексная таблица имеет вид:
|
|
|
|
↓ |
|
B |
1 |
−x4 −x2 |
|
|
f |
−3/2 |
1/2 |
3/2 |
|
x3 |
7/2 |
−1/2 |
3/2 |
→ |
x1 |
3/2 |
−1/2 |
1/2 |
x5 |
−3 |
0 |
−2 |
|
Таблице соответствует вектор x1 = (3/2, 0, 7/2, 0, −3), f (x1) = −3/2. Начинаем вторую итерацию двойственного симплексметода. Признаки оптимальности и неразрешимости не выполняются, поэтому переходим на шаг 2 для выбора ведущей строки. Очевидно, что это строка, которой соответствует переменная x5 (a30 = −3 < 0). В ней имеется единственный элемент, удовлетворяющий условию apj < 0, j = .0Номер ведущего столбца равен двум (q = 2). Ведущим является элемент a32 = −2. Далее переменная x2 становится базисной, а переменная x5 – небазисной. После пересчета получаем следующую симплексную
таблицу:
|
B |
1 |
−x4 |
−x5 |
|
|
f |
−15/4 |
1/2 |
3/4 |
|
|
x3 |
5/4 |
−1/2 |
3/4 |
|
|
x1 |
3/4 |
−1/2 |
1/4 |
|
|
x2 |
3/2 |
0 |
−1/2 |
|
Ей соответствует |
вектор |
x2 |
= |
(3/4, 3/2, 5/4, 0, 0), |
|
f (x2) = −15/4. Поскольку в столбце 1 все элементы с номерами i = 0 неотрицательны, то данная таблица является оптимальной, а x2 – оптимальным решением КЗЛП. Для исходной задачи ЛП оптимальное решение имеет вид x = (3/4, 3/2), f = −15/4.
Примечание. Полезно решить графически исходную задачу ЛП и проследить процесс ее решения двойственным симплекс-методом.
17
Задача 9. Решить алгоритмом отсечения задачу целочисленного линейного программирования
f(x) = −x1 |
− 2x2 |
→ max |
|
−x1 |
+ |
x2 |
≤ 2, |
2x1 |
+ |
x2 |
≥ 3, |
|
|
2x2 |
≥ 3, |
xj ≥ 0, j = 1, 2. xj Z, j = 1, 2.
Решение. Используем для решения указанной задачи алгоритм, основанный на применении отсечений Гомори. Выполним первую итерацию.
Шаг 1. Отбросим условие целочисленности переменных и решим полученную задачу линейного программирования. В данном примере для этого удобно использовать двойственный симлекс-метод (см. решение Задачи 8). Задача линейного программирования разрешима. Оптимальная симплексная таблица имеет вид
B |
1 |
−x4 |
−x5 |
f |
−15/4 |
1/2 |
3/4 |
x3 |
5/4 |
−1/2 |
3/4 |
x1 |
3/4 |
−1/2 |
1/4 |
x2 |
3/2 |
0 |
−1/2 |
Получаем x = (3/4, 3/2), f = −15/4.
Шаг 2. Очевидно, что вектор x не является целочисленным. Переходим на следующий шаг.
Шаг 3. Выберем производящую строку для построения отсечения Гомори. Для этого рассмотрим нулевой столбец оптимальной симплексной таблицы и вычислим дробную часть для каждого его нецелочисленного
элемента: |
= |
|
15 |
= |
1 |
, {a10} = |
5 |
= |
1 |
|
||||||||
|
|
|
||||||||||||||||
{a00} |
− |
|
|
|
|
|
|
, |
||||||||||
4 |
|
4 |
4 |
4 |
||||||||||||||
{a20} = |
3 |
= |
3 |
, |
{a30} |
= |
3 |
= |
1 |
. |
|
|||||||
|
|
|
|
|
||||||||||||||
4 |
4 |
2 |
2 |
|
||||||||||||||
Элемент a20 имеет наибольшую дробную часть, поэтому строка с номером 2 становится производящей. Отсечение Гомори строим по формуле
{a21}x4 + {a22}x5 ≥ {a20},
18
или |
−2 |
x4 + 4 x5 |
≥ |
4 |
, |
|||||||||||
|
1 |
|
|
|
1 |
|
|
|
3 |
|
|
|||||
т.е. |
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
3 |
|
|
|
|
|
|||||
|
|
|
x4 + |
x5 ≥ |
. |
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
2 |
4 |
4 |
|
|
|
|
|||||||
Введем неотрицательную переменную S1, дополняющую это неравенство |
||||||||||||||||
до равенства. Присоедим равенство S1 = − |
43 + 21 x4 + 41 x5 к оптимальной |
||||
симплексной таблице: |
|
|
|
|
|
|
|
|
|
|
|
|
B |
1 |
−x4 |
−x5 |
|
|
f |
−15/4 |
1/2 |
3/4 |
|
|
x3 |
5/4 |
−1/2 |
3/4 |
|
|
x1 |
3/4 |
−1/2 |
1/4 |
|
|
x2 |
3/2 |
0 |
−1/2 |
|
|
S1 |
−3/4 |
−1/2 −1/4 |
|
|
Отметим, что элемент новой строки равен дробной части соответствующего элемента проиводящей строки, взятой со знаком минус.
Переходим ко второй итерации алгоритма отсечения.
Шаг 1. Решим полученную задачу линейного программирования, используя двойственный симлекс-метод. Элемент a41 = −12 становится ведущим. Задача линейного программирования разрешима. Оптимальная симплексная таблица имеет вид
B |
1 |
−S1 |
−x5 |
f |
−9/2 |
2 |
1/2 |
x3 |
2 |
−1 |
1 |
x1 |
3/2 |
−1 |
1/2 |
x2 |
3/2 |
0 |
−1/2 |
x4 |
3/2 |
−2 |
1/2 |
Получаем x = (3/2, 3/2), f = −9/2.
Шаг 2. Очевидно, что вектор x не является целочисленным. Переходим на следующий шаг.
Шаг 3. Выберем производящую строку для построения отсечения Гомори. Нецелочисленные элементы нулевого столбца a00, a20, a30, a40 имеют одинаковые дробные части, равные 1/2. Выберем, например, строку с номером 2 в качестве производящей. Строим отсечение Гомори
{a21}S1 + {a22}x5 ≥ {a20}
19
или |
1 |
|
|
|
3 |
|
|||
{−1}S1 + |
x5 |
≥ |
, |
||||||
|
|
||||||||
2 |
2 |
||||||||
т.е. |
|
|
1 |
|
|
|
|||
1 |
x5 ≥ |
. |
|
|
|||||
|
2 |
2 |
|
|
|||||
Введем неотрицательную переменную S2, дополняющую это неравенство |
|||||||||
до равенства. Присоедим равенство S2 = −21 + 21 x5 к оптимальной сим- |
|||||
плексной таблице: |
|
|
|
|
|
|
|
|
|
|
|
|
B |
1 |
−S1 |
−x5 |
|
|
f |
−9/2 |
2 |
1/2 |
|
|
x3 |
2 |
−1 |
1 |
|
|
x1 |
3/2 |
−1 |
1/2 |
|
|
x2 |
3/2 |
0 |
−1/2 |
|
|
x4 |
3/2 |
−2 |
1/2 |
|
|
S2 |
−1/2 |
0 |
−1/2 |
|
Выполним третью итерацию алгоритма отсечения.
Шаг 1. Решим полученную задачу линейного программирования, используя двойственный симлекс-метод. Элемент a52 = −12 становится ведущим. Задача линейного программирования разрешима. Оптимальная симплексная таблица имеет вид
B |
1 |
−S1 −S2 |
|
f |
−5 |
2 |
1 |
x3 |
1 |
−1 |
2 |
x1 |
1 |
−1 |
1 |
x2 |
2 |
0 |
−1 |
x4 |
1 |
−2 |
1 |
x5 |
1 |
0 |
−2 |
Получаем x = (1, 2), f = −5.
Шаг 2. Вектор x является целочисленным, следовательно алгоритм отсечения заканчивает работу. Вектор x = (1, 2) является оптимальным решением исходной задачи целочисленного линейного программирования.
20
