def update_solution_terminal(self): """ Update the terminal period solution. This method should be run when a new AgentType is created or when CRRA changes. """ self.solution_terminal_cs = ConsumerSolution( cFunc=self.cFunc_terminal_, vFunc=ValueFuncCRRA(self.cFunc_terminal_, self.CRRA), vPfunc=MargValueFuncCRRA(self.cFunc_terminal_, self.CRRA), vPPfunc=MargMargValueFuncCRRA(self.cFunc_terminal_, self.CRRA), mNrmMin=0.0, hNrm=0.0, MPCmin=1.0, MPCmax=1.0, )
def add_vPPfunc(self, solution): """ Adds the marginal marginal value function to an existing solution, so that the next solver can evaluate vPP and thus use cubic interpolation. Parameters ---------- solution : ConsumerSolution The solution to this single period problem, which must include the consumption function. Returns ------- solution : ConsumerSolution The same solution passed as input, but with the marginal marginal value function for this period added as the attribute vPPfunc. """ vPPfuncNow = MargMargValueFuncCRRA(solution.cFunc, self.CRRA) solution.vPPfunc = vPPfuncNow return solution
def update_solution_terminal(self): """ Update the terminal period solution. This method should be run when a new AgentType is created or when CRRA changes. Parameters ---------- None Returns ------- None """ self.solution_terminal.vFunc = ValueFuncCRRA(self.cFunc_terminal_, self.CRRA) self.solution_terminal.vPfunc = MargValueFuncCRRA( self.cFunc_terminal_, self.CRRA) self.solution_terminal.vPPfunc = MargMargValueFuncCRRA( self.cFunc_terminal_, self.CRRA) self.solution_terminal.hNrm = 0.0 # Don't track normalized human wealth self.solution_terminal.hLvl = lambda p: np.zeros_like(p) # But do track absolute human wealth by persistent income self.solution_terminal.mLvlMin = lambda p: np.zeros_like(p)