New “planner_discount_latex_name” option of “ramsey_policy”
Accepts a TeX name, as for variable declarations (i.e. enclosed within dollar signs). Ref. dynare#1686issue#70
parent
1a08cdf01a
commit
fe0c781c06
|
@ -114,7 +114,8 @@ class ParsingDriver;
|
|||
%token SHOCKS SHOCK_DECOMPOSITION SHOCK_GROUPS USE_SHOCK_GROUPS SIGMA_E SIMUL SIMUL_ALGO SIMUL_SEED ENDOGENOUS_TERMINAL_PERIOD
|
||||
%token SMOOTHER SMOOTHER2HISTVAL SQUARE_ROOT_SOLVER STACK_SOLVE_ALGO STEADY_STATE_MODEL SOLVE_ALGO SOLVER_PERIODS ROBUST_LIN_SOLVE
|
||||
%token STDERR STEADY STOCH_SIMUL SYLVESTER SYLVESTER_FIXED_POINT_TOL REGIMES REGIME REALTIME_SHOCK_DECOMPOSITION CONDITIONAL UNCONDITIONAL
|
||||
%token TEX RAMSEY_MODEL RAMSEY_POLICY RAMSEY_CONSTRAINTS PLANNER_DISCOUNT DISCRETIONARY_POLICY DISCRETIONARY_TOL EVALUATE_PLANNER_OBJECTIVE
|
||||
%token TEX RAMSEY_MODEL RAMSEY_POLICY RAMSEY_CONSTRAINTS PLANNER_DISCOUNT PLANNER_DISCOUNT_LATEX_NAME
|
||||
%token DISCRETIONARY_POLICY DISCRETIONARY_TOL EVALUATE_PLANNER_OBJECTIVE
|
||||
%token <string> TEX_NAME
|
||||
%token UNIFORM_PDF UNIT_ROOT_VARS USE_DLL USEAUTOCORR GSA_SAMPLE_FILE USE_UNIVARIATE_FILTERS_IF_SINGULARITY_IS_DETECTED
|
||||
%token VALUES VAR VAREXO VAREXO_DET VARIABLE VAROBS VAREXOBS PREDETERMINED_VARIABLES VAR_EXPECTATION VAR_EXPECTATION_MODEL PLOT_SHOCK_DECOMPOSITION MODEL_LOCAL_VARIABLE
|
||||
|
@ -2380,6 +2381,7 @@ ramsey_model_options_list : ramsey_model_options_list COMMA ramsey_model_options
|
|||
;
|
||||
|
||||
ramsey_model_options : o_planner_discount
|
||||
| o_planner_discount_latex_name
|
||||
| o_instruments
|
||||
;
|
||||
|
||||
|
@ -3398,7 +3400,8 @@ o_plot_priors: PLOT_PRIORS EQUAL INT_NUMBER {driver.option_num("plot_priors", $3
|
|||
o_aim_solver: AIM_SOLVER {driver.option_num("aim_solver", "true"); };
|
||||
o_partial_information : PARTIAL_INFORMATION {driver.option_num("partial_information", "true"); };
|
||||
o_sub_draws: SUB_DRAWS EQUAL INT_NUMBER {driver.option_num("sub_draws",$3);};
|
||||
o_planner_discount : PLANNER_DISCOUNT EQUAL expression { driver.declare_optimal_policy_discount_factor_parameter($3); };
|
||||
o_planner_discount : PLANNER_DISCOUNT EQUAL expression { driver.set_planner_discount($3); };
|
||||
o_planner_discount_latex_name : PLANNER_DISCOUNT_LATEX_NAME EQUAL TEX_NAME { driver.set_planner_discount_latex_name($3); };
|
||||
o_sylvester : SYLVESTER EQUAL FIXED_POINT {driver.option_num("sylvester_fp", "true"); }
|
||||
| SYLVESTER EQUAL DEFAULT {driver.option_num("sylvester_fp", "false"); };
|
||||
o_sylvester_fixed_point_tol : SYLVESTER_FIXED_POINT_TOL EQUAL non_negative_number {driver.option_num("sylvester_fixed_point_tol",$3);};
|
||||
|
|
|
@ -774,6 +774,7 @@ DATE -?[0-9]+([ya]|m([1-9]|1[0-2])|q[1-4]|w([1-9]{1}|[1-4][0-9]|5[0-2]))
|
|||
<DYNARE_STATEMENT>series {return token::SERIES;}
|
||||
<DYNARE_STATEMENT>mh_recover {return token::MH_RECOVER;}
|
||||
<DYNARE_STATEMENT>planner_discount {return token::PLANNER_DISCOUNT;}
|
||||
<DYNARE_STATEMENT>planner_discount_latex_name {return token::PLANNER_DISCOUNT_LATEX_NAME;}
|
||||
<DYNARE_STATEMENT>calibration {return token::CALIBRATION;}
|
||||
<DYNARE_STATEMENT>irf_plot_threshold {return token::IRF_PLOT_THRESHOLD;}
|
||||
<DYNARE_STATEMENT>no_homotopy {return token::NO_HOMOTOPY;}
|
||||
|
|
|
@ -246,10 +246,15 @@ ParsingDriver::declare_statement_local_variable(const string &name)
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::declare_optimal_policy_discount_factor_parameter(expr_t exprnode)
|
||||
ParsingDriver::set_planner_discount(expr_t value)
|
||||
{
|
||||
declare_parameter("optimal_policy_discount_factor");
|
||||
init_param("optimal_policy_discount_factor", exprnode);
|
||||
planner_discount = value;
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::set_planner_discount_latex_name(string tex_name)
|
||||
{
|
||||
planner_discount_latex_name = move(tex_name);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -2173,20 +2178,40 @@ void
|
|||
ParsingDriver::ramsey_model()
|
||||
{
|
||||
if (!mod_file->symbol_table.exists("optimal_policy_discount_factor"))
|
||||
declare_optimal_policy_discount_factor_parameter(data_tree->One);
|
||||
{
|
||||
if (!planner_discount)
|
||||
planner_discount = data_tree->One;
|
||||
declare_parameter("optimal_policy_discount_factor", planner_discount_latex_name);
|
||||
init_param("optimal_policy_discount_factor", planner_discount);
|
||||
}
|
||||
else if (planner_discount)
|
||||
error("ramsey_model: the 'planner_discount' option cannot be used when the 'optimal_policy_discount_factor' parameter is explicitly declared.");
|
||||
|
||||
mod_file->addStatement(make_unique<RamseyModelStatement>(options_list));
|
||||
options_list.clear();
|
||||
planner_discount = nullptr;
|
||||
planner_discount_latex_name.clear();
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::ramsey_policy()
|
||||
{
|
||||
warning("The 'ramsey_policy' statement is deprecated. Please use 'ramsey_model', 'stoch_simul', and 'evaluate_planner_objective' instead.");
|
||||
|
||||
if (!mod_file->symbol_table.exists("optimal_policy_discount_factor"))
|
||||
declare_optimal_policy_discount_factor_parameter(data_tree->One);
|
||||
{
|
||||
if (!planner_discount)
|
||||
planner_discount = data_tree->One;
|
||||
declare_parameter("optimal_policy_discount_factor");
|
||||
init_param("optimal_policy_discount_factor", planner_discount);
|
||||
}
|
||||
else if (planner_discount)
|
||||
error("ramsey_policy: the 'planner_discount' option cannot be used when the 'optimal_policy_discount_factor' parameter is explicitly declared.");
|
||||
|
||||
mod_file->addStatement(make_unique<RamseyPolicyStatement>(mod_file->symbol_table, ramsey_policy_list, options_list));
|
||||
options_list.clear();
|
||||
ramsey_policy_list.clear();
|
||||
planner_discount = nullptr;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -2205,7 +2230,10 @@ void
|
|||
ParsingDriver::discretionary_policy()
|
||||
{
|
||||
if (!mod_file->symbol_table.exists("optimal_policy_discount_factor"))
|
||||
declare_optimal_policy_discount_factor_parameter(data_tree->One);
|
||||
{
|
||||
declare_parameter("optimal_policy_discount_factor");
|
||||
init_param("optimal_policy_discount_factor", data_tree->One);
|
||||
}
|
||||
mod_file->addStatement(make_unique<DiscretionaryPolicyStatement>(symbol_list, options_list));
|
||||
symbol_list.clear();
|
||||
options_list.clear();
|
||||
|
|
|
@ -239,6 +239,10 @@ private:
|
|||
vector<pair<int, int>> init2shocks;
|
||||
//! Temporary storage for ramsey policy. Workaround for issue #1355
|
||||
vector<string> ramsey_policy_list;
|
||||
/* Temporary storage for planner_discount and planner_discount_latex_name
|
||||
options of ramsey_model and ramsey_policy */
|
||||
expr_t planner_discount{nullptr};
|
||||
string planner_discount_latex_name;
|
||||
//! reset the values for temporary storage
|
||||
void reset_current_external_function_options();
|
||||
//! Adds a model lagged variable to ModelTree and VariableTable
|
||||
|
@ -395,8 +399,10 @@ public:
|
|||
void check_subsample_declaration_exists(const string &name1, const string &name2, const string &subsample_name);
|
||||
//! Copies the set of subsamples from_name to_name
|
||||
void copy_subsamples(string to_name1, string to_name2, string from_name1, string from_name2);
|
||||
//! Declares declare_optimal_policy_discount_factor as a parameter and initializes it to exprnode
|
||||
void declare_optimal_policy_discount_factor_parameter(expr_t exprnode);
|
||||
//! Sets the value of the planner_discount option of ramsey_{model,policy}
|
||||
void set_planner_discount(expr_t value);
|
||||
//! Sets the value of the planner_discount_latex_name option of ramsey_model
|
||||
void set_planner_discount_latex_name(string tex_name);
|
||||
//! Adds a predetermined_variable
|
||||
void add_predetermined_variable(const string &name);
|
||||
//! Declares and initializes a local parameter
|
||||
|
|
Loading…
Reference in New Issue