Распределение капиталовложений методом динамического программирования
Содержание
Введение
…………………………………………………………………………..
1 Динамическое программирование …………………………………………….6
- Понятие динамического программирования………………………..6
- Принцип Беллмана ……………………………………………………7
1.3 Общая постановка задачи динамического программирования……8
1.4 Принцип поэтапного построения оптимального управления……..8
1.5 Задача
о минимизации расхода горючего самолетом
при наборе высоты и скорости…………………………………………………………
2 Задача распределения капиталовложений (теоретическая часть)………..14
3 Задача распределения капиталовложений (практическая часть)………16
Заключение ………………………………………………………………………19
Список литературы…………………………………
Введение
В данной курсовой работе рассматривается динамическое программирование и задача решаемая при помощи метода динамического программирования (задача распределения капиталовложений). Динамическое программирование сформировалось в пятидесятых годах нашего века. Большой вклад в развитие внес американский математик Р.Беллман. Дальнейшее развитие динамическое программирование получила в трудах зарубежных ученых Дрейфуса, Робертса, Ланге и других. В настоящие время оно в основном развивается в направлении приложений к различного рода многоэтапным процессам.
В курсовой работе рассматриваются основные понятия и постановка задачи динамического программирования, принцип поэтапного построения оптимального управления. Разобрана простейшая экономическая задача, решаемая методов динамического программирования, а именно задача о минимизации расхода горючего самолетом при наборе высоты и скорости.
Более подробно рассмотрена задача распределения капиталовложений, процесс решения которой существенно облегчен при помощи динамического программирования
- Динамическое программирование
1.1 Основные понятия и постановка задачи динамического программирования
В задачах
линейного и нелинейного
В задачах динамического программирования экономический процесс зависит от времени [от нескольких периодов (этапов) времени], поэтому находится ряд оптимальных решений (последовательно для каждого этапа), обеспечивающих оптимальное развитие всего процесса в целом. Задачи динамического программирования называются многоэтапными или многошаговыми. Динамическое программирование представляет собой математический аппарат, позволяющий осуществлять оптимальное планирование многошаговых управляемых процессов и процессов, зависящих от времени, экономический процесс называется управляемым, если можно влиять на ход его развития. Управлением называется совокупность решений, принимаемых на каждом этапе с целью влияния на ход процесса. В экономических процессах управление заключается в распределении и перераспределении средств на каждом этапе.
Началом этапа (шага) управляемого процесса считается момент принятия решения (о величине капитальных вложений, о замене оборудования определенного вида и т. д.). Под этапом обычно понимают хозяйственный год. Планируя многоэтапный процесс, исходят из интересов всего процесса в целом, т. е. при принятии решения на отдельном этапе всегда необходимо иметь в виду конечную цель.
1.2 Принцип Беллмана
Принцип
Беллмана - важнейший принцип
Будем считать, что состояние системы S на k-ом шаге (k =) определяется совокупностью чисел , которые получены в результате управления Uk, обеспечивающего переход системы S из состояния X(k-1) в состояние Xk. При этом будем предполагать, что состояние Xk, в которое перешла система S, зависит от данного состояния X(k-1) и выбранного управления Uk и не зависит от того, каким образом система пришла в состояние X(k-1).
Будем считать, что если в результате k-го шага обеспечен определенный доход или выигрыш, также зависящий от исходного состояния системы X(k-1) и выбранного управления Uk и равный Wk(X(k-1),Uk), то общий доход или выигрыш за n шагов составляет
Таким образом,
сформулированы два условия, которым
должна удовлетворять рассматриваемая
задача динамического
Определение: под оптимальной стратегией
будем понимать совокупность управлений U*=
(
), в результате реализации которых
система S за n шагов переходит из начального состояния X(0)
в конечное состояние X(n) и при этом функция
принимает наибольшее значение.
Принцип оптимальности Беллмана: каково бы ни было состояние системы перед очередным шагом, надо выбрать управление на этом шаге так, чтобы выигрыш на данном шаге плюс оптимальный выигрыш на всех последующих шагах был максимальный.
Для этого
нужно сделать различные
Fn(X0) - максимальный доход, получаемый за n шагов при переходе системы S из начального состояния X0 в конечное состояние при реализации оптимальной стратегии управления U*=( ), а через Fn-k(Xk) – максимальный доход, получаемый при переходе из любого состояния Xk в конечное состояние Xn при оптимальной стратегии управления на оставшихся n-k шагах. Тогда
1.3 Общая постановка задачи динамического программирования
Пусть некоторая физическая управляемая система S находится в первоначальном состоянии S0 Ŝ0 .С течение времени ее состояние меняется и система приходит в конечное состояние Sk Ŝk. С процессом изменения состояния системы связан некоторый численный критерий W. Необходимо так организовать процесс, чтобы критерий достиг оптимального значения. Обозначим множество возможных управлений через U. Тогда задача состоит в том, чтобы из множества возможных управлений найти такое управление U*, которое позволит перевести систему S из начального состояния S0 Ŝ0 в конечное Sk Ŝk так, что критерий W(U) принимает оптимальное значение W*.
1.3 Принцип поэтапного построения оптимального управления
В каждом процессе имеется последний k-й шаг, принятие решения на котором не зависит от будущего. Поэтому на этом шаге выбирают управление, позволяющее получить наибольший эффект. Спланировав этот шаг, к нему можно присоединить предпоследний (k – 1)-й шаг, к которому, в свою очередь, (k – 2)-й и т. д. В конечном итоге приходят в начальное состояние системы S0. Процесс динамического программирования как бы «разворачивается» от конца к началу.
Для того чтобы спланировать k-й шаг, надо знать состояние системы на (k – 1)-м шаге. Если состояние системы на (k – 1)-м шаге неизвестно, то, исходя из характера данного процесса, делают различные предположения о возможных состояниях системы на этом шаге. Для каждого предположения выбирают оптимальное управление на последнем, k-м шаге. Такое оптимальное управление называется условно оптимальным.
Пусть планируется k-шаговый процесс. Сделаем ряд предположений о возможных состояниях системы на (k – 1)-м шаге. Обозначим эти состояния через Sk-1,1, Sk-1,2,…, Sk-1,r. На последнем шаге найдем для каждого из них условно оптимальное управление , ,…, . Таким образом, k-й шаг спланирован. Действительно, какое бы состояние ни имела система на предпоследнем шаге, уже известно, какое управление следует применить на последнем шаге. Аналогично поступаем на (k – 1)-м шаге, только условно оптимальные управления необходимо выбирать, учитывая уже выбранные условно оптимальные управления на k-м шаге, и т. д. В итоге приходим к первоначальному состоянию S0 S0 системы.
Для первого
шага (в отличие от всех остальных)
предположений о возможном
1.5 Задача о минимизации расхода горючего самолетом при наборе
высоты и скорости
Пусть самолет, находящийся на высоте Н0 и имеющий скорость v0, должен подняться на высоту Нk и иметь скорость Vk .Известен расход горючего при подъеме самолета с любой высоты Н1 любую высоту Н2> Н1 при постоянной скорости, а также расход горючего при увеличении скорости от любого значения V1 до любого значения V2 > V1 при неизменной высоте. Найти оптимальное управление набором высоты и скорости, при котором общий расход горючего минимален.
Решение: Из условия следует, что состояние физической системы S (самолета) характеризуется двумя параметрами: скоростью V и высотой Н.
Поэтому решение будем искать на плоскости VOH, а точнее на ограниченном прямыми V = V0, V = Vk и H = Н0 , Н = Нk прямоугольнике, который и является областью допустимых состояний. Начальное S0 (V0, H0) и конечное Sk (Vk, Hk) состояния вполне определены, как две точки S0 и Sk на плоскости.
Чтобы построить решение методом динамического программирования, разобьем отрезок (Нk – Н0) на n1 а отрезок (Vk – V0) – на п2 равных частей
(этапов)
и условимся считать, что за
один этап (шаг) самолет может
увеличить либо высоту на
Числа на вертикальных линиях означают расход горючего при наборе высоты с постоянной скоростью на данном этапе, а числа на горизонтальных линиях — расход горючего при увеличении скорости без изменения высоты. Как следует из рис. 1, весь процесс разбит на k = n1 + n2 = 4 + 6 = 10 шагов. Точки пересечения линий разбиения изображены кружками, в которые записан расход горючего. Оптимизацию начинаем с последнего шага. Рассмотрим отдельно правый верхний угол прямоугольной сетки с конечной точкой Sк. В точку Sк можно прийти либо из точки a1 либо из А2, т. е. для каждой точки управление единственное. Если на предпоследнем шаге самолет перешел в состояние А1, то, чтобы перейти в состояние Sк, самолет должен увеличивать только скорость и расходовать при этом 8 ед. горючего; если самолет перешел в состояние А2, то набирать высоту и затрачивать 11 ед. горючего. Эти расходы горючего, являющиеся одновременно и минимальными, записываем в кружки возле точек А1 и А2. Условно оптимальные управления, приводящие к этому расходу, отмечаем стрелкой, выходящей из кружка и указывающей, как управлять самолетом на последнем шаге, если в результате предыдущего шага он окажется в одном из рассмотренных состояний.
Рисунок 1 - Условия задачи минимизации расходов горючего самолёта
Таким образом, последний шаг спланирован, поскольку найдены условно оптимальные управления для предполагаемых состояний системы на (n – 2)-м шаге и известны значения функции W для каждого из этих состояний. Переходим к планированию девятого шага. Чтобы выбрать условно оптимальные управления на этом шаге, нужно рассмотреть возможные состояния, в которые может прийти система на восьмом шаге. На восьмом шаге состоянию самолета может соответствовать одна из трех точек: В1, Вг или B3. Найдем условно оптимальное управление для этих состояний и соответствующий этому управлению минимальный расход горючего. Для точки В1 выбора нет. Возможное единственное управление проходит через точку A1 при расходе горючего 17 ед., а условно оптимальное управление изображено стрелкой, выходящей из точки В1. Из точки В2 возможны два пути: через точки А1 и А2. В первом случае расход горючего составляет 18 ед., во втором — 24 ед. Выбираем управление через точку А1. Минимальный расход горючего (18 ед.) записываем в кружок, путь отмечаем стрелкой. Для точки B3 путь в Sk также единственный (через точку А2). Расход горючего, составляющий 22 ед., записываем в кружок, а управление отмечаем стрелкой.
Для точек В1 ,В2 ,В3 выбраны условно оптимальные управления, следовательно, девятый шаг спланирован.
Переходим к планированию восьмого шага. В результате седьмого шага состоянию самолета может соответствовать одна из точек С1 , С3, С4. Для точек С1 и С4 пути в Sk единственные и расход горючего соответственно составляет 27 и 34 ед..
Для точки С2 расход горючего при движении через точки В1 и В2 составляет 25 ед., поэтому условно оптимальное управление показываем как через точку В1 так и через точку В2.
Наконец, для точки С3 расход горючего при движении через точку В2 составляет 28 ед., а через точку В3 — 34 ед. Минимальный расход горючего (28 ед.) записываем в кружок.
Продолжая процесс для оставшихся шагов, приходим в точку S0. Выбирая для этого состояния уже не условно оптимальное, а оптимальное управление, получаем оптимальное управление для всего процесса, которому соответствует минимальный расход горючего, равный 88 ед. Оптимальное управление на рис.1 изображено дополнительными стрелками. Как следует из рисунка, оптимальное управление не является единственным, так как имеют место условно оптимальные управления, приводящие к одинаковому расходу горючего.
Найденные оптимальные управления процессом набора высоты и скорости самолета состоят в следующем: на первом шаге следует увеличить скорость до значения V0 + ∆V; на втором — высоту до Н0 +∆ Н; на третьем, четвертом и пятом шагах — скорость до величины V0 + 4∆V; на шестом и седьмом шагах увеличить высоту до значения Н0 + 3∆V . На восьмом шаге можно либо увеличить высоту до значения Нk тогда на девятом и десятом шагах следует набирать скорость до величины Vk, либо увеличить скорость до величины V0 + 5∆V , тогда на девятом шаге необходимо набирать высоту до значения Нк, а на десятом — увеличить скорость до величины Vk.
2 Задача распределения капиталовложений
Планируется распределение начальной суммы средств между n предприятиями П1, П2, …, Пk. Предполагается, что выделенные предприятию Пk в начале планового периода средства хk приносят доход fn(xn), k = . Будем считать, что:
- доход, полученный от вложения средств в предприятие Пk, не зависит от вложения средств в другие предприятия;
- доход, полученный от разных предприятий, выражается в одинаковых единицах;
- общий доход равен сумме доходов, полученных от всех средств, вложенных во все предприятия.
Математическая модель задачи следующая:
при ограничениях:
x1 + х2 + …+ хк = 0,
xk ≥ 0, k = .
Опишем задачу в виде модели динамического программирования.
За номер k-го шага примем номер предприятия, которому выделяются средства xk. Уравнениями состояния служат равенства:
k = k-1 – xk, k =
Суммарный доход за п шагов составит:
Уравнения Беллмана имеют вид:
3 Практическая часть
Задание: для двух предприятий выделено а единиц средств. Как распределить все средства в течение 4 лет, чтобы доход был наибольшим, если известно, что доход от х единиц средств, вложенных в первое предприятие, равен f1(х), а доход от у единиц средств, вложенных во второе предприятие, равен f2(у). Остаток средств к концу года составляет g1(х) для первого предприятия и g2(у) для второго предприятия. Задачу решить методом динамического программирования.
Таблица 1 – Исходные данные задачи
a |
f1 |
g1 |
f2 |
g2 |
|
1000 |
3x |
0,1x |
2y |
0,5y |
Решение: процесс распределения средств разобьем на 4 этапа - по соответствующим годам.
Обозначим аk = хk + уk - средства, которые распределяются на к -ом шаге как сумма средств по предприятиям.
Суммарный доход от обоих предприятий на к -ом шаге:
zk = f1(xk) + f2(ak - xk) = 3xk + 2(ak - xk) = 2ak + 3xk
Остаток средств от обоих предприятий на к -ом шаге:
ak+1 = g1(xk) + g2(ak - xk) = 0,1xk + 0,5(ak - xk) = 0,5ak + 0,4xk
Обозначим (ак) - максимальный доход, полученный от распределения средств аk между двумя предприятиями с к -го шага до конца рассматриваемого периода. Рекуррентные соотношения Беллмана для этих функций:
Проведём оптимизацию, начиная с четвёртого шага
4-й шаг:
оптимальный доход равен:
т.к. линейная возрастающая функция достигает максимума в конце рассматриваемого промежутка, т.е. при x4 = a4.
З-й шаг:
,т.к. линейная убывающая функция достигает максимума в начале рассматриваемого промежутка, т.е. при х3 = 0.
2-й шаг:
,т.к. линейная убывающая функция достигает максимума в начале рассматриваемого промежутка, т.е. при x2 = 0 .
1-й шаг:
,т.к.
линейная убывающая функция достигает максимума в начале рассматриваемого промежутка, т. е. при x1 = 0.
Результаты оптимизации:
Определим количественное распределение средств по годам:
т.к. a1 = a = 1000, , получаем a2 = 0,5a1 0,4x1 = 500. Далее аналогично:
Представим распределение
Таблица 2 – Результаты решения задачи
Предприятие |
год | |||
1 |
2 |
3 |
4 | |
1 |
0 |
0 |
0 |
125 |
2 |
1000 |
500 |
250 |
0 |
При таком распределении средств за 4 года будет получен доход, равный
Список использованной литературы:
- Акулич И.Л. Математическое программирование в примерах и задачах. М.: Высшая школа, 1986. – 319 с.
- Кузнецов Ю.Н., Кузубов В.И., Волощенко А.Б. Математическое программирование. М.: Высшая школа, 1980. – 300 с.
Аннотация
При выполнении курсовой работы было изучено решение задачи о распределении капиталовложений методом динамического программирования.
Данная работа состоит из 20 листов. В неё включены 2 таблицы, 1 рисунок и была написана с использованием двух источников литературы.
Ключевые слова: динамическое программирование, принцип Беллмана, экономические задачи, математическая модель, оптимальное управление.