diff --git a/matlab/list_of_functions_to_be_cleared.m b/matlab/list_of_functions_to_be_cleared.m index a4fb65a7d3ea5ca56e9f4e9509b99e14275102a1..78a18484ba9019d183e69dcf0afcbd4edb3d9891 100644 --- a/matlab/list_of_functions_to_be_cleared.m +++ b/matlab/list_of_functions_to_be_cleared.m @@ -1,2 +1,2 @@ -list_of_functions = {'discretionary_policy_1', 'dsge_var_likelihood', 'dyn_first_order_solver', 'dyn_waitbar', 'ep_residuals', 'evaluate_likelihood', 'prior_draw_gsa', 'identification_analysis', 'computeDLIK', 'univariate_computeDLIK', 'metropolis_draw', 'flag_implicit_skip_nan', 'moment_function', 'mr_hessian', 'masterParallel', 'auxiliary_initialization', 'auxiliary_particle_filter', 'conditional_filter_proposal', 'conditional_particle_filter', 'gaussian_filter', 'gaussian_filter_bank', 'gaussian_mixture_filter', 'gaussian_mixture_filter_bank', 'Kalman_filter', 'online_auxiliary_filter', 'pruned_state_space_system', 'sequential_importance_particle_filter', 'solve_model_for_online_filter', 'prior_draw', 'priordens',... +list_of_functions = {'discretionary_policy_1', 'dsge_var_likelihood', 'dyn_first_order_solver', 'dyn_waitbar', 'ep_residuals', 'evaluate_likelihood', 'prior_draw_gsa', 'identification_analysis', 'computeDLIK', 'univariate_computeDLIK', 'metropolis_draw', 'flag_implicit_skip_nan', 'mr_hessian', 'masterParallel', 'auxiliary_initialization', 'auxiliary_particle_filter', 'conditional_filter_proposal', 'conditional_particle_filter', 'gaussian_filter', 'gaussian_filter_bank', 'gaussian_mixture_filter', 'gaussian_mixture_filter_bank', 'Kalman_filter', 'online_auxiliary_filter', 'pruned_state_space_system', 'sequential_importance_particle_filter', 'solve_model_for_online_filter', 'prior_draw', 'priordens',... '+occbin/solver.m','+occbin/mkdatap_anticipated_dyn.m','+occbin/mkdatap_anticipated_2constraints_dyn.m','+occbin/match_function.m','+occbin/solve_one_constraint.m','+occbin/solve_two_constraint.m','+occbin/plot/shock_decomposition.m'}; diff --git a/matlab/moment_function.m b/matlab/moment_function.m deleted file mode 100644 index d2d6afd3378e2677364388357489ce9a08c149e9..0000000000000000000000000000000000000000 --- a/matlab/moment_function.m +++ /dev/null @@ -1,139 +0,0 @@ -function [g,grad,hess,flag] = moment_function(xparams,sample_moments,dataset,options,parallel) -% Evaluates the moment function of the Simulated Moments Method (discrepancy between sample and -% ). -% -% INPUTS: -% xparams [double] p*1 vector of estimated parameters. -% sample_moments [double] n*1 vector of sample moments (n>=p). -% options [ ] Structure defining options for SMM. -% parallel [ ] Structure defining the parallel mode settings (optional). -% -% OUTPUTS: -% g [double] n*1 vector, the gap between simulated and sample moments. -% flag [intger] empty matrix. -% -% SPECIAL REQUIREMENTS -% The user has to provide a file where the moment conditions are defined. - -% Copyright © 2010-2019 Dynare Team -% -% This file is part of Dynare. -% -% Dynare is free software: you can redistribute it and/or modify -% it under the terms of the GNU General Public License as published by -% the Free Software Foundation, either version 3 of the License, or -% (at your option) any later version. -% -% Dynare is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with Dynare. If not, see <https://www.gnu.org/licenses/>. - -global M_ options_ -persistent mainStream mainState -persistent priorObjectiveValue - -flag = 1; -grad=[]; -hess=[]; - -if nargin<5 - if isempty(mainStream) - mainStream = RandStream.getDefaultStream; - mainState = mainStream.State; - else - mainStream.State = mainState; - end -end - -penalty = 0; -for i=1:options.estimated_parameters.nb - if ~isnan(options.estimated_parameters.upper_bound(i)) && xparams(i)>options.estimated_parameters.upper_bound(i) - penalty = penalty + (xparams(i)-options.estimated_parameters.upper_bound(i))^2; - end - if ~isnan(options.estimated_parameters.lower_bound(i)) && xparams(i)<options.estimated_parameters.lower_bound(i) - penalty = penalty + (xparams(i)-options.estimated_parameters.lower_bound(i))^2; - end -end - -if penalty>0 - flag = 0; - return -end - -save('estimated_parameters.mat','xparams'); - -% Check for local determinacy of the deterministic steady state. -noprint = options_.noprint; options_.noprint = 1; -[local_determinacy_and_stability,info] = check; options_.noprint = noprint; -if ~local_determinacy_and_stability - flag = 0; - return -end - -simulated_moments = zeros(size(sample_moments)); - -if nargin<5 - for s = 1:options.number_of_simulated_sample - time_series = extended_path([],options.simulated_sample_size,1); - data = time_series(dataset.observed_variables_idx,options.burn_in_periods+1:options.simulated_sample_size); - eval(['tmp = ' options.moments_file_name '(data);']) - simulated_moments = simulated_moments + tmp; - simulated_moments = simulated_moments / options.number_of_simulated_sample; - end -else% parallel mode. - if ~isunix - error('The parallel version of SMM estimation is not implemented for non unix platforms!') - end - job_number = 1;% Remark. First job is for the master. - [~,hostname] = unix('hostname --fqdn'); - hostname = deblank(hostname); - for i=1:length(parallel) - machine = deblank(parallel(i).machine); - if ~strcmpi(hostname,machine) - % For the slaves on a remote computer. - unix(['scp estimated_parameters.mat ' , parallel(i).login , '@' , machine , ':' parallel(i).folder ' > /dev/null']); - else - if ~strcmpi(pwd,parallel(i).folder) - % For the slaves on this computer but not in the same directory as the master. - unix(['cp estimated_parameters.mat ' , parallel(i).folder]); - end - end - for j=1:parallel(i).number_of_jobs - if (strcmpi(hostname,machine) && j>1) || ~strcmpi(hostname,machine) - job_number = job_number + 1; - unix(['ssh -A ' parallel(i).login '@' machine ' ./call_matlab_session.sh job' int2str(job_number) '.m &']); - end - end - end - % Finally the Master do its job - tStartMasterJob = clock; - eval('job1;') - tElapsedMasterJob = etime(clock, tStartMasterJob); - TimeLimit = tElapsedMasterJob*1.2; - % Master waits for the slaves' output... - tStart = clock; - tElapsed = 0; - while tElapsed<TimeLimit - if ( length(dir('./intermediary_results_from_master_and_slaves/simulated_moments_slave_*.dat'))==job_number ) - break - end - tElapsed = etime(clock, tStart); - end - try - tmp = zeros(length(sample_moments),1); - for i=1:job_number - simulated_moments = load(['./intermediary_results_from_master_and_slaves/simulated_moments_slave_' int2str(i) '.dat'],'-ascii'); - tmp = tmp + simulated_moments; - end - simulated_moments = tmp / job_number; - catch - flag = 0; - return - end -end - -g = simulated_moments-sample_moments;