From 86a083697ecd84cde12bb3833e537f09002cda55 Mon Sep 17 00:00:00 2001 From: Michel Juillard Date: Fri, 6 Dec 2013 18:34:32 +0100 Subject: [PATCH] osr: added optimal value of parameters to oo_.osr.optim_params; moved osr_example to ./tests/optimal_policy --- matlab/osr.m | 4 ++-- matlab/osr1.m | 7 +++++-- preprocessor/ComputingTasks.cc | 2 +- tests/Makefile.am | 2 +- tests/{ => optimal_policy}/osr_example.mod | 0 5 files changed, 9 insertions(+), 6 deletions(-) rename tests/{ => optimal_policy}/osr_example.mod (100%) diff --git a/matlab/osr.m b/matlab/osr.m index 325ab943b..59ecda15d 100644 --- a/matlab/osr.m +++ b/matlab/osr.m @@ -1,4 +1,4 @@ -function osr(var_list,params,i_var,W) +function osr_res = osr(var_list,params,i_var,W) % Copyright (C) 2001-2012 Dynare Team % @@ -37,6 +37,6 @@ end skipline() disp('OPTIMAL SIMPLE RULE') skipline() -osr1(i_params,i_var,W); +osr_res = osr1(i_params,i_var,W); stoch_simul(var_list); \ No newline at end of file diff --git a/matlab/osr1.m b/matlab/osr1.m index 385d0c095..c6a617b5b 100644 --- a/matlab/osr1.m +++ b/matlab/osr1.m @@ -1,4 +1,4 @@ -function osr1(i_params,i_var,weights) +function osr_res = osr1(i_params,i_var,weights) % Compute the Optimal Simple Rules % INPUTS % i_params vector index of optimizing parameters in M_.params @@ -68,7 +68,10 @@ end %%do actual optimization [f,p]=csminwel1('osr_obj',t0,H0,[],crit,nit,options_.gradient_method,options_.gradient_epsilon,i_params,... inv_order_var(i_var),weights(i_var,i_var)); -oo_.osr.objective_function = f; +osr_res.objective_function = f; +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'); diff --git a/preprocessor/ComputingTasks.cc b/preprocessor/ComputingTasks.cc index ae7649105..05d6576da 100644 --- a/preprocessor/ComputingTasks.cc +++ b/preprocessor/ComputingTasks.cc @@ -834,7 +834,7 @@ OsrStatement::writeOutput(ostream &output, const string &basename) const { options_list.writeOutput(output); symbol_list.writeOutput("var_list_", output); - output << "osr(var_list_,osr_params_,obj_var_,optim_weights_);\n"; + output << "oo_.osr = osr(var_list_,osr_params_,obj_var_,optim_weights_);\n"; } OptimWeightsStatement::OptimWeightsStatement(const var_weights_t &var_weights_arg, diff --git a/tests/Makefile.am b/tests/Makefile.am index f388aa14f..a4568470d 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -18,7 +18,7 @@ MODFILES = \ example1_abs_sign.mod \ example1_macroif.mod \ t_sgu_ex1.mod \ - osr_example.mod \ + optimal_policy/osr_example.mod \ optimal_policy/ramsey.mod \ optimal_policy/nk_ramsey.mod \ optimal_policy/nk_ramsey_expectation.mod \ diff --git a/tests/osr_example.mod b/tests/optimal_policy/osr_example.mod similarity index 100% rename from tests/osr_example.mod rename to tests/optimal_policy/osr_example.mod