Exit gracefully if Newton solver fails (added try/catch block).

time-shift
Stéphane Adjemian (Charybdis) 2020-02-19 14:39:02 +01:00
parent bcfa574462
commit 0f23f88700
Signed by: stepan
GPG Key ID: 295C1FE89E17EB3C
1 changed files with 10 additions and 4 deletions

View File

@ -48,10 +48,16 @@ end
for it = initialconditions.nobs+(1:samplesize)
ylag = DynareOutput.endo_simul(iy1,it-1); % Set lagged variables.
y = DynareOutput.endo_simul(:,it-1); % A good guess for the initial conditions is the previous values for the endogenous variables.
[DynareOutput.endo_simul(:,it), info, fvec] = dynare_solve(model_dynamic_s, ...
y, DynareOptions, model_dynamic, ylag, DynareOutput.exo_simul, DynareModel.params, DynareOutput.steady_state, it);
if info
error('Newton failed!')
try
[DynareOutput.endo_simul(:,it), info] = dynare_solve(model_dynamic_s, ...
y, DynareOptions, model_dynamic, ylag, DynareOutput.exo_simul, DynareModel.params, DynareOutput.steady_state, it);
if info
error('Newton failed!')
end
catch
dprintf('Newton failed on iteration i = %s.', num2str(it-initialconditions.nobs));
DynareOutput.endo_simul(:, 1:it-1);
break
end
end