Mercurial > forge
changeset 978:7a0f795de093 octave-forge
change default parameters
author | aadler |
---|---|
date | Wed, 18 Jun 2003 15:30:34 +0000 |
parents | 7b69a38a06b4 |
children | 19eae75f6367 |
files | main/optim/fmins.m main/optim/nmsmax.m |
diffstat | 2 files changed, 45 insertions(+), 42 deletions(-) [+] |
line wrap: on
line diff
--- a/main/optim/fmins.m Wed Jun 18 15:30:08 2003 +0000 +++ b/main/optim/fmins.m Wed Jun 18 15:30:34 2003 +0000 @@ -37,9 +37,12 @@ ## if options(6)==0 - Nelder & Mead simplex (default) ## if options(6)==1 - Multidirectional search Method ## if options(6)==2 - Alternating Directions search -## options(5) - Strategy +## options(5) ## if options(6)==0 && options(5)==0 - regular simplex ## if options(6)==0 && options(5)==1 - right-angled simplex +## Comment: the default is set to "right-angled simplex". +## this works better for me on a broad range of problems, +## although the default in nmsmax is "regular simplex" ## options(10) - Maximum number of function evaluations ## @item grad ## Unused (For compatibility with Matlab) @@ -50,7 +53,7 @@ ## @end deftypefn function ret=fmins(funfun, X0, options, grad, varargin) - stopit = [1e-3, inf, inf, 0, 0, -1]; + stopit = [1e-3, inf, inf, 1, 0, -1]; minfun = 'nmsmax'; if nargin<=3; options=[]; end
--- a/main/optim/nmsmax.m Wed Jun 18 15:30:08 2003 +0000 +++ b/main/optim/nmsmax.m Wed Jun 18 15:30:34 2003 +0000 @@ -104,12 +104,12 @@ if ~isempty(savit) x(:) = V(:,1); eval(['save ' savit ' x fmax nf']) end - if trace - fprintf('Iter. %2.0f,', k) - fprintf([' how = ' how ' ']); - fprintf('nf = %3.0f, f = %9.4e (%2.1f%%)\n', nf, fmax, ... - 100*(fmax-fmax_old)/(abs(fmax_old)+eps)) - end + end + if trace + fprintf('Iter. %2.0f,', k) + fprintf([' how = ' how ' ']); + fprintf('nf = %3.0f, f = %9.4e (%2.1f%%)\n', nf, fmax, ... + 100*(fmax-fmax_old)/(abs(fmax_old)+eps)) end fmax_old = fmax; @@ -148,41 +148,41 @@ nf = nf + 1; vk = vr; fk = fr; how = 'reflect, '; if fr > f(n) - if fr > f(1) - ve = gamma*vr + (1-gamma)*vbar; - x(:) = ve; - fe = dirn*feval(fun,x,varargin{:}); - nf = nf + 1; - if fe > f(1) - vk = ve; fk = fe; - how = 'expand, '; - end - end + if fr > f(1) + ve = gamma*vr + (1-gamma)*vbar; + x(:) = ve; + fe = dirn*feval(fun,x,varargin{:}); + nf = nf + 1; + if fe > f(1) + vk = ve; fk = fe; + how = 'expand, '; + end + end else - vt = V(:,n+1); ft = f(n+1); - if fr > ft - vt = vr; ft = fr; - end - vc = beta*vt + (1-beta)*vbar; - x(:) = vc; - fc = dirn*feval(fun,x,varargin{:}); - nf = nf + 1; - if fc > f(n) - vk = vc; fk = fc; - how = 'contract,'; - else - for j = 2:n - V(:,j) = (V(:,1) + V(:,j))/2; - x(:) = V(:,j); - f(j) = dirn*feval(fun,x,varargin{:}); - end - nf = nf + n-1; - vk = (V(:,1) + V(:,n+1))/2; - x(:) = vk; - fk = dirn*feval(fun,x,varargin{:}); - nf = nf + 1; - how = 'shrink, '; - end + vt = V(:,n+1); ft = f(n+1); + if fr > ft + vt = vr; ft = fr; + end + vc = beta*vt + (1-beta)*vbar; + x(:) = vc; + fc = dirn*feval(fun,x,varargin{:}); + nf = nf + 1; + if fc > f(n) + vk = vc; fk = fc; + how = 'contract,'; + else + for j = 2:n + V(:,j) = (V(:,1) + V(:,j))/2; + x(:) = V(:,j); + f(j) = dirn*feval(fun,x,varargin{:}); + end + nf = nf + n-1; + vk = (V(:,1) + V(:,n+1))/2; + x(:) = vk; + fk = dirn*feval(fun,x,varargin{:}); + nf = nf + 1; + how = 'shrink, '; + end end V(:,n+1) = vk; f(n+1) = fk;