181 lines
8.4 KiB
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 © 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> > <a href="index.html">.</a> > mr_gstep.m</div>
|
|
|
|
<!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png"> Master index</a></td>
|
|
<td align="right"><a href="index.html">Index for . <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<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<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)>(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))<0.5*htol | abs(dx(it))>(2*htol)) & icount<10 & ic==0,
|
|
0058 <span class="comment">%while abs(dx(it))<0.5*htol & icount< 10 & 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))<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))>(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)<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 & htol<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)>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 > 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> © 2003</address>
|
|
</body>
|
|
</html> |