Fixed bug in (Stochastic) Extended Path algorithm.
Innovations were not correctly passed to the non linear solver. Closes #1128.time-shift
parent
6dcfd1c072
commit
d74f315bfb
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue