- •Содержание
- •Введение
- •Лекция 1. Вводные понятия математического программирования
- •Лекция 2. Геометрическая интерпретация решения задач линейного программирования
- •Лекция 3. Практическая реализация графического метода решения задач линейного программирования
- •Лекция 4. Теоретическое обоснование симплекс- метода
- •Лекция 5. Симплекс-метод решения задач линейной оптимизации
- •Лекция 7. Экономико-математический анализ решения задач линейного программирования
- •Лекция 9. Транспортная задача
- •Лекция 10. Нахождение оптимального решения транспортной задачи
- •1. Для решения транспортной задачи удобно использовать метод потенциалов.
- •Лекция 12. Метод множителей лагранжа
- •Заключение
- •Приложение а. Инвестиционные задачи и нелинейное программирование
- •Лекция 14. Оптимальный портфель ценных бумаг
- •Лекция 15. Практические способы формирования оптимальных фондовых портфелей
- •Приложение б. Теория игр и задачи линейного про- граммирования Лекция 16. Экономические риски и теория игр
- •Литература
Лекция 10. Нахождение оптимального решения транспортной задачи
План
1. Метод потенциалов и его алгоритм.
2. Практические способы реализации метода потенциалов.
1. Для решения транспортной задачи удобно использовать метод потенциалов.
Теорема (оптимальности решения транспортной задачи). Решение
u
i
v
j
* ( j = 1, n ), называемые соответственно потенциалами поставщи-
ков и потребителей, которые будут удовлетворять условиям:
j
i
* *
= cij
для
xij
*
> 0 ;
ui + v j
≤ cij
для
xij
= 0 .
Потенциалы – это двойственные оценки исходной транспортной задачи
(1)-(3) (см. предыдущую лекцию). Здесь ui
( i = 1, m ) – оценка единицы запаса
(потенциал поставщика), v j
( j = 1, n )– оценка единицы спроса (потенциал по-
требителя). Потенциалы могут быть числами любого знака.
Метод потенциалов является разновидностью симплекс-метода. Он при- меним и для решения задач, не являющихся транспортными. Эти задачи долж- ны записываться таблицами транспортного типа. Например, задача о назначе- нии специалистов или задача о закреплении земельных участков под посев.
Приведём алгоритм решения закрытой транспортной задачи методом по-
тенциалов.
1) Составляем начальный опорный план методом минимальной стоимо-
сти. Рассчитываем значение целевой функции.
2) Проверяем опорный план на оптимальность следующими действиями.
2.1) Используя заполненные клетки транспортной таблицы, рассчитаем
потенциалы по формуле ui + v j = cij , полагая u1 = 0 .
2.2) В незаполненные клетки помещаем оценки оптимальности
δij = ui + v j − cij . Если для всех незаполненных клеток
δij ≤ 0 , то опорный план
является оптимальным и алгоритм завершается вычислением минимального значения целевой функции. Если найдётся хотя бы одна незаполненная клетка с
δij > 0 , то алгоритм продолжается.
2.3) Клетку с наибольшей положительной оценкой
δij
считают перспек-
тивной. К перспективной клетке строится цикл. Перспективной клетке соот-
ветствует величина перераспределения груза
+ ρ . В остальных вершинах
цикла знаки чередуются
− ρ , + ρ
и т.д. Величину перераспределения вычисля-
ем по формуле
ρ = min xij , где
xij
– объёмы перевозки, записанные в вершинах
цикла и отмеченные
− ρ , т.е. уменьшаемые объёмы перевозок.
2.4) Перераспределяем груз в объёме ρ по циклу. Получаем новый опор-
ный план. Проверяем его на оптимальность, т.е. переходим к пункту 2.1) алго-
ритма.
Замечание. После нахождения оптимального плана рассуждают следую-
щим образом. Если все оценки незаполненных клеток
план единственный. Если же для некоторых из них
δij < 0 , то оптимальный
δij = 0 , то оптимальный
план не единственный. Можно найти другие оптимальные планы, перераспре- деляя груз по циклу в эти клетки. При этом общая стоимость перевозки не из- менится и останется минимальной.
Пусть транспортная задача имеет k оптимальных планов
X1 , X 2 ,..., X k .
Тогда общее оптимальное решение можно записать в виде выпуклой линейной комбинации этих планов, т.е.
*
Х = λ1 Х1 + λ2 Х 2 + ... + λk Х k ,
где
λ1 + λ2 + ... + λk
= 1,
λ1 ≥ 0, λ2 ≥ 0,..., λk
≥ 0 .
При наличии двух оптимальных планов пользуются записью:
*
где 0 ≤ λ ≤ 1.
Х = λ Х1 + (1 − λ ) Х 2 ,
2. Применим описанный алгоритм к решению конкретной транспортной задачи.
Пример 1. Табл. 1 (см. предыдущую лекцию) содержит запасы постав-
щиков (т), потребности потребителей (т) и тарифы перевозок единицы товара
(тыс. грн.). Требуется решить транспортную задачу.
Табл. 1. Условие транспортной задачи
b j 15 15 16 18
ai
4 1 2 1
20
4 6 3 2
30
5 2 1 4
10
Решение. Вводим фиктивного поставщика (табл. 2).
Табл. 2. Транспортная таблица с фиктивным поставщиком
b j 15 15 16 18
ai
4 1 2 1
20
4 6 3 2
30
5 2 1 4
10
0 0 0 0
4
Применим алгоритм метода потенциалов.
1) Составляем начальный опорный план методом минимальной стоимо-
сти (табл. 3). Рассчитываем значение целевой функции.
Табл. 3. Начальный опорный план
b j 15 15 16 18
ai
4 1 2 1
20 15 5
4 6 3 2
30 1 16 13
5 2 1 4
10 10
4 4
0 0 0 0
Итак,
⎛ 0 15 0 5 ⎞
⎜ 1 0 16 13 ⎟
X = ⎜ ⎟
1 ⎜10 0 0 0 ⎟
⎝ ⎠
и Z ( X1 ) = 148
(тыс. грн.).
2) Проверяем опорный план
X1 на оптимальность.
2.1) Используя заполненные клетки табл. 3, рассчитываем потенциалы по
формуле ui + v j = cij , полагая u1 = 0 :
⎪
⎪u1 + v4 = 1 ⇒ v4 = 1
⎪u2 + v4 = 2 ⇒ u2 = 1
⎪
⎨u2 + v1 = 4 ⇒ v1 = 3
⎪u + v = 3 ⇒ v = 2
⎪ 2 3 3
⎩u4 1
4
⎪ + v = 0 ⇒ u = −3
Добавляем в табл. 3 строку и столбец, и записываем в них потенциалы
(табл. 4).
2.2) В незаполненные клетки табл. 4 помещаем оценки оптимальности
δij = ui + v j − cij , выделяя их квадратными скобками. Т.к. имеются незаполнен-
ные клетки с δij > 0 , то алгоритм продолжается.
Табл. 4. Начальный опорный план с потенциалами
b j 15 15 16 18
ai
4 1 2 1
ui
u1 = 0
20 [–1] 15 [0] 5
4 6 3 2
30 1 [–4] 16 13
5 2 1 4
10 10 [1] [3] [–1]
0 0 0 0
4 4 [–2] [–1] [–2]
u2 = 1
u3 = 2
u4 = −3
v j v1 = 3
v2 = 1
v3 = 2
v4 = 1
2.3) Клетка (3,3) с наибольшей положительной оценкой перспективной. К перспективной клетке строится цикл (рис. 1):
[(3,3); (3,1); (2,1); (2,3); (3,3)].
δ33 = 3
является
1 + ρ
16 − ρ
10 − ρ + ρ
Рис. 1. Цикл перераспределения груза
Циклом, или замкнутым контуром, называется последовательность клеток таблицы, соединённых замкнутой ломаной линией без самопересечений. Количество вершин в цикле всегда чётно и повороты линий производятся толь- ко под прямым углом.
Для нашего цикла
ρ = min{10,16} = 10 .
2.4) Перераспределяем груз в объёме вый опорный план:
ρ = 10
(т) по циклу. Получаем но-
⎛ 0 15 0 5 ⎞
⎜11 0 6 13 ⎟
X = ⎜ ⎟ .
2 ⎜ 0 0 10 0 ⎟
⎝ ⎠
Теперь
Z ( X 2 ) = 118
(тыс. грн.).
Проверяем опорный план
X 2 на оптимальность, т.е. переходим к пункту
2.1) алгоритма. Считаем потенциалы и заносим в табл. 5. В незаполненные клетки помещаем оценки оптимальности.
Табл. 5. Второй опорный план с потенциалами
b j 15 15 16 18
ai
4 1 2 1
ui
u1 = 0
20 [–1] 15 [0] 5
4 6 3 2
30 11 [–4] 6 13
5 2 1 4
10 [–3] [–2] 10 [–4]
0 0 0 0
4 4 [–2] [–1] [–2]
u2 = 1
u3 = −1
u4 = −3
v j v1 = 3
v2 = 1
v3 = 2
v4 = 1
Т.к. для всех незаполненных клеток δij ≤ 0 , то опорный план
X 2 является
оптимальным и
Zmin = 118
(тыс. грн.).
Незаполненная клетка (1,3) имеет оценку оптимальности δij = 0 . Поэтому
оптимальный план
X 2 не единственный. К этой клетке строится цикл: [(1,3); (1,4); (2,4); (2,3); (1,3)].
Перераспределяем груз в объёме
новый оптимальный план
ρ = min{5, 6} = 5
(т) по циклу. Получаем
для которого
Zmin = 118
⎛ 0 15 5 0 ⎞
⎜11 0 1 18 ⎟
X = ⎜ ⎟ ,
3 ⎜ 0 0 10 0 ⎟
⎝ ⎠
(тыс. грн.).
на:
Удаляем из задачи фиктивного поставщика. Имеем два оптимальных пла-
⎛ 0 15 0 5 ⎞
X * = ⎜11 0 6 13 ⎟ ;
⎛ 0 15 5 0 ⎞
X * = ⎜11 0 1 18 ⎟ .
⎝ ⎠
⎜ 0 0 10 0 ⎟
2 ⎜ ⎟
⎝ ⎠
Общее оптимальное решение:
⎛ 0 15 5 − 5λ
5λ ⎞
Х * = λ Х * + (1 − λ ) Х
* = ⎜11 0 1 + 5λ
18 − 5λ ⎟ ,
1 2 ⎜ ⎟
⎜ 0 0 10 0 ⎟
где 0 ≤ λ ≤ 1. Причём
Zmin = 118
⎝ ⎠
(тыс. грн.).
Лекция 11. ЗАДАЧИ НЕЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
План
1. Математическая модель задачи нелинейного программирования.
2. Графический метод решения задач нелинейного программирования.
1. При решении сложных задач математического программирования может ока- заться, что линейных функций недостаточно. Рассмотрение реальных экономи- ческих ситуаций требует наиболее полного и точного учёта зависимостей меж- ду факторами, влияющими на целевую функцию и ограничения задачи. Это приводит к построению нелинейных экономико-математических моделей.
Пример 1. Предприятие выпускает два вида продукции
P1 и
P2 , на кото-
рые расходует три вида ресурсов
S1 , S2
и S3 (табл. 1).
С учётом брака расход ресурсов на единицу выпуска продукции состав-
ляет
aij
+ kij ⋅ x j
( i = 1, 3 ;
j = 1, 2 ). Конкуренция и насыщение рынка продукцией
приводит к снижению дохода от реализации одной единицы, т.е.
c j − l j ⋅ x j .
Табл. 1. Данные задачи
Ресурс |
Расход ресурса на вы- пуск ед. прод. |
Коэфф. увеличения рас- хода ресурса на ед. прод. |
Запас ресурса |
||
P1 |
P2 |
P1 |
P2 |
||
S1 |
a11 |
a12 |
k11 |
k12 |
b1 |
S2 |
a21 |
a22 |
k21 |
k22 |
b2 |
S3 |
a31 |
a32 |
k31 |
k32 |
b3 |
Цена реа- лиз. ед. прод. (грн.) |
c1 |
c2 |
|
||
Коэфф. снижения цены |
l1 |
l2 |
|||
Количество продукции (ед.) |
x1 |
x2 |
Предприятие стремится выпускать такое количество продукции, чтобы доход от реализации был максимальным. Требуется составить математическую модель задачи.
Решение. Пусть Z – общий доход от реализации (грн.), тогда целевая функция имеет вид:
Z = (c1 − l1 ⋅ x1 ) x1 + (c2 − l2 ⋅ x2 ) x2 → max . (1)
Запишем ограничения задачи:
⎨(a21 21
1
1
22
22
2
2
2
⎩ 31
31
1
1
32
32
2
2
3
⎪(a + k ⋅ x ) x + (a + k ⋅ x ) x ≤ b
Объёмы производства должны быть неотрицательными:
(2)
x j ≥ 0
( j = 1, 2 ). (3)
Рассмотрение примера окончено.
В общем виде задача нелинеJGйного программирования состоит в отыска-
нии такого вектора неизвестных
X = ( x1; x2 ;...; xn ) , который бы приводил целе-
вую функцию к экстремальному значению:
Z = F ( x1 , x2 ,..., xn ) → max (min) . (4)
Система ограничений может содержать как неравенства, так и равенства:
⎪⎧ gi ( x1 , x2 ,..., xn ) ≤ bi
⎨
⎩⎪ gi ( x1 , x2 ,..., xn ) = bi
(i = 1, m1 )
(i = m1 + 1, m)
(5)
Среди искомых переменных могут быть отрицательные:
x j ≥ 0
( j = 1, n1 ); x j < 0
( j = n1 + 1, n ). (6)
Задачу (4)-(6) называют математической моделью задачи нелинейного
программирования (НЛП), если хотя бы одна из функций F или gi
( i = 1, m )
является нелинейной. Для решения задач НЛП общего метода нет и они реша-
ются сложнее, чем задачи линейной оптимизации.
2. Если задача НЛП имеет две искомые переменные, то её можно решить гра-
фическим методом.
Пример 2. Предприятие выпускает два вида продукции
P1 и
P2 , на кото-
рые расходует три вида ресурсов
S1 , S2
и S3 (табл. 2).
Табл. 2. Данные задачи
Ресурс
Расход
ресурса на
выпуск
единицы
продукции
aij
(
i
=
1,
3
;
j
=
1,
2
)
Запас
ре-
сурса
bi
P1
P2
S1
4
6
450
S2
2
2
160
S3
3
2
210
Цена
реализ.
ед.
прод.
c
j
(тыс.
грн.)
100
140
Коэфф.
снижения це-
ны
l
j
1
1
Количество
продук-
ции
x
j
(ед.)
x
x
Кризисные явления, конкуренция и насыщение рынка данной продукцией приводит к снижению дохода от реализации одной единицы по формуле
c j − l j ⋅ x j . Требуется найти такой план выпуска продукции, который бы макси-
мизировал общий доход от её реализации.
Решение. Пусть Z – общий доход от реализации (тыс. грн.). Составим математическую модель задачи НЛП.
Z = (100 − x1 ) x1 + (140 − x2 ) x2 → max , (7)
⎧4x1 + 6 x2 ≤ 450
⎪
⎩ 1
2
⎪3x + 2x ≤ 210
(8)
x j ≥ 0
( j = 1, 2 ). (9)
ОДР (8)-(9) – это многоугольник OABCD (рис. 1) с вершинами
O(0; 0) ,
A(0; 75) ,
B(15; 65) , C (50;30) и
D(70; 0) .
Рис. 1. Иллюстрация графического метода решения
Преобразуем целевую функцию (7):
2 2
Z = 100x1 − x1
+ 140 x2 − x2 ;
2 2
−Z = ( x1
− 100 x1 + 2500) − 2500 + ( x2
− 140x2 + 4900) − 4900 ;
2
2 + ( x − 70)2 ;
( )2 2 2
7400 − Z
= ( x1 − 50)
+ ( x2 − 70) .
Получено уравнение окружности с центром
O1 (50; 70)
и переменным ра-
диусом R =
7400 − Z . Т.к.
R ≥ 0 , то границы изменения целевой функции:
0 ≤ Z ≤ 7400 . Чем меньше радиус окружности, тем больше значение целевой
функции.
Рассмотрим окружность с нулевым радиусом
02 = ( x
− 50)2 + ( x
− 70)2 ,
т.е. точку
1 2
O1 (50; 70) . Эта точка лежит вне ОДР и не может быть решением. По-
немногу увеличивая радиус, будем приближать окружность к ОДР. Точка пер-
вого касания окружности и ОДР будет оптимальным планом, максимизирую-
щим целевую функцию. Назовём эту точку
E( x1; x2 ) . Видно, что она принадле-
жит прямой
2x1 + 2 x2 = 160
( x1 + x2 = 80 ) или
x2 = − x1 + 80 .
Точка
E ( x1; x2 )
будет также принадлежать окружности
2
2 + ( x − 70)2
. Выразим вертикальную координату
2 2
x2 :
( x2 − 70)
= 7400 − Z − ( x1 − 50) ;
2
x2 − 70 = ±
7400 − Z − ( x1 − 50) .
Т.к. точка
E ( x1 ; x2 )
принадлежит нижней части окружности, то перед кор-
нем следует оставить только знак «минус»:
2
x2 = −
7400 − Z − ( x1 − 50)
+ 70 .
Получены две функции – прямая
2
x2 = − x1 + 80
и полуокружность
x2 =−
7400 − Z − ( x1 − 50)
+ 70 , графики которых имеют общую точку
E ( x1 ; x2 ) . Это точка касания. Поэтому угловые коэффициенты касательных
k1 и
k2 совпадают. Вычислим их, воспользовавшись геометрическим смыслом про-
изводной:
k = (− x + 80)/ = −1;
1 1 x
2
k2 = (−
7400 − Z − ( x1 − 50)
/
)
x1
= −2( x1 − 50)
2
Составим систему трёх уравнений с тремя неизвестными решим её:
⎧
x1 ,
x2 и Z , и
⎪ x2 = − x1 + 80
⎧ x2 = − x1 + 80
⎪
⎪
7400 − Z − ( x
− 50)2 + 70
x = −
7400 − Z − ( x
− 50)2 + 70
⎨ 2 1
⎩
⎨ 2 1
⎪
⎪ ( x1 − 50)
= −1
⎪− 7400 − Z − ( x
− 50)2 = x
− 50
⎪ 7400 − Z − ( x1
⎩ 1 1
− 50)2
2
1
⎪
⎨ x2 = x1 − 50 + 70
⎪
⎧ x + 20 = − x + 80
⎪
1
1
⎪
− 7400 − Z − ( x
− 50)2 = x
− 50
− 7400 − Z − ( x
− 50)2 = x
− 50
1 1
1
⎪
⎨ x2 = x1 + 20
⎪
1 1
⎧ x1 = 30
⎪
⎨ x2 = 50
⎪
− 7400 − Z − ( x
− 50)2 = x
− 50
⎩Z = 6600
Откуда получим
⎪⎩ 1 1
E (30;50) .
1
2
x * = 30
(ед.) и
x * = 50
(ед.), при котором
Zmax
= 6600 (тыс. грн.).
Решённая задача позволяет выработать общий подход в том случае, когда оптимальное решение находится на границе ОДР, но не в угловой точке.
Пусть график целевой функции
x2 =
f ( x1, Z )
касается графика ограниче-
ния
x2 = g ( x1 ) . Следовательно, они имеют общую точку, координаты которой
можно найти, решив систему уравнений:
⎧
⎪ x2 =
⎪
f ( x1, Z )
⎨ x2 = g ( x1 )
⎪[ f ( x , Z )]/
= [ g ( x )]/
⎪ 1 x 1 x
⎩ 1 1
Замечание 1. Если бы задача НЛП (7)-(9) была задачей на минимум, т.е.
Z → min , то её оптимальным планом оказалась бы угловая точка ОДР
O(0; 0) .
Этот факт отражён на рис. 1 (окружность большего радиуса достигает начала координат).
Наиболее распространёнными среди задач НЛП экономической направ-
ленности являются задачи квадратичного программирования. В таких зада- чах целевая функция является кривой второго порядка: окружностью, эллип- сом, гиперболой или параболой. Левые части ограничений – линейные функ- ции. При необходимости налагается условие не отрицательности. Пример 2 – типичная задача квадратичного программирования.
Домашнее задание. Повторить из курса высшей математики кривые вто-
рого порядка.