Лабы по ТПР 2025 / Лаба 4
.docxМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В. И. Ульянова (Ленина)
Кафедра МО ЭВМ
отчет
по лабораторной работе №4
по дисциплине «Теория принятия решений»
Тема: Динамическое программирование
Студентка гр. 2383 |
|
Бараева Е. Н. |
Преподаватель |
|
Попова Е. В. |
Санкт-Петербург
2025
Цель работы
Применить метод оптимизации, в котором процесс принятия решений и управления разбит на отдельные этапы.
Задание
Освоить теоретические положения
Задача о выборе кратчайшего расстояния.
Сформировать транспортную сеть из 15 городов со стоимостью проезда
,
которая генерируется в диапазоне от
до
с
нецелыми числами.Разбить города на
поясов (город принадлежит к
-му
поясу, если из него можно попасть в
конечный пункт за
шагов).Сформировать таблицы условной оптимизации.
После этапа безусловной оптимизации определить оптимальный маршрут.
Задача о распределении средств между несколькими предприятиями.
Сформировать начальную таблицу согласно варианту ( ).
На этапе условной оптимизации формируем уравнения Беллмана и соответствующие таблицы.
На этапе безусловной оптимизации получаем оптимальное решение и общую прибыль.
Совет директоров фирмы рассматривает предложения по наращиванию производственных мощностей для увеличения выпуска однородной продукции на четырех предприятиях, принадлежащих фирме.
Для модернизации предприятий совет директоров инвестирует средства в объеме 250 млн р. с дискретностью 50 млн р. Прирост выпуска продукции зависит от выделенной суммы, его значения представлены предприятиями и содержатся в таблице.
Найти распределение инвестиций между предприятиями, обеспечивающее фирме максимальный прирост выпуска продукции, причем на одно предприятие можно осуществить только одну инвестицию.
Инвестиции, млн. р. |
Прирост выпуска продукции, млн. р. |
|||
Предприятие 1 |
Предприятие 2 |
Предприятие 3 |
Предприятие 4 |
|
50 |
10 |
9 |
7 |
8 |
100 |
15 |
16 |
13 |
14 |
150 |
24 |
22 |
20 |
21 |
200 |
33 |
34 |
31 |
32 |
250 |
40 |
39 |
41 |
40 |
1) Составить математическую модель динамической задачи распределения инвестиций.
2) Решить ее методом динамического программирования, обосновывая каждый шаг вычислительного процесса.
Теоретическое положение
Динамическое программирование.
Состояние
системы –
,
переменная управления
.
– состояние системы после
-го
шага управления.
– целевая
функция.
Задача динамического программирования.
Требуется
определить такое управление
,
переводящее систему
из начального состояния
в конечное состояние
,
при котором целевая функция принимает
наибольшее значение.
Показатель
эффективности
-го
шага
,
то
Выбор
управления
на
каждом шаге зависит только от состояния
системы к этому шагу
и не влияет на предшествующие шаги.
Для первого шага задачи о выборе кратчайшего расстояния управления функция Беллмана:
Функция Беллмана на -ом шаге решения задачи:
Оптимальный маршрут определяется в результате анализа всех шагов в обратном порядке.
Задача о распределении средств между несколькими предприятиями.
Пусть
имеется некоторое количество ресурсов
,
которое необходимо распределить между
различными предприятиями так, чтобы
получить максимальную суммарную
эффективность от выбранного способа
распределения.
В
качестве функции Беллмана
на
-ом
шаге в этой задаче можно выбрать
максимально возможную прибыль, которую
можно получить с предприятий с
-го
по
-ое
при условии, что на их инвестирование
осталось
средств.
– функция
полезности, в данном случае это величина
дохода от использования ресурса
,
полученного
-ым
предприятием.
– наибольший
доход, который можно получить при
использовании ресурсов
от первых
различных предприятий.
Прибыль каждого предприятия.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Состояние
системы
после каждого шага управления зависит
только от предшествующего состояния
системы
и управляющего воздействия
Оптимальное управление представляет собой вектор, определяемый последовательностью оптимальных пошаговых управлений.
Принцип оптимальности Беллмана.
Каково бы ни было состояние системы в результате какого-либо числа шагов, на ближайшем шаге нужно выбирать управление так, чтобы оно в совокупности с оптимальным управлением на всех последующих шагах приводило к оптимальному выигрышу на всех оставшихся шагах, включая данный.
Вместо исходной задачи рассмотрим последовательность задач.
Согласно
принципу оптимальности,
надо выбирать так, чтобы для любых
состояний
получить
экстремум целевой функции на этом шаге.
Условным максимумом целевой функции на -ом шаге
Присоединим
к
-му
шагу (
)-ый.
Получаются
две функции
и
Уравнения Беллмана.
Согласно принципу оптимальности, выбирается из условия максимума суммы,
Выполнение работы
Задача о выборе кратчайшего расстояния
Для выполнения работы была написана функция для создания графа generate_network. Данная функция создает взвешенный ориентированный граф на 15 узлов. Стоимость путей лежит в диапазоне от 4 до 14. Результат вывода данной функции:
Рисунок 1. Полученный граф
Рисунок 2. Граф
Рисунок 3. Разбиение на пояса
Далее была написана функция solve_network_backward для прохода по графу в обратную сторону, соответствующий условной оптимизации. Результат работы данной функции:
Рисунок 4. Условная оптимизация
Таблица первого шага составляется так:
Мы рассматриваем 15-ый узел и все, что попадают в него.
В строках ( ) у нас будут входящие узлы.
Во
втором столбце (
)
то, куда мы можем попасть из этих узлов,
т.к. мы рассматриваем последнюю точку,
значит все будут входить в нее. В этом
столбце будет стоимость путей (в этом
случае
).
Сложение с нулем происходит из-за того,
что 15-ый узел – это последний узел и при
обратном проходе он рассматривается
первым.
В
следующем столбце (
)
мы находим минимум по стоимостям в
строках. Он будет соответствовать
минимальным затратам на перевозку груза
на
-ом
шаге
решения задачи из пункта
до
конечного пункта
В
последнем столбце (
)
будет указано, в какой узел мы попадем
по найденной в предыдущем столбце
стоимости.
Далее мы рассматриваем пояс графа, который приведет нас к предыдущим исходным узлам. Для этого мы строим таблицу тем же способом. И повторяем до того момента, пока не рассмотрим все пояса.
Дальше нужно провести безусловную оптимизацию. Для этого была написана функция reconstruct_path_forward, которая проходит путь в правильном направлении и возвращает номера узлов, соответствующие оптимальному пути, и полученную стоимость.
Рисунок 5. Безусловная оптимизация
Задача о распределении средств между несколькими предприятиями
Начальная таблица:
Инвестиции, млн. р. |
Прирост выпуска продукции, млн. р. |
|||
Предприятие 1 |
Предприятие 2 |
Предприятие 3 |
Предприятие 4 |
|
50 |
10 |
9 |
7 |
8 |
100 |
15 |
16 |
13 |
14 |
150 |
24 |
22 |
20 |
21 |
200 |
33 |
34 |
31 |
32 |
250 |
40 |
39 |
41 |
40 |
Для выполнения данного задания была написана функция solve_2. Эта функция находит решение с помощью таблиц, которые устроены следующим образом:
В начале мы рассматриваем последнее предприятие, таблица строится так:
В первом столбце (
)
будет указан бюджет, оставшийся после
предыдущего шага.Во втором столбце (
)
будет указан бюджет, который будет
выделен на данное предприятие. Так как
это последнее предприятие мы выделим
для него весь оставшийся бюджет.В третьем столбце (
)
будет указан бюджет, полученный после
соответствующих инвестиций.
После построения таблицы для предприятия 4, построим таблицу для 3 и 4 предприятий:
Первый столбец ( ) будет таким же: бюджет, оставшийся после предыдущего шага.
Второй столбец ( ) будет содержать бюджет, который мы выделим для предприятия 3 с шагом 50.
Третий столбец (
)
будет содержать дивиденды от предприятия
3, полученные после соответствующих
инвестиций.Четвертый столбец (
)
будет содержать оставшийся бюджет (то
есть тот, который уйдет на инвестирование
в следующие предприятия).Пятый столбец ( ) указывает, какие инвестиции мы получим и при каком остатке (он берется из таблицы из предыдущего шага).
Шестой столбец (
)
является суммой инвестиций текущего
шага и всех последующих.Седьмой столбец (
)
показывает, сколько мы получим в лучшем
случае (то есть мы находим максимум от
предыдущего столбца).Восьмой столбец ( ) показывает, каким инвестициям в текущее предприятие соответствуют максимальные дивиденды.
Вывод программы:
Рисунок 6. Выделение средств предприятию П4
Рисунок 7. Выделение средств предприятиям П3, П4
Рисунок 8. Выделение средств предприятиям П2, П3, П4
Рисунок 9. Выделение средств предприятиям П1, П2, П3, П4
Рисунок 10. Этап безусловной оптимизации
Полученный
результат:
,
,
,
Итоговая сумма при этом составляет: 44 млн. р.
Вывод
Были применены методы оптимизации, в которых процессы принятия решений и управления разбиты на отдельные этапы. Для этого были решены задачи о выборе кратчайшего расстояния и о распределении средств между несколькими предприятиями.
Приложение А
Код программы: tpr_lab4.ipynb
