diff --git a/matlab/global_initialization.m b/matlab/global_initialization.m index dec79b27b53c966047910f36744bdbe335c3fc71..36a0ccf9fd04ecc9f159cd56c03bbd29bbca18b4 100644 --- a/matlab/global_initialization.m +++ b/matlab/global_initialization.m @@ -639,8 +639,7 @@ options_.endogenous_prior_restrictions.irf={}; options_.endogenous_prior_restrictions.moment={}; % OSR Optimal Simple Rules -options_.osr.tolf=1e-7; -options_.osr.maxit=1000; +options_.osr.opt_algo=4; % use GPU options_.gpu = 0; diff --git a/matlab/osr1.m b/matlab/osr1.m index eb23312ffe499556b3bcd583a7014db3e1a6a8a2..a96c618fb38fb24d7bf30ce52e02d3c1735b5227 100644 --- a/matlab/osr1.m +++ b/matlab/osr1.m @@ -73,9 +73,6 @@ t0 = M_.params(i_params); inv_order_var = oo_.dr.inv_order_var; -H0 = 1e-4*eye(np); -crit=options_.osr.tolf; -nit=options_.osr.maxit; %extract unique entries of covariance i_var=unique(i_var); @@ -93,20 +90,25 @@ if isinf(loss) error('OSR: Initial likelihood is infinite') end + +if isequal(options_.osr.opt_algo,5) + error('OSR: OSR does not support opt_algo=5.') +elseif isequal(options_.osr.opt_algo,6) + error('OSR: OSR does not support opt_algo=6.') +elseif isequal(options_.osr.opt_algo,10) + error('OSR: OSR does not support opt_algo=10.') +else %%do actual optimization -[f,p]=csminwel1('osr_obj',t0,H0,[],crit,nit,options_.gradient_method,options_.gradient_epsilon,i_params,... +[p, f, exitflag] = dynare_minimize_objective(str2func('osr_obj'),t0,options_.osr.opt_algo,options_,[],cellstr(M_.param_names(i_params,:)),[],[], i_params,... inv_order_var(i_var),weights(i_var,i_var)); +end + osr_res.objective_function = f; M_.params(i_params)=p; %make sure optimal parameters are set (and not the last draw used in csminwel) for i=1:length(i_params) osr_res.optim_params.(deblank(M_.param_names(i_params(i),:))) = p(i); end -% options = optimset('fminunc'); -% options = optimset('display','iter'); -% [p,f]=fminunc(@osr_obj,t0,options,i_params,... -% inv_order_var(i_var),weights(i_var,i_var)); - skipline() disp('OPTIMAL VALUE OF THE PARAMETERS:') skipline()