From 86a083697ecd84cde12bb3833e537f09002cda55 Mon Sep 17 00:00:00 2001
From: Michel Juillard <michel.juillard@mjui.fr>
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
-- 
GitLab