for gen=1:me
pbest = pos;
out = feval(functname,pos); pbestval=out;
[gbestval,idx1] = min(pbestval);gbest=pos(idx1);
D1=log2(D+1);M=2^D1;N=M-1;u=log2(M);
for a=1:M
for k=1:u
b=2^(k-1);l=ceil((a-1)/2^(u-k));
L1(a,b)=mod(l,2);
end
end
for a=1:M
for k=2:u
b=2^(k-1);
for s=1:b-1
L2(a,b+s)=mod((L1(a,s)+L1(a,b)),2);
end
end
end
L=[L1 L2];%有两行是重复的,为什么?
for ii=1:M
for jj=1:D
if L(ii,jj)==1
B(ii,jj)=2;
else
B(ii,jj)=1;
end
end
end
for ii=1:M
for jj=1:D
if B(ii,jj)==1
p(ii,jj)=pbest(1,jj);
else
p(ii,jj)=g