⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pma.asv

📁 用MATLAB编写的
💻 ASV
字号:
%用人口迁移算法求函数的最大值%求目标函数的值%function y=maxf(x)%y=(1-2*sin(3*pi*x)^20+sin(20*pi*x)^20)^20;format longN=4;%人口规模l=20;%人口流动次数k=0.001;%收缩系数h=1e-6;%人口压力参数m=20;%迭代次数a=0;%搜索空间b=1;%搜索空间center=[];zy=[];%记录最优值zyd=[];%记录最优点d=[];%计算目标函数值kk=0;X=[];tt=0;%步骤1开始while(kk<m)X=(rand(1,N)*(b-a))+a;%随机产生搜索空间的N个点c=(b-a)/(2*N);%区域的邻域%步骤1结束%步骤2开始for i=1:1:Ncenter(i)=X(i);d(i)=maxf(X(i));%计算各点的函数值end%步骤2结束%步骤3开始[w,i]=min(d); %记录最优函数值和最优点zy(numel(zy)+1)=w;%记录最优函数值和最优点zyd(numel(zyd)+1)=X(i);%记录最优函数值和最优点%步骤3结束while(1)for i=1:1:N%步骤4开始X(i)=2*c*rand+(center(i)-c);if(X(i)>b)    X(i)=b;endif(X(i)<a)    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    endend%步骤7结束%步骤8开始[w,i]=min(zy);%读取最优值和最优点yyd=zyd(i);a1=yyd-c;%优惠区域if(a1>=b)    a1=b-c;endif(a1<a)    a1=a;endb1=yyd+c;%优惠区域if(b1>b)    b1=b;endif(b1<=a1)    b1=a1+c;endX=(rand(1,N)*(b1-a1))+a1;%随机产生新搜索空间的N个点,替换原来的点%步骤8结束%步骤9开始for i=1:1:Ncenter(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;endif(a2<a)    a2=a;endb2=zyd(numel(zyd))+c;%优惠区域if(b2>b)    b2=b;endif(b2<=a2)    b2=a2+c;endX=(rand(1,N)*(b2-a2))+a2;%随机产生新搜索空间的N个点,替换原来的点%步骤12结束%步骤13开始for i=1:1:Ncenter(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))    breakendendkk=kk+1;end%步骤15结束%步骤16开始%步骤16结束[w,i]=min(d);zuiyouzhi=wzuiyoudian=X(i)    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -