Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document specific dynamic programming strategies used #483

Closed
sbenthall opened this issue Jan 31, 2020 · 11 comments
Closed

Document specific dynamic programming strategies used #483

sbenthall opened this issue Jan 31, 2020 · 11 comments
Assignees
Milestone

Comments

@sbenthall
Copy link
Contributor

HARK advertises that it solves the economic models it builds using dynamic programming.

For users with more general CS background, it would be most helpful to document the functionality of HARK in terms of more generic kinds of problems and algorithms.

It's taken me quite some time to realize that all the AgentType models are variations on a Markov Decision Process (MDP). This can be stated more directly in the documentation.

For a computer scientist, the next question would be, "What algorithms are you using to solve this MDP?" The answer is "dynamic programming". But there are several different dynamic programming algorithms for solving MDPs. For reference, see Netos' textbook, section 2.2:
http://users.isr.ist.utl.pt/~mtjspaan/readingGroup/learningNeto05.pdf

DP methods for solving MDP's include:

  • Value iteration
  • Policy iteration
  • Generalized policy iteration?

Which are HARK using? And when?

@llorracc
Copy link
Collaborator

llorracc commented Jan 31, 2020 via email

@sbenthall
Copy link
Contributor Author

I feel like there are some split hairs here. I think I see what you're saying though:

  • HARK.core tries to provide a generic setup for problems. This has to be extended with solution algorithms, the solve() method.
  • Some problems have already been solved in HARK.ConsumptionSaving. These have been solved with policy function iteration, for the reason you say.

It sounds like for a HARK 2.0, it would be ideal if the HARK core provided even more generic utilities, like a generic framework for policy iteration and value iteration.

That way, it would be even easier to write new solutions.

@llorracc
Copy link
Collaborator

llorracc commented Feb 1, 2020 via email

@sbenthall
Copy link
Contributor Author

These are my notes on the 2.0 plan so far.

https://github.com/econ-ark/HARK/wiki/Towards-2.0

@sbenthall
Copy link
Contributor Author

This is some interesting work on generic solution algorithms for continuous MDP's.
http://cs.brown.edu/~mlittman/theses/weinstein.pdf

@sbenthall
Copy link
Contributor Author

This work by Feng et a. 2004 discusses dynamic programming algorithms for continuous MDPs:
https://arxiv.org/pdf/1207.4115.pdf

@sbenthall
Copy link
Contributor Author

My understanding is that HARK and Dolo both solve the continuous MDP problem through discretization.

A general description of discretization for solving these kinds of problems is here:
https://people.eecs.berkeley.edu/~pabbeel/cs287-fa11/slides/discretization-of-continuous-state-space-MDPs.pdf

I wonder what language would best describe the particular discretization techniques used in HARK, and for which models, and how to standardize the inclusion of this language in the documentation.

@sbenthall
Copy link
Contributor Author

Interpolation is a key step here.

@sbenthall
Copy link
Contributor Author

@sbenthall
Copy link
Contributor Author

Here is the best account of the methods Chris has found useful for optimization problems:

http://www.econ2.jhu.edu/people/ccarroll/SolvingMicroDSOPs/

@sbenthall sbenthall self-assigned this Feb 6, 2020
@sbenthall
Copy link
Contributor Author

See #362 -- this can go in the engineering "Journey"

@sbenthall sbenthall added this to the 1.0.0 milestone Mar 12, 2020
@MridulS MridulS closed this as completed Aug 24, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants