Advertisement
lukicdarkoo

Hook - Jeeves method - Multidimensional Optimization

Nov 25th, 2015
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 0.90 KB | None | 0 0
  1. function t = hj(f, x0, step, e)
  2.     d = eye(length(x0));
  3.     t = x0;
  4.     xb = x0;
  5.    
  6.     while step > e
  7.         % Pretrazivanje u okolini tacke
  8.         for i = 1:length(d)
  9.             t_p = t + step * d(i, :);
  10.             t_m = t - step * d(i, :);
  11.  
  12.             if (f(t_p) < f(t))
  13.                 t = t_p;
  14.             elseif (f(t_m) < f(t))
  15.                 t = t_m;
  16.             end
  17.         end
  18.        
  19.         % Skok
  20.         tb = t + (t - xb);
  21.         if f(tb) > f(t)
  22.             continue;
  23.         end
  24.        
  25.         % Pretrazujemo u okolini skoka
  26.         for i = 1:length(d)
  27.             t_p = tb + step * d(i, :);
  28.             t_m = tb - step * d(i, :);
  29.            
  30.             if (f(t_p) < f(xb))
  31.                 xb = t_p;
  32.             elseif (f(t_m) < f(xb))
  33.                 xb = t_m;
  34.             else
  35.                 step = step / 2;
  36.             end
  37.         end
  38.     end
  39. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement