Clean up evaluate_planner_objective.m

time-shift
Johannes Pfeifer 2015-08-30 11:16:26 +02:00
parent c66ee8941a
commit 9d90a204f7
1 changed files with 4 additions and 15 deletions

View File

@ -11,7 +11,7 @@ function planner_objective_value = evaluate_planner_objective(M,options,oo)
% SPECIAL REQUIREMENTS
% none
% Copyright (C) 2007-2012 Dynare Team
% Copyright (C) 2007-2015 Dynare Team
%
% This file is part of Dynare.
%
@ -29,19 +29,10 @@ function planner_objective_value = evaluate_planner_objective(M,options,oo)
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
dr = oo.dr;
endo_nbr = M.endo_nbr;
exo_nbr = M.exo_nbr;
nstatic = M.nstatic;
nspred = M.nspred;
lead_lag_incidence = M.lead_lag_incidence;
beta = get_optimal_policy_discount_factor(M.params,M.param_names);
if options.ramsey_policy
i_org = (1:M.orig_endo_nbr)';
else
i_org = (1:M.endo_nbr)';
end
ipred = find(lead_lag_incidence(M.maximum_lag,:))';
order_var = dr.order_var;
Gy = dr.ghx(nstatic+(1:nspred),:);
Gu = dr.ghu(nstatic+(1:nspred),:);
@ -51,11 +42,9 @@ gu(dr.order_var,:) = dr.ghu;
ys = oo.dr.ys;
u = oo.exo_simul(1,:)';
[U,Uy,Uyy] = feval([M.fname '_objective_static'],ys,zeros(1,exo_nbr), ...
M.params);
%second order terms
Uyy = full(Uyy);
[Uyygygy, err] = A_times_B_kronecker_C(Uyy,gy,gy,options.threads.kronecker.A_times_B_kronecker_C);
@ -65,7 +54,7 @@ mexErrCheck('A_times_B_kronecker_C', err);
[Uyygygu, err] = A_times_B_kronecker_C(Uyy,gy,gu,options.threads.kronecker.A_times_B_kronecker_C);
mexErrCheck('A_times_B_kronecker_C', err);
Wbar =U/(1-beta);
Wbar =U/(1-beta); %steady state welfare
Wy = Uy*gy/(eye(nspred)-beta*Gy);
Wu = Uy*gu+beta*Wy*Gu;
Wyy = Uyygygy/(eye(nspred*nspred)-beta*kron(Gy,Gy));
@ -75,7 +64,7 @@ mexErrCheck('A_times_B_kronecker_C', err);
mexErrCheck('A_times_B_kronecker_C', err);
Wuu = Uyygugu+beta*Wyygugu;
Wyu = Uyygygu+beta*Wyygygu;
Wss = beta*Wuu*M.Sigma_e(:)/(1-beta);
Wss = beta*Wuu*M.Sigma_e(:)/(1-beta); % at period 0, we are in steady state, so the deviation term only starts in period 1, thus the beta in front
% initialize yhat1 at the steady state
yhat1 = oo.steady_state;