dynare/matlab/doc/mr_gstep.html

181 lines
8.4 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<title>Description of mr_gstep</title>
<meta name="keywords" content="mr_gstep">
<meta name="description" content="Copyright (C) 2005 Marco Ratto">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="m2html &copy; 2003 Guillaume Flandin">
<meta name="robots" content="index, follow">
<link type="text/css" rel="stylesheet" href="../m2html.css">
</head>
<body>
<a name="_top"></a>
<div><a href="../index.html">Home</a> &gt; <a href="index.html">.</a> &gt; mr_gstep.m</div>
<!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png">&nbsp;Master index</a></td>
<td align="right"><a href="index.html">Index for .&nbsp;<img alt=">" border="0" src="../right.png"></a></td></tr></table>-->
<h1>mr_gstep
</h1>
<h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="box"><strong>Copyright (C) 2005 Marco Ratto</strong></div>
<h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="box"><strong>function [f0, x] = mr_gstep(func0,x,htol0,varargin) </strong></div>
<h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="fragment"><pre class="comment"> Copyright (C) 2005 Marco Ratto
function [f0, x] = mr_gstep(func0,x,htol0,varargin)
Gibbs type step in optimisation</pre></div>
<!-- crossreference -->
<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
This function calls:
<ul style="list-style-image:url(../matlabicon.gif)">
<li><a href="csminit.html" class="code" title="function [fhat,xhat,fcount,retcode] = csminit(fcn,x0,f0,g0,badg,H0,varargin)">csminit</a> [fhat,xhat,fcount,retcode] = csminit(fcn,x0,f0,g0,badg,H0,...</li></ul>
This function is called by:
<ul style="list-style-image:url(../matlabicon.gif)">
<li><a href="newrat.html" class="code" title="function [xparam1, hh, gg, fval, igg] = newrat(func0, x, hh, gg, igg, ftol0, nit, flagg, varargin)">newrat</a> </li></ul>
<!-- crossreference -->
<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function [f0, x] = mr_gstep(func0,x,htol0,varargin)</a>
0002 <span class="comment">% Copyright (C) 2005 Marco Ratto</span>
0003 <span class="comment">%</span>
0004 <span class="comment">% function [f0, x] = mr_gstep(func0,x,htol0,varargin)</span>
0005 <span class="comment">%</span>
0006 <span class="comment">% Gibbs type step in optimisation</span>
0007
0008 <span class="keyword">global</span> bayestopt_ options_
0009 <span class="keyword">persistent</span> h1
0010
0011 gstep_ = options_.gstep;
0012 <span class="keyword">if</span> nargin&lt;3,
0013 htol = 1.e-6;
0014 <span class="keyword">else</span>
0015 htol = htol0;
0016 <span class="keyword">end</span>
0017 func = str2func(func0);
0018 f0=feval(func,x,varargin{:});
0019 n=size(x,1);
0020 h2=bayestopt_.ub-bayestopt_.lb;
0021
0022 <span class="keyword">if</span> isempty(h1),
0023 h1=max(abs(x),sqrt(gstep_)*ones(n,1))*eps^(1/4);
0024 <span class="keyword">end</span>
0025
0026 xh1=x;
0027 f1=zeros(size(f0,1),n);
0028 f_1=f1;
0029 <span class="comment">%for i=1:n,</span>
0030 i=0;
0031 <span class="keyword">while</span> i&lt;n,
0032 i=i+1;
0033 h10=h1(i);
0034 hcheck=0;
0035 dx=[];
0036 xh1(i)=x(i)+h1(i);
0037 fx = feval(func,xh1,varargin{:});
0038 it=1;
0039 dx=(fx-f0);
0040 ic=0;
0041 <span class="comment">% if abs(dx)&gt;(2*htol),</span>
0042 <span class="comment">% c=mr_nlincon(xh1,varargin{:});</span>
0043 <span class="comment">% while c</span>
0044 <span class="comment">% h1(i)=h1(i)*0.9;</span>
0045 <span class="comment">% xh1(i)=x(i)+h1(i);</span>
0046 <span class="comment">% c=mr_nlincon(xh1,varargin{:});</span>
0047 <span class="comment">% ic=1;</span>
0048 <span class="comment">% end</span>
0049 <span class="comment">% if ic,</span>
0050 <span class="comment">% fx = feval(func,xh1,varargin{:});</span>
0051 <span class="comment">% dx=(fx-f0);</span>
0052 <span class="comment">% end</span>
0053 <span class="comment">% end</span>
0054
0055 icount = 0;
0056 h0=h1(i);
0057 <span class="keyword">while</span> (abs(dx(it))&lt;0.5*htol | abs(dx(it))&gt;(2*htol)) &amp; icount&lt;10 &amp; ic==0,
0058 <span class="comment">%while abs(dx(it))&lt;0.5*htol &amp; icount&lt; 10 &amp; ic==0,</span>
0059 icount=icount+1;
0060 <span class="keyword">if</span> abs(dx(it)) ~= 0,
0061 <span class="keyword">if</span> abs(dx(it))&lt;0.5*htol
0062 h1(i)=min(0.3*abs(x(i)), 0.9*htol/abs(dx(it))*h1(i));
0063 xh1(i)=x(i)+h1(i);
0064 <span class="comment">% c=mr_nlincon(xh1,varargin{:});</span>
0065 <span class="comment">% while c</span>
0066 <span class="comment">% h1(i)=h1(i)*0.9;</span>
0067 <span class="comment">% xh1(i)=x(i)+h1(i);</span>
0068 <span class="comment">% c=mr_nlincon(xh1,varargin{:});</span>
0069 <span class="comment">% ic=1;</span>
0070 <span class="comment">% end</span>
0071 <span class="keyword">end</span>
0072 <span class="keyword">if</span> abs(dx(it))&gt;(2*htol),
0073 h1(i)= htol/abs(dx(it))*h1(i);
0074 xh1(i)=x(i)+h1(i);
0075 <span class="keyword">end</span>
0076 fx = feval(func,xh1,varargin{:});
0077 it=it+1;
0078 dx(it)=(fx-f0);
0079 h0(it)=h1(i);
0080 <span class="keyword">if</span> h1(i)&lt;1.e-12*min(1,h2(i)),
0081 ic=1;
0082 hcheck=1;
0083 <span class="keyword">end</span>
0084 <span class="keyword">else</span>
0085 h1(i)=1;
0086 ic=1;
0087 <span class="keyword">end</span>
0088 <span class="keyword">end</span>
0089 f1(:,i)=fx;
0090 xh1(i)=x(i)-h1(i);
0091 <span class="comment">% c=mr_nlincon(xh1,varargin{:});</span>
0092 <span class="comment">% ic=0;</span>
0093 <span class="comment">% while c</span>
0094 <span class="comment">% h1(i)=h1(i)*0.9;</span>
0095 <span class="comment">% xh1(i)=x(i)-h1(i);</span>
0096 <span class="comment">% c=mr_nlincon(xh1,varargin{:});</span>
0097 <span class="comment">% ic = 1;</span>
0098 <span class="comment">% end</span>
0099 fx = feval(func,xh1,varargin{:});
0100 f_1(:,i)=fx;
0101 <span class="comment">% if ic,</span>
0102 <span class="comment">% xh1(i)=x(i)+h1(i);</span>
0103 <span class="comment">% f1(:,i)=feval(func,xh1,varargin{:});</span>
0104 <span class="comment">% end</span>
0105 <span class="keyword">if</span> hcheck &amp; htol&lt;1,
0106 htol=min(1,max(min(abs(dx))*2,htol*10));
0107 h1(i)=h10;
0108 xh1(i)=x(i);
0109 i=i-1;
0110 <span class="keyword">else</span>
0111 gg=zeros(size(x));
0112 hh=gg;
0113 gg(i)=(f1(i)'-f_1(i)')./(2.*h1(i));
0114 <span class="keyword">if</span> abs(f1(i)+f_1(i)-2*f0)&gt;1.e-12,
0115 hh(i) = abs(1/( (f1(i)+f_1(i)-2*f0)./(h1(i)*h1(i)) ));
0116 <span class="keyword">else</span>
0117 hh(i) = 1;
0118 <span class="keyword">end</span>
0119
0120 <span class="keyword">if</span> gg(i)*(hh(i)*gg(i))/2 &gt; htol,
0121 [f0 x fc retcode] = <a href="csminit.html" class="code" title="function [fhat,xhat,fcount,retcode] = csminit(fcn,x0,f0,g0,badg,H0,varargin)">csminit</a>(func0,x,f0,gg,0,diag(hh),varargin{:});
0122 <span class="keyword">end</span>
0123 xh1=x;
0124 <span class="keyword">end</span>
0125 save gstep
0126 <span class="keyword">end</span>
0127
0128 save gstep
0129
0130
0131</pre></div>
<hr><address>Generated on Fri 16-Jun-2006 09:09:06 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
</body>
</html>