From 8b4fa7c2d64e9e2d418b66a901e3bd94b4fda5ef Mon Sep 17 00:00:00 2001 From: Johannes Pfeifer Date: Wed, 12 Feb 2020 13:15:23 +0100 Subject: [PATCH] Factorize call to solver routines under optimal policy and without Related to https://git.dynare.org/Dynare/dynare/issues/1173 --- matlab/PosteriorIRF_core1.m | 6 +--- matlab/compute_decision_rules.m | 36 ++++++++++++++++++++++++ matlab/dynare_resolve.m | 6 +--- matlab/prior_posterior_statistics_core.m | 6 +--- matlab/selec_posterior_draws.m | 6 +--- 5 files changed, 40 insertions(+), 20 deletions(-) create mode 100644 matlab/compute_decision_rules.m diff --git a/matlab/PosteriorIRF_core1.m b/matlab/PosteriorIRF_core1.m index ffdbad005..6c021576f 100644 --- a/matlab/PosteriorIRF_core1.m +++ b/matlab/PosteriorIRF_core1.m @@ -145,11 +145,7 @@ while fpar. + +if options_.discretionary_policy + [dr,info,M_,options_,oo_] = discretionary_policy_1(options_.instruments,M_,options_,oo_); +else + [dr,info,M_,options_,oo_] = resol(0,M_,options_,oo_); +end diff --git a/matlab/dynare_resolve.m b/matlab/dynare_resolve.m index 8d5f1ea5c..6e4b5b217 100644 --- a/matlab/dynare_resolve.m +++ b/matlab/dynare_resolve.m @@ -66,11 +66,7 @@ function [A,B,ys,info,Model,DynareOptions,DynareResults] = dynare_resolve(Model, % You should have received a copy of the GNU General Public License % along with Dynare. If not, see . -if DynareOptions.discretionary_policy - [dr,info,Model,DynareOptions,DynareResults] = discretionary_policy_1(DynareOptions.instruments,Model,DynareOptions,DynareResults); -else - [dr,info,Model,DynareOptions,DynareResults] = resol(0,Model,DynareOptions,DynareResults); -end +[dr,info,Model,DynareOptions,DynareResults] =compute_decision_rules(Model,DynareOptions,DynareResults); if info(1) > 0 A = []; diff --git a/matlab/prior_posterior_statistics_core.m b/matlab/prior_posterior_statistics_core.m index d1677b4d6..5d74f2baa 100644 --- a/matlab/prior_posterior_statistics_core.m +++ b/matlab/prior_posterior_statistics_core.m @@ -203,11 +203,7 @@ for b=fpar:B M_ = set_all_parameters(deep,estim_params_,M_); if run_smoother - if options_.discretionary_policy - [dr,info,M_,options_,oo_] = discretionary_policy_1(options_.instruments,M_,options_,oo_); - else - [dr,info,M_,options_,oo_] = resol(0,M_,options_,oo_); - end + [dr,info,M_,options_,oo_] =compute_decision_rules(M_,options_,oo_); [alphahat,etahat,epsilonhat,alphatilde,SteadyState,trend_coeff,aK,~,~,P,~,~,trend_addition,state_uncertainty,M_,oo_,options_,bayestopt_] = ... DsgeSmoother(deep,gend,Y,data_index,missing_value,M_,oo_,options_,bayestopt_,estim_params_); diff --git a/matlab/selec_posterior_draws.m b/matlab/selec_posterior_draws.m index 57134bdee..11d9a4dad 100644 --- a/matlab/selec_posterior_draws.m +++ b/matlab/selec_posterior_draws.m @@ -115,11 +115,7 @@ if info pdraws(i,1) = {x2(SampleAddress(i,4),:)}; if info-1 set_parameters(pdraws{i,1}); - if options_.discretionary_policy - [dr,info,M_,options_,oo_] = discretionary_policy_1(options_.instruments,M_,options_,oo_); - else - [dr,info,M_,options_,oo_] = resol(0,M_,options_,oo_); - end + [dr,info,M_,options_,oo_] =compute_decision_rules(M_,options_,oo_); pdraws(i,2) = { dr }; end old_mhfile = mhfile;