diff --git a/matlab/evaluate_steady_state.m b/matlab/evaluate_steady_state.m index 3e73c3c57098beac6f611ffed2aa3f2068a5ebca..c979e0d9c6fec136b3ffda1fe0f677f2bba16459 100644 --- a/matlab/evaluate_steady_state.m +++ b/matlab/evaluate_steady_state.m @@ -81,7 +81,8 @@ function [ys,params,info] = evaluate_steady_state(ys_init,M,options,oo,steadysta end else % block or bytecode - [ys,check] = dynare_solve_block_or_bytecode(ys_init,exo_ss, params, options, M); + [ys,check] = dynare_solve_block_or_bytecode(ys_init,exo_ss, params, ... + options, M); end if check diff --git a/matlab/homotopy1.m b/matlab/homotopy1.m index f0913b86bb3bd0ff9f219c257f245f9b2d29bf23..30e8ef13785f6e9aaff0d36cd3607ba558d87fde 100644 --- a/matlab/homotopy1.m +++ b/matlab/homotopy1.m @@ -77,5 +77,12 @@ for i=1:step_nbr+1 oo_.exo_steady_state(values(ix,2)) = points(ix,i); oo_.exo_det_steady_state(values(ixd,2)) = points(ixd,i); - oo_.steady_state = steady_(M_,options_,oo_); + [steady_state,M_.params,info] = steady_(M_,options_,oo_); + if info(1) == 0 + % if homotopy step is not successful, current values of steady + % state are not modified + oo_.steady_state = steady_state; + else + break + end end diff --git a/matlab/steady.m b/matlab/steady.m index 8f3a72fa7a9a525d8722fa6ebe89f501f7f072eb..67c49b53c7f83edd162f6080fb7e0b4c5042ad0d 100644 --- a/matlab/steady.m +++ b/matlab/steady.m @@ -53,12 +53,16 @@ switch options_.homotopy_mode homotopy3(options_.homotopy_values, options_.homotopy_steps); end -[oo_.steady_state,M_.params,info] = steady_(M_,options_,oo_); +[steady_state,M_.params,info] = steady_(M_,options_,oo_); -if info(1) && options_.steady.stop_on_error +if info(1) == 0 + oo_.steady_state = steady_state; + disp_steady_state(M_,oo_); +elseif options_.steady.stop_on_error print_info(info,options_.noprint); +else + disp(['Warning: steady state could not be computed but steady.stop_on_error ' ... + '== 0, so I continue']) end -disp_steady_state(M_,oo_); - M_.Sigma_e = Sigma_e; diff --git a/preprocessor/DynareBison.yy b/preprocessor/DynareBison.yy index 39878f99ecd0182ed549483f836e6ed8a634f026..a246d5c3963cff2ffc4767641364558617314e0d 100644 --- a/preprocessor/DynareBison.yy +++ b/preprocessor/DynareBison.yy @@ -2502,7 +2502,7 @@ o_median : MEDIAN { driver.option_num("ms.median","1"); } o_regimes : REGIMES { driver.option_num("ms.regimes","1"); }; o_regime : REGIME EQUAL INT_NUMBER { driver.option_num("ms.regime",$3); }; o_data_obs_nbr : DATA_OBS_NBR EQUAL INT_NUMBER { driver.option_num("ms.forecast_data_obs",$3); }; -o_stop_on_error: STOP_ON_ERROR EQUAL INT_NUMBER { driver.option_num("steady.stop_on_eror",$3); }; +o_stop_on_error: STOP_ON_ERROR EQUAL INT_NUMBER { driver.option_num("steady.stop_on_error",$3); }; o_discretionary_tol: DISCRETIONARY_TOL EQUAL non_negative_number { driver.option_num("discretionary_tol",$3); }; range : symbol ':' symbol