Реализация на ЭВМ решения задачи оптимального распределения средств на расширение производства

Автор: Пользователь скрыл имя, 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

Файлы: 1 файл

курсовая.doc

— 1.16 Мб (Скачать)

       Принцип погружения. Форма задачи, решаемая методом динамического программирования, не меняется при изменении количества шагов 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 этапах и т. д. Поэтому функциональные уравнения часто называют рекуррентными (возвратными) соотношениями Беллмана.

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

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

  • Рассматривается система, состояние которой на каждом шаге определяется вектором xt. Дальнейшее изменение ее состояния зависит только от данного состояния xt и не зависит от того, каким путем система пришла в это состояние. Такие процессы называются процессами без последействия.
  • На каждом шаге выбирается одно решение ut, под действием которого система переходит из предыдущего состояния xt-1 в новое хt. Это новое состояние является функцией состояния на начало интервала xt-1 и принятого в начале интервала решения ut, т. е. xt = xt(xt-1,ut).
  • Действие на каждом шаге связано с определенным выигрышем (доходом, прибылью) или потерей (издержками), которые зависят от состояния на начало шага (этапа) и принятого решения.
  • На векторы состояния и управления могут быть наложены ограничения, объединение которых составляет область допустимых решений .
  • Требуется найти такое допустимое управление ut для каждого шага t, чтобы получить экстремальное значение функции цели за все Т шагов.

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

       Геометрическая  интерпретация задачи динамического  программирования состоит в следующем. Пусть n – размерность пространства состояний. В каждый момент времени координаты системы имеют вполне определенное значение. С изменением времени t могут изменяться значения координат вектора состояния. Назовем переход системы из одного состояния в другое траекторией ее движения в пространстве состояний. Такой переход осуществляется воздействием на координаты состояния. Пространство, в котором координатами служат состояния системы, называется фазовым. Особенно наглядно задачу динамического программирования можно интерпретировать в случае, если пространство состояний двухмерно. Область возможных состояний в этом случае изобразится некоторой фигурой , начальное и конечное состояния системы – точками х0, , (рис. 1). Управление – это воздействие, переводящее систему из начального состояния в конечное. Для многих экономических задач не известно начальное либо конечное состояние, а известна область X0 или XT, которой эти точки принадлежат.

       

       Рисунок 1

Тогда допустимые управления переводят точки  из области Х0 в XT. Задача динамического программирования геометрически может быть сформулирована следующим образом: найти такую фазовую траекторию, начинающуюся в области Х0 и оканчивающуюся в области ХT, для которой функция цели достигает экстремального значения. Если в задаче динамического программирования известны начальное и конечное состояния, то говорят о задаче с закрепленными концами. Если известны начальные и конечные области, то говорят о задаче со свободными концами.

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

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

     Задача  перспективного планирования. Задача заключается в следующем: пусть планируется деятельность группы 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 = , . 

  1. ЗАДАЧА  РАСПРЕДЕЛЕНИЯ РЕСУРСОВ
    1. Общая постановка задачи.

     Пусть на реконструкцию и модернизацию основного производства объединению выделяется некоторый объем материальных ресурсов 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 распределится между остальными – 1 предприятиями наилучшим образом. Так как Fk-1(x – xk) известно, то

Информация о работе Реализация на ЭВМ решения задачи оптимального распределения средств на расширение производства