def bellman_operator(self, J):
"""
Evaluates the value function for a given continuation value
function; that is, evaluates
J(p) = min(pL0, (1-p)L1, c + E[J(p')])
Uses linear interpolation between points
"""
payoff_choose_f0 = self.payoff_choose_f0
payoff_choose_f1 = self.payoff_choose_f1
payoff_continue = self.payoff_continue
c, L0, L1, f0, f1 = self.c, self.L0, self.L1, self.f0, self.f1
m, pgrid = self.m, self.pgrid
J_out = np.empty(m)
J_interp = interp.UnivariateSpline(pgrid, J, k=1, ext=0)
for (p_ind, p) in enumerate(pgrid):
# Payoff of choosing model 0
p_c_0 = payoff_choose_f0(p)
p_c_1 = payoff_choose_f1(p)
p_con = payoff_continue(p, J_interp)
J_out[p_ind] = min(p_c_0, p_c_1, p_con)
return J_out
评论列表
文章目录