Автор: Пользователь скрыл имя, 18 Сентября 2011 в 21:13, курсовая работа
Целью данной работы является реализация на ЭВМ решения задачи оптимального распределения средств на расширение производства.
Задачи курсовой работы:
Рассмотреть теоретические аспекты решения задач динамического программирования; рекуррентность природы задач данного типа; принципы оптимальности Беллмана.
Разработка алгоритма. Блок - схемы. Структура алгоритма.
Реализация на ЭВМ разработанного алгоритма на выбранном языке программирования
ВВЕДЕНИЕ 3
1. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ 4
1.1. Основные понятия 4
1.2. Принципы динамического программирования. Функциональные уравнения Беллмана 4
1.3. Особенности задач динамического программирования 8
1.4. Примеры задач динамического программирования. 10
2. ЗАДАЧА РАСПРЕДЕЛЕНИЯ РЕСУРСОВ 12
2.1. Общая постановка задачи. 12
2.2. Пример задачи распределения ресурсов 14
ЗАКЛЮЧЕНИЕ 18
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 19
ПРИЛОЖЕНИЕ А 20
ПРИЛОЖЕНИЕ В 25
Принцип погружения. Форма задачи, решаемая методом динамического программирования, не меняется при изменении количества шагов N, т.е. форма такой задачи инвариантна относительно N. В этом смысле всякий конкретный процесс с заданным числом шагов оказывается как бы погруженным в семейство подобных ему процессов и может рассматриваться с позиции более широкого класса задач.
Реализация названных принципов дает гарантию того, что решение, принимаемое на очередном шаге, окажется наилучшим относительно всего процесса в целом, а не узких интересов данного этапа. Последовательность пошаговых решений приводит к решению исходной N -шаговой задачи.
Функциональные уравнения Беллмана. Как отмечалось выше, в основе динамического программирования лежит принцип оптимальности, направленный на процедуру построения оптимального управления. Так как оптимальной стратегией может быть только та, которая одновременно оптимальна и для любого количества оставшихся шагов, ее можно строить по частям: сначала для последнего этапа, затем для двух последних, для трех и т. д., пока не придем к первому шагу. Отсюда принцип оптимальности связан со вторым принципом – принципом погружения, согласно которому при решении исходной задачи ее как бы погружают в семейство подобных ей и решают для одного последнего этапа, для двух последних и т. д., пока не получат решение исходной задачи.
Дадим
математическую формулировку принципа
оптимальности. Для простоты будем
считать, что начальное x0
и конечное xT состояния системы
заданы. Обозначим через z1(х0,
u1) значение функции цели на
первом этапе при начальном состоянии
системы x0 и при управлении
u1, через z2(х1,u2)
– соответствующее значение функции цели
только на втором этапе, ..., через
zi(хi-1,ui)
– на i-м этапе, ..., через zN(хN-1,
uN) —на N-м этапе. Очевидно,
что
Z = = (1)
Надо найти оптимальное управление u*= ( ; ;...; ), такое, что доставляет экстремум целевой функции (1) при ограничениях .
Для
решения этой задачи погружаем ее в
семейство подобных. Введем обозначения.
Пусть
– соответственно области
определения
для подобных задач на последнем
этапе, двух последних и т. д.;
– область определения исходной
задачи. Обозначим через F1(xN-1),
F2(xN-2),
…, Fk(xN-k),
…, FN(x0)
соответственно условно-оптимальные значения
функции цели на последнем этапе, двух
последних и т. д., на k последних и т.
д., на всех N этапах.
Начинаем с последнего этапа. Пусть хN-1 – возможные состояния системы на начало N-го этапа. Находим:
F1(xN-1) = zN(xN-1, uN). (2)
Для двух последних этапов получаем
F2(xN-2) = (ZN-1(xN-2, uN-1) + F1(xN-1)). (3)
Аналогично:
F3(xN-3) = (ZN-2(xN-3, uN-2) + F2(xN-2)). (4)
………………………………………………….
Fk(xN-k) = (zN-k+1(xN-k, uN-k+1) + Fk-1(xN-k+1)). (5)
…………………………………………………..
FN(x0) = (z1(x0, u1) + FN-1(x1)). (6)
Выражение (6) представляет собой математическую запись принципа оптимальности. Выражение (5) – общая форма записи условно-оптимального значения функции цели для k оставшихся этапов. Выражения (2) – (6) называются функциональными уравнениями Беллмана. Отчетливо просматривается их рекуррентный (возвратный) характер, т. е. для нахождения оптимального управления на N шагах нужно знать условно-оптимальное управление на предшествующих N – 1 этапах и т. д. Поэтому функциональные уравнения часто называют рекуррентными (возвратными) соотношениями Беллмана.
На основании выше сказанного можно выделить следующие особенности задач динамического программирования.
Любую допустимую последовательность действий для каждого шага, переводящую систему из начального состояния в конечное, называют стратегией управления. Стратегия управления, в результате которой можно получить экстремальное значение функции цели, называется оптимальной.
Геометрическая интерпретация задачи динамического программирования состоит в следующем. Пусть n – размерность пространства состояний. В каждый момент времени координаты системы имеют вполне определенное значение. С изменением времени t могут изменяться значения координат вектора состояния. Назовем переход системы из одного состояния в другое траекторией ее движения в пространстве состояний. Такой переход осуществляется воздействием на координаты состояния. Пространство, в котором координатами служат состояния системы, называется фазовым. Особенно наглядно задачу динамического программирования можно интерпретировать в случае, если пространство состояний двухмерно. Область возможных состояний в этом случае изобразится некоторой фигурой , начальное и конечное состояния системы – точками х0, , (рис. 1). Управление – это воздействие, переводящее систему из начального состояния в конечное. Для многих экономических задач не известно начальное либо конечное состояние, а известна область X0 или XT, которой эти точки принадлежат.
Рисунок 1
Тогда допустимые управления переводят точки из области Х0 в XT. Задача динамического программирования геометрически может быть сформулирована следующим образом: найти такую фазовую траекторию, начинающуюся в области Х0 и оканчивающуюся в области ХT, для которой функция цели достигает экстремального значения. Если в задаче динамического программирования известны начальное и конечное состояния, то говорят о задаче с закрепленными концами. Если известны начальные и конечные области, то говорят о задаче со свободными концами.
Приведем еще несколько типичных задач, для решения которых необходимым является применение метода динамического программирования.
Задача
перспективного планирования.
Задача заключается в следующем: пусть
планируется деятельность группы N
промышленных предприятий П, (i=
) на период в t (t
=
) хозяйственных лет. В начале периода
на развитие системы предприятий выделены
какие-то средства, обозначим их К,
которые должны быть распределены между
предприятиями. В процессе деятельности
предприятия вложенные в него средства
частично амортизируются. Каждое предприятие
за год работы приносит доход, который
зависит от вложенных в процесс производства
средств. Часть этих средств отчисляется
в фонд предприятий. В начале каждого хозяйственного
года имеющиеся средства перераспределяются
между предприятиями. Таким образом, возникает
задача определения объема средств в начале
каждого года, которые нужно выделить
каждому предприятию, чтобы суммарный
чистый доход за Т
лет был максимальным. Это типичная задача
динамического программирования. Здесь
процесс принятия решения разбивается
на Т шагов. Управление им заключается
в начальном распределении и последующих
перераспределениях средств
ut
={
}, где
— объем средств, выделенных i-му
предприятию в начале t-го
года. Для описания динамики системы вводится
вектор состояния хt={
}, где
— состояние i-го предприятия на
начало t-го года. В свою очередь состояние
каждого предприятия
является вектором, координатами которого
служат трудовые ресурсы, основные фонды,
финансовое положение и т. д., т. е.
=(
). Очевидно, что вектор управления
— это функция состояния системы на начало
соответствующего года: ut=ut(xt-1),
при этом начальное состояние системы
x0 может быть заданным. Целевой функцией
будет суммарная прибыль объединения
за Т лет, тогда, если zt
— прибыль за t-й год, то получим задачу
max Z = , ,
где — область допустимых управлений, или множество экономических возможностей, определяемых различными ограничениями, которые налагаются на состояние системы и вектор управления.
Задача об оптимальном управлении поставками. В различных областях народного хозяйства возникает задача определения момента подачи партии поставки и ее объема. С размещением заказов связаны некоторые фиксированные затраты К, не зависящие от величины заказываемой партии, а зависящие только от факта заказа. С содержанием материальных ресурсов связаны затраты, пропорциональные остатку нереализованной продукции на конец интервала планирования. Пусть Т - промежуток планирования. Обозначим через vt интенсивность потребления ресурса в t-м интервале. Состояние системы будем описывать величиной остатка нереализованной продукции на конец интервала хt, при этом начальное х0 и конечное хt состояния системы можно считать заданными. Для обеспечения непрерывности потребления поставками нужно управлять. Обозначим через u = {ut} вектор управления, координаты которого величина поставок в начале соответствующих интервалов планирования. Очевидно, что вектор управления есть функция состояния на начало интервала. Из множества возможных управлений требуется выбрать такое, при котором достигается минимум издержек на заказ и содержание материальных ресурсов. Если St — издержки содержания единицы продукции в t-м интервале, то функция цели примет вид:
min Z = ,
где
Состояние системы опишется соотношением хt = xt-1 + ut – vt (t = ). На состояние системы может быть наложено ограничение, связанное с надежностью снабжения: хt ≥ , где - величина некоторого страхового запаса, защищающего с заданной надежностью от сбоев в системе. Объединение ограничений, налагаемых на состояние системы и вектор управления, обозначим через .
Получим задачу:
min Z =
,
.
Пусть на реконструкцию и модернизацию основного производства объединению выделяется некоторый объем материальных ресурсов X0. Имеется N предприятий, между которыми нужно распределить данный ресурс. Обозначим через zi(хi) прибыль, которую приносит народному хозяйству выделение i-му предприятию хi (i= ) единиц ресурса. Предполагается, что размер прибыли зависит как от выделенного количества ресурса, так и от предприятия. Причем констатируется, что прибыль, получаемая каждым предприятием, измеряется в одних и тех же единицах и прибыль, получаемая любым из предприятий, не зависит от того, какое количество этого ресурса выделено другим предприятиям, общая прибыль объединения состоит из прибылей отдельных предприятий.
Решение.
Сформулированные выше предположения приводят к функции цели:
max Z = z1(x1) + … + zN(xN). (7)
Задача оптимального распределения возникает оттого, что имеется ограниченный объем ресурса X0, т. е.
x1 + … + xN = X0, xi ≥ 0 (i = ). (8)
Чтобы решить задачу распределения ограниченных ресурсов, применим аппарат функциональных уравнений Р. Беллмана. Погружаем ее в семейство подобных задач распределения. Вместо решения одной задачи с заданным объемом ресурса Х0 и фиксированным числом предприятий N рассмотрим их семейства, в которых объем выделенного ресурса х может меняться от нуля до Х0 и число предприятий – от 1 до N. Введем последовательность функций F1(x), F2(x), …, FN(x), где F1(x) – это максимальная прибыль, если бы ресурс 0 ≤ x ≤ X0 был выделен только одному первому предприятию, F2(x)–максимальная прибыль, полученная при условии, что ресурс 0 ≤ x ≤ X0 был распределен двум предприятиям, и т. д. Пусть, наконец, FN(x) – максимальная прибыль, получаемая от распределения ресурса 0 ≤ x ≤ X0 между N предприятиями. Очевидно, что FN(X0) = max Z.
В двух случаях элементы последовательности F(х) имеют особенно простой вид:
F1(0) = 0 (i = ), F1(х) = z1(х), 0 ≤ x ≤ X0.
Пусть ресурс 0 ≤ x ≤ X0 распределяется между двумя предприятиями. Если x2 – объем ресурса, выделенного второму предприятию, то его прибыль составит z2(x2). Оставшийся ресурс x – x2 распределяется наилучшим образом.
Общая прибыль для двух предприятий составит
F2(x) = (z2(x2) + F1(x-x2)).
Аналогично
найдем рекуррентное соотношение, которое
связывает Fk(x) и
Fk-1(xxk)
(k =
) для произвольных значений 0
≤ x ≤ X0. Тогда, оставшийся
ресурс х – xk
распределится между остальными k – 1
предприятиями наилучшим образом. Так
как Fk-1(x
– xk)
известно, то