%用人口迁移算法求函数的最大值 %求目标函数的值 format long N=4;%人口规模 l=10;%人口流动次数 k=0.01;%收缩系数 h=1e-8;%人口压力参数 m=10;%迭代次数 a=6;%搜索空间 b=7;%搜索空间 center=[]; zy=[];%记录最优值 zyd=[];%记录最优点 d=[];%计算目标函数值 kk=0; X=[]; tt=0; %步骤1开始 while(kk
X(i)=b;
X(i)=a;
end %步骤4结束 %步骤5开始 d(i)=maxf(X(i)); %步骤5结束 end %步骤6开始 [w,i]=min(d); %记录最优函数值和最优点 zy(numel(zy)+1)=w;%记录最优函数值和最优点 zyd(numel(zyd)+1)=X(i);%记录最优函数值和最优点 %步骤6结束 %步骤7开始 tt=tt+1; if(tt>=l)
break
end end %步骤7结束 %步骤8开始 [w,i]=min(zy);%读取最优值和最优点 yyd=zyd(i); a1=yyd-c;%优惠区域 if(a1>=b)
a1=b-c;
a1=a;
end b1=yyd+c;%优惠区域 if(b1>b)
b1=b;
end if(b1<=a1)
b1=a1+c;
end X=(rand(1,N)*(b1-a1))+a1;%随机产生新搜索空间的N个点,替换原来的点 %步骤8结束 %步骤9开始 for i=1:1:N center(i)=X(i);%第i个区域的中心 d(i)=maxf(X(i)); %计算各点的函数值 end %步骤9结束 %步骤10开始 [w,i]=min(d); %记录最优函数值和最优点 zy(numel(zy)+1)=w; %记录最优函数值和最优点 zyd(numel(zyd)+1)=X(i); %记录最优函数值和最优点 %步骤10结束 %步骤11开始 while(1) c=(1-k)*c;%收缩优惠区域 %步骤11结束 %步骤12开始 a2=zyd(numel(zyd))-c; if(a2>=b)
a2=b-c;
a2=a;
end b2=zyd(numel(zyd))+c;%优惠区域 if(b2>b)
b2=b;
end if(b2<=a2)
b2=a2+c;
end X=(rand(1,N)*(b2-a2))+a2;%随机产生新搜索空间的N个点,替换原来的点 %步骤12结束 %步骤13开始 for i=1:1:N center(i)=X(i); d(i)=maxf(X(i)); %计算各点的函数值 end %步骤13结束 %步骤14开始 [w,i]=min(d); %记录最优函数值和最优点 zy(numel(zy)+1)=w ; %记录最优函数值和最优点 zyd(numel(zyd)+1)=X(i) ; %记录最优函数值和最优点 %步骤14结束 %步骤15开始 if(~(c>h))
break
end end kk=kk+1; end %步骤15结束 %步骤16开始 %步骤16结束 [w,i]=min(d); zuiyouzhi=w zuiyoudian=X(i)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/270432.html