Загребаев Методы матпрограммирования 2007
.pdf1) возможность применения обычного симплекс-метода определялась положительностью коэффициентов столбца свободных членов βi в системе ограничений, разрешенной относительно базиса.
Признаком допустимости в двойственном симплекс-алгоритме является неотрицательность коэффициентов целевой функции γ j (не
считая свободного члена); 2) признаком оптимальности полученного решения является не-
отрицательность всех βi -коэффициентов столбца свободных членов (не считая значения целевой функции);
3) переменная xi , выводимая из базиса, определяется макси-
мальным по модулю отрицательным коэффициентом в столбце свободных членов;
4) разрешающий элемент выбирается в i-й строке среди отрицательных коэффициентов αij < 0 и соответствует максимальному
отношению коэффициентов строки целевой функции к элементам
i-й строки, т.е. |
γ j |
|
(табл. 1.29). |
|
|
|
|
|
|
|
|
|
|||||
αij |
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 1.29 |
|||
|
Свободные |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Базис |
|
x |
… |
x |
i |
|
… |
x |
x |
… |
x |
j |
… |
x |
n |
||
члены |
|
1 |
|
|
r |
r +1 |
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
x1 |
β1 |
|
|
1 |
… |
0 |
|
… |
0 |
α1r +1 |
… |
α1 j |
… |
α1n |
|||
|
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
. |
|
|
. |
… |
. |
|
… |
. |
. |
… |
. |
|
… |
. |
|||
. |
. |
|
|
. |
… |
. |
|
… |
. |
. |
… |
. |
|
… |
. |
||
. |
. |
|
|
. |
… |
. |
|
… |
. |
. |
… |
. |
|
… |
. |
||
xi |
βi |
|
|
0 |
… |
1 |
|
… |
0 |
αir +1 |
… |
αij |
… |
αin |
|||
|
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
. |
|
|
. |
… |
. |
|
… |
. |
. |
… |
. |
|
… |
. |
|||
. |
. |
|
|
. |
… |
. |
|
… |
. |
. |
… |
. |
|
… |
. |
||
. |
. |
|
|
. |
… |
. |
|
… |
. |
. |
… |
. |
|
… |
. |
||
xr |
βr |
|
|
0 |
… |
0 |
… |
1 |
αrr +1 |
… |
αrj |
… |
αrn |
||||
f (x) |
γ0 |
|
|
0 |
… |
0 |
… |
0 |
γr +1 |
… |
γ j |
… |
γn |
61
1.5.3. Примеры решения двойственных задач линейного программирования
Пример 1. Исходная задача: найти max {f (x) = 21x1 +11x2 } при ограничениях:
7x |
+ 4x |
|
≤13; |
||||||
|
|
1 |
|
|
|
|
|
2 |
|
x1 |
≤1; |
|
|
|
|
|
|||
2x |
+ x |
2 |
|
≤ 3; |
|||||
|
|
1 |
|
|
|
|
|
|
|
x |
, x |
2 |
≥ |
0. |
|
||||
|
1 |
|
|
|
|
min {ϕ( y) =13y1 + y2 + 3y3 } при |
|||
Двойственная задача: |
найти |
|
|
ограничениях:
7 y1 + y2 + 2 y3 ≥ 21;
4 y1 + y3 ≥11;
y1, y2 , y3 ≥ 0.
Решение двойственной задачи имеет вид:
y1 = 0, y2 = 0, y3 =11; ϕmin ( y) = 33.
Полученное решение находится из оптимальной таблицы ис-
ходной задачи |
|
|
|
|
|
|
Пример 2. Исходная задача: найти max {f (x) = 3 + 4x1 + 6x2 } |
||||||
при ограничениях: |
|
|
|
|
|
|
2x − |
3x |
|
≤ 0; |
|||
|
1 |
|
|
2 |
|
|
− 2x1 + 2x2 ≤ 4; |
||||||
− 4x |
|
+ 5x |
2 |
≤ 20; |
||
|
1 |
|
|
|
||
x |
, x |
2 |
≥ 0. |
|
|
|
1 |
|
|
|
|
|
Двойственная задача: найти min {ϕ( y) = 3 + 4 y2 + 20 y3 } при ог-
раничениях:
2 y1 − 2 y2 − 4 y3 ≥ 4;
−3y1 + 2 y2 + 5y3 ≥ 6;
y1, y2 , y3 ≥ 0.
62
Так как в исходной задаче целевая функция неограниченно возрастает, двойственная задача также не имеет решения (причем ее допустимое множество пусто).
Пример 3. Исходная задача: найти
max {f (x) = 2 + 4x1 + 2x2 + 2x3}
при ограничениях |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2x |
|
−3x |
2 |
+15x |
3 |
|
≤ 3; |
|||||||||||
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
2x1 + 2x2 +8x3 ≤ 32; |
||||||||||||||||||
2x |
|
− 4x |
2 |
+16x |
3 |
≤ 2; |
||||||||||||
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
||||
x |
, x |
2 |
, x |
3 |
≥ 0. |
|
|
|
|
|
|
|||||||
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|||||
Двойственная задача: найти |
|
|
|
|
|
|
|
|
|
|
||||||||
min {ϕ( y) = 2 + 3y1 + 32 y2 + 2 y3} |
||||||||||||||||||
при ограничениях: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 y |
+ 2 y |
2 |
+ 2 y |
3 |
|
≥ 4; |
||||||||||||
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
3y1 + 2 y2 − 4 y3 ≥ 2; |
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15y1 + 8y2 +16 y3 ≥ 2; |
||||||||||||||||||
y |
|
, y |
2 |
, y |
3 |
≥ 0. |
|
|
|
|
|
|
||||||
1 |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
Решение двойственной задачи имеет вид: |
||||||||||||||||||
y = |
2 |
|
, y |
2 |
= 8 , y |
3 |
= 0; |
|||||||||||
|
||||||||||||||||||
1 |
|
5 |
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ϕ( y) = 54 52 .
В рассматриваемом примере решением являются коэффициенты при ослабляющих переменных x4 , x5 , x6 в строке целевой функ-
ции оптимальной таблицы исходной задачи.
Пример 4. Решить задачу на основе двойственного симплексалгоритма.
Исходная задача: найти
max {f (x) =12 + 8x1 + 36x2 + 4x3 +12x4 }
63
при ограничениях:
88x1 − 20x2 + 32x3 +14x4 ≤12;−16x1 + 4x2 + 48x3 + 4x4 ≤10;− 24x1 −10x2 + 6x3 +8x4 ≤ 44;x1, x2 , x3 , x4 ≥ 0.
Двойственная задача: найти
min {ϕ( y) =12 +12 y1 +10 y2 + 44 y3}
при ограничениях:
88y1 −16 y2 − 24 y3 ≥ 8; |
||||||||||
− 20 y + 4 y |
2 |
−10 y |
3 |
≥ 36; |
||||||
|
|
1 |
|
|
|
|
|
|
||
|
|
+ 48y2 + 6 y3 |
≥ 4; |
|||||||
32 y1 |
||||||||||
14 y |
+ 4 y |
2 |
+8y |
3 |
≥ |
12; |
||||
|
1 |
|
|
|
|
|
|
|
||
|
, y2 , y3 ≥ 0. |
|
|
|
|
|||||
y1 |
|
|
|
|
Добавим ослабляющие переменные y4 , y5 , y6 , y7 . В результате получим начальный базис:
y4 = −8 − (−88y1 +16 y2 + 24 y3 );y5 = −36 − (20 y1 − 4 y2 +10 y3 );y6 = −4 − (−32 y1 − 48y2 + 6 y3 );y7 = −12 − (−14 y1 − 4 y2 −8y3 ).
Это недопустимый базис, так как свободные члены в уравнениях начального базиса отрицательные. Следовательно, необходимо использовать двойственный симплекс-алгоритм.
Будем искать max {(−ϕ( y)) = −12 − (12 y1 +10 y2 + 44 y3 )}.
Соответствующая последовательность симплекс-таблиц имеет вид:
64
Базис |
Свободные члены |
|
|
y1 |
|
y2 |
|
y3 |
|
|
y4 |
|
y5 |
y6 |
y7 |
|||||
y4 |
–8 |
|
–88 |
|
16 |
|
24 |
|
|
1 |
|
0 |
|
0 |
|
0 |
||||
y5 |
–36 |
|
20 |
|
–4 |
|
10 |
|
|
0 |
|
1 |
|
0 |
|
0 |
||||
y6 |
–4 |
|
–32 |
|
–48 |
|
–6 |
|
|
0 |
|
0 |
|
1 |
|
0 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y7 |
–12 |
|
–14 |
|
–4 |
|
–8 |
|
|
0 |
|
0 |
|
0 |
|
1 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
− ϕ |
–12 |
|
12 |
|
10 |
|
44 |
|
|
0 |
|
0 |
|
0 |
|
0 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Базис |
Свободные члены |
|
|
y1 |
|
y2 |
|
y3 |
|
|
y4 |
|
y5 |
y6 |
y7 |
|||||
y4 |
–152 |
|
|
–8 |
|
0 |
|
64 |
|
|
1 |
|
4 |
|
0 |
|
0 |
|||
y2 |
9 |
|
|
|
–5 |
|
1 |
|
–5/2 |
0 |
|
–1/4 |
0 |
|
0 |
|||||
y6 |
428 |
|
|
–272 |
|
0 |
|
–126 |
0 |
|
–12 |
1 |
|
0 |
||||||
y7 |
24 |
|
|
–34 |
|
0 |
|
–18 |
|
0 |
|
–1 |
0 |
|
1 |
|||||
−ϕ |
–102 |
|
62 |
|
0 |
|
69 |
|
|
0 |
|
2.5 |
|
0 |
|
0 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Базис |
Свободные члены |
|
y1 |
|
y2 |
|
|
y3 |
|
|
|
y4 |
|
y5 |
|
y6 |
|
y7 |
||
y1 |
19 |
|
1 |
|
0 |
|
|
|
–8 |
|
|
–1/8 |
–1/2 |
|
0 |
|
0 |
|||
y2 |
104 |
|
0 |
|
1 |
|
|
–85/2 |
|
|
–5/8 |
–11/4 |
|
0 |
|
0 |
||||
y6 |
5596 |
|
0 |
|
0 |
|
|
–2302 |
|
|
–34 |
–148 |
|
1 |
|
0 |
||||
y7 |
670 |
|
0 |
|
0 |
|
|
–290 |
|
–17/4 |
–18 |
|
0 |
|
1 |
|||||
−ϕ |
–1280 |
|
0 |
|
0 |
|
|
565 |
|
|
7.75 |
67/2 |
|
0 |
|
0 |
Как следует из последней симплекс-таблицы, оптимальным решением будут:
y1 =19, y2 =104, y3 = 0; ϕmin ( y) =1280.
Пример 5. Решить задачу с использованием двойственного симплекс-алгоритма.
Пусть после приведения некоторой задачи к стандартному виду вместе с ограничениями и замены требования минимизации целевой функции на максимизацию мы пришли к следующей задаче:
65
найти max {− ϕ( y) = −8y1 −12 y2 −18y3} при ограничениях:
y |
+ 3y |
|
|
≥ 2; |
|||
|
1 |
|
|
|
2 |
|
≥1; |
y1 |
+ 3y2 |
|
|||||
y |
, y |
2 |
, y |
3 |
≥ 0. |
||
|
1 |
|
|
|
|
Запишем начальный базис:
y4 = −2 − ( y1 + 3y2 );y5 = −1 − ( y1 − 3y2 ).
Отрицательные свободные члены в начальном базисе преобразованной задачи указывают на необходимость применения двойственного симплекс-алгоритм, при этом
− ϕ( y) = 0 − (8y1 +12 y2 +18y3 ).
Соответствующая симплекс-таблица имеет вид:
Базис |
|
Свободные члены |
|
|
|
y1 |
|
y2 |
|
y3 |
|
y4 |
y5 |
||||
y1 |
|
|
|
|
|
2 |
|
|
|
–1 |
|
0 |
|
–3 |
|
1 |
0 |
y5 |
|
|
|
|
|
–1 |
|
|
|
–1 |
|
–3 |
|
0 |
|
0 |
1 |
−ϕ |
|
|
|
|
|
0 |
|
|
|
8 |
|
12 |
|
18 |
|
0 |
0 |
Как следует из таблицы, |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
γ |
k |
|
|
8 |
|
|
18 |
|
|
|
|
|
|
|
|
max |
|
|
= max − |
|
, − |
|
= max {−8, |
− 6} |
= −6. |
|
||||||
|
|
|
|
|
|||||||||||||
|
|
|
αik |
|
1 |
|
|
3 |
|
|
|
|
|
|
|
Соответственно, преобразованная таблица имеет вид:
Базис |
Свободные члены |
y1 |
y2 |
y3 |
y4 |
y5 |
y3 |
2/3 |
1/3 |
0 |
1 |
–1/3 |
0 |
y5 |
–1 |
–1 |
–3 |
0 |
0 |
1 |
−ϕ |
–12 |
2 |
12 |
0 |
6 |
0 |
Аналогично, из полученной таблицы следует: max{− 2,−4}= −2 .
66
Тогда, преобразованная таблица представится в виде:
Базис |
Свободные члены |
y1 |
y2 |
y3 |
y4 |
y5 |
y3 |
1/3 |
0 |
–1 |
1 |
–1/3 |
1/3 |
y1 |
1 |
1 |
3 |
0 |
0 |
–1 |
−ϕ |
–14 |
0 |
6 |
0 |
6 |
2 |
В результате, из последней таблицы следует, что оптимальным решением задачи будут:
y1 =1, y2 = 0, y3 =1/ 3;
ϕmin =14.
1.6.Транспортная задача линейного программирования
Ранее был рассмотрен симплекс-метод, который является методом решения задач линейного программирования общего вида. Симплекс-метод является конечным, а не итерационным, тем не менее, число его итераций может быть весьма большим. Многие классы широко распространенных на практике задач линейного программирования обладают особенностями, выражающимися в специфическом строении матрицы A коэффициентов системы ограничений, которые позволяют существенно упростить общий метод решения применительно к рассматриваемой в данном разделе задаче. При этом процесс получения оптимального решения ускоряется. В других случаях удается построить принципиально новый метод решения, приспособленный к определенному классу задач.
Одним из примеров задач со специальной структурой матрицы ограничений является транспортная задача.
Мы рассмотрим постановку простейшей транспортной задачи и один из наиболее популярных методов ее решения, принципиально отличающийся от симплекс-метода.
1.6.1. Постановка задачи
Пусть на базах A1 , A2 , ..., Am сосредоточены определенные ресурсы в количестве a1 , a2 , ..., am . Эти ресурсы должны быть доставлены на объекты B1 , B2 , ..., Bn в количестве b1 , b2 , ..., bn . Стои-
67
мость перевозки единицы груза из Ai в B j обозначим через cij . Через xij обозначим количество ресурсов, которое доставляются из
Ai в B j .
Задача. Найти матрицу перевозок |
xij |
, i = |
1, m |
, j = |
1, n |
, кото- |
|
|
m n |
||||
рая минимизирует целевую функцию |
f (x) = ∑∑cij xij , удовлетво- |
|||||
|
|
i=1 j=1 |
||||
ряющую ограничениям |
|
|
|
|
|
|
n
∑xij = ai , i =1, m;
j=1
m
∑xij = b j , j =1, n;
i=1 |
|
m |
n |
∑ai = ∑b j . |
|
i=1 |
j=1 |
Первое и второе ограничения означают, что суммарное количество груза, вывозимого с базы Ai , точно равно имеющимся там запа-
сам ai , а ввозимый груз на базу B j точно равен заявкам этой базы.
Последнее условие называется балансным условием и означает равенство всего количества имеющихся запасов и потребностей.
Поставленная транспортная задача – это задача линейного программирования, но записанная особым образом. Для её решения разработаны специальные методы более эффективные, чем сим- плекс-метод.
В представленной задаче m ×n неизвестных. Введем ряд понятий.
Матрица xij размерности m ×n называется планом перевозок, xij – перевозкой, cij – матрицей издержек.
План называется допустимым, если он удовлетворяет указанным выше ограничениям.
План называется оптимальным, если он минимизирует функцию f (x) .
68
Переменные xij удовлетворяют m + n уравнениям системы ог-
раничений, ранг которой r равен m + n −1 . Если расположить переменные xij следующим образом:
x11 , x12 , ..., x1n , x21 , ..., x2n , ..., xm1 , ..., xmn ,
то матрица ограничений транспортной задачи примет вид
|
n |
|
n |
n |
|
|
|||
|
64748 |
64748 |
64748 |
|
|
1 1 K 1 |
0 |
0 K 0 K 0 0 K 0 |
|
|
0 0 K 0 |
1 1 K 1 |
K 0 0 K 0 |
|
|
KKKKK |
KKKKK |
K KKKKK |
|
A = |
0 0 K 0 |
0 |
0 K 0 K 1 1 K 1 |
|
|
1 0 K 0 |
1 0 K 0 K 1 0 K 0 |
||
|
0 1 K 0 |
0 |
1 K 0 K 0 1 K 0 |
|
|
KKKKK |
KKKKK |
K KKKKK |
|
|
0 0 K 1 |
0 |
0 K 1 K 0 0 K 1 |
|
|
|
|
|
|
m
.
n
Нетрудно видеть, что ранг r матрицы A равен m + n −1 . Действительно, всего в матрице m + n строк и все строки линейно зависимы. Чтобы в этом убедиться, достаточно сложить первые m строк и вычесть сумму последних n , при этом получится нулевой вектор. С другой стороны, нетрудно заметить, что любые m + n −1 строк матрицы A линейно независимы.
Итак, ранг системы ограничений равен m + n −1. Следовательно, можно выделить m + n −1 базисных переменных.
Существует понятие опорный план – это план, в котором отличны от нуля не более чем m + n −1 переменных xij .
Опорный план это фактически базис.
1.6.2. Нахождение первого опорного плана
Как и в задаче линейного программирования, в транспортной задаче необходимо сначала найти первый допустимый базис. Для
69
этого существует несколько методов, на некоторых из них остановимся ниже.
Зададим транспортную задачу табл. 1.30.
|
|
|
|
|
|
|
|
Таблица 1.30 |
||
|
|
|
|
|
|
B |
|
|
|
|
A |
|
|
|
|
|
|
|
|
||
B1 |
|
B2 |
|
K |
|
Bn |
Запасы ai |
|||
|
|
|
|
|||||||
A |
|
c11 |
|
c12 |
K |
|
c1n |
a |
|
|
1 |
x11 |
|
x12 |
|
|
|
x1n |
|
1 |
|
|
|
|
|
|
|
|
|
|||
A |
|
c21 |
|
c22 |
K |
|
c2n |
a |
2 |
|
2 |
x21 |
|
x22 |
|
|
|
x2n |
|
|
|
|
|
|
|
|
|
|
|
|||
K |
K |
|
K |
|
K |
|
K |
K |
||
A |
|
cm1 |
|
cm2 |
K |
|
cmn |
a |
m |
|
m |
xm1 |
|
xm2 |
|
|
|
xmn |
|
||
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
m |
|
n |
Заявки b j |
b1 |
|
b2 |
|
K |
|
bn |
∑ai = |
∑b j |
|
|
|
|
|
|
|
|
|
i=1 |
|
j=1 |
В табл. 1.30 A – пункт отправления, B – пункт назначения. Диагональный метод нахождения опорного плана состоит в
следующем. В верхнюю левую клетку таблицы ставится минимальное из чисел a1 и b1 , т.е. min{a1 , b1} .
Пусть a1 < b1 , Следовательно, поставщик A1 полностью использовал свои запасы и при установлении остальных перевозок его можно не учитывать (строка, соответствующая a1 , из таблицы вычеркивается). Теперь потребность 1-го потребителя будет составлять b1 − a1 .
Если наоборот, a1 > b1 , то соответствующий столбец из таблицы
вычеркивается.
Далее процесс повторяется.
Пример 1. Рассмотрим табл. 1.31. В этом примере m = 3, n = 4 .
В результате получили m + n −1 = 6 отличных от нуля переменных, т.е. это опорный план, в соответствии с которым
3 |
4 |
|
f (x) = ∑∑cij xij |
=1630 . |
i=1 j=1
70