Fixed bug in (Stochastic) Extended Path algorithm.

Innovations were not correctly passed to the non linear solver. Closes #1128.
time-shift
Stéphane Adjemian(Charybdis) 2016-03-31 14:21:21 +02:00 committed by Stéphane Adjemian (Charybdis)
parent 6dcfd1c072
commit d74f315bfb
1 changed files with 14 additions and 20 deletions

View File

@ -196,15 +196,11 @@ DynareResults.exo_simul = shocks;
% Initializes some variables.
t = 1;
tsimul = 1;
for k = 1:replic_nbr
results{k} = zeros(endo_nbr,sample_size+1);
results{k}(:,1) = initial_conditions;
end
exo_simul_ = zeros(maximum_lag+sample_size+maximum_lead,exo_nbr);
exo_simul_(1:size(DynareResults.exo_simul,1),1:size(DynareResults.exo_simul,2)) = DynareResults.exo_simul;
% Main loop.
while (t <= sample_size)
if ~mod(t,10)
@ -216,26 +212,24 @@ while (t <= sample_size)
if replic_nbr > 1 && ep.parallel_1
parfor k = 1:replic_nbr
exo_simul = repmat(DynareResults.exo_steady_state',periods+2,1);
exo_simul(2,:) = exo_simul_(DynareModel.maximum_lag+t,:) + shocks((t-2)*replic_nbr+k,:);
initial_conditions = results{k}(:,t-1);
[results{k}(:,t), info_convergence] = extended_path_core(ep.periods,endo_nbr,exo_nbr,positive_var_indx, ...
exo_simul,ep.init,initial_conditions,...
maximum_lag,maximum_lead,steady_state, ...
ep.verbosity,bytecode_flag,ep.stochastic.order,...
DynareModel.params,pfm,ep.stochastic.algo,ep.solve_algo,ep.stack_solve_algo,...
DynareOptions.lmmcp,DynareOptions,DynareResults);
exo_simul(2,:) = shocks((t-2)*replic_nbr+k,:);
[results{k}(:,t), info_convergence] = extended_path_core(ep.periods, endo_nbr, exo_nbr, positive_var_indx, ...
exo_simul, ep.init, results{k}(:,t-1),...
maximum_lag, maximum_lead, steady_state, ...
ep.verbosity, bytecode_flag, ep.stochastic.order, ...
DynareModel.params, pfm,ep.stochastic.algo, ep.solve_algo, ep.stack_solve_algo, ...
DynareOptions.lmmcp, DynareOptions, DynareResults);
end
else
for k = 1:replic_nbr
exo_simul = repmat(DynareResults.exo_steady_state',periods+maximum_lag+ maximum_lead,1);
exo_simul(maximum_lag+1,:) = exo_simul_(maximum_lag+t,:) + shocks((t-2)*replic_nbr+k,:);
initial_conditions = results{k}(:,t-1);
[results{k}(:,t), info_convergence] = extended_path_core(ep.periods,endo_nbr,exo_nbr,positive_var_indx, ...
exo_simul,ep.init,initial_conditions,...
maximum_lag,maximum_lead,steady_state, ...
ep.verbosity,bytecode_flag,ep.stochastic.order,...
DynareModel,pfm,ep.stochastic.algo,ep.solve_algo,ep.stack_solve_algo,...
DynareOptions.lmmcp,DynareOptions,DynareResults);
exo_simul(maximum_lag+1,:) = shocks((t-2)*replic_nbr+k,:);
[results{k}(:,t), info_convergence] = extended_path_core(ep.periods, endo_nbr, exo_nbr, positive_var_indx, ...
exo_simul, ep.init, results{k}(:,t-1),...
maximum_lag, maximum_lead, steady_state, ...
ep.verbosity, bytecode_flag, ep.stochastic.order,...
DynareModel, pfm,ep.stochastic.algo, ep.solve_algo, ep.stack_solve_algo,...
DynareOptions.lmmcp, DynareOptions, DynareResults);
end
end
if verbosity