Имитация Гамильтона-Якоби-Беллмана

7

Скажем, я решил HJB в форме:

ρV(k)=maxcg(c)+V(k)(zc)

Я откалиброван ρ месячных параметров. Я хотел бы смоделировать развитие k . Я начинаю с k(0) . Однако, в отличие от дискретного времени, я не уверен, что будет дальше.

Является ли , где является значением для следующего месяца? Или мне нужно как-то интегрировать по линии ? Есть много ссылок на решение этих вещей, но я не смог найти никаких ссылок на имитацию этого.k(1)=k(0)+(zc(0))k(1)kk(1)=01(zc(t))dt+k(0)

FooBar
источник
Я считаю, что было бы полезно, если бы вы могли включить в заголовок вопроса полное имя, прежде чем использовать инициалы HJB. «Гамильтон-Якоби-Беллман», возможно, не сразу приходит на ум тем, кто просматривает список названий вопросов.
Алекос Пападопулос
По этой причине я почти всегда работаю в дискретное время для макросъемки. Тем не менее, я написал симуляции для непрерывных, немакро-экономических моделей. Когда я это сделал, подход состоял в том, чтобы выбрать размер шага t, изменить все уравнения на разностные уравнения (решить некоторые вопросы синхронизации), а затем смоделировать. К сожалению, у меня нет непосредственных общедоступных примеров этого для вас - и я не уверен, что это действительно отвечает на ваш вопрос (отсюда комментарий вместо ответа). Δ
CompEcon
@Foobar: вы пробовали метод интеграции, который вы предложили? Как все прошло, если ты это сделал?
CompEcon
Ну, мне удалось дать мне номер. Трудно фактически фальсифицировать или подтвердить результат.
FooBar

Ответы:

4

Если продолжить ответ jmbejara и ваш вопрос об интеграции, то здесь есть три шага:

  1. Решите уравнение HJB . (Вы уже сделали это.)ρV(k)=maxcg(c)+V(k)(zc)
  2. Получите функцию политики . (Вы, вероятно, уже сделали это, решая HJB.)c(k)=argmaxcg(c)+V(k)(zc)
  3. Подставим в закон движения для и численно решим это дифференциальное уравнение для :c(k)kk(t)
    k˙=zc(k)

Похоже, у вас уже были (1) и (2), и вы просто не знали, что именно делать в (3). Если вы работаете в детерминированной среде (а из HJB это выглядит так, как вы), вам не требуется никакой дискретизации: вы можете просто использовать консервированный ODE-решатель из Matlab или любой другой программный пакет для численного решения дифференциального уравнения выше для .k(t)

Чтобы быть немного более конкретным:

  • Если HJB прост, и у вас есть аналитическое решение для , и, таким образом, вы также можете легко вычислить , это здорово. Вы можете просто подключить к закону движения для и указать выбранный вами программный пакет, чтобы решить его и получить траекторию .V(k)c(k)c(k)kk(t)
  • Если вам нужно было численно решить HJB, то это здорово, потому что это означает, что вы, вероятно, уже использовали какую-то численную технику решения ODE и будете знакомы с ней. С другой стороны, это означает, что когда вы изначально получите и , вы получите его только для сетки , а не для какой-то формулы, которую можно применять везде - что является проблемой потому что вам нужно будет иметь возможность определить в любой точке в континууме, если вы собираетесь численно решить дифференциальное уравнение дляV(k)c(k)kc(k)kk˙k(t), Насколько мне известно, самый простой способ обойти сплайн (или использовать какой-то другой метод аппроксимации) для дискретной сетки значений которые у вас есть. Затем вы можете получить приблизительное значение любом месте, которое покрыто сплайном, и это будет очень точно, если ваш ODE хорошо себя ведет и у вас плотная сетка.(kgrid,c(kgrid))c(k)

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

номинально жесткий
источник
2

Вы работаете в дискретное время, посмотрите, например, этот ресурс .

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

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

Алекос Пападопулос
источник
1
И в заметках Бена, и в его статье не упоминается, как их смоделировать, только как их решить - и это не моя проблема ..
FooBar
1

Поскольку заметки Бена уже были упомянуты, я не совсем уверен, почему вы не выполняете итерацию с течением времени, используя прямое приближение, поскольку он предлагает

k˙(t):≈k(t+1)k(t)Δtk(t+1)Δtk˙(t)+k(t)

что дает

k(1)Δt(zc(0))+k(0)
невежественный
источник
Вы также можете посмотреть на приближения, сделанные с помощью уравнения в конечных разностях. Это хороший метод для дискретизации модели непрерывного времени.
оптимальное управление
0

Как только вы решили уравнение чтобы найти функцию вы должны быть в состоянии решить для того, что называется политикой функция. Функция является функцией значения. Знание должно дать вам информацию, которую вам нужно найти для политики, скажем, . Тогда это скажет вам, как будет развиваться с течением времени.ρV(k)=maxcg(c)+V(k)(zc)V(k)V(k)V(k)c(k,t)k

jmbejara
источник
Я знаю , моя проблема в том, как это понять. Как именно я получаю , если я знаю функцию политики и ? к ( 1 )c(k,t)k(1)k(0)
FooBar