Commit Graph

218 Commits (2ea7d40fc273cb6c55485246c29af9ab919c1635)

Author SHA1 Message Date
Sébastien Villemot 47a8fd0147 Add line numbers of equations in preprocessor error messages.
Closes #584
2014-01-27 16:41:43 +01:00
Sébastien Villemot 6ba0980460 Add a warning when some exogenous are not used in the model 2013-11-29 16:03:45 +01:00
Sébastien Villemot 1414f98cff Refactor code for collecting variables appearing in expressions
- rename ExprNode::collectVariables in ExprNode::collectDynamicVariables
- new ExprNode::collectVariables: same as above, but without lag information
- remove ExprNode::findUnusedEndogenous: essentially redundant with the above)
- remove ExprNode::collectModelLocalVariables: idem
2013-11-29 15:37:11 +01:00
Houtan Bastani fae00ea729 fix bug introduced by ee812f38816294450a307ccb8f2fb2a27fc032f0 2013-11-19 13:05:08 +01:00
Houtan Bastani 1707e6aa96 preprocessor: bug fix: return oo 2013-11-19 11:56:39 +01:00
Houtan Bastani 29507f8e45 proprocessor: block code bug fix: M and oo not being passed to solve_two_boundaries 2013-11-19 11:54:00 +01:00
Houtan Bastani c23cbb5edd clang compilation: replace ostringstream array with vector of strings 2013-11-18 12:16:37 +01:00
Houtan Bastani c03f89eb8d preprocessor: simplify if statement 2013-11-18 12:16:37 +01:00
Houtan Bastani 6d6701aa50 revert change that breaks gcc build 2013-11-05 18:21:12 +01:00
Houtan Bastani 1ae5832e13 preprocessor and matlab mex fixes for clang compilation 2013-11-05 18:04:57 +01:00
Sébastien Villemot 1634c7c50f Always initialize M_.maximum_{endo,exo}_{lead,lag} and M_.params
Closes #515
2013-11-04 16:02:28 +01:00
Houtan Bastani 114cb8bc25 missing semicolon 2013-10-29 12:38:28 +01:00
Sébastien Villemot 46c7622f1c Reactivate and fix the test for the balanced growth path.
If the homogeneized equation evaluates to zero, then we skip the
test (otherwise the 2nd derivative of the log is infinite, and the test fails
while it should not necessarily).

Closes #506
2013-10-29 18:46:54 +08:00
Stéphane Adjemian (Charybdis) 7063e2d8be Changed name of options_.maxit as options_.simul.maxit. 2013-10-09 13:06:06 +02:00
Houtan Bastani 76714b34df new nostrict command-line option does not exit when there are more endogenous than equations (closes #2) 2013-09-13 14:44:01 -04:00
Johannes Pfeifer 9d3722fdcb Add full function header to static and dynamic model files 2013-07-28 11:32:14 +02:00
Sébastien Villemot bbc422cf5a Fix copyright notices 2013-06-12 17:04:46 +02:00
Sébastien Villemot 55a548282c Possibility of restricting differentiate_forward_vars to some variables
Closes #351
2013-05-17 16:53:15 +02:00
Sébastien Villemot 94e6f569b8 Add new model option 'differentiate_forward_vars' (ref. #351) 2013-04-25 18:09:31 +02:00
Sébastien Villemot 75f8467803 Implement tags [static] and [dynamic] for equations
Closes #307
2013-04-11 17:11:35 +02:00
Michel Juillard 24cac29cdf removed changes linked with transforming variables to avoid log or
power of negative numbers
2013-04-09 16:35:57 +02:00
Sébastien Villemot 08c2b6e1c6 Automatic detrending engine can now handle models written in logs (ref. #309)
- new command `log_trend_var'
 - new option `log_deflator' to `var' command
2013-03-26 16:51:17 +01:00
Sébastien Villemot 69a5271db7 Revert spurious preprocessor changes introduced in dfa744f 2013-03-26 16:51:10 +01:00
Ferhat Mihoubi 832c9d37ef - adds new files: Evaluate.cc and Evaluate.hh to bytecode 2013-03-22 16:34:50 +01:00
Sébastien Villemot dc1be70d82 Add derivatives of static model w.r.t. parameters
The new file is <FILENAME>_static_params_derives.m

Closes: #160
2012-11-29 18:07:48 +01:00
Sébastien Villemot 6fc8deed49 Remove oo_.dr.{nstatic,npred,nboth,nfwrd,nspred,nsfwrd}
Replace them by equivalents in M_ (and an extra one: M_.dynamic).

IMPORTANT POINT: oo_.dr.npred used to count both purely backward and mixed/both
variables. This was the cause of lots of confusion. The new M_.npred only
counts purely backward variables.

We now have the following indentities:

M_.npred + M_.nboth + M_.nfwrd + M_.nstatic = M_.endo_nbr
M_.nspred = M_.npred + M_.nboth
M_.nsfwrd = M_.nfwrd + M_.nboth
M_.ndynamic = M_.npred + M_.nboth + M_.nfwrd
2012-11-16 20:05:13 +01:00
Sébastien Villemot f878d8a644 Isolate block decomposition code
This should fix some random crashes of the preprocessor
2012-09-28 18:41:18 +02:00
Sébastien Villemot 67a1737f00 Update copyright notices 2012-06-08 18:22:34 +02:00
Houtan Bastani cf49fd3b99 preprocessor: handle compilation warnings 2012-06-06 16:30:36 +02:00
Sébastien Villemot 2ac4f59489 Fix bug introduced in 4b86df05 2012-06-05 09:48:03 +02:00
Sébastien Villemot 3175a25663 Preprocessor: remove MATLAB short-circuit operators
They emit a warning under Octave
2012-06-04 17:18:13 +02:00
Michel Juillard 73b4052f2b first implementation of transform_logpow. It creates too many auxilary
variables and probably violates Jensen inequality in some cases.
2012-05-23 15:09:33 +02:00
Michel Juillard 2098528f9e starting implementation of transformed variables to replace arguments
of log and pow functions so as to insure non-negative arguments
2012-05-21 22:05:19 +02:00
Ferhat 255d64e6d1 Corrects the number of lead and lags of a block 2012-02-17 10:48:28 +01:00
Sébastien Villemot a32043c2a5 Preprocessor: compute temp. terms for 2nd deriv of residuals and jacobian wrt
params and 1st deriv of hessian wrt to params
2012-01-20 12:07:36 -05:00
Houtan Bastani 67f3a0ecc0 preprocessor: separate dynamic and static functions from their mexfiles 2011-12-23 18:22:41 +01:00
Sébastien Villemot 03fbe74c70 Fix compilation error in preprocessor
Error introduced in ca10372607d71bf2b5d99d2a9fe6c2b3bd352ff4
2011-10-29 12:22:14 +02:00
Ferhat Mihoubi 287c0647fa * Correction of a bug appearing in a block decomposed model when an observable variable are also a state variable 2011-10-28 22:25:05 +02:00
Houtan Bastani b75d0e733f Remove unused expectation syntax 2011-10-26 14:30:47 +02:00
Sébastien Villemot 0298a70faa aux vars: update C++ comment to reflect last changes 2011-10-21 16:56:13 +02:00
Michel Juillard 17c8ae5c9d code simplification after commit 9425b36358b9b1a6dcfb82cbf0cd423c64748bff 2011-10-20 20:40:15 +02:00
Michel Juillard 7d44671996 fixing problems related to auxiliary variables 2011-10-19 12:47:15 +02:00
Ferhat Mihoubi fd923d428d Displays an error message when the model contains pound expressions and 'bytecode' or 'block' options are present 2011-10-14 14:35:32 +02:00
Ferhat Mihoubi 37d438dd5c Cleans the messages displayed 2011-10-12 14:45:53 +02:00
Michel Juillard 16f550a986 preprocessor, auxiliary variables: fixes ordering issue introduced in
347ab4d0c0c79ae9a42898c1d5409d78708bb8a8 and corrects the earlier
ordering problem.
2011-09-28 22:11:44 +02:00
Ferhat Mihoubi c4e0158e44 block-Kalman filter is now available when block option is used 2011-09-20 14:18:31 +02:00
Houtan Bastani 5dc9092723 cosmetic: simplify jacobianHelper, hessianHelper and sparseHelper functions and fix spacing in dynamic file 2011-08-19 16:59:18 +02:00
Ferhat Mihoubi 94e113b7a5 correct a bug during the state variables detection 2011-08-11 14:15:51 +02:00
Houtan Bastani c6a33a96f1 remove writing of getPowerDeriv M function from block code functions 2011-07-25 10:21:02 +02:00
Houtan Bastani 1e4c0852f6 bug fix: getPowerDeriv not accessible from modfile.m 2011-07-19 14:35:35 +02:00
Sébastien Villemot d2696ca2f0 Preprocessor: factorize code common between StaticModel and DynamicModel, and put it in ModelTree 2011-06-22 11:56:07 +02:00
Sébastien Villemot 06f7d23e90 Preprocessor: fix crash when no computational task is required 2011-06-22 11:34:38 +02:00
Ferhat Mihoubi 53fe3fe8ed - Compute :
+ the number of static, lag, lead and both variables,
  + the lead_lag_incidence matrix for variables related to previous blocks
  + the index of reordered policy rule
for each block during the preprocessing step
- correct a bug in the comment related to first order derivatives in _dynamic.m file for a block decomposed model without bytcode
- avoid simplification of the Jacobian matrix (setting to zero all elements below the cutoff) for  estimated or stochastically simulated models: the cutoff option is set to 0.
2011-06-18 17:53:50 +02:00
Houtan Bastani 7eade47160 external_function: bug fix in writeParamsDerivativesFile, writeDynamicModel and writeStaticMFile 2011-06-10 11:09:43 +02:00
Michel Juillard 007b37f19b updating one comment 2011-05-27 22:09:54 +02:00
Michel Juillard f9287ac796 renamed ramsey_policy_discount_factor by optimal_policy_discount_factor because it is also used by discretionary_policy 2011-05-24 16:02:42 +02:00
Sébastien Villemot 6c37f6def8 Preprocessor: use NaN() for initializing vector of parameters 2011-04-27 12:07:13 +02:00
Houtan Bastani d0d9fde6af bug fix: allow use of external functions with model local variables 2011-04-12 16:42:56 +02:00
Houtan Bastani be4c5c92ef ramsey_policy: allow discount factor to be an expression 2011-03-29 18:18:32 +02:00
Houtan Bastani be236c6402 code cleanup 2011-03-28 11:34:42 +02:00
Houtan Bastani d2a6f0f42c Implement explicit writing of first order conditions of Ramsey problem (ticket #5) 2011-03-24 17:17:15 +01:00
Ferhat Mihoubi 316b935cc0 Correct a bug when the model contains deterministic exogenous variables and bytecode option is used.
Note that stochastic simulations do not work for the moment with block option.
2011-03-18 01:09:20 +01:00
Michel Juillard 8c9b6e44af put *_params_derivs.m and identification code in conformity with additional steady state argument in *_dynamics.m 2011-03-14 11:40:40 +01:00
Michel Juillard cb1e8a55b1 new correction for steady_state operator bug. Steady_state vector is passed as argument to *_dynamic model function. As a result, bytecode is currently broken. 2011-03-13 17:06:57 +01:00
Sébastien Villemot cb64ade507 Preprocessor: added model local variable definitions to parameter derivative file 2011-03-07 11:59:12 +01:00
Sébastien Villemot 72fca072f0 Preprocessor: fix bug in parameter derivatives file 2011-02-21 12:43:11 +01:00
Sébastien Villemot d264b7b2e3 Reindentation of the preprocessor 2011-02-04 16:25:38 +01:00
Ferhat Mihoubi 483b430e54 The derivatives with respect to endogenous variables of the previous blocks are corrected for a block-decomposed model without bytecode option 2011-02-03 17:29:26 +01:00
Ferhat Mihoubi d999d15ff6 - Adds a "lead_lag_incidence" matrix in each block for the endogenous variables belonging to previous blocks (other_endo) 2011-01-31 17:47:22 +01:00
Sébastien Villemot 30a2b2b650 Fix derivatives of STEADY_STATE operator w.r.t. parameters (ticket #128) 2011-01-13 18:08:26 +01:00
Houtan Bastani 448553fe8e fixed bug: end _dynamic and _static and getPowerDeriv functions with "end" tags to comply with commit d8dbc68e841a93b40d2a5005bd69bdd1cbb1778a 2010-12-22 09:48:05 +01:00
Ferhat Mihoubi 7a6776197d - The function getPowerDeriv must end with an "end" instruction 2010-12-17 18:54:02 +01:00
Houtan Bastani 7a26fe2ebd extend domain of derivative of x^p to x=0 under certain conditions (see ticket 78) 2010-12-13 17:03:57 +01:00
Ferhat Mihoubi 751c0da2a1 - external functions are compatible with block decomposition and/or bytecode 2010-12-10 12:06:50 +01:00
Sébastien Villemot 2984f61fe0 Bugfix at order 3 (hopefully was not affecting final results, thanks to Pablo Winant for spotting this):
- in the 3rd derivatives matrix, among symmetric elements, the first one had
the right values but the following ones were set to zero
- moreover, the k-order DLL was trying to add all the symmetric elements in the
folded tensor, instead of only keeping one value among all the symmetric ones
- hopefully, Ondra's tensor library was (silently) refusing to add symmetric
elements after the first (and right) value had been added
- so the final result was correct
2010-12-06 17:00:46 +01:00
Ferhat Mihoubi 3f6ddd1c3f - Adds the derivatives with respect to deterministic exogenous variables
and corrects the computation of the number of column in the jacobian matrices in a block decomposed model without bytecode
- Identical corrections for models using bytecode without block decomposition
2010-11-25 16:11:12 +01:00
Sébastien Villemot 0269c5766c Preprocessor: max lead/lags in the model are no longer affected by lead/lags on parameters (closes #153) 2010-11-18 11:21:20 +01:00
Ferhat Mihoubi b781c44e5a Check command is now compatible with block and bytecode options 2010-10-27 15:34:48 +02:00
Ferhat Mihoubi ab311cc0fd - Store the incidence matrix containing reordered equations and variable in block_structure 2010-10-27 15:30:01 +02:00
Ferhat Mihoubi f7f83d6973 - Correction of several bugs with Octave
- Add wrapper needed to compute the steady-state using bytecode and solve_algo = 0, ..., 4
2010-10-22 10:09:07 +02:00
Houtan Bastani a7fc3361ac trend_var, growth_factor, deflator: stationarize a nonstationary model and test 2010-10-18 16:07:42 +02:00
Sébastien Villemot 3218d3c72f Preprocessor: don't create auxiliary variables for expressions appearing only
in unused model local variables
2010-10-11 12:58:38 +02:00
Sébastien Villemot 63d0fb3f04 Preprocessor: implement STEADY_STATE operator with "use_dll" and "block"
options (closes #98)
2010-09-20 17:04:38 +02:00
Ferhat Mihoubi f026137fa9 - Adding the relaxation method for block and/or bytecode options
- Changing the the stack_solve_algo option :
Previous version             New version
1 : Sparse LU                0 : Sparse LU
2 : GMRES                    1 : Relaxation
3 : BiCGStab                 2 : GMRES
4 : Sparse LU & Optimal Path 3 : BiCGStab
5 : bytecode own solver      4 : Sparse LU & Optimal Path
                             5 : bytecode own solver
2010-09-17 12:18:25 +02:00
Ferhat Mihoubi 3e1a2ad450 - Substitutes lead for exogenous and endogenous variables in the deterministic case: direct substitution of the variables even in non-linear expressions 2010-09-17 12:17:09 +02:00
Ferhat Mihoubi 2da9d5adda Bug correction in the deterministic simulation: to solve a purely backward or forward looking block requires contemporaneous derivatives only. 2010-09-17 12:17:00 +02:00
Ferhat Mihoubi f68e4fd455 - compute the jacobian matrix for exogenous, det_exogenous and previous blocks endogenous
- preprocessor provides informations about the dynamic structure of each block
- extends the algorithms available with bytecode: stack_solve_algo = 1, 2, 3 and 4 is compatible the bytecode. Speed and memory requirement are improved with stack_solve_algo = 1 or 4 for large scale models.
- bytecode can be used to evaluate a model
2010-09-17 12:16:47 +02:00
Sébastien Villemot 2c10d03368 Preprocessor: rename "NodeID" in "expr_t" 2010-09-17 12:13:26 +02:00
Sébastien Villemot c8fdd5d9d1 Preprocessor: uniformize typedef names (with a "_t" suffix) 2010-09-16 19:00:48 +02:00
Sébastien Villemot c3c8fa5cca Preprocessor: clean prototypes of ModelTree methods (removed arguments
redundant with data members, added const keywords, use passing-by-reference)
2010-09-16 17:51:50 +02:00
Sébastien Villemot ae3e741cb8 Preprocessor:
- remove useless output type oMatlabDynamicModelSparseLocalTemporaryTerms
(indistinguishable from oMatlabDynamicModelSparseLocal)
- fix bug in output type of sparse static model
2010-09-16 16:57:35 +02:00
Sébastien Villemot e44c41334e Preprocessor: in the parameter derivatives file, add the global "oo_" when the STEADY_STATE operator is used 2010-08-12 18:16:24 +02:00
Michel Juillard 6c0a0969f6 make sure that 2nd and 3rd order derivatives that haven't been computed are not taken to be zero. 2010-07-17 10:14:22 +02:00
Sébastien Villemot 2356ef7460 Preprocessor: cosmetic changes related to 'size_t' 2010-06-18 15:48:46 +02:00
Sébastien Villemot 1dde6f2ee5 Preprocessor: use a sparse representation for the 2nd derivatives of residual and jacobian w.r.t. parameters and the derivative of hessian w.r.t. parameters 2010-06-07 18:46:57 +02:00
Sébastien Villemot 09bb06b516 Preprocessor: only compute on demand the 2nd derivatives of residual and jacobian w.r.t. parameters and the derivative of hessian w.r.t. parameters 2010-06-07 16:42:27 +02:00
Sébastien Villemot a47a639330 Preprocessor: changing return order of parameter derivatives to match Marco's code 2010-06-04 09:57:56 +03:00
Michel Juillard 188ec4932d preprocessor: corrected missing initialization of v3 in <fname>_dynamic.c 2010-05-21 11:38:23 +02:00
Sébastien Villemot 6f9e0ca1e9 Preprocessor: replace non-standard operators 'and'/'or' by '&&'/'||' 2010-04-28 16:03:32 +02:00
Sébastien Villemot 2cf5c3808d Preprocessor: add a check to DynamicModel::toStatic() 2010-04-23 18:32:30 +02:00