From 7f927eff00a8981158bfc3620121ff4e1beda2b1 Mon Sep 17 00:00:00 2001 From: adjemian Date: Mon, 7 Jul 2008 12:31:51 +0000 Subject: [PATCH] Changed penalties. git-svn-id: https://www.dynare.org/svn/dynare/dynare_v4@1934 ac1d8469-bf42-47a9-8791-bf33cf982152 --- matlab/DsgeVarLikelihood.m | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/matlab/DsgeVarLikelihood.m b/matlab/DsgeVarLikelihood.m index 757d2830b..a52493846 100644 --- a/matlab/DsgeVarLikelihood.m +++ b/matlab/DsgeVarLikelihood.m @@ -47,17 +47,17 @@ cost_flag = 1; if options_.mode_compute ~= 1 & any(xparam1 < bayestopt_.lb) k = find(xparam1 < bayestopt_.lb); - fval = bayestopt_.penalty*min(1e3,exp(sum(bayestopt_.lb(k)-xparam1(k)))); - info = 41; + fval = bayestopt_.penalty+sum((bayestopt_.lb(k)-xparam1(k)).^2); cost_flag = 0; + info = 41; return; end if options_.mode_compute ~= 1 & any(xparam1 > bayestopt_.ub) k = find(xparam1 > bayestopt_.ub); - fval = bayestopt_.penalty*min(1e3,exp(sum(xparam1(k)- bayestopt_.ub(k)))); - info = 42; + fval = bayestopt_.penalty+sum((xparam1(k)-bayestopt_.ub(k)).^2); cost_flag = 0; + info = 42; return; end @@ -83,9 +83,9 @@ M_.Sigma_e = Q; dsge_prior_weight = M_.params(strmatch('dsge_prior_weight',M_.param_names)); % Is the DSGE prior proper? if dsge_prior_weight<(NumberOfParameters+NumberOfObservedVariables)/gend; - fval = bayestopt_.penalty*min(1e3,(NumberOfParameters+NumberOfObservedVariables)/gend-dsge_prior_weight); - info = 51; + fval = bayestopt_.penalty+abs(gend*dsge_prior_weight-(NumberOfParameters+NumberOfObservedVariables)); cost_flag = 0; + info = 51; return; end @@ -97,11 +97,11 @@ end bayestopt_.restrict_columns,... bayestopt_.restrict_aux); if info(1) == 1 | info(1) == 2 | info(1) == 5 - fval = bayestopt_.penalty; + fval = bayestopt_.penalty+1; cost_flag = 0; return elseif info(1) == 3 | info(1) == 4 | info(1) == 20 - fval = bayestopt_.penalty*min(1e3,exp(info(2))); + fval = bayestopt_.penalty+info(2)^2; cost_flag = 0; return end @@ -152,6 +152,7 @@ for i = 1:NumberOfLags-1 GXX = GXX + kron(tmp1,TheoreticalAutoCovarianceOfTheObservedVariables(:,:,i+1)); GXX = GXX + kron(tmp2,TheoreticalAutoCovarianceOfTheObservedVariables(:,:,i+1)'); end + if ~options_.noconstant % Add one row and one column to GXX GXX = [GXX , kron(ones(NumberOfLags,1),constant') ; [ kron(ones(1,NumberOfLags),constant) , 1] ]; @@ -171,7 +172,7 @@ if ~isinf(dsge_prior_weight) if ~ispd(SIGMAu) v = diag(SIGMAu); k = find(v<0); - fval = bayestopt_.penalty*min(1e3,exp(abs(v(k)))); + fval = bayestopt_.penalty + sum(v(k).^2); info = 52; cost_flag = 0; return;