Хелпикс

Главная

Контакты

Случайная статья





МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ



 

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«МОСКОВСКИЙ АВИАЦИОННЫЙ ИНСТИТУТ

(НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ)» (МАИ)

 

 

Институт:  Радиоэлектроника, инфокоммуникации и информационная безопасность

Кафедра:                                402

Направление подготовки:  11.03.02            

Группа:                               М4О-311Б-19

Квалификация (степень):  Бакалавр

Доклад

По курсу: «Теория систем и системный анализ»

На тему: «Динамическое программирование и его задачи»

 

Выполнил:

Уланов Олег Олегович

 

Проверил:  

     Агринский Николай Михайлович                                           

 

 

Москва

2021 г.


 

Содержание

ВВЕДЕНИЕ. 2

ОСНОВНАЯ ЧАСТЬ. 2

1.1 Определение динамического программирования. 2

1.2 Постановка задачи и особенности динамического программирования. 3

1.3 Пример математической задачи, оптимизируемой методом динамического программирования 4

1.4 Достоинства и недостатки динамического программирования. 4

ЗАКЛЮЧЕНИЕ. 5

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ. 6

 

 


 

ВВЕДЕНИЕ

В настоящее время многие организации в своей деятельности сталкиваются с математическими моделями. Математическая модель – это система математических уравнений, неравенств, формул и различных математических выражений, описывающих поведение реального объекта, составляющих его характеристики взаимосвязи между ними.Описание задачи или процесса при помощи математической модели позволяет свести решение, например, экономической задачи к математическому анализу.

В данной работе будет рассматриваться один из подходов к решению такого рода задач – динамическое программирование. Предпосылками к его появлению можно считать следующие факторы:

1. Необходимость поиска оптимального решения задач, в том числе экономических.

2. Для снижения емкости вычислений желательно использование принципа «разделяй и властвуй».

3. Формулировка Ричардом Беллманом принципа оптимальности, который гласит: «Оптимальное поведение обладает тем свойством, что каким бы ни было первоначальное состояние системы и первоначальное решение, последующее решение должно определять оптимальное поведение относительно состояния, полученного в результате первоначального решения».

ОСНОВНАЯ ЧАСТЬ

1.1 Определение динамического программирования

Динамическое программирование представляет собой математический аппарат, который используется для решения некоторого класса задач путем их разделения на небольшие и менее сложные задачи. При этом отличительной особенностью является решение задач по этапам, через фиксированные интервалы, промежутки времени, что и определило появление термина динамическое программирование.

Следует заметить, что методы динамического программирования успешно применяются и при решении задач, в которых фактор времени не учитывается. В целом математический аппарат можно представить как пошаговое или поэтапное программирование. Из определения принципа оптимальности, можно сделать вывод, что планирование каждого шага должно проводиться с учетом общей выгоды, получаемой по завершении всего процесса, что и позволяет оптимизировать конечный результат по выбранному критерию.

При этом, как и в задачах, решаемых методами линейного программирования, ограничения могут быть даны в виде равенств или неравенств. Однако если в задачах линейного программирования зависимости между критериальной функцией и переменными обязательно линейны, то в задачах динамического программирования эти зависимости могут иметь еще и нелинейный характер.

Таким образом, динамическое программирование в широком смысле представляет собой оптимальное управление процессом, посредством изменения управляемых параметров на каждом шаге, и, следовательно, воздействуя на ход процесса, изменяя на каждом шаге состояние системы.

1.2 Постановка задачи и особенности динамического программирования

Требуется определить такое управление Х*, переводящее систему из начального состояния S0 в конечное состояние Sn, при котором целевая функция принимает наибольшее (наименьшее) значение F(S0, X*) → extr.

1. Задача оптимизации формулируется как конечный многошаговый процесс управления;

2. Целевая функция (выигрыш) является аддитивной и равна сумме целевых функций каждого шага:

F = ∑ Fk (Sk−1, x k ) → extremum ;

3. Выбор управления хk на каждом шаге зависит только от состояния системы к этому шагу Sk−1, и не влияет на предшествующие шаги (нет обратной связи);

4. Состояние системы Sk после каждого шага управления зависит только от предшествующего состояния системы Sk-1 и этого управляющего воздействия хk (отсутствие последействия) и может быть записано в виде уравнения состояния: Sk= fk (Sk-1, хk), k = 1, n;

5. На каждом шаге управление хk зависит от конечного числа управляющих переменных, а состояние системы Sk зависит от конечного числа параметров;

6. Оптимальное управление представляет собой вектор X*, определяемый последовательностью оптимальных пошаговых управлений: X = (х*1, х*2, …, х*k, …, х*n), число которых и определяет количество шагов задачи.

Динамическое программирование пользуется следующими свойствами задачи:

  • перекрывающиеся подзадачи;
  • оптимальная подструктура;
  • возможность запоминания решения часто встречающихся подзадач.

Динамическое программирование обычно придерживается двух подходов к решению задач:

1. Нисходящее динамическое программирование: задача разбивается на подзадачи меньшего размера, они решаются и затем комбинируются для решения исходной задачи. Используется запоминание для решений уже решенных подзадач.

2. Восходящее динамическое программирование: все подзадачи, которые впоследствии понадобятся для решения исходной задачи просчитываются заранее и затем используются для построения решения исходной задачи. Этот способ лучше нисходящего программирования в смысле размера необходимого стека и количества вызова функций, но иногда бывает нелегко заранее выяснить, решение каких подзадач нам потребуется в дальнейшем.

Важным условием динамического программирования является аддитивный характер задачи.

1.3 Пример математической задачи, оптимизируемой методом динамического программирования

Требуется найти значение последовательности чисел Фибоначчи для F{5}, при этом, зная, что F{3}=F{2}+F{1} и F{4}=F{3}+F{2}}, даже в таком тривиальном случае вычисления всего двух чисел Фибоначчи мы уже посчитали F{2} дважды. Если продолжать дальше, то получается следующее: простой рекурсивный подход будет расходовать время на вычисление решения для задач, которые он уже решал. Чтобы избежать такого хода событий, мы будем сохранять решения подзадач, которые мы уже решали, и когда нам снова потребуется решение подзадачи, мы вместо того, чтобы вычислять его заново, просто достанем его из памяти. Этот подход называется мемоизацией.

1.4 Достоинства и недостатки динамического программирования

Среди достоинств можно выделить:

1. На каждом этапе решается задача поиска экстремума лишь по части переменных, следовательно, размерность этих задач по сравнению с исходной значительно ниже. Это позволяет упростить поиск оптимальных значений искомых переменных.

2. Решение задач, которые не могут быть решены другими методами.

3. Простая реализация на ЭВМ.

Среди недостатков выделяют:

1. Отсутствие универсального алгоритма, который был бы пригоден для решения всех задач рассматриваемого класса. Алгоритмы ДП объединены лишь общей идеей, и в каждом конкретном случае должны формироваться применительно к специфике прикладной задачи.

2. При большой размерности исходной задачи эти алгоритмы требуют значительных ресурсов ЭВМ.

Условная оптимизация.

На первом этапе решения задачи, называемом условной оптимизацией, определяются функция Беллмана и оптимальные управления для всех возможных состояний на каждом шаге, начиная с последнего в соответствии с алгоритмом обратной прогонки. На последнем, n-м шаге, оптимальное управление – х*n определяется функцией Беллмана: F(S) = max {Wn (S, xn)}, в соответствии с которой максимум выбирается из всех возможных значений хn, причем хn∈Х.

Дальнейшие вычисления производятся согласно рекуррентному соотношению, связывающему функцию Беллмана на каждом шаге с этой же функцией, но вычисленной на предыдущем шаге. В общем виде это уравнение имеет вид:

Fn (S) = max {Wn (S, xn) + Fk+1 (S1(S, xk))}, xk∈Х.

Этот максимум (или минимум) определяется по всем возможным для k и S значениям переменной управления X.

Безусловная оптимизация.

После того, как функция Беллмана и соответствующие оптимальные управления найдены для всех шагов с n-го по первый, осуществляется второй этап решения задачи, называемый безусловной оптимизацией. Пользуясь тем, что начальное состояние So, можно найти оптимальный результат за все n шагов и оптимальное управление на первом шаге x1, которое этот результат доставляет. После применения этого управления система перейдет в другое состояние S1(S,х*1), зная которое, можно, пользуясь результатами условной оптимизации, найти оптимальное управление на втором шаге х*2, и так далее до последнего n-го шага. Вычислительную схему динамического программирования можно строить на сетевых моделях, а также по алгоритмам прямой прогонки (от начала) и обратной прогонки (от конца к началу).

ЗАКЛЮЧЕНИЕ

Таким образом, динамическое программирование является методом математического решения задач, при помощи которого можно найти оптимальное решение экономических и технических задач. Как и любой вид программирования он имеет свои достоинства и недостатки, а также широко используется при решении различных задач.

Например:

1. Задача о вычислении чисел Фибоначчи

2. Задача о выборе траектории

3. Задача управления запасами

4. Задача о «рюкзаке»

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Фомин Г.П. Математические методы и модели в коммерческой деятельности: Учебник. – М.: Финансы и статистика, 2001.- 544 с.

2. Ломкова Е. Н., Эпов А. А. Экономико-математические модели управления производством (теоретические аспекты): Учеб. пособие. – Волгоград: ВолгГТУ, 2005. – 67 с.

3. Холод Н. И., Кузнецов А. В., Жихар Я. Н. и др.; под общ. ред. Кузнецова А. В. Экономико-математические методы и модели: Учеб. пособие. –Мн.: БГЭУ, 2000. – 412 с.

4. Шикин Е. В., Чхартищвили А. Г. Математические методы и модели в управлении: Учеб. пособие. – 2-е издание, испр. – М.: Дело, 2002. – 440 с.

5. Wikipedia. Динамическое программирование. URL: https://ru.wikipedia.org/wiki/Динамическое_программирование (Дата обращения: 28.12.2021)

6. Tproger. Динамическое программирование для начинающих. URL: https://tproger.ru/articles/dynprog-starters/ (Дата обращения: 28.12.2021)

7. Labs-org. Динамическое программирование уроки. URL: https://labs-org.ru/dinamicheskoe-programmirovanie/ (Дата обращения: 28.12.2021)



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.