function [jingdu,min]=fuhejingdu( )
clear all;
global XX X
global A
global B
global a
global b
af=1.5;
ep=0.000000001;
E1=0.000000001;
n=16;
k=25;
bou();
produce(a,b);
EE=E1+1;
while (EE>E1)
for i=1:n
Xc(i)=0;
for j=1:k
Xc(i)=Xc(i)+X(j,i);
end
Xc(i)=(1/(k+0.0))*Xc(i);
end
for j=1:k
for i=1:n
XX(i)=X(j,i);
end
FF(j)=F(XX);
end
Fh=FF(1); Fg=FF(1); Fl=FF(1);h=1;g=1;l=1;
for j=1:k
if FF(j)>Fh
Fh=FF(j);h=j;
end
if FF(j)<Fl
Fl=FF(j);l=j;
end
end
for j=1:k
if((FF(j)>Fg)&(j~=l))
Fg=FF(j);g=j;
end
end
for i=1:n
Xh(i)=X(h,i); Xg(i)=X(g,i); Xl(i)=X(l,i);
end
EE=0;
for j=1:k
EE=EE+(FF(j)-Fl)^2;
end
EE=((1/(k+0.0))*EE)^0.5;
if EE<=E1
OUT='F(Xmin)=F(Xl)';break;
end
for i=1:n
Xc(i)=0;
for j=1:k
if(j~=h)
Xc(i)=Xc(i)+X(j,i);
end
end
Xc(i)=(1/(k-1.0))*Xc(i);
end
if (cons(Xc)==1)
while(cons(Xc)==1)
for i=1:n
Xr(i)=Xc(i)+af*(Xc(i)-Xh(i));
end
if cons(Xr)==1
if F(Xr)>=F(Xh)
if af<=ep
for i=1:n
Xh(i)=Xg(i);
end
else
af=(1/2.0)*af;
end
else
for i=1:n
X(h,i)=Xr(i);
end
break;
end
else
af=(1/2.0)*af;
end
end
else
for i=1:n
a(i)=Xl(i);b(i)=Xc(i);
end
produce(a,b);
end
end
min=Fl