Смекни!
smekni.com

Математические методы исследования операций в экономике (стр. 29 из 37)

Поскольку логарифм функции типа (5.2) является аддитив­ной функцией, достаточно ограничиться рассмотрением функций вида (5.1).

Изложим сущность вычислительного метода динамическо­го программирования на примере задачи оптимизации

при ограниченияx

Отметим, что в отличие от задач, рассмотренных в преды­дущих главах, о линейности и дифференцируемости функций fj(xj) не делается никаких предположений, поэтому примене­ние классических методов оптимизации (например, метода Лагранжа) для решения задачи (5.3)-(5.4) либо проблематично, либо просто невозможно.

Содержательно задача (5.3)-(5.4) может быть интерпрети­рована как проблема оптимального вложения некоторых ресур­сов j, приводимых к единой размерности (например, денег) с помощью коэффициентов aj, в различные активы (инвестици­онные проекты, предприятия и т. п.), характеризующиеся фун­кциями прибылиfj, т. е. такого распределения ограниченного объема ресурса (b), которое максимизирует суммарную прибыль. Представим ситуацию, когда она решается последова­тельно для каждого актива. Если на первом шаге принято реше­ние о вложении в n-й актив xn единиц, то на остальных шагах мы сможем распределить b-anxn единиц ресурса. Абстрагируясь от соображений, на основе которых принималось решение на первом шаге (допустим, мы по каким-либо причинам не могли на него повлиять), будет вполне естественным поступить так, чтобы на оставшихсяшагахраспределениетекущегообъе­ма ресурса произошло оптимально, что равнозначно реше­нию задачи

при ограничениях

Очевидно, что максимальное значение (5.5) зависит от размера распределяемого остатка, и если оставшееся количество ресур­са обозначить через ξ, то величину (5.5) можно выразить как функцию от ξ:

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

Если бы имелась возможность влиять наxn , то мы для получе­ния максимальной прибыли должны были бы максимизировать Ωn по переменной xn , т. е. найти Λn(b) и фактически решить задачу:

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

т. е. значению целевой функции при одномоментном распреде­лении ресурса.

Если в выражении (5.9) заменить значения b на ξ, и п наk, то его можно рассматривать как рекуррентную формулу, позво­ляющую последовательно вычислять оптимальные значения це­левой функции при распределении объема ресурса ξ за k шагов:

Значение переменной xk, при котором достигается рассмат­риваемый максимум, обозначим

k (ξ).

При k = 1 формула (5.11) принимает вид

т. е. допускает непосредственное вычисление функций Λ1(ξ) и

1(ξ).

Воспользовавшись (5.12) как базой рекурсии, можно с помо­щью (5.11) последовательно вычислить Λk(ξ) и

k(ξ),k∊2:n. Положив на последнем шаге ξ =b, в силу (5.9), найдем глобаль­ный максимум функции (5.3), равный Λn(b), и компоненту опти­мального плана хn* =
n
(b). Полученная компонента позволяет вычислить нераспределенный остаток на следующем шаге приоптимальном планировании: ξ= b аnх*n, и, в свою очередь, най­ти х*n-1=
n-
1n-1). В результате подобных вычислений последо­вательно будут найдены все компоненты оптимального плана.

Таким образом, динамическое программирование представ­ляет собой целенаправленный перебор вариантов, который при­водит к нахождению глобального максимума. Уравнение (5.11), выражающее оптимальное решение наk-м шаге через решения, принятые на предыдущих шагах, называется основным рекур­рентным соотношением динамического программирова­ния. В то же время следует заметить, что описанная схема решения при столь общей постановке задачи имеет чисто тео­ретическое значение, так как замыкает вычислительный про­цесс на построение функций Λk(ξ) (k∊1:n), т. е. сводит исход­ную задачу (5.3)—(5.4) к другой весьма сложной проблеме. Однако при определенных условиях применение рекуррентных соотношений может оказаться весьма плодотворным. В первую очередь это относится к задачам, которые допускают таблич­ное задание функций Λk(ξ).

5.1.2. Задачи динамического программирования, до­пускающие табличное задание рекуррентных соотноше­ний. Рассмотрим процесс решения модифицированного вариан­та задачи (5.3)-(5.4), в котором переменные хj и параметры aj, b могут принимать только целочисленные значения, а ограничение (5.4) имеет вид равенства. В рамках предложенной в п. 5.1.1 ин­терпретации о вложении средств в активы данные предпосылки вполне реалистичны и, более того, могут быть даже усилены тре­бованием о кратности значений хj , например, 1000 единицам.

Чтобы не усложнять обозначения, условимся операции це­лочисленной арифметики записывать стандартным образом, по­лагая, что промежуточные результаты подвергаются правиль­ному округлению. Так, например, будем считать, что 12/5=2.

В соответствии с общей схемой вычислительного алгоритма на первом шаге мы должны построить функцию

Поскольку ξ≤b,x1 принимает конечное число целых значений от 0 до b/a1. Это позволяет, например, путем перебора значе­ний f1(x1) найти функцию Λ1(ξ) и задать ее в форме таблицы следующей структуры (табл. 5.1).

Последняя колонка табл. 5.1 (

1(ξ)) содержит значениеx1 , на котором достигается оптимальное решение первого шага. Его необходимо запоминать для того, чтобы к последнему шагу иметь значения всех компонент оптимального плана.

На следующем (втором) шаге можно приступить к вычисле­нию функции Λ2(ξ), значения которой для каждого отдельно взятого ξ∊ 0: b находятся как

где значения

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

1(ξ)) и второго шагов (
2(ξ)).

На последующих шагах с номеромk (k∊2:(n-l)) осущест­вляются аналогичные действия, результатом которых стано­вятся таблицы значений Λk(ξ), где ξ ∊{0, 1,..., b} (см. табл. 5.2).

На последнем n-ом шаге нет необходимости табулиро­вать функцию Λn(ξ), так как достаточно определить лишь Λn(b)=f(

n(b)). Одновременно определяется и оптимальное значение n-й компоненты оптимального плана x*n =
n
(b). Далее, используя таблицу, сформированную на предыдущем шаге, определяем оптимальные значения остальных перемен­ных: