Allow for pass OSR parameter bounds to optimizer
parent
9774d0544d
commit
03563e012b
|
@ -665,7 +665,7 @@ Dynare unusable.
|
||||||
In order to give instructions to Dynare, the user has to write a
|
In order to give instructions to Dynare, the user has to write a
|
||||||
@emph{model file} whose filename extension must be @file{.mod}. This
|
@emph{model file} whose filename extension must be @file{.mod}. This
|
||||||
file contains the description of the model and the computing tasks
|
file contains the description of the model and the computing tasks
|
||||||
required by the user. Its contents is described in @ref{The Model file}.
|
required by the user. Its contents are described in @ref{The Model file}.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Dynare invocation::
|
* Dynare invocation::
|
||||||
|
@ -7365,6 +7365,36 @@ osr_params gammax0 gammac0 gamma_y_ gamma_inf_;
|
||||||
osr y;
|
osr y;
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
|
|
||||||
|
@anchor{osr_params_bounds}
|
||||||
|
@deffn Block osr_params_bounds ;
|
||||||
|
|
||||||
|
This block declares lower and upper bounds for parameters in the optimal simple rule. If not specified
|
||||||
|
the optimization is unconstrained.
|
||||||
|
|
||||||
|
Each line has the following syntax:
|
||||||
|
|
||||||
|
@example
|
||||||
|
PARAMETER_NAME, LOWER_BOUND, UPPER_BOUND;
|
||||||
|
@end example
|
||||||
|
|
||||||
|
Note that the use of this block requires the use of a constrained optimizer, i.e. setting @ref{opt_algo} to
|
||||||
|
1,2,5, or 9.
|
||||||
|
|
||||||
|
@examplehead
|
||||||
|
|
||||||
|
@example
|
||||||
|
|
||||||
|
osr_param_bounds;
|
||||||
|
gamma_inf_, 0, 2.5;
|
||||||
|
end;
|
||||||
|
|
||||||
|
osr(solve_algo=9) y;
|
||||||
|
@end example
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
|
||||||
@defvr {MATLAB/Octave variable} oo_.osr.objective_function
|
@defvr {MATLAB/Octave variable} oo_.osr.objective_function
|
||||||
After an execution of the @code{osr} command, this variable contains the value of
|
After an execution of the @code{osr} command, this variable contains the value of
|
||||||
the objective under optimal policy.
|
the objective under optimal policy.
|
||||||
|
|
|
@ -97,9 +97,15 @@ elseif isequal(options_.osr.opt_algo,6)
|
||||||
error('OSR: OSR does not support opt_algo=6.')
|
error('OSR: OSR does not support opt_algo=6.')
|
||||||
elseif isequal(options_.osr.opt_algo,10)
|
elseif isequal(options_.osr.opt_algo,10)
|
||||||
error('OSR: OSR does not support opt_algo=10.')
|
error('OSR: OSR does not support opt_algo=10.')
|
||||||
|
elseif isequal(options_.osr.opt_algo,11)
|
||||||
|
error('OSR: OSR does not support opt_algo=11.')
|
||||||
else
|
else
|
||||||
|
|
||||||
|
if ~isempty(M_.osr.param_bounds) && ~(ismember(options_.osr.opt_algo,[1,2,5,9]) || ischar(options_.osr.opt_algo))
|
||||||
|
error('OSR: OSR with bounds on parameters requires a constrained optimizer, i.e. 1,2,5, or 9.')
|
||||||
|
end
|
||||||
%%do actual optimization
|
%%do actual optimization
|
||||||
[p, f, exitflag] = dynare_minimize_objective(str2func('osr_obj'),t0,options_.osr.opt_algo,options_,[],cellstr(M_.param_names(i_params,:)),[],[], i_params,...
|
[p, f, exitflag] = dynare_minimize_objective(str2func('osr_obj'),t0,options_.osr.opt_algo,options_,M_.osr.param_bounds,cellstr(M_.param_names(i_params,:)),[],[], i_params,...
|
||||||
inv_order_var(i_var),weights(i_var,i_var));
|
inv_order_var(i_var),weights(i_var,i_var));
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue