- •1. Теория графов
- •1.1 Остовные деревья минимального веса.
- •Алгоритм Прим
- •Алгоритм Краскал
- •1.2 Нахождение кратчайших путей между двумя заданными вершинами. Алгоритм Дийкстры
- •Алгоритм Дийкстры
- •Модифицированный алгоритм Дийкстры
- •1.3 Нахождение кратчайших цепей между всеми парами узлов в сети
- •Алгоритм Флойда (Floyd r. W.)
- •Модификация алгоритма Флойда
- •1.4 Построение потоков максимальной мощности. Алгоритм Форда-Фалкерсона
- •Алгоритм Форда-Фалкерсона
- •1.5 Обобщенные задачи о потоке
- •1.5.1 Построение потока в сети с двойным ограничением потока по дугам
- •1.5.2 Построение потока в сети с пропускными способностями узлов
- •1.5.3 Построение потока в сети с несколькими источниками-стоками
- •1.5.4 Построение потока в сети с неориентированными ребрами
- •1.6 Определение потока заданной величины минимальной стоимости. Алгоритмы Басакера-Гоуэна, Клейна
- •Алгоритм Басакера-Гоуэна (Basaker r.G., Gowen p.J)
- •Алгоритм Клейна (Klein m.)
- •2 Сетевое планирование
- •2.1 Построение сетевых моделей
- •2.2 Расчет и анализ сетевых моделей
- •Задача №1
- •Задача №2
- •I. Поиск критических путей
- •II. Поиск резервов работ
- •Правило №2.1
- •3 Линейное программирование
- •3.1 Примеры задач лп
- •3.2 Свойства решений задач линейного программирования
- •3.3 Двумерные задачи линейного программирования. Графический метод решения. Исследование на разрешимость
- •3.3.1 Построение области допустимых решений целевой функции f.
- •3.3.2 Построение прямой уровня
- •3.3.3 Максимизация целевой функции f
- •3.4 Симплекс-метод.
- •3.4.1 Построение начального опорного плана.
- •3.4.2 Симплексные таблицы
- •3.4.3 Примеры решения задач симплекс-методом
- •4. Теория двойственности в линейном программировании
- •4.1 Понятие двойственности. Построение пары взаимно двойственных задач
- •4.2 Теоремы двойственности и их экономическое содержание
- •4.3 Анализ решения задач линейного программирования
- •5. Транспортная задача
- •5.1 Постановка транспортной задачи в матричной форме. Построение исходного опорного плана
- •5.2 Метод потенциалов
- •5.3 Дополнительные условия в транспортных задачах.
- •6. Дискретное программирование.
- •6.1 Метод Гомори для решения задачи целочисленного линейного программирования
- •7. Динамическое программирование
- •7.1 Многошаговые процессы в динамических задачах
- •7.2 Принцип оптимальности и рекуррентные соотношения
- •7.3 Вычислительная схема динамического программирования
- •7.4 Оптимальное распределение средств на расширение производства
- •8. Матричные игры
- •8.1 Парные матричные игры с нулевой суммой
- •8.2 Платежная матрица
- •Нижняя и верхняя цена игры
- •8.3 Смешанные стратегии
- •8.3 Решение матричной игры сведением к задаче линейного программирования
- •8.4 Решение матричной игры графическим методом
- •8.5 Приближенный метод решения матричных игр
- •Практические работы Практическая работа №1 Построение остовного дерева графа. Нахождение найкратчайшего расстояния между заданными вершинами графа
- •Практическая работа №2 Нахождение наикратчайших расстояний между всеми парами вершин графа. Алгоритм Флойда.
- •Практическая работа №3
- •Практическая работа №4 Нахождение потока заданной величины минимальной стоимости. Алгоритм Басакера-Гоуэна
- •Практическая работа №7 Оптимизация проекта по времени.
- •Практическая работа №8
- •Практическая работа №9 Оптимизация целевой функции с помощью двухфазного симплекс метода.
- •Практическая работа №10 Решение двойственных задач. Экономическая интерпретация задач линейного программирования.
- •Практическая работа №11 Решение транспортных задач.
- •Практическая работа №12 Дополнительные условия в транспортных задачах
- •Практическая работа №13 Метод Гомори для решения задачи целочисленного линейного программирования.
- •Практическая работа №14
- •Практическая работа №15 Решение матричных игр в чистых стратегиях
- •Практическая работа №16 Графический метод решения матричных игр.
- •Каркас минимального веса. Метод р. Прима.
- •Кратчайшие пути
- •Лабораторная работа №2 Кратчайшее расстояния от заданной вершины до всех остальных вершин графа.
- •Алгоритм Дийкстры.
- •Пути в бесконтурном графе.
- •Лабораторная работа №3 Кратчайшие пути между всеми парами вершин графа.
- •Алгоритм Флойда.
- •Лабораторная работа №4 Построение потока максимальной мощности.
- •Потоки в сетях.
- •Метод построения максимального потока в сети.
- •Лабораторная работа №5 Симплекс метод
- •Лабораторная работа №6 Транспортная задача
- •Список литературы
7.4 Оптимальное распределение средств на расширение производства
Широкий класс составляют задачи, в которых речь идет о наиболее целесообразном распределении во времени тех или иных ресурсов (денежных средств, рабочей силы, сырья и т. п.). Рассмотрим простейший пример задачи такого рода.
Группе предприятий выделяются дополнительные средства на реконструкцию и модернизацию производства. По каждому из n предприятий известен возможный прирост выпуска продукции в зависимости от выделенной ему суммы x. Требуется так распределить между предприятиями средства c, чтобы общий прирост fn(c) выпуска продукции был максимальным.
В соответствии с вычислительной схемой динамического программирования рассмотрим сначала случай n =1, т. е. предположим, что все имеющиеся средства выделяются на реконструкцию и модернизацию одного предприятия. Обозначим через f1(х) максимально возможный прирост выпуска продукции на этом предприятии, соответствующий выделенной сумме х. Каждому значению х отвечает вполне определенное (единственное) значение gi(x) выпуска, поэтому можно записать, что
(1)
Пусть теперь n =2, т. е. средства распределяются между двумя предприятиями. Если второму предприятию выделена сумма x, то прирост продукции на нем составит g2(x). Оставшиеся другому предприятию средства (c-x) в зависимости от величины x (а значит, и c-x ) позволят увеличить прирост выпуска продукции до максимально возможного значения f1(c-x). При этом условии общий прирост выпуска продукции на двух предприятиях
(2)
Оптимальному значению f2(c) прироста продукции при распределении суммы c между двумя предприятиями соответствует такое x, при котором сумма (2) максимальна. это можно выразить записью
Значение f3(c) можно вычислить, если известны значения f2(c), и т.д.
Функциональное уравнение Беллмана для рассматриваемой задачи запишется в следующем виде:
(3)
Итак, максимальный прирост выпуска продукции на n предприятиях определяется как максимум суммы прироста выпуска на n-м предприятии и прироста выпуска на остальных n-1 предприятиях при условии, что оставшиеся после n-го предприятия средства распределяются между остальными предприятиями оптимально.
Имея функциональные уравнения (1) и (3), мы можем последовательно найти сначала f1, затем f2, f3,…и, наконец, fn-1 и fn для различных значений распределяемой суммы средств.
Для отыскания оптимального распределения средств прежде находим величину хn*(с) ассигнований n-му предприятию, которая позволяет достичь полученного нами максимального значения fn прироста продукции. По величине оставшихся средств с- хn*(с) и уже известному нам значению fn-1 устанавливаем хn-1*(с) – величину ассигнований (n-1)-му предприятию и т.д. и ,наконец, находим х2*(с) и х1*(с).
Пример. Пусть имеются четыре предприятия, между которыми распределяется 100 тыс. ден. ед. Значения gi(x) прироста выпуска продукции на предприятиях в зависимости от выделенной суммы x приведены в табл.5. Составить план распределения средств, максимизирующий общий прирост выпуска продукции.
Решение Пусть п = 1. В соответствии с формулой (1) в зависимости от начальной суммы с получаем с учетом табл.7.5 значения f1(с), помещенные в табл.7.6.
Таблица 7.5
Выделяемые средства с, тыс. ден. ед. |
Предприятие |
|||
№ 1 |
№ 2 |
№ 3 |
№ 4 |
|
Прирост выпуска продукции на предприятиях gi(x), тыс. ден. ед. |
||||
g1(x) |
g2(x) |
g3(x) |
g4(x) |
|
20 |
10 |
12 |
11 |
16 |
40 |
31 |
26 |
36 |
37 |
60 |
42 |
36 |
45 |
46 |
80 |
62 |
54 |
60 |
63 |
100 |
76 |
78 |
77 |
80 |
х1*(с) |
f1(с) |
20 40 60 80 100 |
10 31 42 62 76 |
Предположим теперь, что средства вкладываются в два предприятия. Тогда в соответствии с формулой (3)
(4)
Очередная задача – найти значения функции (4) для всех допустимых комбинаций с и х. Для упрощения расчетов значения х будем принимать кратными 20 тыс. ден. ед. и для большей наглядности записи оформлять в виде таблиц. Каждому шагу будет соответствовать своя таблица. Рассматриваемому шагу соответствует табл.7.7
Для каждого значения (20, 40, 60, 80, 100) начальной суммы с распределяемых средств в табл.7 предусмотрена отдельная строка, а для каждого возможного значения х (0, 20, 40, 60, 80, 100) распределяемой суммы – столбец. Некоторые клетки таблицы останутся незаполненными, так как соответствуют недопустимым сочетаниям с и х. Такой, например, будет клетка, отвечающая строке с = 40 и столбцу х = 80, ибо при наличии 40 тыс. ден. ед. естественно отпадает вариант, при котором одному из предприятий выделяется 80 тыс. ден. ед.
Таблица 7.7
с
х |
0 |
20 |
40 |
60 |
80 |
100 |
f2(с) |
х2*(с) |
20 |
0+10 |
12+0 |
|
|
|
|
12 |
20 |
40 |
0+31 |
12+10 |
26+0 |
|
|
|
31 |
0 |
60 |
0+42 |
12+31 |
26+10 |
36+0 |
|
|
43 |
20 |
80 |
0+62 |
12+42 |
26+31 |
36+10 |
54+0 |
|
62 |
0 |
100 |
0+76 |
12+62 |
26+42 |
36+31 |
54+10 |
78+0 |
78 |
100 |
В каждую клетку таблицы будем вписывать значение суммы Первое слагаемое берем из условий задачи (см. табл.7.5), второе – из табл.6. Так, например, при распределении начальной суммы с = 80 тыс. ден. ед. одним из вариантов может быть следующий: второму предприятию выделяется 60 тыс. ден.ед. (х = 60), тогда первому – 80-60 = 20 тыс. ден. ед. При таком распределении первоначальной суммы на втором предприятии будет обеспечен прирост продукции на сумму в 36 тыс. ден. ед. (см. табл.7.5), на первом – 10 тыс. ден. ед. (см. табл.7.6).
Общий прирост составит (36+10) тыс. ден. ед., что и записано в соответствующей клетке табл. 7.7. В двух последних столбцах таблицы проставлены максимальный по строке прирост продукции (в столбце f2(с)) и соответствующая ему оптимальная сумма средств, выделенная второму предприятию (в столбце х2*(с)). Так, при начальной сумме с = 60 тыс. ден.ед. максимальный прирост выпуска продукции составляет 43 тыс. ден. ед. (12+31), и это достигаетсявыделением второму предприятию 20, а первому – 60-20 = 40 тыс.ден.ед.
Расчет значений f3(с) приведен в табл.7.8. Здесь использована формула, получающаяся из (3) при п = 3:
Первое слагаемое в табл.7.8 взято из табл.7.5, второе – из табл.7.7.
Таблица 7.8
с
х |
0 |
20 |
40 |
60 |
80 |
100 |
f3(с) |
х3*(с) |
20 |
0+12 |
11+0 |
|
|
|
|
12 |
0 |
40 |
0+31 |
11+12 |
36+0 |
|
|
|
36 |
40 |
60 |
0+43 |
11+31 |
36+12 |
45+0 |
|
|
48 |
40 |
80 |
0+62 |
11+43 |
36+31 |
45+12 |
60+0 |
|
67 |
40 |
100 |
0+78 |
11+62 |
36+43 |
45+31 |
60+12 |
77+0 |
79 |
40 |
Аналогичным образом находятся значения f4(с). Соответствующая таблица здесь не приводится, но вам следует проверить, насколько освоены описанные вычислительные операции метода динамического программирования, построив таблицу для f4(с), аналогичную табл.7.8. Полученные результаты можно сравнить с теми, которые приведены в сводной таблице (табл.7.9, см. последние два столбца), составленной на основе расчетных таблиц, начиная с табл.7.6.
Таблица 7.9.
с |
х1*(с) |
f1(с) |
х2*(с) |
f2(с) |
х3*(с) |
f3(с) |
х4*(с) |
f4(с) |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
20 |
20 |
10 |
20 |
12 |
0 |
12 |
20 |
16 |
40 |
40 |
31 |
0 |
31 |
40 |
36 |
40 |
37 |
60 |
60 |
42 |
20 |
43 |
40 |
48 |
20 |
52 |
80 |
80 |
62 |
0 |
62 |
40 |
67 |
40 |
73 |
100 |
100 |
76 |
100 |
78 |
40 |
79 |
40 |
85 |
Табл.7.9 содержит много ценной информации и позволяет единообразно решать целый ряд задач. Например, из табл.9 видно, что наибольший прирост выпуска продукции, который могут дать четыре предприятия при распределении между ними 100 тыс. ден. ед. (с = 100), составляет 85 тыс. ден. ед. ( f4(100) = 85). При этом четвертому предприятию должно быть выделено 40 тыс. ден. ед. (х4*(100) = 40), а остальным трем – 100-40 = 60 тыс. ден. ед. Из той же таблицы видно, что оптимальное распределение оставшихся 60 тыс. ден. ед. (с = 60) между тремя предприятиями обеспечит общий прирост продукции на них на сумму 48 тыс. ден. ед. ( f3(60) = 48) при условии, что третьему предприятию будет выделено 40 тыс. ден. ед. (х3*(60) = 40), а остальным двум – 60-40 = 20 тыс. ден. ед. Оставшиеся 20 тыс. ден. ед. при оптимальном распределении между двумя предприятиями дадут прирост продукции на сумму в 12 тыс. ден. ед. ( f2(20) = 12). При этом второму предприятию нужно ассигновать 20 тыс. ден. ед. (х2*(20) = 20), а на долю первого средств не останется (20-20 = 0).
Итак, максимальный прирост выпуска продукции на четырех предприятиях при распределении между ними 100 тыс. ден.ед. составляет 85 тыс. ден. ед. и будет получен, если первому предприятию средств не выделять, второму выделить 20 тыс. ден. ед., а третьему и четвертому – по 40 тыс. ден. ед.
Предположим теперь, что 100 тыс. ден. ед. нужно распределить оптимально между тремя предприятиями. Из табл.9 находим: f3(100) = 79 тыс. ден. ед.; прирост продукции на такую сумму может быть получен при х3*(100) = 40, т.е. если третьему предприятию ассигновать 40 тыс. ден.ед., а двум другим – 100-40 = 60 тыс. ден. ед. Эти средства при оптимальном их распределении между двумя другими предприятиями обеспечат прирост выпуска продукции на сумму f2(60) = 43 тыс. ден. ед. Но это возможно лишь в случае, если х2* = 20, т.е. если второму предприятию будет выделено 20 тыс. ден. ед. Из табл.9 видно, что оставшиеся 60-20 = 40 тыс. ден. ед. следует ассигновать первому предприятию, так как f1(40) = 31 при х1* = 40.
И, наконец, читателю предлагается убедиться в оптимальности следующего распределения 80 тыс. ден. ед. между тремя предприятиями: х1* = 40, х2* = 0, х3* = 40; при этом f3(80) = 67.