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;