From 5e1745ada7623678a9b43f239dbab7980ca64647 Mon Sep 17 00:00:00 2001 From: michel Date: Sun, 30 Mar 2008 09:31:06 +0000 Subject: [PATCH] v4 random_walk_metropolis_hastings.m: changed initializationo of InitSizeArray to avoid uncomplete files when load_mh_files suppressed confusing reinitialization of InitSizeArray at the end of a chain put back the report on average acceptation rate git-svn-id: https://www.dynare.org/svn/dynare/dynare_v4@1756 ac1d8469-bf42-47a9-8791-bf33cf982152 --- matlab/random_walk_metropolis_hastings.m | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/matlab/random_walk_metropolis_hastings.m b/matlab/random_walk_metropolis_hastings.m index 156e3ea10..23d4668f1 100644 --- a/matlab/random_walk_metropolis_hastings.m +++ b/matlab/random_walk_metropolis_hastings.m @@ -37,7 +37,7 @@ load([MhDirectoryName '/' ModelName '_mh_history'],'record'); %%%% %%%% NOW i run the (nblck-fblck+1) metropolis-hastings chains %%%% -InitSizeArray = min([MAX_nruns*ones(nblck) nruns],[],2); +InitSizeArray = min([repmat(MAX_nruns,nblck,1) fline+nruns-1],[],2); jscale = diag(bayestopt_.jscale); for b = fblck:nblck if (options_.load_mh_file~=0) & (fline(b)>1) & OpenOldFile(b) @@ -78,7 +78,6 @@ for b = fblck:nblck waitbar(prtfrc,hh,[ '(' int2str(b) '/' int2str(nblck) ') ' sprintf('%f done, acceptation rate %f',prtfrc,isux/j)]); if (irun == InitSizeArray(b)) | (j == nruns(b)) % Now I save the simulations save([MhDirectoryName '/' ModelName '_mh' int2str(NewFile(b)) '_blck' int2str(b)],'x2','logpo2'); - InitSizeArray(b) = min(nruns(b)-j,MAX_nruns); fidlog = fopen([MhDirectoryName '/metropolis.log'],'a'); fprintf(fidlog,['\n']); fprintf(fidlog,['%% Mh' int2str(NewFile(b)) 'Blck' int2str(b) ' (' datestr(now,0) ')\n']); @@ -107,13 +106,14 @@ for b = fblck:nblck record.LastParameters(b,:) = x2(end,:); record.LastLogLiK(b) = logpo2(end); end + % size of next file in chain b + InitSizeArray(b) = min(nruns(b)-j,MAX_nruns); + % initialization of next file if necessary if InitSizeArray(b) x2 = zeros(InitSizeArray(b),npar); logpo2 = zeros(InitSizeArray(b),1); NewFile(b) = NewFile(b) + 1; irun = 0; - else% InitSizeArray is equal to zero because we are at the end of an mc chain. - InitSizeArray(b) = min(nruns(b),MAX_nruns); end end j=j+1; @@ -128,4 +128,6 @@ save([MhDirectoryName '/' ModelName '_mh_history'],'record'); disp(['MH: Number of mh files : ' int2str(NewFile(1)) ' per block.']) disp(['MH: Total number of generated files : ' int2str(NewFile(1)*nblck) '.']) disp(['MH: Total number of iterations : ' int2str((NewFile(1)-1)*MAX_nruns+irun-1) '.']) +disp(['MH: average acceptation rate per chain : ') +disp(record.AcceptationRates); disp(' ') \ No newline at end of file