Traps for bad x values in optimizer.
git-svn-id: https://www.dynare.org/svn/dynare/trunk@2611 ac1d8469-bf42-47a9-8791-bf33cf982152time-shift
parent
f7c97fcebe
commit
38ba90e004
|
@ -89,7 +89,11 @@ while i<n,
|
||||||
h1(i)= htol/abs(dx(it))*h1(i);
|
h1(i)= htol/abs(dx(it))*h1(i);
|
||||||
xh1(i)=x(i)+h1(i);
|
xh1(i)=x(i)+h1(i);
|
||||||
end
|
end
|
||||||
|
try
|
||||||
fx = feval(func,xh1,varargin{:});
|
fx = feval(func,xh1,varargin{:});
|
||||||
|
catch
|
||||||
|
fx=1.e8;
|
||||||
|
end
|
||||||
it=it+1;
|
it=it+1;
|
||||||
dx(it)=(fx-f0);
|
dx(it)=(fx-f0);
|
||||||
h0(it)=h1(i);
|
h0(it)=h1(i);
|
||||||
|
|
|
@ -77,7 +77,11 @@ while i<n,
|
||||||
hcheck=0;
|
hcheck=0;
|
||||||
dx=[];
|
dx=[];
|
||||||
xh1(i)=x(i)+h1(i);
|
xh1(i)=x(i)+h1(i);
|
||||||
[fx, ffx]=feval(func,xh1,varargin{:});
|
try
|
||||||
|
[fx, ffx]=feval(func,xh1,varargin{:});
|
||||||
|
catch
|
||||||
|
fx=1.e8;
|
||||||
|
end
|
||||||
it=1;
|
it=1;
|
||||||
dx=(fx-f0);
|
dx=(fx-f0);
|
||||||
ic=0;
|
ic=0;
|
||||||
|
@ -116,12 +120,20 @@ while i<n,
|
||||||
% c=mr_nlincon(xh1,varargin{:});
|
% c=mr_nlincon(xh1,varargin{:});
|
||||||
% ic=1;
|
% ic=1;
|
||||||
% end
|
% end
|
||||||
|
try
|
||||||
[fx, ffx]=feval(func,xh1,varargin{:});
|
[fx, ffx]=feval(func,xh1,varargin{:});
|
||||||
|
catch
|
||||||
|
fx=1.e8;
|
||||||
|
end
|
||||||
end
|
end
|
||||||
if abs(dx(it))>(2*htol),
|
if abs(dx(it))>(2*htol),
|
||||||
h1(i)= htol/abs(dx(it))*h1(i);
|
h1(i)= htol/abs(dx(it))*h1(i);
|
||||||
xh1(i)=x(i)+h1(i);
|
xh1(i)=x(i)+h1(i);
|
||||||
[fx, ffx]=feval(func,xh1,varargin{:});
|
try
|
||||||
|
[fx, ffx]=feval(func,xh1,varargin{:});
|
||||||
|
catch
|
||||||
|
fx=1.e8;
|
||||||
|
end
|
||||||
while (fx-f0)==0,
|
while (fx-f0)==0,
|
||||||
h1(i)= h1(i)*2;
|
h1(i)= h1(i)*2;
|
||||||
xh1(i)=x(i)+h1(i);
|
xh1(i)=x(i)+h1(i);
|
||||||
|
|
|
@ -197,7 +197,11 @@ while norm(gg)>gtol & check==0 & jit<nit,
|
||||||
end
|
end
|
||||||
|
|
||||||
if norm(x(:,icount)-xparam1)>1.e-12,
|
if norm(x(:,icount)-xparam1)>1.e-12,
|
||||||
|
try
|
||||||
save m1 x fval0 nig -append
|
save m1 x fval0 nig -append
|
||||||
|
catch
|
||||||
|
save m1 x fval0 nig
|
||||||
|
end
|
||||||
[dum, gg, htol0, igg, hhg]=mr_hessian(func_hh,xparam1,flagit,htol,varargin{:});
|
[dum, gg, htol0, igg, hhg]=mr_hessian(func_hh,xparam1,flagit,htol,varargin{:});
|
||||||
if htol0>htol, %ftol,
|
if htol0>htol, %ftol,
|
||||||
%ftol=htol0;
|
%ftol=htol0;
|
||||||
|
|
Loading…
Reference in New Issue