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

Автор работы: Пользователь скрыл имя, 24 Декабря 2014 в 23:05, курсовая работа

Описание работы

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

Содержание работы

Введение……………………………………………………………………………...3
Теоретическая часть
1.1. Предмет динамического программирования…………………………………4
1.2. Постановка задачи динамического программирования………………….…..6
1.3. Оптимальное распределение инвестиций…………………………………......9
Практическая часть
2.1. Расчет целочисленной закупки станков методом ветвей и границ………...16
2.2. Анализ модели расчета производственной программы по разным экономическим критериям………………………………………………………...25
2.3. Решение задачи о раскрое материала методами линейного программирования………………………………………………………………….32
2.4. Анализ управленческих решений методами нелинейного программирования……………………………………………………………….…35
Заключение………………………………………………………………………….41
Список использованной литературы…………………………………………...…42

Файлы: 1 файл

Poryadina_teoria.docx

— 207.61 Кб (Скачать файл)

Содержание:

Введение……………………………………………………………………………...3

Теоретическая часть

1.1.  Предмет динамического программирования…………………………………4

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

1.3. Оптимальное распределение инвестиций…………………………………......9

Практическая часть

2.1. Расчет целочисленной закупки станков методом ветвей и границ………...16

2.2. Анализ  модели расчета производственной  программы по разным экономическим  критериям………………………………………………………...25

2.3. Решение  задачи о раскрое материала  методами линейного программирования………………………………………………………………….32

2.4. Анализ управленческих решений методами нелинейного программирования……………………………………………………………….…35

Заключение………………………………………………………………………….41

Список использованной литературы…………………………………………...…42

 

 

 

 

 

 

 

 

 

 

 

Введение

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

Целью данной курсовой работы является научиться применять различные методы и способы решения задач линейного программирования.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

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

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

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

Вместе с тем ДП свойственны и недостатки. Прежде всего в нем нет единого универсального метода решения. Практически каждая задача, решаемая этим методом, характеризуется своими особенностями и требует проведения поиска наиболее приемлемой совокупности методов для ее решения. Кроме того, большие объемы и трудоемкость решения многошаговых задач, имеющих множество состояний, приводят к необходимости отбора задач малой размерности либо использования сжатой информации. Последнее достигается с помощью методов анализа вариантов и переработки списка состояний.  Для процессов с непрерывным временем ДП рассматривается как предельный вариант дискретной схемы решения. Получаемые при этом результаты практически совпадают с теми, которые получаются методами максимума Л. С. Понтрягина или Гамильтона — Якоби — Беллмана.  ДП применяется для решения задач, в которых поиск оптимума возможен при поэтапном подходе, например, распределение дефицитных капитальных вложений между новыми направлениями их использования; разработка правил управления спросом или запасами, устанавливающими момент пополнения запаса и размер пополняющего заказа; разработка принципов календарного планирования производства и выравнивания занятости в условиях колеблющегося спроса на продукцию; составления календарных планов текущего и капитального ремонтов оборудования и его замены; поиск кратчайших расстояний на транспортной сети, формирование последовательности развития коммерческой операции и т.д. [1]

 

1. 2. Постановка задачи динамического программирования

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

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

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

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


Допустим, – управление, переводящее систему из состояния в состояние , а - есть состояние системы на k-м шаге управления. Тогда последовательность состояний системы можно представить в виде графа, представленного на рис. 1.


 

 

Рис. 1. График состояний системы.

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


Числовая характеристика этого результата называется функцией Беллмана и зависит от номера шага k и состояния системы S.

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

.

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

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

  1. выбор управления на каждом шаге зависит только от состояния системы k этому шагу и не влияет на предшествующие шаги (нет обратной связи);
  2. состояние системы после каждого шага управления зависит только от предшествующего состояния системы и этого управляющего воздействия (отсутствие последействия) и может быть записало в виде уравнения состояния:
  3. на каждом шаге управление зависит от конечного числа управляющих переменных, а состояние системы зависит — от конечного числа параметров;
  4. оптимальное управление представляет собой вектор , определяемый последовательностью оптимальных пошаговых управлений: , число которых и определяет количество шагов задачи. [2]

1.3. Оптимальное распределение инвестиций

Требуется распределить имеющиеся В единиц средств среди n предприятий, доход от которых в зависимости от количества вложенных средств определяется матрицей (n´n) приведенной в таблице 1, так, чтобы суммарный доход со всех предприятий был бы максимальным.

Таблица 1


Запишем математическую модель задачи.

Определить , удовлетворяющий условиям

и обеспечивающий максимум целевой функции

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

С этой целью разобьем процесс оптимизации на n шагов и будем на каждом k-м шаге оптимизировать инвестирование не всех предприятий, а только предприятий с k -го по n -е. При этом естественно считать, что в остальные предприятия (с первого по k- 1)-е тоже вкладываются средства, и поэтому на инвестирование предприятий с k -го по n -е остаются не все средства, а некоторая меньшая сумма . Эта величина и будет являться переменной состояния системы. Переменной управления на k -м шаге назовем величину , средств, вкладываемых в k -е предприятие. В качестве функции Беллмана на k -м шаге можно выбрать макcимально возможный доход, который можно получить с предприятий с k -го по n -е при условии, что на их инвестирование осталось средств. Очевидно, что при вложении в k -е предприятие , средств будет получена прибыль , а система к (k+1)-му шагу перейдет в состояние , и, следовательно, на инвестирование предприятий с (k+1)-го до n -го останется средств.

Таким образом, на первом шаге условной оптимизации при k= n функция Беллмана представляет собой прибыль только с n -го предприятия. При этом на его инвестирование может остаться количество средств , . Чтобы получить максимум прибыли с этого предприятия, можно вложить в него все эти средства, т.е. и .

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


Максимум этого выражения достигается на некотором значении , которое является оптимальным управлением на k -м шаге для состояния системы , действуя таким образом, можно определить функции Беллмана и оптимальные управления до шага k = 1.

Значение функции Беллмана представляет собой максимально возможный доход со всех предприятий, а значение на котором достигается максимум дохода, является оптимальным количеством средств, вложенных в первое предприятие. Далее на этапе безусловной оптимизации для всех последующих шагов вычисляется величина и оптимальным управлением на k -м шаге является то значение , которое обеспечивает максимум дохода при соответствующем состоянии системы. [2]

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