引入基于峰值的种群替换策略

						D = obj.hub.D;
            index = obj.SortWithContraint(obj.pop);
            obj.pop = obj.pop(index);

            xPeakNeighbor = [];
            for i = 1:length(obj.pop)
                xPeakNeighbor = [xPeakNeighbor;obj.pop(i).dec];
            end
             
            NeighborDistance = ones(1,D);
            for i = 1:D
                matdist = pdist2(xPeakNeighbor(:,i),xPeakNeighbor(:,i));
                matdist(logical(eye(size(xPeakNeighbor,1)))) = inf;
                minmatdist = min(matdist, [], 2);
                NeighborDistance(i) = mean(minmatdist);
            end
            xPop = rand_indi(obj.algRand, 5, D, xPeakNeighbor(1,:)-NeighborDistance, xPeakNeighbor(1,:)+NeighborDistance);
            xPop = boundary_check(xPop, obj.hub.lower, obj.hub.upper);
            size(xPop)
            PeakNeighborpop = obj.hub.GetIndis(xPop);  
 
            if ~isempty(PeakNeighborpop) && length(PeakNeighborpop)==5
                endpop = obj.pop(end-4:end);
                endindex = size(obj.pop)-4:size(obj.pop);
                endindex = endindex';
                selectPeakNeighbor = obj.CompareWithConstraint(endpop,PeakNeighborpop);
                obj.pop(endindex(selectPeakNeighbor)) = PeakNeighborpop(selectPeakNeighbor);
            end

自适应应用峰值策略:判断当前的前某几个个体均值是否发生了变化,如果发生了变化则执行策略,防止陷入局部最优的情况。