Динамическое программирование

Автор работы: Пользователь скрыл имя, 14 Января 2014 в 15:18, курсовая работа

Краткое описание

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

Содержание

Введение 1
1. Динамическое программирование 2-4
1.1. Метод динамического программирования 4-7
2. Идеи метода динамического программирования 8-9
3. Общая структура динамического программирования 10
4. Примеры задач динамического программирования 11-13
5. Задача о загрузке 14
5.1. Общие сведения 14-15
5.2. Рекуррентные соотношения для процедур прямой
и обратной прогонки 15-16
5.3. Решение задачи о загрузке 16-19
5.4. Анализ чувствительности решения 19-20
6. Пример задачи динамического программирования 21-25
Заключение 26
Список используемой литературы 27

Прикрепленные файлы: 1 файл

курсовая чайковский.doc

— 541.50 Кб (Скачать документ)

                                                       ПЛАН

                                                                                                               Стр.

      Введение                                                                                                      1

      1. Динамическое программирование                                                    2-4

1.1.  Метод динамического программирования                                   4-7

     2. Идеи метода динамического программирования                               8-9

     3. Общая структура динамического программирования                        10

      4. Примеры задач динамического программирования                       11-13

     5. Задача о загрузке                                                                                  14

       5.1.  Общие сведения                                                                              14-15

      5.2.  Рекуррентные  соотношения для процедур прямой 

              и обратной прогонки                                                                       15-16

      5.3.  Решение задачи  о загрузке                                                             16-19

      5.4.  Анализ  чувствительности решения                                                 19-20

     6.  Пример задачи  динамического программирования                         21-25

     Заключение                                                                                                 26

    Список используемой литературы                                                             27

                                                                                                                     

 

 

 

 

 

 

 

 

 

 

 

 

                                                          Введение.

 

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

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

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

Практически все методы исследования операций порождают вычислительные алгоритмы, которые являются итерационными по своей природе. Это подразумевает, что задача решается последовательно (итерационно), когда на каждом шаге (итерации) получаем решение, постепенно сходящиеся к оптимальному решению.

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

 

 

 

 

 

 

 

      1.  Динамическое программирование.

 

   Динамическое программирование – это математический метод поиска оптимального управления, специально приспособленный к многошаговым процессам. Рассмотрим пример такого процесса.

Пусть планируется деятельность группы предприятий на N лет. Здесь шагом является один год. В начале 1-го года на развитие предприятий выделяются средства, которые должны быть как-то распределены между этими предприятиями. В процессе их функционирования выделенные средства частично расходуются. Каждое предприятие за год приносит некоторый доход, зависящий от вложенных средств. В начале года имеющиеся средства могут перераспределяться между предприятиями: каждому из них выделяется какая-то доля средств.

Ставится вопрос: как в начале каждого года распределять имеющиеся  средства между предприятиями, чтобы  суммарный доход от всех предприятий за N лет был максимальным?

Перед нами типичная задача динамического  программирования, в которой рассматривается управляемый процесс – функционирование группы предприятий. Управление процессом состоит в распределении (и перераспределении) средств. Управляющим воздействием (УВ) является выделение каких-то средств каждому из предприятий в начале года.

УВ на каждом шаге должно выбираться с учетом всех его последствий  в будущем. УВ должно быть дальновидным, с учетом перспективы. Нет смысла выбирать на рассматриваемом шаге наилучшее  УВ, если в дальнейшем это помешает получить наилучшие результаты других шагов. УВ на каждом шаге надо выбирать “c заглядыванием в будущее”, иначе возможны серьезные ошибки.

Действительно, предположим, что в  рассмотренной группе предприятий  одни заняты выпуском предметов потребления, а другие производят для этого машины. Причем целью является получение за N лет максимального объема выпуска предметов потребления. Пусть планируются капиталовложения на первый год. Исходя их узких интересов данного шага (года), мы должны были бы все средства вложить в производство предметов потребления, пустить имеющиеся машины на полную мощность и добиться к концу года максимального объема продукции. Но правильным ли будет такое решение в целом? Очевидно, нет. Имея в виду будущее, необходимо выделить какую-то долю средств и на производство машин. При этом объем продукции за первый год, естественно, снизится, зато будут созданы условия, позволяющие увеличивать ее производство в последующие годы.

В формализме решения задач методом  динамического программирования будут использоваться следующие обозначения:

N – число шагов.

– вектор, описывающий состояние системы на k-м шаге.

– начальное состояние, т. е. cсостояние на 1-м шаге.

– конечное состояние, т. е. состояние на последнем шаге.

Xk – область допустимых состояний на k-ом шаге.

– вектор УВ на k-ом шаге, обеспечивающий переход системы из состояния xk-1 в состояние xk.

Uk – область допустимых УВ на k-ом шаге.

Wk – величина выигрыша, полученного в результате реализации k-го шага.

S – общий выигрыш за N шагов.

  – вектор оптимальной стратегии управления или ОУВ за N шагов.

Sk+1( ) – максимальный выигрыш, получаемый при переходе из любого состояния в конечное состояние при оптимальной стратегии управления начиная с (k+1)-го шага.

S1( ) – максимальный выигрыш, получаемый за N шагов при переходе системы из начального состояния в конечное при реализации оптимальной стратегии управления . Очевидно, что S = S1( ), если –фиксировано.

Метод динамического программирования опирается на условие отсутствия последействия и условие аддитивности целевой функции.

Условие отсутствия последействия. Состояние , в которое перешла система за один k-й шаг, зависит от состояния и выбранного УВ и не зависит от того, каким образом система пришла в состояние , то есть

                                                                                                 (1)

Аналогично, величина выигрыша Wk зависит от состояния и выбранного УВ , то есть

                                                                                                 (2)

Условие аддитивности целевой функции. Общий выигрыш за N шагов вычисляется по формуле

                                                                                                (3)

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

Условие отсутствия последействия  позволяет сформулировать принцип  оптимальности Белмана.

Принцип оптимальности. Каково бы ни было допустимое состояние системы   перед очередным i-м шагом, надо выбрать допустимое УВ на этом шаге так, чтобы выигрыш Wi на i-м шаге плюс оптимальный выигрыш на всех последующих шагах был максимальным.

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

Управление может быть хорошим  или плохим, эффективным или неэффективным. Эффективность управления  оценивается показателем S. Возникает вопрос: как выбрать шаговые управления  , чтобы величина S обратилась в максимум ?

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

Таким образом, перед нами стоит  задача: определить оптимальное управление на каждом шаге  (i=1,2,...N) и, значит, оптимальное управление всем процессом .

 

  • Метод динамического программирования.
  •  

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

    Динамическое  программирование (ДП) представляет собой  математический метод, заслуга создания и развития которого принадлежит, прежде всего, Беллману. Метод можно использовать для решения весьма широкого круга задач, включая задачи распределения ресурсов, замены и управления запасами, задачи о загрузке. Характерным для динамического программирования является подход к решению задачи по этапам, с каждым из которых ассоциирована одна управляемая переменная. Набор рекуррентных вычислительных процедур, связывающих различные этапы, обеспечивает получение допустимого оптимального решения задачи в целом при достижении последнего этапа.

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

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

    Динамическое  программирование позволяет осуществлять оптимальное планирование управляемых  процессов. Под «управляемыми» понимаются процессы, на ход которых мы можем в той или другой степени влиять.

    Пусть предполагается к осуществлению некоторое мероприятие  или серия мероприятий («операция»), преследующая определенную цель. Спрашивается: как нужно организовать (спланировать) операцию для того, чтобы она была наиболее эффективной? Для того чтобы поставленная задача приобрела количественный, математический характер, необходимо ввести в рассмотрение некоторый численный критерий W, которым мы будем характеризовать качество, успешность, эффективность операции. Критерий эффективности в каждом конкретном случаи выбирается исходя из целевой направленности операции и задачи исследования (какой элемент управления оптимизируется и для чего).

    Сформулируем  общий принцип, лежащий в основе решения всех задач динамического программирования («принцип оптимальности»):

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

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

    Информация о работе Динамическое программирование