From 8e12ed9fbfe305cf2ada1a49917d1b4eb5812e3a Mon Sep 17 00:00:00 2001 From: Chiyoung Ahn Date: Mon, 4 Mar 2019 11:53:43 -0800 Subject: [PATCH 1/8] Remove code for implementing Achdou and Fernandez-Villaverde --- .../tutorials/growth-hjb-implicit.ipynb | 755 ++++++++++++------ .../tutorials/growth-hjb-implicit.jmd | 70 +- .../tutorials/growth-hjb-implicit.md | 93 +-- 3 files changed, 528 insertions(+), 390 deletions(-) diff --git a/continuous_time_methods/tutorials/growth-hjb-implicit.ipynb b/continuous_time_methods/tutorials/growth-hjb-implicit.ipynb index ed02489..1fd901e 100644 --- a/continuous_time_methods/tutorials/growth-hjb-implicit.ipynb +++ b/continuous_time_methods/tutorials/growth-hjb-implicit.ipynb @@ -1,236 +1,519 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "source": [ - "---\ntitle : \"Solving HJB equation for neoclassical growth models\"\nauthor : Chiyoung Ahn (@chiyahn)\ndate : \n\n\n`j using Dates; print(Dates.today())`\n---\n\n### About this document\nPresented by Chiyoung Ahn (@chiyahn), written for `Weave.jl`, based on Ben Moll's [note](http://www.princeton.edu/~moll/HACTproject/HACT_Additional_Codes.pdf) and [code](http://www.princeton.edu/~moll/HACTproject/HJB_NGM_implicit.m)." - ], - "metadata": {} - }, - { - "outputs": [], - "cell_type": "code", - "source": [ - "using LinearAlgebra, Parameters, Plots, BenchmarkTools\ngr(fmt = :png); # save plots in .png" - ], - "metadata": {}, - "execution_count": null - }, - { - "cell_type": "markdown", - "source": [ - "## Model\nConsider finding the optimal consumption plan $c(t)$ for\n\n$$\n\\max_{\\{c(t)\\}_{t \\geq 0} } \\int e^{-\\rho t } u(c(t)) dt\n$$\n\nwith $u(c(t)) = c(t)^{1-\\gamma} / (1-\\gamma)$ for some $\\gamma \\neq 1$ and the following law of motion for $k$:\n\n$$\n\\dot k(t) = F(k(t)) - \\delta k(t) - c(t)\n$$\n\n## Numerical solution of HJBE\nThe corresponding HJB equation is\n\n$$\n\\rho v (k) = \\max_c u(c) + v'(k ) (F(k) - \\delta k - c)\n$$\nThe first order condition with respect to $c$ on the maximand function yields \n\n$$\nu'(c) = v'(k)\n$$\n\ni.e., $c = (u')^{-1} (v' (k))$ for each $k$ at optimal.\n\n\n### Upwind scheme and discretization of $\\nabla v$\nNote that $v$ is concave in $k$ and the drift of state variables can be either positive or negative. Basic idea of upwind scheme: use forward difference when the drift of the state variable $f(x, \\alpha)$ is positive, backward difference when it is negative. Let $v'_{i, B}$ and $v'_{i, F}$ be $v'$ computed from backward difference and forward difference respectively.\n\nDefine the followings:\n\n$$\ns_{i,F} = F(k_i) - \\delta k_i - (u')^{-1} (v'_{i,F}) \\\\\ns_{i,B} = F(k_i) - \\delta k_i - (u')^{-1} (v'_{i,B})\n$$\n\nUsing the upwind scheme, the HJB eqaution can be rewritten as\n\n$$\n\\rho v_i = u(c_i) + \\dfrac{v_{i+1} - v_i}{\\Delta k} s^+_{i,F} + \\dfrac{v_i - v_{i-1}}{\\Delta k} s^-_{i, B}\n$$\n\nfor each $i$. This can be written in a compact matrix form\n\n$$\n\\rho {\\mathbf{v}} = {\\mathbf{u}} + {\\mathbf{A}}({\\mathbf{v}}) {\\mathbf{v}}\n$$\n\nsuch that the $i$th row of ${\\mathbf{A}}({\\mathbf{v}})$ is defined as \n\n$$\n\\begin{bmatrix}\n0 & \\cdots & 0 & - \\dfrac{s^-_{i,B}}{\\Delta k} & \\dfrac{s^-_{i,B}}{\\Delta k} - \\dfrac{s^-_{i,F}}{\\Delta k} & \\dfrac{s^-_{i,F}}{\\Delta k} & 0 & \\cdots & 0\n\\end{bmatrix}\n$$\n\nwhere the non-zero elements above are located in $i-1, i, i+1$th columns respectively. \n\n### Discretization of $u(c)$\nOne thing left to find is ${\\mathbf{u}}$ at optimal consumption plan $c$. \n\n[Achdou et al. (2017)](http://www.princeton.edu/~moll/HACT.pdf) and [Fernandez-Villaverde et al. (2018)](https://www.sas.upenn.edu/~jesusfv/Financial_Frictions_Wealth_Distribution.pdf) suggest using the derivative of $v$ by the FOC above, which yields \n\n$$u (c) = u ( (u')^{-1} (v'(k)) ) $$\n\nTo compute the derivative, Achdou et al. (2017) and Fernandez-Villaverde et al. (2018) use the following discretization scheme:\n\n$$\nv'_i = v'_{i,F} {\\mathbf{1}} ( s_{i, F} > 0) + v'_{i,B} {\\mathbf{1}} ( s_{i, B} < 0) + \\overline{v}'_i {\\mathbf{1}} ( s_{i, F} < 0 < s_{i, B})\n$$\nwhere $\\overline{v}'_i := u'(F(k_i) - \\delta k_i)$, i.e., the steady state such that $s_i = 0$. This gives ${\\mathbf{u}}$ by computing $u(c(v'_i))$ at each grid $i$.\n\nHere's my take on this. I argue that there is no need to arbitrarily define $\\overline{v}'_i$ to deal with the case when $s_{i}$ is taken to be zero. Note that we need $\\overline {v}_i'$ only for $u(c)$ when the current state is close enough to the steady state, i.e., $s_i \\approx 0$ by taking $s_i = 0$. On the other hand, note that when $s_i = 0$, we can directly compute the consumption value by the law of motion $\\dot k (t) = 0$ without relying on $v'$:\n\n$$\nc_i = F(k_i) - \\delta k_i\n$$\nHence, instead of defining $v'_i$ and $u(c(v'_i))$ accordingly, we can use the following consumption approximation scheme:\n\n$$\nc_i = c(v'_{i,F}) {\\mathbf{1}} ( s_{i, F} > 0) + c(v'_{i,B}) {\\mathbf{1}} ( s_{i, B} < 0) + [F(k_i) - \\delta(k_i)] {\\mathbf{1}} ( s_{i, F} < 0 < s_{i, B})\n$$\nso that $u(c(v'_i))$ can be now replaced with $u(c_i)$, which ameliorates the need of defining an arbitary discretization scheme for $v'_i$ when $s_i$ is close to zero.\n\n\n## Setup\n### Utility function" - ], - "metadata": {} - }, - { - "outputs": [], - "cell_type": "code", - "source": [ - "γ = 2.0\nu(c) = c^(1-γ)/(1-γ) # payoff function by control variable (consumption)\nu_prime(c) = c^(-γ) # derivative of payoff function by control variable (consumption)" - ], - "metadata": {}, - "execution_count": null - }, - { - "cell_type": "markdown", - "source": [ - "### Law of motion\nDefine a production as follows first:" - ], - "metadata": {} - }, - { - "outputs": [], - "cell_type": "code", - "source": [ - "A_productivity = 1.0\nα = 0.3 \nF(k) = A_productivity*k^α;" - ], - "metadata": {}, - "execution_count": null - }, - { - "cell_type": "markdown", - "source": [ - "The corresponding law of motion for `k` given current `k` (state) and `c` (control)" - ], - "metadata": {} - }, - { - "outputs": [], - "cell_type": "code", - "source": [ - "δ = 0.05\nf(k, c) = F(k) - δ*k - c; # law of motion for saving (state)" - ], - "metadata": {}, - "execution_count": null - }, - { - "cell_type": "markdown", - "source": [ - "### Consumption function by inverse (`v_prime`)" - ], - "metadata": {} - }, - { - "outputs": [], - "cell_type": "code", - "source": [ - "c(v_prime) = v_prime^(-1/γ); # consumption by derivative of value function at certain k" - ], - "metadata": {}, - "execution_count": null - }, - { - "cell_type": "markdown", - "source": [ - "### Parameters and grids" - ], - "metadata": {} - }, - { - "outputs": [], - "cell_type": "code", - "source": [ - "# ρ: utility discount rate\n# δ: capital discount rate\n# γ: CRRA parameter\n# F: production function that maps k to a real number\n# u: utility function that maps c to a real number\n# u_prime: derivative of utility function that maps c to a real number\n# f: law of motion function that maps k (state), c (control) to the derivative of k\n# c: control by v_prime; maps v_prime (derivative of v at certain k) to consumption (control)\n# c_ss: consumption (control) when v' = 0 (i.e. steady state)\nparams = (ρ = 0.05, δ = δ, γ = γ, F = F, u = u, u_prime = u_prime, f = f, c = c, c_ss = 0.0)" - ], - "metadata": {}, - "execution_count": null - }, - { - "outputs": [], - "cell_type": "code", - "source": [ - "# ks: grids for states (k) -- assume uniform grids\n# Δv: step size for iteration on v\n# vs0: initial guess for vs\n# maxit: maximum number of iterations\n# threshold: threshold to be used for termination condition (maximum(abs.(vs-vs_new)) < threshold)\n# verbose: boolean that ables/disables a verbose option\nk_ss = (α*A_productivity/(params.ρ+params.δ))^(1/(1-α))\nks = range(0.001*k_ss, stop = 2*k_ss, length = 10000)\nsettings = (ks = ks,\n Δv = 1000, \n vs0 = (A_productivity .* ks .^ α) .^ (1-params.γ) / (1-params.γ) / params.ρ,\n maxit = 100, threshold = 1e-8, verbose = false)" - ], - "metadata": {}, - "execution_count": null - }, - { - "cell_type": "markdown", - "source": [ - "### Optimal plan solver, using the methods from [Achdou et al. (2017)](http://www.princeton.edu/~moll/HACT.pdf) and [Fernandez-Villaverde et al. (2018)](https://www.sas.upenn.edu/~jesusfv/Financial_Frictions_Wealth_Distribution.pdf)" - ], - "metadata": {} - }, - { - "outputs": [], - "cell_type": "code", - "source": [ - "function compute_optimal_plans(params, settings)\n @unpack ρ, δ, γ, F, u, u_prime, f, c, c_ss = params\n @unpack ks, Δv, vs0, maxit, threshold, verbose = settings\n\n P = length(ks) # size of grids\n Δk = ks[2] - ks[1] # assume uniform grids\n\n # initial guess\n vs = vs0; \n vs_history = zeros(P, maxit)\n # save control (consumption) plan as well\n cs = zeros(P) \n\n # begin iterations\n for n in 1:maxit\n # compute derivatives by FD and BD\n dv = diff(vs) ./ Δk\n dv_f = [dv; dv[end]] # forward difference\n dv_b = [dv[1]; dv] # backward difference\n dv_0 = u_prime.(f.(ks, fill(c_ss, P)))\n\n # define the corresponding drifts\n drift_f = f.(ks, c.(dv_f)) \n drift_b = f.(ks, c.(dv_b))\n\n # steady states at boundary\n drift_f[end] = 0.0\n drift_b[1] = 0.0\n\n # compute consumptions and corresponding u(v)\n I_f = drift_f .> 0.0\n I_b = drift_b .< 0.0\n I_0 = 1 .- I_f-I_b\n\n dv_upwind = dv_f.*I_f + dv_b.*I_b + dv_0.*I_0;\n cs = c.(dv_upwind)\n us = u.(cs)\n\n # define the matrix A\n drift_f_upwind = max.(drift_f, 0.0) ./ Δk\n drift_b_upwind = min.(drift_b, 0.0) ./ Δk\n A = LinearAlgebra.Tridiagonal(-drift_b_upwind[2:P], \n (-drift_f_upwind + drift_b_upwind), \n drift_f_upwind[1:(P-1)]) \n\n # solve the corresponding system to get vs_{n+1}\n vs_new = (Diagonal(fill((ρ + 1/Δv), P)) - A) \\ (us + vs / Δv)\n\n # show distance between vs_{n+1} and vs_n if verbose option is one\n if (verbose) @show maximum(abs.(vs - vs_new)) end\n \n # check termination condition \n if (maximum(abs.(vs-vs_new)) < threshold)\n if (verbose) println(\"Value function converged -- total number of iterations: $n\") end\n return (vs = vs, cs = cs, vs_history = vs_history) \n end\n \n # update vs_{n+1}\n vs = vs_new\n vs_history[:,n] = vs\n end\n return (vs = vs, cs = cs, vs_history = vs_history) \nend" - ], - "metadata": {}, - "execution_count": null - }, - { - "cell_type": "markdown", - "source": [ - "### Optimal plan solver, using my new method" - ], - "metadata": {} - }, - { - "outputs": [], - "cell_type": "code", - "source": [ - "function compute_optimal_plans(params, settings)\n @unpack ρ, δ, γ, F, u, u_prime, f, c, c_ss = params\n @unpack ks, Δv, vs0, maxit, threshold, verbose = settings\n\n P = length(ks) # size of grids\n Δk = ks[2] - ks[1] # assume uniform grids\n\n # initial guess\n vs = vs0; \n vs_history = zeros(P, maxit)\n # save control (consumption) plan as well\n cs = zeros(P) \n\n # begin iterations\n for n in 1:maxit\n # compute derivatives by FD and BD\n dv = diff(vs) ./ Δk\n dv_f = [dv; dv[end]] # forward difference\n dv_b = [dv[1]; dv] # backward difference\n\n # define the corresponding drifts\n drift_f = f.(ks, c.(dv_f)) \n drift_b = f.(ks, c.(dv_b))\n\n # steady states at boundary\n drift_f[end] = 0.0\n drift_b[1] = 0.0\n\n # compute consumptions and corresponding u(v)\n I_f = drift_f .> 0.0\n I_b = drift_b .< 0.0\n I_0 = 1 .- I_f-I_b\n\n dv_upwind = dv_f.*I_f + dv_b.*I_b\n cs_upwind = c.(dv_upwind)\n cs_0 = f.(ks, 0.0) # this gives consumption when the state is zero\n cs = cs_upwind.*I_f + cs_upwind.*I_b + cs_0.*I_0;\n \n us = u.(cs)\n\n # define the matrix A\n drift_f_upwind = max.(drift_f, 0.0) ./ Δk\n drift_b_upwind = min.(drift_b, 0.0) ./ Δk\n A = LinearAlgebra.Tridiagonal(-drift_b_upwind[2:P], \n (-drift_f_upwind + drift_b_upwind), \n drift_f_upwind[1:(P-1)]) \n\n # solve the corresponding system to get vs_{n+1}\n vs_new = (Diagonal(fill((ρ + 1/Δv), P)) - A) \\ (us + vs / Δv)\n\n # show distance between vs_{n+1} and vs_n if verbose option is one\n if (verbose) @show maximum(abs.(vs - vs_new)) end\n \n # check termination condition \n if (maximum(abs.(vs-vs_new)) < threshold)\n if (verbose) println(\"Value function converged -- total number of iterations: $n\") end\n return (vs = vs, cs = cs, vs_history = vs_history) \n end\n \n # update vs_{n+1}\n vs = vs_new\n vs_history[:,n] = vs\n end\n return (vs = vs, cs = cs, vs_history = vs_history) \nend" - ], - "metadata": {}, - "execution_count": null - }, - { - "cell_type": "markdown", - "source": [ - "## Solve" - ], - "metadata": {} - }, - { - "outputs": [], - "cell_type": "code", - "source": [ - "vs, cs, vs_history = @btime compute_optimal_plans(params, settings)" - ], - "metadata": {}, - "execution_count": null - }, - { - "cell_type": "markdown", - "source": [ - "Plot for `v_n(k)` path by `n` (iteration step):" - ], - "metadata": {} - }, - { - "outputs": [], - "cell_type": "code", - "source": [ - "plot(ks, vs_history[:,1:3],\n linewidth = 3,\n title=\"Value function per iteration step v_n(k)\",xaxis=\"k\",yaxis=\"v(k)\",\n label = string.(\"v_\",1:3))" - ], - "metadata": {}, - "execution_count": null - }, - { - "cell_type": "markdown", - "source": [ - "## Plots\n### `v(k)`" - ], - "metadata": {} - }, - { - "outputs": [], - "cell_type": "code", - "source": [ - "plot(ks, vs,\n linewidth = 3,\n title=\"Value function v(k)\",xaxis=\"k\",yaxis=\"v(k)\",legend=false)" - ], - "metadata": {}, - "execution_count": null - }, - { - "cell_type": "markdown", - "source": [ - "### `c(k)`" - ], - "metadata": {} - }, - { - "outputs": [], - "cell_type": "code", - "source": [ - "plot(ks, cs,\n lw = 3,\n title=\"Optimal consumption plan c(k)\",xaxis=\"k\",yaxis=\"c(k)\",legend=false)" - ], - "metadata": {}, - "execution_count": null - }, - { - "cell_type": "markdown", - "source": [ - "### `s(k)`" - ], - "metadata": {} - }, - { - "outputs": [], - "cell_type": "code", - "source": [ - "savings = f.(ks, cs) # Savings (states) according to optimal consumption plan\nplot(ks, savings,\n linewidth = 3,\n title=\"Optimal saving plan s(k)\",xaxis=\"k\",yaxis=\"s(k)\",legend=false)\nplot!([.0], st = :hline, linestyle = :dot, lw = 3) # zero saving line" - ], - "metadata": {}, - "execution_count": null - } - ], - "nbformat_minor": 2, - "metadata": { - "language_info": { - "file_extension": ".jl", - "mimetype": "application/julia", - "name": "julia", - "version": "1.1.0" - }, - "kernelspec": { - "name": "julia-1.1", - "display_name": "Julia 1.1.0", - "language": "julia" - } - }, - "nbformat": 4 -} +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "title : \"Solving HJB equation for neoclassical growth models\"\n", + "author : Chiyoung Ahn (@chiyahn)\n", + "date : \n", + "\n", + "\n", + "`j using Dates; print(Dates.today())`\n", + "---\n", + "\n", + "### About this document\n", + "Presented by Chiyoung Ahn (@chiyahn), written for `Weave.jl`, based on Ben Moll's [note](http://www.princeton.edu/~moll/HACTproject/HACT_Additional_Codes.pdf) and [code](http://www.princeton.edu/~moll/HACTproject/HJB_NGM_implicit.m)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "using LinearAlgebra, Parameters, Plots, BenchmarkTools\n", + "gr(fmt = :png); # save plots in .png" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Model\n", + "Consider finding the optimal consumption plan $c(t)$ for\n", + "\n", + "$$\n", + "\\max_{\\{c(t)\\}_{t \\geq 0} } \\int e^{-\\rho t } u(c(t)) dt\n", + "$$\n", + "\n", + "with $u(c(t)) = c(t)^{1-\\gamma} / (1-\\gamma)$ for some $\\gamma \\neq 1$ and the following law of motion for $k$:\n", + "\n", + "$$\n", + "\\dot k(t) = F(k(t)) - \\delta k(t) - c(t)\n", + "$$\n", + "\n", + "## Numerical solution of HJBE\n", + "The corresponding HJB equation is\n", + "\n", + "$$\n", + "\\rho v (k) = \\max_c u(c) + v'(k ) (F(k) - \\delta k - c)\n", + "$$\n", + "The first order condition with respect to $c$ on the maximand function yields \n", + "\n", + "$$\n", + "u'(c) = v'(k)\n", + "$$\n", + "\n", + "i.e., $c = (u')^{-1} (v' (k))$ for each $k$ at optimal.\n", + "\n", + "\n", + "### Upwind scheme and discretization of $\\nabla v$\n", + "Note that $v$ is concave in $k$ and the drift of state variables can be either positive or negative. Basic idea of upwind scheme: use forward difference when the drift of the state variable $f(x, \\alpha)$ is positive, backward difference when it is negative. Let $v'_{i, B}$ and $v'_{i, F}$ be $v'$ computed from backward difference and forward difference respectively.\n", + "\n", + "Define the followings:\n", + "\n", + "$$\n", + "s_{i,F} = F(k_i) - \\delta k_i - (u')^{-1} (v'_{i,F}) \\\\\n", + "s_{i,B} = F(k_i) - \\delta k_i - (u')^{-1} (v'_{i,B})\n", + "$$\n", + "\n", + "Using the upwind scheme, the HJB eqaution can be rewritten as\n", + "\n", + "$$\n", + "\\rho v_i = u(c_i) + \\dfrac{v_{i+1} - v_i}{\\Delta k} s^+_{i,F} + \\dfrac{v_i - v_{i-1}}{\\Delta k} s^-_{i, B}\n", + "$$\n", + "\n", + "for each $i$. This can be written in a compact matrix form\n", + "\n", + "$$\n", + "\\rho {\\mathbf{v}} = {\\mathbf{u}} + {\\mathbf{A}}({\\mathbf{v}}) {\\mathbf{v}}\n", + "$$\n", + "\n", + "such that the $i$th row of ${\\mathbf{A}}({\\mathbf{v}})$ is defined as \n", + "\n", + "$$\n", + "\\begin{bmatrix}\n", + "0 & \\cdots & 0 & - \\dfrac{s^-_{i,B}}{\\Delta k} & \\dfrac{s^-_{i,B}}{\\Delta k} - \\dfrac{s^-_{i,F}}{\\Delta k} & \\dfrac{s^-_{i,F}}{\\Delta k} & 0 & \\cdots & 0\n", + "\\end{bmatrix}\n", + "$$\n", + "\n", + "where the non-zero elements above are located in $i-1, i, i+1$th columns respectively. \n", + "\n", + "### Discretization of $u(c)$\n", + "One thing left to find is ${\\mathbf{u}}$ at optimal consumption plan $c$. \n", + "\n", + "[Achdou et al. (2017)](http://www.princeton.edu/~moll/HACT.pdf) and [Fernandez-Villaverde et al. (2018)](https://www.sas.upenn.edu/~jesusfv/Financial_Frictions_Wealth_Distribution.pdf) suggest using the derivative of $v$ by the FOC above, which yields \n", + "\n", + "$$u (c) = u ( (u')^{-1} (v'(k)) ) $$\n", + "\n", + "To compute the derivative, Achdou et al. (2017) and Fernandez-Villaverde et al. (2018) use the following discretization scheme:\n", + "\n", + "$$\n", + "v'_i = v'_{i,F} {\\mathbf{1}} ( s_{i, F} > 0) + v'_{i,B} {\\mathbf{1}} ( s_{i, B} < 0) + \\overline{v}'_i {\\mathbf{1}} ( s_{i, F} < 0 < s_{i, B})\n", + "$$\n", + "where $\\overline{v}'_i := u'(F(k_i) - \\delta k_i)$, i.e., the steady state such that $s_i = 0$. This gives ${\\mathbf{u}}$ by computing $u(c(v'_i))$ at each grid $i$.\n", + "\n", + "Here's my take on this. I argue that there is no need to arbitrarily define $\\overline{v}'_i$ to deal with the case when $s_{i}$ is taken to be zero. Note that we need $\\overline {v}_i'$ only for $u(c)$ when the current state is close enough to the steady state, i.e., $s_i \\approx 0$ by taking $s_i = 0$. On the other hand, note that when $s_i = 0$, we can directly compute the consumption value by the law of motion $\\dot k (t) = 0$ without relying on $v'$:\n", + "\n", + "$$\n", + "c_i = F(k_i) - \\delta k_i\n", + "$$\n", + "Hence, instead of defining $v'_i$ and $u(c(v'_i))$ accordingly, we can use the following consumption approximation scheme:\n", + "\n", + "$$\n", + "c_i = c(v'_{i,F}) {\\mathbf{1}} ( s_{i, F} > 0) + c(v'_{i,B}) {\\mathbf{1}} ( s_{i, B} < 0) + [F(k_i) - \\delta(k_i)] {\\mathbf{1}} ( s_{i, F} < 0 < s_{i, B})\n", + "$$\n", + "so that $u(c(v'_i))$ can be now replaced with $u(c_i)$, which ameliorates the need of defining an arbitary discretization scheme for $v'_i$ when $s_i$ is close to zero.\n", + "\n", + "\n", + "## Setup\n", + "### Utility function" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "u_prime (generic function with 1 method)" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "γ = 2.0\n", + "u(c) = c^(1-γ)/(1-γ) # payoff function by control variable (consumption)\n", + "u_prime(c) = c^(-γ) # derivative of payoff function by control variable (consumption)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Law of motion\n", + "Define a production as follows first:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "A_productivity = 1.0\n", + "α = 0.3 \n", + "F(k) = A_productivity*k^α;" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The corresponding law of motion for `k` given current `k` (state) and `c` (control)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "δ = 0.05\n", + "f(k, c) = F(k) - δ*k - c; # law of motion for saving (state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Consumption function by inverse (`v_prime`)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "c(v_prime) = v_prime^(-1/γ); # consumption by derivative of value function at certain k" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Parameters and grids" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(ρ = 0.05, δ = 0.05, γ = 2.0, F = F, u = u, u_prime = u_prime, f = f, c = c, c_ss = 0.0)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ρ: utility discount rate\n", + "# δ: capital discount rate\n", + "# γ: CRRA parameter\n", + "# F: production function that maps k to a real number\n", + "# u: utility function that maps c to a real number\n", + "# u_prime: derivative of utility function that maps c to a real number\n", + "# f: law of motion function that maps k (state), c (control) to the derivative of k\n", + "# c: control by v_prime; maps v_prime (derivative of v at certain k) to consumption (control)\n", + "# c_ss: consumption (control) when v' = 0 (i.e. steady state)\n", + "params = (ρ = 0.05, δ = δ, γ = γ, F = F, u = u, u_prime = u_prime, f = f, c = c, c_ss = 0.0)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(ks = 0.0048039866566730914:0.0009604129739663476:9.607973313346182, Δv = 1000, vs0 = [-99.2086, -93.9299, -89.6863, -86.1654, -83.1746, -80.5873, -78.3161, -76.2986, -74.4886, -72.851 … -10.1475, -10.1472, -10.1469, -10.1466, -10.1463, -10.1459, -10.1456, -10.1453, -10.145, -10.1447], maxit = 100, threshold = 1.0e-8, verbose = false)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ks: grids for states (k) -- assume uniform grids\n", + "# Δv: step size for iteration on v\n", + "# vs0: initial guess for vs\n", + "# maxit: maximum number of iterations\n", + "# threshold: threshold to be used for termination condition (maximum(abs.(vs-vs_new)) < threshold)\n", + "# verbose: boolean that ables/disables a verbose option\n", + "k_ss = (α*A_productivity/(params.ρ+params.δ))^(1/(1-α))\n", + "ks = range(0.001*k_ss, stop = 2*k_ss, length = 10000)\n", + "settings = (ks = ks,\n", + " Δv = 1000, \n", + " vs0 = (A_productivity .* ks .^ α) .^ (1-params.γ) / (1-params.γ) / params.ρ,\n", + " maxit = 100, threshold = 1e-8, verbose = false)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Optimal plan solver" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "compute_optimal_plans (generic function with 1 method)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "function compute_optimal_plans(params, settings)\n", + " @unpack ρ, δ, γ, F, u, u_prime, f, c, c_ss = params\n", + " @unpack ks, Δv, vs0, maxit, threshold, verbose = settings\n", + "\n", + " P = length(ks) # size of grids\n", + " Δk = ks[2] - ks[1] # assume uniform grids\n", + "\n", + " # initial guess\n", + " vs = vs0; \n", + " vs_history = zeros(P, maxit)\n", + " # save control (consumption) plan as well\n", + " cs = zeros(P) \n", + "\n", + " # begin iterations\n", + " for n in 1:maxit\n", + " # compute derivatives by FD and BD\n", + " dv = diff(vs) ./ Δk\n", + " dv_f = [dv; dv[end]] # forward difference\n", + " dv_b = [dv[1]; dv] # backward difference\n", + "\n", + " # define the corresponding drifts\n", + " drift_f = f.(ks, c.(dv_f)) \n", + " drift_b = f.(ks, c.(dv_b))\n", + "\n", + " # steady states at boundary\n", + " drift_f[end] = 0.0\n", + " drift_b[1] = 0.0\n", + "\n", + " # compute consumptions and corresponding u(v)\n", + " I_f = drift_f .> 0.0\n", + " I_b = drift_b .< 0.0\n", + " I_0 = 1 .- I_f-I_b\n", + "\n", + " dv_upwind = dv_f.*I_f + dv_b.*I_b\n", + " cs_upwind = c.(dv_upwind)\n", + " cs_0 = f.(ks, 0.0) # this gives consumption when the state is zero\n", + " cs = cs_upwind.*I_f + cs_upwind.*I_b + cs_0.*I_0;\n", + " \n", + " us = u.(cs)\n", + "\n", + " # define the matrix A\n", + " drift_f_upwind = max.(drift_f, 0.0) ./ Δk\n", + " drift_b_upwind = min.(drift_b, 0.0) ./ Δk\n", + " A = LinearAlgebra.Tridiagonal(-drift_b_upwind[2:P], \n", + " (-drift_f_upwind + drift_b_upwind), \n", + " drift_f_upwind[1:(P-1)]) \n", + "\n", + " # solve the corresponding system to get vs_{n+1}\n", + " vs_new = (Diagonal(fill((ρ + 1/Δv), P)) - A) \\ (us + vs / Δv)\n", + "\n", + " # show distance between vs_{n+1} and vs_n if verbose option is one\n", + " if (verbose) @show maximum(abs.(vs - vs_new)) end\n", + " \n", + " # check termination condition \n", + " if (maximum(abs.(vs-vs_new)) < threshold)\n", + " if (verbose) println(\"Value function converged -- total number of iterations: $n\") end\n", + " return (vs = vs, cs = cs, vs_history = vs_history) \n", + " end\n", + " \n", + " # update vs_{n+1}\n", + " vs = vs_new\n", + " vs_history[:,n] = vs\n", + " end\n", + " return (vs = vs, cs = cs, vs_history = vs_history) \n", + "end" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Solve" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 91.563 ms (3581357 allocations: 87.49 MiB)\n" + ] + }, + { + "data": { + "text/plain": [ + "(vs = [-24.2392, -24.1564, -24.0827, -24.0161, -23.9549, -23.8982, -23.8452, -23.7955, -23.7485, -23.7038 … -12.8475, -12.8472, -12.8469, -12.8466, -12.8464, -12.8461, -12.8458, -12.8456, -12.8453, -12.845], cs = [0.107707, 0.114193, 0.120002, 0.125288, 0.130158, 0.134687, 0.13893, 0.142929, 0.146717, 0.150321 … 1.87668, 1.87677, 1.87686, 1.87695, 1.87704, 1.87713, 1.87722, 1.87731, 1.8774, 1.87749], vs_history = [-31.8931 -25.1696 … 0.0 0.0; -31.5219 -25.0522 … 0.0 0.0; … ; -12.8986 -12.8628 … 0.0 0.0; -12.8984 -12.8625 … 0.0 0.0])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "vs, cs, vs_history = @btime compute_optimal_plans(params, settings)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot for `v_n(k)` path by `n` (iteration step):" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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y2PHjkml0oKCgtaFjz/++OOPPx7m5xcVFclksqlTp7YunD17NgCcPHky/Jp05PLLL2/98rLLLhOLxUVFRcLL8PfnzJkzw1ldCJ1eV5d8l7pvP19//fWvvvpqRkbG4sWLZ8+effHFFw8aNGjChAkhFgl/V4T+8wWtzEsvvfTpp59ed911APDVV185HI5HHnmkE0MqQ++H6upqAIiNjW2/4Jw5c4QWpNB92p6wVEfvooDeTmJ0DizLpqSkEEKEXqbLLrsM2v02dDqd9913n/CzXSQS5eXlrVq1Kjo6Gs6zRZiVldW6UDhNEpRUKu2owmG2CNusS5inzU/pNgvK5fL09PSO1hvOqoN+gsvlAoD8/Pzwa9LRql0uV5vy1NRUuVzesvZz7k/hc3w+X4h1ta9P++p1el2d+C61L+m+/ez3+1977bUJEya0/BAcNmzYSy+9xLLshe+K0H++9oRLUaKiopxOJ6V00aJFDMNUV1eHqH974eyH/Px8ABD6/9vMI5fL33//fYPBIBaLDx8+3P7zhd0+evTo86pVpMHhE32dSCRavnw5pfTDDz80m81bt27NyckZOXJk63nuuuuuf/7znzk5OZ999pnVaj18+PCGDRtiYmLOd11Cf1GLtLS0pKSkoN8br9d7gdvVZl2C0D+lExMTTSYTPfviQJ7nWZbleT6clSYnJxuNxjYz19XVCW+FX5OOCB/VguM4o9GYlJQkvAx/f0okkk6svbVOr6tLvkvdt5/FYvEtt9yyZ8+exsbGb7/99qGHHjKbzffcc8/TTz/d0SLh74rQf772CCHLli1zuVzffPON1Wr99ttv586d22YDwxR6PwgXhbEs2/6tr776aunSpc8//zzLsrfffnv7fwjCUhf+jRrYMAj7gRUrVgDA+++//8UXX7AsK4wvbD3Dp59+ajAYNm/efNVVVwnDuSilNpvtnJ/ceoRicXGxxWJp/e7w4cPr6uoqKipaF5aVld1+++1vvvnm+W5F6HWFIzs72+Vy/frrr60LH374YYlE8vPPP4fzCcOGDfN6vb/88kvrwq1btwoffr71ae+bb75p/XLLli1+v7/lk7t2f4bW6XV1+rvUWvft54cffli4alqv18+dO/f5558XroX573//29Ei4e+K0H++oJYuXQoAn3766eeff+7z+W666abz36ZzS0hIAICmpqb2b82aNQsA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yy233H///by/zHwcP368sbGxvLy8sbGRN/O7TpQtwt27d9fX18disbq6uj179siOYwN//vlnW1vbhx9+GIvFmpubN2/eLDuRDYyNjW3atGlyclJ2ENt45513xsfHz58/f999973++uuy49hAW1tbZ2fnyMjIq6++2tbWJjuOmpQtwp6envb2dq/X297e/sUXX8iOYwO//fbb448/fu+99/r9/ieffJL3NrRkmuamTZu2bdsmO4idfPLJJx0dHWVlZdu3b3/66adlx7GBioqKsbExTdMmJia4x/c6UfY+wmAwODQ05Pf7E4nE0qVLx8fHZSeyDcMw2tvbS0pK3n//fdlZitqbb745PDz81ltvuVzKvo6uuerq6q1bt+7fv//WW289cODAnXfeKTtRsfv+++9Xr16dPu7t7b3nnnvk5lGSshOhaZoulyt9YBiG7Di28fXXX69evbqysnLv3r2ysxS1Y8eOHTlyZNeuXbKD2Mz4+Lhpmj///PP69eu3bt0qO44NvPLKKy+//PLg4GBHRwfLD9eLqagVK1b09/ebptnf33/bbbfJjmMDqVRq27ZtDz74YF9fn+wsNtDZ2TnrpXTixAnZoWxg2bJlg4ODpmnGYrFAICA7jg0EAoFYLGaa5vDwcDAYlB1HTcpOhOFwOBKJmKYZiURaWlpkx7GBb7/9tqen5/DhwzU1NZqm8S7Sc9u5c2fuVSSEME3zgQcekB3KBtatW3fw4MFkMrl//35W+ebjrrvu6urq0jTt448/XrVqlew4alJ2b+PSpUutra2nT59uamrq7u6urKyUnajYvfHGG6+99trlZ1T9u3HNsUc4fxcvXnziiSd6e3tXrVrV1dW1YsUK2YmKXTQa3bJly48//phuxIaGBtmJFMQLGADgaMoujQIAMB8UIQDA0ShCAICjUYQAAEejCAEAjkYRAgAcjSIEADgaRQgAcDSKEADgaBQhAMDRKEIAgKNRhIDNRKPR9O/aBHBNUIQAAEejCAEAjkYRAgAcjSIEbOzcuXO1tbUbN27UdV12FsCuKELArs6ePbtmzZr169cfPHjQ4/HIjgPYFUUI2NJPP/308MMPr127dt++fSUlvJCBheP1A9jSI488IoQ4d+6c7CCA7VGEgC3t2LHj8OHD33333QcffCA7C2BvLtM0ZWcA8C9Eo9Hbb789/cp98cUXu7q6zp49W1tbKzsXYFdMhICN7dy5s6qq6tlnn+UnWmDBKELAxoLB4L59+7788svPPvtMdhbArlgaBQA4GhMhAMDR/g9VuB/qm13vKgAAAABJRU5ErkJggg==" + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot(ks, vs_history[:,1:3],\n", + " linewidth = 3,\n", + " title=\"Value function per iteration step v_n(k)\",xaxis=\"k\",yaxis=\"v(k)\",\n", + " label = string.(\"v_\",1:3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plots\n", + "### `v(k)`" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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" + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot(ks, vs,\n", + " linewidth = 3,\n", + " title=\"Value function v(k)\",xaxis=\"k\",yaxis=\"v(k)\",legend=false)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### `c(k)`" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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" + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot(ks, cs,\n", + " lw = 3,\n", + " title=\"Optimal consumption plan c(k)\",xaxis=\"k\",yaxis=\"c(k)\",legend=false)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### `s(k)`" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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" + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "savings = f.(ks, cs) # Savings (states) according to optimal consumption plan\n", + "plot(ks, savings,\n", + " linewidth = 3,\n", + " title=\"Optimal saving plan s(k)\",xaxis=\"k\",yaxis=\"s(k)\",legend=false)\n", + "plot!([.0], st = :hline, linestyle = :dot, lw = 3) # zero saving line" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Julia 1.1.0", + "language": "julia", + "name": "julia-1.1" + }, + "language_info": { + "file_extension": ".jl", + "mimetype": "application/julia", + "name": "julia", + "version": "1.1.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/continuous_time_methods/tutorials/growth-hjb-implicit.jmd b/continuous_time_methods/tutorials/growth-hjb-implicit.jmd index 90fa9eb..43699cc 100644 --- a/continuous_time_methods/tutorials/growth-hjb-implicit.jmd +++ b/continuous_time_methods/tutorials/growth-hjb-implicit.jmd @@ -156,75 +156,7 @@ settings = (ks = ks, maxit = 100, threshold = 1e-8, verbose = false) ``` -### Optimal plan solver, using the methods from [Achdou et al. (2017)](http://www.princeton.edu/~moll/HACT.pdf) and [Fernandez-Villaverde et al. (2018)](https://www.sas.upenn.edu/~jesusfv/Financial_Frictions_Wealth_Distribution.pdf) -```julia -function compute_optimal_plans(params, settings) - @unpack ρ, δ, γ, F, u, u_prime, f, c, c_ss = params - @unpack ks, Δv, vs0, maxit, threshold, verbose = settings - - P = length(ks) # size of grids - Δk = ks[2] - ks[1] # assume uniform grids - - # initial guess - vs = vs0; - vs_history = zeros(P, maxit) - # save control (consumption) plan as well - cs = zeros(P) - - # begin iterations - for n in 1:maxit - # compute derivatives by FD and BD - dv = diff(vs) ./ Δk - dv_f = [dv; dv[end]] # forward difference - dv_b = [dv[1]; dv] # backward difference - dv_0 = u_prime.(f.(ks, fill(c_ss, P))) - - # define the corresponding drifts - drift_f = f.(ks, c.(dv_f)) - drift_b = f.(ks, c.(dv_b)) - - # steady states at boundary - drift_f[end] = 0.0 - drift_b[1] = 0.0 - - # compute consumptions and corresponding u(v) - I_f = drift_f .> 0.0 - I_b = drift_b .< 0.0 - I_0 = 1 .- I_f-I_b - - dv_upwind = dv_f.*I_f + dv_b.*I_b + dv_0.*I_0; - cs = c.(dv_upwind) - us = u.(cs) - - # define the matrix A - drift_f_upwind = max.(drift_f, 0.0) ./ Δk - drift_b_upwind = min.(drift_b, 0.0) ./ Δk - A = LinearAlgebra.Tridiagonal(-drift_b_upwind[2:P], - (-drift_f_upwind + drift_b_upwind), - drift_f_upwind[1:(P-1)]) - - # solve the corresponding system to get vs_{n+1} - vs_new = (Diagonal(fill((ρ + 1/Δv), P)) - A) \ (us + vs / Δv) - - # show distance between vs_{n+1} and vs_n if verbose option is one - if (verbose) @show maximum(abs.(vs - vs_new)) end - - # check termination condition - if (maximum(abs.(vs-vs_new)) < threshold) - if (verbose) println("Value function converged -- total number of iterations: $n") end - return (vs = vs, cs = cs, vs_history = vs_history) - end - - # update vs_{n+1} - vs = vs_new - vs_history[:,n] = vs - end - return (vs = vs, cs = cs, vs_history = vs_history) -end -``` - - -### Optimal plan solver, using my new method +### Optimal plan solver ```julia function compute_optimal_plans(params, settings) @unpack ρ, δ, γ, F, u, u_prime, f, c, c_ss = params diff --git a/continuous_time_methods/tutorials/growth-hjb-implicit.md b/continuous_time_methods/tutorials/growth-hjb-implicit.md index dbe6e21..702d41e 100644 --- a/continuous_time_methods/tutorials/growth-hjb-implicit.md +++ b/continuous_time_methods/tutorials/growth-hjb-implicit.md @@ -1,7 +1,7 @@ --- title : "Solving HJB equation for neoclassical growth models" author : Chiyoung Ahn (@chiyahn) -date : 2019-02-27 +date : 2019-03-04 --- ### About this document @@ -75,7 +75,7 @@ $$ \end{bmatrix} $$ -where the non-zero elements above are located in $i-1, i, i+1$th columns respectively. s +where the non-zero elements above are located in $i-1, i, i+1$th columns respectively. ### Discretization of $u(c)$ One thing left to find is ${\mathbf{u}}$ at optimal consumption plan $c$. @@ -182,84 +182,7 @@ settings = (ks = ks, -### Optimal plan solver, using the methods from [Achdou et al. (2017)](http://www.princeton.edu/~moll/HACT.pdf) and [Fernandez-Villaverde et al. (2018)](https://www.sas.upenn.edu/~jesusfv/Financial_Frictions_Wealth_Distribution.pdf) -~~~~{.julia} -function compute_optimal_plans(params, settings) - @unpack ρ, δ, γ, F, u, u_prime, f, c, c_ss = params - @unpack ks, Δv, vs0, maxit, threshold, verbose = settings - - P = length(ks) # size of grids - Δk = ks[2] - ks[1] # assume uniform grids - - # initial guess - vs = vs0; - vs_history = zeros(P, maxit) - # save control (consumption) plan as well - cs = zeros(P) - - # begin iterations - for n in 1:maxit - # compute derivatives by FD and BD - dv = diff(vs) ./ Δk - dv_f = [dv; dv[end]] # forward difference - dv_b = [dv[1]; dv] # backward difference - dv_0 = u_prime.(f.(ks, fill(c_ss, P))) - - # define the corresponding drifts - drift_f = f.(ks, c.(dv_f)) - drift_b = f.(ks, c.(dv_b)) - - # steady states at boundary - drift_f[end] = 0.0 - drift_b[1] = 0.0 - - # compute consumptions and corresponding u(v) - I_f = drift_f .> 0.0 - I_b = drift_b .< 0.0 - I_0 = 1 .- I_f-I_b - - dv_upwind = dv_f.*I_f + dv_b.*I_b + dv_0.*I_0; - cs = c.(dv_upwind) - us = u.(cs) - - # define the matrix A - drift_f_upwind = max.(drift_f, 0.0) ./ Δk - drift_b_upwind = min.(drift_b, 0.0) ./ Δk - A = LinearAlgebra.Tridiagonal(-drift_b_upwind[2:P], - (-drift_f_upwind + drift_b_upwind), - drift_f_upwind[1:(P-1)]) - - # solve the corresponding system to get vs_{n+1} - vs_new = (Diagonal(fill((ρ + 1/Δv), P)) - A) \ (us + vs / Δv) - - # show distance between vs_{n+1} and vs_n if verbose option is one - if (verbose) @show maximum(abs.(vs - vs_new)) end - - # check termination condition - if (maximum(abs.(vs-vs_new)) < threshold) - if (verbose) println("Value function converged -- total number of iterations: $n") end - return (vs = vs, cs = cs, vs_history = vs_history) - end - - # update vs_{n+1} - vs = vs_new - vs_history[:,n] = vs - end - return (vs = vs, cs = cs, vs_history = vs_history) -end -~~~~~~~~~~~~~ - - -~~~~ -compute_optimal_plans (generic function with 1 method) -~~~~ - - - - - - -### Optimal plan solver, using my new method +### Optimal plan solver ~~~~{.julia} function compute_optimal_plans(params, settings) @unpack ρ, δ, γ, F, u, u_prime, f, c, c_ss = params @@ -344,7 +267,7 @@ vs, cs, vs_history = @btime compute_optimal_plans(params, settings) ~~~~ -93.904 ms (3581357 allocations: 87.49 MiB) +94.015 ms (3581357 allocations: 87.49 MiB) ~~~~ @@ -361,7 +284,7 @@ plot(ks, vs_history[:,1:3], ~~~~~~~~~~~~~ -![](figures/growth-hjb-implicit_11_1.png)\ +![](figures/growth-hjb-implicit_10_1.png)\ @@ -375,7 +298,7 @@ plot(ks, vs, ~~~~~~~~~~~~~ -![](figures/growth-hjb-implicit_12_1.png)\ +![](figures/growth-hjb-implicit_11_1.png)\ @@ -388,7 +311,7 @@ plot(ks, cs, ~~~~~~~~~~~~~ -![](figures/growth-hjb-implicit_13_1.png)\ +![](figures/growth-hjb-implicit_12_1.png)\ @@ -403,5 +326,5 @@ plot!([.0], st = :hline, linestyle = :dot, lw = 3) # zero saving line ~~~~~~~~~~~~~ -![](figures/growth-hjb-implicit_14_1.png)\ +![](figures/growth-hjb-implicit_13_1.png)\ From c8f4f5698ea5615138754842eb42b875a7755ca8 Mon Sep 17 00:00:00 2001 From: Chiyoung Ahn Date: Mon, 4 Mar 2019 11:56:01 -0800 Subject: [PATCH 2/8] Use correct plots for `growth-hjb-implicit.md` --- .../figures/growth-hjb-implicit_11_1.png | Bin 21033 -> 15032 bytes .../figures/growth-hjb-implicit_12_1.png | Bin 15032 -> 17480 bytes .../figures/growth-hjb-implicit_13_1.png | Bin 17480 -> 21114 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/continuous_time_methods/tutorials/figures/growth-hjb-implicit_11_1.png b/continuous_time_methods/tutorials/figures/growth-hjb-implicit_11_1.png index 546483b827c198174e686cc6db549ac301fa5145..2a1e408569cc73af1c3b681d98655ecf01e70c8d 100644 GIT binary patch literal 15032 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 O@G&v6G^{jmj{Y}SAj9$i literal 17480 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 Date: Mon, 4 Mar 2019 12:21:54 -0800 Subject: [PATCH 3/8] Remove ipynb notebooks for now --- .../tutorials/growth-hjb-implicit.ipynb | 519 ------------------ 1 file changed, 519 deletions(-) delete mode 100644 continuous_time_methods/tutorials/growth-hjb-implicit.ipynb diff --git a/continuous_time_methods/tutorials/growth-hjb-implicit.ipynb b/continuous_time_methods/tutorials/growth-hjb-implicit.ipynb deleted file mode 100644 index 1fd901e..0000000 --- a/continuous_time_methods/tutorials/growth-hjb-implicit.ipynb +++ /dev/null @@ -1,519 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "title : \"Solving HJB equation for neoclassical growth models\"\n", - "author : Chiyoung Ahn (@chiyahn)\n", - "date : \n", - "\n", - "\n", - "`j using Dates; print(Dates.today())`\n", - "---\n", - "\n", - "### About this document\n", - "Presented by Chiyoung Ahn (@chiyahn), written for `Weave.jl`, based on Ben Moll's [note](http://www.princeton.edu/~moll/HACTproject/HACT_Additional_Codes.pdf) and [code](http://www.princeton.edu/~moll/HACTproject/HJB_NGM_implicit.m)." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "using LinearAlgebra, Parameters, Plots, BenchmarkTools\n", - "gr(fmt = :png); # save plots in .png" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Model\n", - "Consider finding the optimal consumption plan $c(t)$ for\n", - "\n", - "$$\n", - "\\max_{\\{c(t)\\}_{t \\geq 0} } \\int e^{-\\rho t } u(c(t)) dt\n", - "$$\n", - "\n", - "with $u(c(t)) = c(t)^{1-\\gamma} / (1-\\gamma)$ for some $\\gamma \\neq 1$ and the following law of motion for $k$:\n", - "\n", - "$$\n", - "\\dot k(t) = F(k(t)) - \\delta k(t) - c(t)\n", - "$$\n", - "\n", - "## Numerical solution of HJBE\n", - "The corresponding HJB equation is\n", - "\n", - "$$\n", - "\\rho v (k) = \\max_c u(c) + v'(k ) (F(k) - \\delta k - c)\n", - "$$\n", - "The first order condition with respect to $c$ on the maximand function yields \n", - "\n", - "$$\n", - "u'(c) = v'(k)\n", - "$$\n", - "\n", - "i.e., $c = (u')^{-1} (v' (k))$ for each $k$ at optimal.\n", - "\n", - "\n", - "### Upwind scheme and discretization of $\\nabla v$\n", - "Note that $v$ is concave in $k$ and the drift of state variables can be either positive or negative. Basic idea of upwind scheme: use forward difference when the drift of the state variable $f(x, \\alpha)$ is positive, backward difference when it is negative. Let $v'_{i, B}$ and $v'_{i, F}$ be $v'$ computed from backward difference and forward difference respectively.\n", - "\n", - "Define the followings:\n", - "\n", - "$$\n", - "s_{i,F} = F(k_i) - \\delta k_i - (u')^{-1} (v'_{i,F}) \\\\\n", - "s_{i,B} = F(k_i) - \\delta k_i - (u')^{-1} (v'_{i,B})\n", - "$$\n", - "\n", - "Using the upwind scheme, the HJB eqaution can be rewritten as\n", - "\n", - "$$\n", - "\\rho v_i = u(c_i) + \\dfrac{v_{i+1} - v_i}{\\Delta k} s^+_{i,F} + \\dfrac{v_i - v_{i-1}}{\\Delta k} s^-_{i, B}\n", - "$$\n", - "\n", - "for each $i$. This can be written in a compact matrix form\n", - "\n", - "$$\n", - "\\rho {\\mathbf{v}} = {\\mathbf{u}} + {\\mathbf{A}}({\\mathbf{v}}) {\\mathbf{v}}\n", - "$$\n", - "\n", - "such that the $i$th row of ${\\mathbf{A}}({\\mathbf{v}})$ is defined as \n", - "\n", - "$$\n", - "\\begin{bmatrix}\n", - "0 & \\cdots & 0 & - \\dfrac{s^-_{i,B}}{\\Delta k} & \\dfrac{s^-_{i,B}}{\\Delta k} - \\dfrac{s^-_{i,F}}{\\Delta k} & \\dfrac{s^-_{i,F}}{\\Delta k} & 0 & \\cdots & 0\n", - "\\end{bmatrix}\n", - "$$\n", - "\n", - "where the non-zero elements above are located in $i-1, i, i+1$th columns respectively. \n", - "\n", - "### Discretization of $u(c)$\n", - "One thing left to find is ${\\mathbf{u}}$ at optimal consumption plan $c$. \n", - "\n", - "[Achdou et al. (2017)](http://www.princeton.edu/~moll/HACT.pdf) and [Fernandez-Villaverde et al. (2018)](https://www.sas.upenn.edu/~jesusfv/Financial_Frictions_Wealth_Distribution.pdf) suggest using the derivative of $v$ by the FOC above, which yields \n", - "\n", - "$$u (c) = u ( (u')^{-1} (v'(k)) ) $$\n", - "\n", - "To compute the derivative, Achdou et al. (2017) and Fernandez-Villaverde et al. (2018) use the following discretization scheme:\n", - "\n", - "$$\n", - "v'_i = v'_{i,F} {\\mathbf{1}} ( s_{i, F} > 0) + v'_{i,B} {\\mathbf{1}} ( s_{i, B} < 0) + \\overline{v}'_i {\\mathbf{1}} ( s_{i, F} < 0 < s_{i, B})\n", - "$$\n", - "where $\\overline{v}'_i := u'(F(k_i) - \\delta k_i)$, i.e., the steady state such that $s_i = 0$. This gives ${\\mathbf{u}}$ by computing $u(c(v'_i))$ at each grid $i$.\n", - "\n", - "Here's my take on this. I argue that there is no need to arbitrarily define $\\overline{v}'_i$ to deal with the case when $s_{i}$ is taken to be zero. Note that we need $\\overline {v}_i'$ only for $u(c)$ when the current state is close enough to the steady state, i.e., $s_i \\approx 0$ by taking $s_i = 0$. On the other hand, note that when $s_i = 0$, we can directly compute the consumption value by the law of motion $\\dot k (t) = 0$ without relying on $v'$:\n", - "\n", - "$$\n", - "c_i = F(k_i) - \\delta k_i\n", - "$$\n", - "Hence, instead of defining $v'_i$ and $u(c(v'_i))$ accordingly, we can use the following consumption approximation scheme:\n", - "\n", - "$$\n", - "c_i = c(v'_{i,F}) {\\mathbf{1}} ( s_{i, F} > 0) + c(v'_{i,B}) {\\mathbf{1}} ( s_{i, B} < 0) + [F(k_i) - \\delta(k_i)] {\\mathbf{1}} ( s_{i, F} < 0 < s_{i, B})\n", - "$$\n", - "so that $u(c(v'_i))$ can be now replaced with $u(c_i)$, which ameliorates the need of defining an arbitary discretization scheme for $v'_i$ when $s_i$ is close to zero.\n", - "\n", - "\n", - "## Setup\n", - "### Utility function" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "u_prime (generic function with 1 method)" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "γ = 2.0\n", - "u(c) = c^(1-γ)/(1-γ) # payoff function by control variable (consumption)\n", - "u_prime(c) = c^(-γ) # derivative of payoff function by control variable (consumption)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Law of motion\n", - "Define a production as follows first:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "A_productivity = 1.0\n", - "α = 0.3 \n", - "F(k) = A_productivity*k^α;" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The corresponding law of motion for `k` given current `k` (state) and `c` (control)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "δ = 0.05\n", - "f(k, c) = F(k) - δ*k - c; # law of motion for saving (state)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Consumption function by inverse (`v_prime`)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "c(v_prime) = v_prime^(-1/γ); # consumption by derivative of value function at certain k" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Parameters and grids" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(ρ = 0.05, δ = 0.05, γ = 2.0, F = F, u = u, u_prime = u_prime, f = f, c = c, c_ss = 0.0)" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# ρ: utility discount rate\n", - "# δ: capital discount rate\n", - "# γ: CRRA parameter\n", - "# F: production function that maps k to a real number\n", - "# u: utility function that maps c to a real number\n", - "# u_prime: derivative of utility function that maps c to a real number\n", - "# f: law of motion function that maps k (state), c (control) to the derivative of k\n", - "# c: control by v_prime; maps v_prime (derivative of v at certain k) to consumption (control)\n", - "# c_ss: consumption (control) when v' = 0 (i.e. steady state)\n", - "params = (ρ = 0.05, δ = δ, γ = γ, F = F, u = u, u_prime = u_prime, f = f, c = c, c_ss = 0.0)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(ks = 0.0048039866566730914:0.0009604129739663476:9.607973313346182, Δv = 1000, vs0 = [-99.2086, -93.9299, -89.6863, -86.1654, -83.1746, -80.5873, -78.3161, -76.2986, -74.4886, -72.851 … -10.1475, -10.1472, -10.1469, -10.1466, -10.1463, -10.1459, -10.1456, -10.1453, -10.145, -10.1447], maxit = 100, threshold = 1.0e-8, verbose = false)" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# ks: grids for states (k) -- assume uniform grids\n", - "# Δv: step size for iteration on v\n", - "# vs0: initial guess for vs\n", - "# maxit: maximum number of iterations\n", - "# threshold: threshold to be used for termination condition (maximum(abs.(vs-vs_new)) < threshold)\n", - "# verbose: boolean that ables/disables a verbose option\n", - "k_ss = (α*A_productivity/(params.ρ+params.δ))^(1/(1-α))\n", - "ks = range(0.001*k_ss, stop = 2*k_ss, length = 10000)\n", - "settings = (ks = ks,\n", - " Δv = 1000, \n", - " vs0 = (A_productivity .* ks .^ α) .^ (1-params.γ) / (1-params.γ) / params.ρ,\n", - " maxit = 100, threshold = 1e-8, verbose = false)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Optimal plan solver" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "compute_optimal_plans (generic function with 1 method)" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function compute_optimal_plans(params, settings)\n", - " @unpack ρ, δ, γ, F, u, u_prime, f, c, c_ss = params\n", - " @unpack ks, Δv, vs0, maxit, threshold, verbose = settings\n", - "\n", - " P = length(ks) # size of grids\n", - " Δk = ks[2] - ks[1] # assume uniform grids\n", - "\n", - " # initial guess\n", - " vs = vs0; \n", - " vs_history = zeros(P, maxit)\n", - " # save control (consumption) plan as well\n", - " cs = zeros(P) \n", - "\n", - " # begin iterations\n", - " for n in 1:maxit\n", - " # compute derivatives by FD and BD\n", - " dv = diff(vs) ./ Δk\n", - " dv_f = [dv; dv[end]] # forward difference\n", - " dv_b = [dv[1]; dv] # backward difference\n", - "\n", - " # define the corresponding drifts\n", - " drift_f = f.(ks, c.(dv_f)) \n", - " drift_b = f.(ks, c.(dv_b))\n", - "\n", - " # steady states at boundary\n", - " drift_f[end] = 0.0\n", - " drift_b[1] = 0.0\n", - "\n", - " # compute consumptions and corresponding u(v)\n", - " I_f = drift_f .> 0.0\n", - " I_b = drift_b .< 0.0\n", - " I_0 = 1 .- I_f-I_b\n", - "\n", - " dv_upwind = dv_f.*I_f + dv_b.*I_b\n", - " cs_upwind = c.(dv_upwind)\n", - " cs_0 = f.(ks, 0.0) # this gives consumption when the state is zero\n", - " cs = cs_upwind.*I_f + cs_upwind.*I_b + cs_0.*I_0;\n", - " \n", - " us = u.(cs)\n", - "\n", - " # define the matrix A\n", - " drift_f_upwind = max.(drift_f, 0.0) ./ Δk\n", - " drift_b_upwind = min.(drift_b, 0.0) ./ Δk\n", - " A = LinearAlgebra.Tridiagonal(-drift_b_upwind[2:P], \n", - " (-drift_f_upwind + drift_b_upwind), \n", - " drift_f_upwind[1:(P-1)]) \n", - "\n", - " # solve the corresponding system to get vs_{n+1}\n", - " vs_new = (Diagonal(fill((ρ + 1/Δv), P)) - A) \\ (us + vs / Δv)\n", - "\n", - " # show distance between vs_{n+1} and vs_n if verbose option is one\n", - " if (verbose) @show maximum(abs.(vs - vs_new)) end\n", - " \n", - " # check termination condition \n", - " if (maximum(abs.(vs-vs_new)) < threshold)\n", - " if (verbose) println(\"Value function converged -- total number of iterations: $n\") end\n", - " return (vs = vs, cs = cs, vs_history = vs_history) \n", - " end\n", - " \n", - " # update vs_{n+1}\n", - " vs = vs_new\n", - " vs_history[:,n] = vs\n", - " end\n", - " return (vs = vs, cs = cs, vs_history = vs_history) \n", - "end" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Solve" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " 91.563 ms (3581357 allocations: 87.49 MiB)\n" - ] - }, - { - "data": { - "text/plain": [ - "(vs = [-24.2392, -24.1564, -24.0827, -24.0161, -23.9549, -23.8982, -23.8452, -23.7955, -23.7485, -23.7038 … -12.8475, -12.8472, -12.8469, -12.8466, -12.8464, -12.8461, -12.8458, -12.8456, -12.8453, -12.845], cs = [0.107707, 0.114193, 0.120002, 0.125288, 0.130158, 0.134687, 0.13893, 0.142929, 0.146717, 0.150321 … 1.87668, 1.87677, 1.87686, 1.87695, 1.87704, 1.87713, 1.87722, 1.87731, 1.8774, 1.87749], vs_history = [-31.8931 -25.1696 … 0.0 0.0; -31.5219 -25.0522 … 0.0 0.0; … ; -12.8986 -12.8628 … 0.0 0.0; -12.8984 -12.8625 … 0.0 0.0])" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "vs, cs, vs_history = @btime compute_optimal_plans(params, settings)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot for `v_n(k)` path by `n` (iteration step):" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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y2PHjkml0oKCgtaFjz/++OOPPx7m5xcVFclksqlTp7YunD17NgCcPHky/Jp05PLLL2/98rLLLhOLxUVFRcLL8PfnzJkzw1ldCJ1eV5d8l7pvP19//fWvvvpqRkbG4sWLZ8+effHFFw8aNGjChAkhFgl/V4T+8wWtzEsvvfTpp59ed911APDVV185HI5HHnmkE0MqQ++H6upqAIiNjW2/4Jw5c4QWpNB92p6wVEfvooDeTmJ0DizLpqSkEEKEXqbLLrsM2v02dDqd9913n/CzXSQS5eXlrVq1Kjo6Gs6zRZiVldW6UDhNEpRUKu2owmG2CNusS5inzU/pNgvK5fL09PSO1hvOqoN+gsvlAoD8/Pzwa9LRql0uV5vy1NRUuVzesvZz7k/hc3w+X4h1ta9P++p1el2d+C61L+m+/ez3+1977bUJEya0/BAcNmzYSy+9xLLshe+K0H++9oRLUaKiopxOJ6V00aJFDMNUV1eHqH974eyH/Px8ABD6/9vMI5fL33//fYPBIBaLDx8+3P7zhd0+evTo86pVpMHhE32dSCRavnw5pfTDDz80m81bt27NyckZOXJk63nuuuuuf/7znzk5OZ999pnVaj18+PCGDRtiYmLOd11Cf1GLtLS0pKSkoN8br9d7gdvVZl2C0D+lExMTTSYTPfviQJ7nWZbleT6clSYnJxuNxjYz19XVCW+FX5OOCB/VguM4o9GYlJQkvAx/f0okkk6svbVOr6tLvkvdt5/FYvEtt9yyZ8+exsbGb7/99qGHHjKbzffcc8/TTz/d0SLh74rQf772CCHLli1zuVzffPON1Wr99ttv586d22YDwxR6PwgXhbEs2/6tr776aunSpc8//zzLsrfffnv7fwjCUhf+jRrYMAj7gRUrVgDA+++//8UXX7AsK4wvbD3Dp59+ajAYNm/efNVVVwnDuSilNpvtnJ/ceoRicXGxxWJp/e7w4cPr6uoqKipaF5aVld1+++1vvvnm+W5F6HWFIzs72+Vy/frrr60LH374YYlE8vPPP4fzCcOGDfN6vb/88kvrwq1btwoffr71ae+bb75p/XLLli1+v7/lk7t2f4bW6XV1+rvUWvft54cffli4alqv18+dO/f5558XroX573//29Ei4e+K0H++oJYuXQoAn3766eeff+7z+W666abz36ZzS0hIAICmpqb2b82aNQsA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yy233H///by/zHwcP368sbGxvLy8sbGRN/O7TpQtwt27d9fX18disbq6uj179siOYwN//vlnW1vbhx9+GIvFmpubN2/eLDuRDYyNjW3atGlyclJ2ENt45513xsfHz58/f999973++uuy49hAW1tbZ2fnyMjIq6++2tbWJjuOmpQtwp6envb2dq/X297e/sUXX8iOYwO//fbb448/fu+99/r9/ieffJL3NrRkmuamTZu2bdsmO4idfPLJJx0dHWVlZdu3b3/66adlx7GBioqKsbExTdMmJia4x/c6UfY+wmAwODQ05Pf7E4nE0qVLx8fHZSeyDcMw2tvbS0pK3n//fdlZitqbb745PDz81ltvuVzKvo6uuerq6q1bt+7fv//WW289cODAnXfeKTtRsfv+++9Xr16dPu7t7b3nnnvk5lGSshOhaZoulyt9YBiG7Di28fXXX69evbqysnLv3r2ysxS1Y8eOHTlyZNeuXbKD2Mz4+Lhpmj///PP69eu3bt0qO44NvPLKKy+//PLg4GBHRwfLD9eLqagVK1b09/ebptnf33/bbbfJjmMDqVRq27ZtDz74YF9fn+wsNtDZ2TnrpXTixAnZoWxg2bJlg4ODpmnGYrFAICA7jg0EAoFYLGaa5vDwcDAYlB1HTcpOhOFwOBKJmKYZiURaWlpkx7GBb7/9tqen5/DhwzU1NZqm8S7Sc9u5c2fuVSSEME3zgQcekB3KBtatW3fw4MFkMrl//35W+ebjrrvu6urq0jTt448/XrVqlew4alJ2b+PSpUutra2nT59uamrq7u6urKyUnajYvfHGG6+99trlZ1T9u3HNsUc4fxcvXnziiSd6e3tXrVrV1dW1YsUK2YmKXTQa3bJly48//phuxIaGBtmJFMQLGADgaMoujQIAMB8UIQDA0ShCAICjUYQAAEejCAEAjkYRAgAcjSIEADgaRQgAcDSKEADgaBQhAMDRKEIAgKNRhIDNRKPR9O/aBHBNUIQAAEejCAEAjkYRAgAcjSIEbOzcuXO1tbUbN27UdV12FsCuKELArs6ePbtmzZr169cfPHjQ4/HIjgPYFUUI2NJPP/308MMPr127dt++fSUlvJCBheP1A9jSI488IoQ4d+6c7CCA7VGEgC3t2LHj8OHD33333QcffCA7C2BvLtM0ZWcA8C9Eo9Hbb789/cp98cUXu7q6zp49W1tbKzsXYFdMhICN7dy5s6qq6tlnn+UnWmDBKELAxoLB4L59+7788svPPvtMdhbArlgaBQA4GhMhAMDR/g9VuB/qm13vKgAAAABJRU5ErkJggg==" - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "plot(ks, vs_history[:,1:3],\n", - " linewidth = 3,\n", - " title=\"Value function per iteration step v_n(k)\",xaxis=\"k\",yaxis=\"v(k)\",\n", - " label = string.(\"v_\",1:3))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Plots\n", - "### `v(k)`" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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" - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "plot(ks, vs,\n", - " linewidth = 3,\n", - " title=\"Value function v(k)\",xaxis=\"k\",yaxis=\"v(k)\",legend=false)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### `c(k)`" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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" - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "plot(ks, cs,\n", - " lw = 3,\n", - " title=\"Optimal consumption plan c(k)\",xaxis=\"k\",yaxis=\"c(k)\",legend=false)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### `s(k)`" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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" - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "savings = f.(ks, cs) # Savings (states) according to optimal consumption plan\n", - "plot(ks, savings,\n", - " linewidth = 3,\n", - " title=\"Optimal saving plan s(k)\",xaxis=\"k\",yaxis=\"s(k)\",legend=false)\n", - "plot!([.0], st = :hline, linestyle = :dot, lw = 3) # zero saving line" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Julia 1.1.0", - "language": "julia", - "name": "julia-1.1" - }, - "language_info": { - "file_extension": ".jl", - "mimetype": "application/julia", - "name": "julia", - "version": "1.1.0" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} From d024045b7ff300ddd21ff01c1fae62efe46b414e Mon Sep 17 00:00:00 2001 From: Chiyoung Ahn Date: Mon, 4 Mar 2019 12:24:39 -0800 Subject: [PATCH 4/8] Use SDO package instead for consumption definition --- .../tutorials/growth-hjb-implicit.jmd | 18 ++++++++--------- .../tutorials/growth-hjb-implicit.md | 20 +++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/continuous_time_methods/tutorials/growth-hjb-implicit.jmd b/continuous_time_methods/tutorials/growth-hjb-implicit.jmd index 43699cc..e6d4363 100644 --- a/continuous_time_methods/tutorials/growth-hjb-implicit.jmd +++ b/continuous_time_methods/tutorials/growth-hjb-implicit.jmd @@ -9,7 +9,7 @@ Presented by Chiyoung Ahn (@chiyahn), written for `Weave.jl`, based on Ben Moll' ```julia; cache=true -using LinearAlgebra, Parameters, Plots, BenchmarkTools +using LinearAlgebra, Parameters, Plots, BenchmarkTools, SimpleDifferentialOperators gr(fmt = :png); # save plots in .png ``` @@ -138,7 +138,9 @@ c(v_prime) = v_prime^(-1/γ); # consumption by derivative of value function at c # f: law of motion function that maps k (state), c (control) to the derivative of k # c: control by v_prime; maps v_prime (derivative of v at certain k) to consumption (control) # c_ss: consumption (control) when v' = 0 (i.e. steady state) -params = (ρ = 0.05, δ = δ, γ = γ, F = F, u = u, u_prime = u_prime, f = f, c = c, c_ss = 0.0) +# bc: boundary conditions to be used for v +params = (ρ = 0.05, δ = δ, γ = γ, F = F, u = u, u_prime = u_prime, f = f, c = c, c_ss = 0.0, + bc = (Reflecting(), Reflecting())) ``` ```julia @@ -159,7 +161,7 @@ settings = (ks = ks, ### Optimal plan solver ```julia function compute_optimal_plans(params, settings) - @unpack ρ, δ, γ, F, u, u_prime, f, c, c_ss = params + @unpack ρ, δ, γ, F, u, u_prime, f, c, c_ss, bc = params @unpack ks, Δv, vs0, maxit, threshold, verbose = settings P = length(ks) # size of grids @@ -173,10 +175,8 @@ function compute_optimal_plans(params, settings) # begin iterations for n in 1:maxit - # compute derivatives by FD and BD - dv = diff(vs) ./ Δk - dv_f = [dv; dv[end]] # forward difference - dv_b = [dv[1]; dv] # backward difference + dv_f = L₁₊(ks, bc) * vs # v' by forward difference + dv_b = L₁₋(ks, bc) * vs # v' by backward difference # define the corresponding drifts drift_f = f.(ks, c.(dv_f)) @@ -191,7 +191,7 @@ function compute_optimal_plans(params, settings) I_b = drift_b .< 0.0 I_0 = 1 .- I_f-I_b - dv_upwind = dv_f.*I_f + dv_b.*I_b + dv_upwind = dv_f.*I_f + dv_b.*I_b cs_upwind = c.(dv_upwind) cs_0 = f.(ks, 0.0) # this gives consumption when the state is zero cs = cs_upwind.*I_f + cs_upwind.*I_b + cs_0.*I_0; @@ -227,7 +227,7 @@ end ## Solve ```julia -vs, cs, vs_history = @btime compute_optimal_plans(params, settings) +vs, cs, vs_history = @btime compute_optimal_plans(params, settings); ``` Plot for `v_n(k)` path by `n` (iteration step): diff --git a/continuous_time_methods/tutorials/growth-hjb-implicit.md b/continuous_time_methods/tutorials/growth-hjb-implicit.md index 702d41e..34546b9 100644 --- a/continuous_time_methods/tutorials/growth-hjb-implicit.md +++ b/continuous_time_methods/tutorials/growth-hjb-implicit.md @@ -9,7 +9,7 @@ Presented by Chiyoung Ahn (@chiyahn), written for `Weave.jl`, based on Ben Moll' ~~~~{.julia} -using LinearAlgebra, Parameters, Plots, BenchmarkTools +using LinearAlgebra, Parameters, Plots, BenchmarkTools, SimpleDifferentialOperators gr(fmt = :png); # save plots in .png ~~~~~~~~~~~~~ @@ -158,7 +158,9 @@ c(v_prime) = v_prime^(-1/γ); # consumption by derivative of value function at c # f: law of motion function that maps k (state), c (control) to the derivative of k # c: control by v_prime; maps v_prime (derivative of v at certain k) to consumption (control) # c_ss: consumption (control) when v' = 0 (i.e. steady state) -params = (ρ = 0.05, δ = δ, γ = γ, F = F, u = u, u_prime = u_prime, f = f, c = c, c_ss = 0.0) +# bc: boundary conditions to be used for v +params = (ρ = 0.05, δ = δ, γ = γ, F = F, u = u, u_prime = u_prime, f = f, c = c, c_ss = 0.0, + bc = (Reflecting(), Reflecting())) ~~~~~~~~~~~~~ @@ -185,7 +187,7 @@ settings = (ks = ks, ### Optimal plan solver ~~~~{.julia} function compute_optimal_plans(params, settings) - @unpack ρ, δ, γ, F, u, u_prime, f, c, c_ss = params + @unpack ρ, δ, γ, F, u, u_prime, f, c, c_ss, bc = params @unpack ks, Δv, vs0, maxit, threshold, verbose = settings P = length(ks) # size of grids @@ -199,10 +201,8 @@ function compute_optimal_plans(params, settings) # begin iterations for n in 1:maxit - # compute derivatives by FD and BD - dv = diff(vs) ./ Δk - dv_f = [dv; dv[end]] # forward difference - dv_b = [dv[1]; dv] # backward difference + dv_f = L₁₊(ks, bc) * vs # v' by forward difference + dv_b = L₁₋(ks, bc) * vs # v' by backward difference # define the corresponding drifts drift_f = f.(ks, c.(dv_f)) @@ -217,7 +217,7 @@ function compute_optimal_plans(params, settings) I_b = drift_b .< 0.0 I_0 = 1 .- I_f-I_b - dv_upwind = dv_f.*I_f + dv_b.*I_b + dv_upwind = dv_f.*I_f + dv_b.*I_b cs_upwind = c.(dv_upwind) cs_0 = f.(ks, 0.0) # this gives consumption when the state is zero cs = cs_upwind.*I_f + cs_upwind.*I_b + cs_0.*I_0; @@ -262,12 +262,12 @@ compute_optimal_plans (generic function with 1 method) ## Solve ~~~~{.julia} -vs, cs, vs_history = @btime compute_optimal_plans(params, settings) +vs, cs, vs_history = @btime compute_optimal_plans(params, settings); ~~~~~~~~~~~~~ ~~~~ -94.015 ms (3581357 allocations: 87.49 MiB) +97.029 ms (3581133 allocations: 94.81 MiB) ~~~~ From 78c1320ec3c0a777b589c2059098757f6387df82 Mon Sep 17 00:00:00 2001 From: Chiyoung Ahn Date: Mon, 4 Mar 2019 14:47:00 -0800 Subject: [PATCH 5/8] Clearer definitions for $s^+$ and $s^-$ --- .../tutorials/growth-hjb-implicit.jmd | 13 ++++++++----- .../tutorials/growth-hjb-implicit.md | 15 +++++++++------ 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/continuous_time_methods/tutorials/growth-hjb-implicit.jmd b/continuous_time_methods/tutorials/growth-hjb-implicit.jmd index e6d4363..b258e3b 100644 --- a/continuous_time_methods/tutorials/growth-hjb-implicit.jmd +++ b/continuous_time_methods/tutorials/growth-hjb-implicit.jmd @@ -44,7 +44,7 @@ i.e., $c = (u')^{-1} (v' (k))$ for each $k$ at optimal. ### Upwind scheme and discretization of $\nabla v$ Note that $v$ is concave in $k$ and the drift of state variables can be either positive or negative. Basic idea of upwind scheme: use forward difference when the drift of the state variable $f(x, \alpha)$ is positive, backward difference when it is negative. Let $v'_{i, B}$ and $v'_{i, F}$ be $v'$ computed from backward difference and forward difference respectively. -Define the followings: +Define the following variables that represent drifts computed from the forward-difference and backward-difference based derivative of `v` respectively: $$ s_{i,F} = F(k_i) - \delta k_i - (u')^{-1} (v'_{i,F}) \\ @@ -57,7 +57,7 @@ $$ \rho v_i = u(c_i) + \dfrac{v_{i+1} - v_i}{\Delta k} s^+_{i,F} + \dfrac{v_i - v_{i-1}}{\Delta k} s^-_{i, B} $$ -for each $i$. This can be written in a compact matrix form +for each $i$, where $s^+_{i,F} = \max (s_{i,F}, 0)$ and $s^-_{i,B} = \min (s_{i,B}, 0)$. This can be written in a compact matrix form $$ \rho {\mathbf{v}} = {\mathbf{u}} + {\mathbf{A}}({\mathbf{v}}) {\mathbf{v}} @@ -187,15 +187,18 @@ function compute_optimal_plans(params, settings) drift_b[1] = 0.0 # compute consumptions and corresponding u(v) + ## indicator -- check which direction to be used I_f = drift_f .> 0.0 I_b = drift_b .< 0.0 - I_0 = 1 .- I_f-I_b - + I_0 = 1 .- I_f - I_b + ## find v' according to the optimal plan dv_upwind = dv_f.*I_f + dv_b.*I_b + ## find c according to v' by the optimal plan cs_upwind = c.(dv_upwind) cs_0 = f.(ks, 0.0) # this gives consumption when the state is zero cs = cs_upwind.*I_f + cs_upwind.*I_b + cs_0.*I_0; - + + # compute utility according to the optimal consumption plan us = u.(cs) # define the matrix A diff --git a/continuous_time_methods/tutorials/growth-hjb-implicit.md b/continuous_time_methods/tutorials/growth-hjb-implicit.md index 34546b9..fc18de6 100644 --- a/continuous_time_methods/tutorials/growth-hjb-implicit.md +++ b/continuous_time_methods/tutorials/growth-hjb-implicit.md @@ -48,7 +48,7 @@ i.e., $c = (u')^{-1} (v' (k))$ for each $k$ at optimal. ### Upwind scheme and discretization of $\nabla v$ Note that $v$ is concave in $k$ and the drift of state variables can be either positive or negative. Basic idea of upwind scheme: use forward difference when the drift of the state variable $f(x, \alpha)$ is positive, backward difference when it is negative. Let $v'_{i, B}$ and $v'_{i, F}$ be $v'$ computed from backward difference and forward difference respectively. -Define the followings: +Define the following variables that represent drifts computed from the forward-difference and backward-difference based derivative of `v` respectively: $$ s_{i,F} = F(k_i) - \delta k_i - (u')^{-1} (v'_{i,F}) \\ @@ -61,7 +61,7 @@ $$ \rho v_i = u(c_i) + \dfrac{v_{i+1} - v_i}{\Delta k} s^+_{i,F} + \dfrac{v_i - v_{i-1}}{\Delta k} s^-_{i, B} $$ -for each $i$. This can be written in a compact matrix form +for each $i$, where $s^+_{i,F} = \max (s_{i,F}, 0)$ and $s^-_{i,B} = \min (s_{i,B}, 0)$. This can be written in a compact matrix form $$ \rho {\mathbf{v}} = {\mathbf{u}} + {\mathbf{A}}({\mathbf{v}}) {\mathbf{v}} @@ -213,15 +213,18 @@ function compute_optimal_plans(params, settings) drift_b[1] = 0.0 # compute consumptions and corresponding u(v) + ## indicator -- check which direction to be used I_f = drift_f .> 0.0 I_b = drift_b .< 0.0 - I_0 = 1 .- I_f-I_b - + I_0 = 1 .- I_f - I_b + ## find v' according to the optimal plan dv_upwind = dv_f.*I_f + dv_b.*I_b + ## find c according to v' by the optimal plan cs_upwind = c.(dv_upwind) cs_0 = f.(ks, 0.0) # this gives consumption when the state is zero cs = cs_upwind.*I_f + cs_upwind.*I_b + cs_0.*I_0; - + + # compute utility according to the optimal consumption plan us = u.(cs) # define the matrix A @@ -267,7 +270,7 @@ vs, cs, vs_history = @btime compute_optimal_plans(params, settings); ~~~~ -97.029 ms (3581133 allocations: 94.81 MiB) +96.406 ms (3581133 allocations: 94.81 MiB) ~~~~ From feaf034bbd353707d01700dce02204183761a9c3 Mon Sep 17 00:00:00 2001 From: Chiyoung Ahn Date: Mon, 4 Mar 2019 15:15:46 -0800 Subject: [PATCH 6/8] Use differential operators from SDO instead --- .../tutorials/growth-hjb-implicit.jmd | 14 ++++---------- .../tutorials/growth-hjb-implicit.md | 8 ++------ 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/continuous_time_methods/tutorials/growth-hjb-implicit.jmd b/continuous_time_methods/tutorials/growth-hjb-implicit.jmd index b258e3b..293fe53 100644 --- a/continuous_time_methods/tutorials/growth-hjb-implicit.jmd +++ b/continuous_time_methods/tutorials/growth-hjb-implicit.jmd @@ -63,15 +63,13 @@ $$ \rho {\mathbf{v}} = {\mathbf{u}} + {\mathbf{A}}({\mathbf{v}}) {\mathbf{v}} $$ -such that the $i$th row of ${\mathbf{A}}({\mathbf{v}})$ is defined as +such that ${\mathbf{A}}({\mathbf{v}})$ is defined as $$ -\begin{bmatrix} -0 & \cdots & 0 & - \dfrac{s^-_{i,B}}{\Delta k} & \dfrac{s^-_{i,B}}{\Delta k} - \dfrac{s^-_{i,F}}{\Delta k} & \dfrac{s^-_{i,F}}{\Delta k} & 0 & \cdots & 0 -\end{bmatrix} +\mathrm{diag} (s^+_{F}) \mathbf{L_{1+}} + \mathrm{diag} (s^-_{B}) \mathbf{L_{1-}} $$ -where the non-zero elements above are located in $i-1, i, i+1$th columns respectively. +where $L_{1+}$ and $L_{1-}$ are discretized differential operators for forward-difference and backward-difference first order derivatives, and $s^+_{F}$ and $s^-_{B}$ are vectors whose $i$th elements are $s^+_{i,F}$ and $s^-_{i,B}$, respectively. ### Discretization of $u(c)$ One thing left to find is ${\mathbf{u}}$ at optimal consumption plan $c$. @@ -202,11 +200,7 @@ function compute_optimal_plans(params, settings) us = u.(cs) # define the matrix A - drift_f_upwind = max.(drift_f, 0.0) ./ Δk - drift_b_upwind = min.(drift_b, 0.0) ./ Δk - A = LinearAlgebra.Tridiagonal(-drift_b_upwind[2:P], - (-drift_f_upwind + drift_b_upwind), - drift_f_upwind[1:(P-1)]) + A = Tridiagonal(max.(drift_f, 0.0) .* L₁₊(ks, bc) + min.(drift_b, 0.0) .* L₁₋(ks, bc)) # solve the corresponding system to get vs_{n+1} vs_new = (Diagonal(fill((ρ + 1/Δv), P)) - A) \ (us + vs / Δv) diff --git a/continuous_time_methods/tutorials/growth-hjb-implicit.md b/continuous_time_methods/tutorials/growth-hjb-implicit.md index fc18de6..7ff57cc 100644 --- a/continuous_time_methods/tutorials/growth-hjb-implicit.md +++ b/continuous_time_methods/tutorials/growth-hjb-implicit.md @@ -228,11 +228,7 @@ function compute_optimal_plans(params, settings) us = u.(cs) # define the matrix A - drift_f_upwind = max.(drift_f, 0.0) ./ Δk - drift_b_upwind = min.(drift_b, 0.0) ./ Δk - A = LinearAlgebra.Tridiagonal(-drift_b_upwind[2:P], - (-drift_f_upwind + drift_b_upwind), - drift_f_upwind[1:(P-1)]) + A = Tridiagonal(max.(drift_f, 0.0) .* L₁₊(ks, bc) + min.(drift_b, 0.0) .* L₁₋(ks, bc)) # solve the corresponding system to get vs_{n+1} vs_new = (Diagonal(fill((ρ + 1/Δv), P)) - A) \ (us + vs / Δv) @@ -270,7 +266,7 @@ vs, cs, vs_history = @btime compute_optimal_plans(params, settings); ~~~~ -96.406 ms (3581133 allocations: 94.81 MiB) +11.608 s (3581341 allocations: 17.98 GiB) ~~~~ From e1413ab81bfbc9c90ef5f0869cac48b144510e3f Mon Sep 17 00:00:00 2001 From: Chiyoung Ahn Date: Mon, 4 Mar 2019 15:37:45 -0800 Subject: [PATCH 7/8] Update description for `A` in markdown as well --- continuous_time_methods/tutorials/growth-hjb-implicit.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/continuous_time_methods/tutorials/growth-hjb-implicit.md b/continuous_time_methods/tutorials/growth-hjb-implicit.md index 7ff57cc..7194222 100644 --- a/continuous_time_methods/tutorials/growth-hjb-implicit.md +++ b/continuous_time_methods/tutorials/growth-hjb-implicit.md @@ -67,15 +67,13 @@ $$ \rho {\mathbf{v}} = {\mathbf{u}} + {\mathbf{A}}({\mathbf{v}}) {\mathbf{v}} $$ -such that the $i$th row of ${\mathbf{A}}({\mathbf{v}})$ is defined as +such that ${\mathbf{A}}({\mathbf{v}})$ is defined as $$ -\begin{bmatrix} -0 & \cdots & 0 & - \dfrac{s^-_{i,B}}{\Delta k} & \dfrac{s^-_{i,B}}{\Delta k} - \dfrac{s^-_{i,F}}{\Delta k} & \dfrac{s^-_{i,F}}{\Delta k} & 0 & \cdots & 0 -\end{bmatrix} +\mathrm{diag} (s^+_{F}) \mathbf{L_{1+}} + \mathrm{diag} (s^-_{B}) \mathbf{L_{1-}} $$ -where the non-zero elements above are located in $i-1, i, i+1$th columns respectively. +where $L_{1+}$ and $L_{1-}$ are discretized differential operators for forward-difference and backward-difference first order derivatives, and $s^+_{F}$ and $s^-_{B}$ are vectors whose $i$th elements are $s^+_{i,F}$ and $s^-_{i,B}$, respectively. ### Discretization of $u(c)$ One thing left to find is ${\mathbf{u}}$ at optimal consumption plan $c$. From cfef06b95cc6f233c0895865d86a614d53703ba1 Mon Sep 17 00:00:00 2001 From: Chiyoung Ahn Date: Mon, 4 Mar 2019 15:38:05 -0800 Subject: [PATCH 8/8] Cache operators --- .../tutorials/growth-hjb-implicit.jmd | 7 ++++--- continuous_time_methods/tutorials/growth-hjb-implicit.md | 9 +++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/continuous_time_methods/tutorials/growth-hjb-implicit.jmd b/continuous_time_methods/tutorials/growth-hjb-implicit.jmd index 293fe53..0b0d9bf 100644 --- a/continuous_time_methods/tutorials/growth-hjb-implicit.jmd +++ b/continuous_time_methods/tutorials/growth-hjb-implicit.jmd @@ -170,11 +170,12 @@ function compute_optimal_plans(params, settings) vs_history = zeros(P, maxit) # save control (consumption) plan as well cs = zeros(P) + ops = (L₁₊ = L₁₊(ks, bc), L₁₋ = L₁₋(ks, bc)) # begin iterations for n in 1:maxit - dv_f = L₁₊(ks, bc) * vs # v' by forward difference - dv_b = L₁₋(ks, bc) * vs # v' by backward difference + dv_f = ops.L₁₊ * vs # v' by forward difference + dv_b = ops.L₁₋ * vs # v' by backward difference # define the corresponding drifts drift_f = f.(ks, c.(dv_f)) @@ -200,7 +201,7 @@ function compute_optimal_plans(params, settings) us = u.(cs) # define the matrix A - A = Tridiagonal(max.(drift_f, 0.0) .* L₁₊(ks, bc) + min.(drift_b, 0.0) .* L₁₋(ks, bc)) + A = Tridiagonal(Diagonal(max.(drift_f, 0.0)) * ops.L₁₊ + Diagonal(min.(drift_b, 0.0)) * ops.L₁₋) # solve the corresponding system to get vs_{n+1} vs_new = (Diagonal(fill((ρ + 1/Δv), P)) - A) \ (us + vs / Δv) diff --git a/continuous_time_methods/tutorials/growth-hjb-implicit.md b/continuous_time_methods/tutorials/growth-hjb-implicit.md index 7194222..311e8f9 100644 --- a/continuous_time_methods/tutorials/growth-hjb-implicit.md +++ b/continuous_time_methods/tutorials/growth-hjb-implicit.md @@ -196,11 +196,12 @@ function compute_optimal_plans(params, settings) vs_history = zeros(P, maxit) # save control (consumption) plan as well cs = zeros(P) + ops = (L₁₊ = L₁₊(ks, bc), L₁₋ = L₁₋(ks, bc)) # begin iterations for n in 1:maxit - dv_f = L₁₊(ks, bc) * vs # v' by forward difference - dv_b = L₁₋(ks, bc) * vs # v' by backward difference + dv_f = ops.L₁₊ * vs # v' by forward difference + dv_b = ops.L₁₋ * vs # v' by backward difference # define the corresponding drifts drift_f = f.(ks, c.(dv_f)) @@ -226,7 +227,7 @@ function compute_optimal_plans(params, settings) us = u.(cs) # define the matrix A - A = Tridiagonal(max.(drift_f, 0.0) .* L₁₊(ks, bc) + min.(drift_b, 0.0) .* L₁₋(ks, bc)) + A = Tridiagonal(Diagonal(max.(drift_f, 0.0)) * ops.L₁₊ + Diagonal(min.(drift_b, 0.0)) * ops.L₁₋) # solve the corresponding system to get vs_{n+1} vs_new = (Diagonal(fill((ρ + 1/Δv), P)) - A) \ (us + vs / Δv) @@ -264,7 +265,7 @@ vs, cs, vs_history = @btime compute_optimal_plans(params, settings); ~~~~ -11.608 s (3581341 allocations: 17.98 GiB) +13.055 s (3582371 allocations: 120.63 MiB) ~~~~