www.pudn.com > PSOtofMatlab.rar > Foxhole.m, change:2004-08-13,size:1278b

```% Foxhole.m
% Foxhole function, 2D multi-minima function
%
% from: http://www.cs.rpi.edu/~hornda/pres/node10.html
%
% f(x) = 0.002 + sum([1/(j + sum( [x(i) - a(i,j)].^6 ) )])
%
% x = 2 element row vector containing [ x, y ]
% each row is processed independently,
% you can feed in matrices of timeX2 no prob
%
% example: cost = Foxhole([1,2;3,4])
% note: known minimum =0 @ (-32,-32) unless you change 'a' in the function

% Brian Birge
% Rev 1.0
% 9/12/04
function [out]=Foxhole(in)
x=in(:,1);
y=in(:,2);

% location of foxholes, you can change this, these are what DeJong used
% if you change 'em, a{1} and a{2} must each have same # of elements
a{1} = [...
-32 -16   0  16  32 ;...
-32 -16   0  16  32 ;...
-32 -16   0  16  32 ;...
-32 -16   0  16  32 ;...
-32 -16   0  16  32 ;...
];

a{2} = [...
-32 -32 -32 -32 -32 ;...
-16 -16 -16 -16 -16 ;...
0   0   0   0   0 ;...
16  16  16  16  16 ;...
32  32  32  32  32 ;...
];

term_sum=0;
for j=1:prod(size((a{1})))
ax=a{1} (j);
ay=a{2} (j);
term_num = (x - ax).^6 + (y - ay).^6;
term_sum=term_sum+ 1./(j+term_num);
end
out = .002 + term_sum;```