#172: improve derivation engine for derivatives of STEADY_STATE wrt parameters --------------------------+------------------------------------------------- Reporter: sebastien | Owner: houtanb Type: enhancement | Status: accepted Priority: major | Milestone: 4.3 Component: Preprocessor | Version: Keywords: | --------------------------+-------------------------------------------------
Comment(by ratto):
I tried that project which originated this ticket because the preprocessor created a params_derivs file of 1 GB. Now it makes it 50 MB, which is digestible for MATLAB, albeit not really easily editable. So, it seems that adding temporary terms is the major improvement that will make the guy run in most cases, at least except for very large models.
Still we have a very large file generated (with several minutes of pre- processing as well) which may be useless since 2nd order derivs are only used in special cases.
So, if you agree, I would still take into consideration the possibility to add the following two syntax options to identification and sensitivity (and possibly to estimation, given analytic scores and hessian will be available at some point):
1) param_deriv_order (= 1 default; 2 optional), that would skip the second order derivs if param_deriv_order<2: this would speed-up pre-processing and digestion of the program by MATLAB;
2) as envisaged some time ago, add an optional syntax to STEADY_STATE: STEADY_STATE(ENDO_NAME ( list of param_names) ) that explicitly lists the names of the parameters which affect the steady state of the variable ENDO_NAME. If the user would know such a restricted list, this would simplify a lot the params_derivs file. The latter in fact must now account for the fact that the steady state of any variable declared in STEADY_STATE(ENDO_NAME) may depend on any parameter including any cross- derivative. This implies a very long list of entries for the second order derivatives. With the new extended syntax, the pre-processor would only use the ss_param_deriv and ss_param_2nd_deriv entries which are known to be non-zero, skipping a very long list of temporary terms. Of course any error from the user in declaring the restricted list of parameters would not be tracked by the pre-processor.