You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
2.0 KiB
Plaintext
54 lines
2.0 KiB
Plaintext
# psuedo code to solve for euler equations with neural networks
|
|
|
|
/*
|
|
# bellman with policy function
|
|
|
|
Vt(Θ) = F(Θ,x(Θ)) + β Vtt(G(Θ,x(Θ)))
|
|
where x() maximizes the standard bellman
|
|
a-g(Θ,x) < 0
|
|
|
|
## Setting up the euler equation
|
|
|
|
### Stationarity (optimality) Conditions
|
|
0 =set= ∇Vt wrt x() - λ
|
|
- Implies definition of ∇Vtt wrt G() in terms of x(), λ, and Θ
|
|
#### Complementary Slackness Conditions
|
|
λ * (a-g()) = 0 and one of the terms is greater than zero.
|
|
- There is a continuous, roughly parabolic alternative
|
|
to this condition called the Fisher-Burmeister function.
|
|
|
|
### Envelope Conditions
|
|
∇Vt wrt Θ = ∇F wrt Θ + β ∇Vtt wrt G X ∇G wrt Θ
|
|
- This defines ∇Vtt wrt G in terms of Θ,x,∇F, and ∇Vt wrt Θ
|
|
which we call the time-transition function.
|
|
- It turns out to be an affine problem
|
|
- There are invertibility conditions that are important to be aware of.
|
|
*/
|
|
|
|
|
|
// Setup envelope conditions
|
|
// Set up laws of motion
|
|
// Recursive definition of time-transition function.
|
|
|
|
// Increment optimality/stationarity conditions
|
|
// Substitute time-transition function as needed into stationarity conditions
|
|
|
|
// Choose the set of transitioned, stationarity conditions you will be using
|
|
// Set them into a vector of conditions.
|
|
// Now you should have a vector function in terms of Θ, x(), and maybe ∇Vtt.
|
|
// Make sure to add the complementary slackness conditions
|
|
|
|
// Set up loss functions
|
|
// The most basic is the l_2 metric on the vector.
|
|
// It may be worth making a penalized loss function, but you do you.
|
|
|
|
// Generate your initial neural network
|
|
// If you didn't solve out ∇Vtt, generate that as a neural network.
|
|
// Honestly though, you should probably just solve it out.
|
|
|
|
// Substitute the neural network into the loss function
|
|
// Generate a variety of states.
|
|
// Start using some gradient descent to train the model
|
|
|
|
// Notice some error you made, and start over again (do you want to account for asymmetry in the utility functions?)
|